|
@@ -4,22 +4,30 @@
|
|
<el-form-item label="节点名称" prop="name" :rules="[{ required: true, message: '请输入节点名称', trigger: 'blur' }]">
|
|
<el-form-item label="节点名称" prop="name" :rules="[{ required: true, message: '请输入节点名称', trigger: 'blur' }]">
|
|
<el-input v-model="form.name" placeholder="请输入节点名称" clearable></el-input>
|
|
<el-input v-model="form.name" placeholder="请输入节点名称" clearable></el-input>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
- <el-form-item label="节点编码" prop="code" :rules="[{ required: true, message: '请输入节点编码', trigger: 'blur' }]">
|
|
|
|
|
|
+ <el-form-item label="节点编码" prop="stepType" :rules="[{ required: true, message: '请输入节点编码', trigger: 'blur' }]">
|
|
<el-input v-model="form.code" disabled placeholder="请输入节点编码" clearable></el-input>
|
|
<el-input v-model="form.code" disabled placeholder="请输入节点编码" clearable></el-input>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
- <el-form-item label="处理人" prop="handlerType" :rules="[{ required: true, message: '请选择处理人', trigger: 'change' }]">
|
|
|
|
- <el-select v-model="form.handlerType" class="w100" placeholder="请选择处理人" @change="changeOptions">
|
|
|
|
- <el-option v-for="item in handlerTypeOptions" :key="item.value" :label="item.label" :value="item.value" />
|
|
|
|
|
|
+ <el-form-item label="节点类型" prop="stepTypeName" :rules="[{ required: true, message: '请选择节点类型', trigger: 'change' }]">
|
|
|
|
+ <el-input v-model="form.stepTypeName" disabled></el-input>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ <el-form-item label="业务类型" prop="businessType" :rules="[{ required: true, message: '请选择业务类型', trigger: 'change' }]">
|
|
|
|
+ <el-select v-model="form.businessType" class="w100" placeholder="请选择业务类型">
|
|
|
|
+ <el-option v-for="item in baseData.businessTypeOptions" :key="item.key" :label="item.value" :value="item.key" />
|
|
|
|
+ </el-select>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ <el-form-item label="办理者类型" prop="handlerType" :rules="[{ required: true, message: '请选择办理者类型', trigger: 'change' }]">
|
|
|
|
+ <el-select v-model="form.handlerType" class="w100" placeholder="请选择办理者类型" @change="changeOptions">
|
|
|
|
+ <el-option v-for="item in baseData.handlerTypeOptions" :key="item.value" :label="item.label" :value="item.value" />
|
|
</el-select>
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
<!-- 选择其他 -->
|
|
<!-- 选择其他 -->
|
|
<el-form-item
|
|
<el-form-item
|
|
v-if="[0, 1, 2].includes(form.handlerType)"
|
|
v-if="[0, 1, 2].includes(form.handlerType)"
|
|
:label="itemName"
|
|
:label="itemName"
|
|
- prop="handlerClassifiesOrgin"
|
|
|
|
|
|
+ prop="handlerTypeItemsOrigin"
|
|
:rules="[{ required: true, message: `请选择${itemName}`, trigger: 'change' }]"
|
|
:rules="[{ required: true, message: `请选择${itemName}`, trigger: 'change' }]"
|
|
>
|
|
>
|
|
- <el-select v-model="form.handlerClassifiesOrgin" multiple filterable class="w100" @change="getSelectValue" value-key="id">
|
|
|
|
|
|
+ <el-select v-model="form.handlerTypeItemsOrigin" multiple filterable class="w100" @change="getSelectValue" value-key="id">
|
|
<el-option v-for="item in selectList" :key="item.id" :label="item.name" :value="item" />
|
|
<el-option v-for="item in selectList" :key="item.id" :label="item.name" :value="item" />
|
|
</el-select>
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
@@ -27,11 +35,11 @@
|
|
<el-form-item
|
|
<el-form-item
|
|
v-if="[3].includes(form.handlerType)"
|
|
v-if="[3].includes(form.handlerType)"
|
|
:label="itemName"
|
|
:label="itemName"
|
|
- prop="handlerClassifiesOrgin"
|
|
|
|
|
|
+ prop="handlerTypeItemsOrigin"
|
|
:rules="[{ required: true, message: `请选择${itemName}`, trigger: 'change' }]"
|
|
:rules="[{ required: true, message: `请选择${itemName}`, trigger: 'change' }]"
|
|
>
|
|
>
|
|
<el-select
|
|
<el-select
|
|
- v-model="form.handlerClassifiesOrgin"
|
|
|
|
|
|
+ v-model="form.handlerTypeItemsOrigin"
|
|
multiple
|
|
multiple
|
|
filterable
|
|
filterable
|
|
remote
|
|
remote
|
|
@@ -51,101 +59,128 @@
|
|
<el-form-item
|
|
<el-form-item
|
|
v-if="[4].includes(form.handlerType)"
|
|
v-if="[4].includes(form.handlerType)"
|
|
:label="itemName"
|
|
:label="itemName"
|
|
- prop="handlerClassifiesOrgin"
|
|
|
|
|
|
+ prop="handlerTypeItemsOrigin"
|
|
:rules="[{ required: true, message: `请选择${itemName}`, trigger: 'change' }]"
|
|
:rules="[{ required: true, message: `请选择${itemName}`, trigger: 'change' }]"
|
|
>
|
|
>
|
|
<el-tree-select
|
|
<el-tree-select
|
|
- :props="{ label: 'orgName' }"
|
|
|
|
|
|
+ :props="{ label: 'name' }"
|
|
node-key="id"
|
|
node-key="id"
|
|
class="w100"
|
|
class="w100"
|
|
ref="treeSelectRef"
|
|
ref="treeSelectRef"
|
|
- v-model="form.handlerClassifiesOrgin"
|
|
|
|
|
|
+ v-model="form.handlerTypeItemsOrigin"
|
|
:data="orgData"
|
|
:data="orgData"
|
|
multiple
|
|
multiple
|
|
:render-after-expand="false"
|
|
:render-after-expand="false"
|
|
show-checkbox
|
|
show-checkbox
|
|
- @check-change="checkChange"
|
|
|
|
check-strictly
|
|
check-strictly
|
|
default-expand-all
|
|
default-expand-all
|
|
filterable
|
|
filterable
|
|
/>
|
|
/>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
- <el-form-item label="节点属性" prop="businessProperty" :rules="[{ required: true, message: '请选择节点属性', trigger: 'change' }]">
|
|
|
|
- <el-select v-model="form.businessProperty" class="w100" placeholder="请选择节点属性">
|
|
|
|
- <el-option v-for="item in businessPropertyOptions" :key="item.value" :label="item.label" :value="item.value" />
|
|
|
|
|
|
+ <el-form-item label="否决按钮" prop="canReject">
|
|
|
|
+ <el-switch
|
|
|
|
+ v-model="form.canReject"
|
|
|
|
+ inline-prompt
|
|
|
|
+ active-text="启用"
|
|
|
|
+ inactive-text="禁用"
|
|
|
|
+ />
|
|
|
|
+ </el-form-item>
|
|
|
|
+ <el-form-item label="执行模式" prop="executeMode" :rules="[{ required: true, message: '请选择执行模式', trigger: 'change' }]">
|
|
|
|
+ <el-select v-model="form.executeMode" class="w100" placeholder="请选择执行模式">
|
|
|
|
+ <el-option v-for="item in baseData.executeModeOptions" :key="item.key" :label="item.value" :value="item.key" />
|
|
</el-select>
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
- <el-form-item label="会签" prop="countersignMode" :rules="[{ required: true, message: '请选择会签', trigger: 'change' }]">
|
|
|
|
- <el-select v-model="form.countersignMode" class="w100" placeholder="请选择会签">
|
|
|
|
- <el-option v-for="item in countersignModeList" :key="item.value" :label="item.label" :value="item.value" />
|
|
|
|
|
|
+ <el-form-item label="支持会签" prop="canStartCountersign">
|
|
|
|
+ <el-switch
|
|
|
|
+ v-model="form.canStartCountersign"
|
|
|
|
+ inline-prompt
|
|
|
|
+ active-text="支持"
|
|
|
|
+ inactive-text="不支持"
|
|
|
|
+ />
|
|
|
|
+ </el-form-item>
|
|
|
|
+ <el-form-item label="会签策略" prop="countersignPolicy" :rules="[{ required: true, message: '请选择会签策略', trigger: 'change' }]" v-if="form.canStartCountersign">
|
|
|
|
+ <el-select v-model="form.countersignPolicy" class="w100" placeholder="请选择会签策略">
|
|
|
|
+ <el-option v-for="item in baseData.dynamicPolicyOptions" :key="item.key" :label="item.value" :value="item.key" />
|
|
</el-select>
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
- <el-form-item label="节点过滤策略" prop="pathPolicy" :rules="[{ required: true, message: '请选择节点过滤策略', trigger: 'change' }]">
|
|
|
|
- <el-select v-model="form.pathPolicy" class="w100" placeholder="请选择节点过滤策略">
|
|
|
|
- <el-option v-for="item in pathPolicyOptions" :key="item.key" :label="item.value" :value="item.key" />
|
|
|
|
|
|
+ <el-form-item label="实例化模式" prop="instanceMode" :rules="[{ required: true, message: '请选择实例化模式', trigger: 'change' }]">
|
|
|
|
+ <el-select v-model="form.instanceMode" class="w100" placeholder="请选择实例化模式">
|
|
|
|
+ <el-option v-for="item in baseData.instanceModeOptions" :key="item.key" :label="item.value" :value="item.key" />
|
|
</el-select>
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
- <el-form-item label="会签发起节点" prop="countersignStartStepCode" :rules="[{ required: false, message: '请选择会签发起节点', trigger: 'change' }]">
|
|
|
|
- <el-select v-model="form.countersignStartStepCode" class="w100" placeholder="请选择会签发起节点" @change="chanStartCode">
|
|
|
|
- <el-option v-for="item in nodesOptions" :key="item.id" :label="item.text.value" :value="item.id" />
|
|
|
|
|
|
+ <el-form-item label="动态策略" prop="instancePolicy" :rules="[{ required: true, message: '请选择动态策略', trigger: 'change' }]" v-if="form.instanceMode === 1">
|
|
|
|
+ <el-select v-model="form.instancePolicy" class="w100" placeholder="请选择动态策略" @change="selectInstancePolicy">
|
|
|
|
+ <el-option v-for="item in baseData.dynamicPolicyOptions" :key="item.key" :label="item.value" :value="item.key" />
|
|
</el-select>
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
- <el-form-item label="组件配置" prop="componentsOrigin" :rules="[{ required: false, message: '请选择组件配置', trigger: 'change' }]">
|
|
|
|
- <el-checkbox-group v-model="form.componentsOrigin" @change="selectComponent">
|
|
|
|
- <el-checkbox :label="item.dicDataValue" v-for="item in stepPropertiesOptions" :key="item.id">{{item.dicDataName}}</el-checkbox>
|
|
|
|
- </el-checkbox-group>
|
|
|
|
|
|
+ <el-form-item label="动态终止标识" prop="terminalDynamicMark" :rules="[{ required: true, message: '请选择动态终止标识', trigger: 'change' }]" v-if="form.instanceMode === 1">
|
|
|
|
+ <el-select v-model="form.terminalDynamicMark" class="w100" placeholder="请选择动态终止标识">
|
|
|
|
+ <el-option v-for="item in baseData.dynamicStrategyOptions" :key="item.key" :label="item.value" :value="item.key" />
|
|
|
|
+ </el-select>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ <el-form-item label="标识" prop="tag" :rules="[{ required: false, message: '请输入标识', trigger: 'blur' }]">
|
|
|
|
+ <el-input v-model="form.tag" placeholder="请输入标识" type="textarea" :autosize="{ minRows: 4, maxRows: 8 }"></el-input>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
</el-form>
|
|
</el-form>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
</template>
|
|
<script lang="ts" setup name="flowNode">
|
|
<script lang="ts" setup name="flowNode">
|
|
import { reactive, watch, onMounted, ref } from 'vue';
|
|
import { reactive, watch, onMounted, ref } from 'vue';
|
|
-import { ElMessageBox } from 'element-plus';
|
|
|
|
-import { removeDuplicate } from '/@/utils/arrayOperation';
|
|
|
|
-import { baseData, getSelectList,queryUser } from '/@/api/system/workflow';
|
|
|
|
|
|
+import { getSelectList, queryUser } from '/@/api/system/workflow';
|
|
import { getCanUseOrg } from '/@/api/system/user';
|
|
import { getCanUseOrg } from '/@/api/system/user';
|
|
|
|
+import { removeDuplicate } from '/@/utils/arrayOperation';
|
|
|
|
+import {ElInput} from "element-plus";
|
|
const ruleFormRef = ref<RefType>();
|
|
const ruleFormRef = ref<RefType>();
|
|
// 定义属性
|
|
// 定义属性
|
|
-const props = defineProps<{
|
|
|
|
- modelValue: any;
|
|
|
|
-}>();
|
|
|
|
|
|
+const props = defineProps({
|
|
|
|
+ modelValue: {
|
|
|
|
+ type: Object,
|
|
|
|
+ default: () => {
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ baseData: {
|
|
|
|
+ type: Object,
|
|
|
|
+ default: () => {
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+})
|
|
// 注意:ref不能与model一样,相同的话表单双向绑定将会失效
|
|
// 注意:ref不能与model一样,相同的话表单双向绑定将会失效
|
|
const form = reactive<Record<string, any>>({
|
|
const form = reactive<Record<string, any>>({
|
|
- ...props.modelValue, // 传入的数据
|
|
|
|
- handlerClassifiesOrgin: [], // 选择的数据
|
|
|
|
- handlerClassifies: [], // 选择的数据
|
|
|
|
- handlerType: '', // 处理人类型
|
|
|
|
- businessProperty: '', // 节点属性
|
|
|
|
- countersignMode: '', // 会签
|
|
|
|
- countersignStartStepCode: '', // 会签发起节点
|
|
|
|
- countersignEndStepCode: '', // 会签结束节点
|
|
|
|
- pathPolicy: null, // 节点过滤策略
|
|
|
|
- componentsOrigin:[],
|
|
|
|
- components:[], //组件配置
|
|
|
|
-});
|
|
|
|
-const emits = defineEmits(['update:modelValue', 'countersignStartStepCode']); // 定义事件
|
|
|
|
-
|
|
|
|
-//
|
|
|
|
|
|
+ ...props.modelValue, // 传入的数据
|
|
|
|
+ stepTypeName:'开始节点',
|
|
|
|
+ stepType:1,// 节点类型(开始1 结束2)
|
|
|
|
+ businessType:null,// 业务类型
|
|
|
|
+ handlerType:null,// 办理者类型
|
|
|
|
+ handlerTypeItemsOrigin:[],// 办理者类型
|
|
|
|
+ handlerTypeItems:'[]',// 办理者类型
|
|
|
|
+ canReject:false, // 否决按钮
|
|
|
|
+ executeMode:null, // 执行模式
|
|
|
|
+ canStartCountersign:false, // 支持会签
|
|
|
|
+ countersignPolicy:null, // 会签策略
|
|
|
|
+ instanceMode:null, // 实例化模式
|
|
|
|
+ instancePolicy:null, // 动态策略
|
|
|
|
+ terminalDynamicMark:null, // 动态终止标识
|
|
|
|
+ tag:'', // 标识
|
|
|
|
+}) as any;
|
|
|
|
+const emits = defineEmits(['update:modelValue']); // 定义事件
|
|
const loading = ref(false); // 加载
|
|
const loading = ref(false); // 加载
|
|
-const nodesOptions = ref([] as any); // 节点
|
|
|
|
watch(
|
|
watch(
|
|
() => form,
|
|
() => form,
|
|
() => {
|
|
() => {
|
|
|
|
+ form.stepTypeName = form.name+'节点';
|
|
emits('update:modelValue', Object.assign(props.modelValue, form));
|
|
emits('update:modelValue', Object.assign(props.modelValue, form));
|
|
},
|
|
},
|
|
{ deep: true }
|
|
{ deep: true }
|
|
);
|
|
);
|
|
// 选择处理人获取数据
|
|
// 选择处理人获取数据
|
|
-// 处理人
|
|
|
|
-const handlerTypeOptions = ref<EmptyArrayType>() as any;
|
|
|
|
// 下拉内容
|
|
// 下拉内容
|
|
const selectList = ref<EmptyArrayType>() as any;
|
|
const selectList = ref<EmptyArrayType>() as any;
|
|
// 会签
|
|
// 会签
|
|
const itemName = ref<string>('');
|
|
const itemName = ref<string>('');
|
|
const changeOptions = (e: any) => {
|
|
const changeOptions = (e: any) => {
|
|
- form.handlerClassifiesOrgin = [];
|
|
|
|
- form.handlerClassifies = '[]';
|
|
|
|
- itemName.value = handlerTypeOptions.value[e].label;
|
|
|
|
|
|
+ form.handlerTypeItemsOrigin = [];
|
|
|
|
+ form.handlerTypeItems = '[]';
|
|
|
|
+ itemName.value = baseData.handlerTypeOptions[e].label;
|
|
if ([0, 1, 2].includes(e)) {
|
|
if ([0, 1, 2].includes(e)) {
|
|
getSelectList(e).then((res: any) => {
|
|
getSelectList(e).then((res: any) => {
|
|
selectList.value = res.result ?? [];
|
|
selectList.value = res.result ?? [];
|
|
@@ -159,29 +194,9 @@ const changeOptions = (e: any) => {
|
|
getOrgListFn();
|
|
getOrgListFn();
|
|
}
|
|
}
|
|
};
|
|
};
|
|
-// 获取可用组织
|
|
|
|
-const getOrgListFn = () => {
|
|
|
|
- getCanUseOrg().then((res: any) => {
|
|
|
|
- orgData.value = res?.result ?? [];
|
|
|
|
- });
|
|
|
|
-};
|
|
|
|
-const treeSelectRef = ref<RefType>();
|
|
|
|
-// 选择部门
|
|
|
|
-const checkChange = () => {
|
|
|
|
- const data = treeSelectRef.value.getCheckedNodes();
|
|
|
|
- let arr: EmptyArrayType;
|
|
|
|
- arr = data.map((v: any) => {
|
|
|
|
- return {
|
|
|
|
- id: v.orgCode,
|
|
|
|
- name: v.orgName,
|
|
|
|
- };
|
|
|
|
- });
|
|
|
|
- // 使用模板字符串
|
|
|
|
- form.handlerClassifies = `${JSON.stringify(arr)}`;
|
|
|
|
-};
|
|
|
|
// 远程搜索用户名称
|
|
// 远程搜索用户名称
|
|
// 指定用户列表
|
|
// 指定用户列表
|
|
-const userList = ref<any>();
|
|
|
|
|
|
+const userList = ref<EmptyArrayType>([]);
|
|
const remoteMethod = (query: string) => {
|
|
const remoteMethod = (query: string) => {
|
|
if (query !== '') {
|
|
if (query !== '') {
|
|
loading.value = true;
|
|
loading.value = true;
|
|
@@ -190,117 +205,85 @@ const remoteMethod = (query: string) => {
|
|
const newUsers = res.result.map((item: any) => {
|
|
const newUsers = res.result.map((item: any) => {
|
|
return {
|
|
return {
|
|
...item,
|
|
...item,
|
|
- name: !item.name.includes('-') ? item.name + '-' + item.organization.orgName : item.name
|
|
|
|
|
|
+ name: !item.name.includes('-') ? item.name + '-' + item.organization.name : item.name,
|
|
};
|
|
};
|
|
});
|
|
});
|
|
- userList.value = removeDuplicate([ ...newUsers,...userList.value], 'id');
|
|
|
|
|
|
+ userList.value = removeDuplicate([...newUsers, ...userList.value], 'id');
|
|
});
|
|
});
|
|
}
|
|
}
|
|
};
|
|
};
|
|
|
|
+
|
|
|
|
+// 获取可用组织
|
|
|
|
+const orgData = ref<EmptyArrayType>([]);
|
|
|
|
+const getOrgListFn = () => {
|
|
|
|
+ getCanUseOrg().then((res: any) => {
|
|
|
|
+ orgData.value = res?.result ?? [];
|
|
|
|
+ });
|
|
|
|
+};
|
|
|
|
+const treeSelectRef = ref<RefType>();
|
|
// 获取选择对象
|
|
// 获取选择对象
|
|
-const getSelectValue = (query: any) => {
|
|
|
|
|
|
+const getSelectValue = (query: any[]) => {
|
|
let arr: EmptyArrayType;
|
|
let arr: EmptyArrayType;
|
|
arr = query.map((item: any) => ({ name: item.name, id: item.id }));
|
|
arr = query.map((item: any) => ({ name: item.name, id: item.id }));
|
|
// 使用模板字符串
|
|
// 使用模板字符串
|
|
- form.handlerClassifies = `${JSON.stringify(arr)}`;
|
|
|
|
-};
|
|
|
|
-const selectComponent = (val: any) => {
|
|
|
|
- form.components = JSON.stringify(val);
|
|
|
|
|
|
+ form.handlerTypeItems = `${JSON.stringify(arr)}`;
|
|
};
|
|
};
|
|
-// 选择会签发起节点
|
|
|
|
-const chanStartCode = (val: string) => {
|
|
|
|
- form.countersignEndStepCode = form.code;
|
|
|
|
- const currentItem = form.nodes.find((v: any) => v.id === val); //拿到当前选中的节点
|
|
|
|
- if (currentItem) {
|
|
|
|
- if (currentItem.properties?.countersignStartStepCode) {
|
|
|
|
- // 如果选中的会签发起节点有关联其他汇总节点
|
|
|
|
- ElMessageBox.alert(`该节点已关联其他汇总节点,覆盖当前配置`, '提示', {
|
|
|
|
- confirmButtonText: '确认',
|
|
|
|
- type: 'warning',
|
|
|
|
- draggable: true,
|
|
|
|
- cancelButtonClass: 'default-button',
|
|
|
|
- showClose: false,
|
|
|
|
- autofocus: false,
|
|
|
|
- }).then(() => {
|
|
|
|
- const beforeChangeItem = form.nodes.find((v: any) => v.properties?.countersignEndStepCode === form.countersignEndStepCode);
|
|
|
|
- // 先找到修改前关联的流程节点并清空
|
|
|
|
- beforeChangeItem.properties.countersignStartStepCode = '';
|
|
|
|
- beforeChangeItem.properties.countersignEndStepCode = '';
|
|
|
|
- beforeChangeItem.properties.type = beforeChangeItem.type.replace('hotline:', '');
|
|
|
|
- beforeChangeItem.properties.id = beforeChangeItem.id;
|
|
|
|
- emits('countersignStartStepCode', beforeChangeItem.properties);
|
|
|
|
-
|
|
|
|
- // 再找到修改前的汇总节点并清空
|
|
|
|
- const afterChangeItem = form.summaryNodes.find((v: any) => v.id === currentItem.properties.countersignEndStepCode);
|
|
|
|
- afterChangeItem.properties.countersignStartStepCode = '';
|
|
|
|
- afterChangeItem.properties.countersignEndStepCode = '';
|
|
|
|
- afterChangeItem.properties.type = afterChangeItem.type.replace('hotline:', '');
|
|
|
|
- afterChangeItem.properties.id = afterChangeItem.id;
|
|
|
|
- emits('countersignStartStepCode', afterChangeItem.properties);
|
|
|
|
-
|
|
|
|
- // 再重新赋值 当前节点
|
|
|
|
- currentItem.properties.countersignStartStepCode = val;
|
|
|
|
- currentItem.properties.countersignEndStepCode = form.code;
|
|
|
|
- currentItem.properties.type = currentItem.type.replace('hotline:', '');
|
|
|
|
- currentItem.properties.id = currentItem.id;
|
|
|
|
- emits('countersignStartStepCode', currentItem.properties);
|
|
|
|
- });
|
|
|
|
- } else {
|
|
|
|
- currentItem.properties.countersignStartStepCode = val;
|
|
|
|
- currentItem.properties.countersignEndStepCode = form.code;
|
|
|
|
- currentItem.properties.type = currentItem.type.replace('hotline:', '');
|
|
|
|
- currentItem.properties.id = currentItem.id;
|
|
|
|
- emits('countersignStartStepCode', currentItem.properties);
|
|
|
|
- }
|
|
|
|
|
|
+// 选择动态策略
|
|
|
|
+const selectInstancePolicy = (val:string|number)=>{
|
|
|
|
+ ruleFormRef.value.resetFields('terminalDynamicMark');
|
|
|
|
+ baseData.dynamicStrategyOptions = [];
|
|
|
|
+ let item = baseData.dynamicPolicyOptions.filter((item:any)=>item.key === val)[0];
|
|
|
|
+ if(item.items && item.items.length){
|
|
|
|
+ baseData.dynamicStrategyOptions = item.items;
|
|
}
|
|
}
|
|
-};
|
|
|
|
-// 会签
|
|
|
|
-const countersignModeList = ref<EmptyArrayType>() as any;
|
|
|
|
-// 节点属性
|
|
|
|
-const businessPropertyOptions = ref<EmptyArrayType>() as any;
|
|
|
|
-// 部门
|
|
|
|
-const orgData = ref<EmptyArrayType>() as any;
|
|
|
|
-// 组件
|
|
|
|
-const stepPropertiesOptions = ref<EmptyArrayType>() as any;
|
|
|
|
-//
|
|
|
|
-const pathPolicyOptions = ref<EmptyArrayType>() as any;
|
|
|
|
|
|
+}
|
|
|
|
+const baseData = reactive<any>({
|
|
|
|
+ businessTypeOptions: <EmptyArrayType>[], // 业务类型
|
|
|
|
+ countersignMode: <EmptyArrayType>[], // 会签
|
|
|
|
+ handlerTypeOptions: <EmptyArrayType>[], // 办理者类型
|
|
|
|
+ dynamicStrategyOptions: <EmptyArrayType>[], // 动态策略
|
|
|
|
+ executeModeOptions: <EmptyArrayType>[], // 执行模式
|
|
|
|
+ dynamicPolicyOptions: <EmptyArrayType>[], // 会签策略
|
|
|
|
+ instanceModeOptions: <EmptyArrayType>[], // 实例化模式
|
|
|
|
+});
|
|
|
|
+// 会签结束节点
|
|
|
|
+const nodesOptions = ref([] as any);
|
|
onMounted(async () => {
|
|
onMounted(async () => {
|
|
- // 获取页面基础数据
|
|
|
|
- const res: any = await baseData();
|
|
|
|
- handlerTypeOptions.value = res.result?.handlerTypeOptions ?? [];
|
|
|
|
- handlerTypeOptions.value = handlerTypeOptions.value.map((item: any) => ({
|
|
|
|
- value: item.key,
|
|
|
|
- label: item.value,
|
|
|
|
- }));
|
|
|
|
- countersignModeList.value = res.result?.countersignMode ?? [];
|
|
|
|
- countersignModeList.value = countersignModeList.value.map((item: any) => ({
|
|
|
|
|
|
+ const {
|
|
|
|
+ stepTypeOptions,
|
|
|
|
+ businessTypeOptions,
|
|
|
|
+ handlerTypeOptions,
|
|
|
|
+ countersignMode,
|
|
|
|
+ dynamicPolicyOptions,
|
|
|
|
+ executeModeOptions,
|
|
|
|
+ instanceModeOptions,
|
|
|
|
+ } = props.baseData;
|
|
|
|
+ baseData.businessTypeOptions = businessTypeOptions; // 业务类型
|
|
|
|
+ baseData.stepTypeOptions = stepTypeOptions; // 节点类型
|
|
|
|
+ baseData.handlerTypeOptions = handlerTypeOptions.map((item: any) => ({
|
|
|
|
+ // 办理者类型
|
|
value: item.key,
|
|
value: item.key,
|
|
label: item.value,
|
|
label: item.value,
|
|
}));
|
|
}));
|
|
- businessPropertyOptions.value = res.result?.businessPropertyOptions ?? [];
|
|
|
|
- businessPropertyOptions.value = businessPropertyOptions.value.map((item: any) => ({
|
|
|
|
- value: item.key,
|
|
|
|
- label: item.value,
|
|
|
|
- }));
|
|
|
|
- pathPolicyOptions.value = res.result?.pathPolicyOptions ?? [];
|
|
|
|
- stepPropertiesOptions.value = res.result?.stepPropertiesOptions ?? [];
|
|
|
|
|
|
+ baseData.executeModeOptions = executeModeOptions; // 执行模式
|
|
|
|
+ baseData.countersignMode = countersignMode;// 支持发起会签
|
|
|
|
+ baseData.dynamicPolicyOptions = dynamicPolicyOptions; // 会签策略
|
|
|
|
+ baseData.instanceModeOptions = instanceModeOptions; // 实例模式
|
|
|
|
+
|
|
// 合并表单
|
|
// 合并表单
|
|
Object.assign(form, props.modelValue);
|
|
Object.assign(form, props.modelValue);
|
|
- if(form.components.includes('[')){
|
|
|
|
- form.componentsOrigin = JSON.parse(form.components);
|
|
|
|
- }
|
|
|
|
- if (form.handlerClassifies.includes('[')) {
|
|
|
|
|
|
+ if (form.handlerTypeItems.includes('[')) {
|
|
switch (form.handlerType) {
|
|
switch (form.handlerType) {
|
|
case 0:
|
|
case 0:
|
|
case 1:
|
|
case 1:
|
|
case 2:
|
|
case 2:
|
|
- form.handlerClassifiesOrgin = JSON.parse(form.handlerClassifies);
|
|
|
|
|
|
+ form.handlerTypeItemsOrigin = JSON.parse(form.handlerTypeItems);
|
|
break;
|
|
break;
|
|
case 3:
|
|
case 3:
|
|
- userList.value = form.handlerClassifiesOrgin = JSON.parse(form.handlerClassifies);
|
|
|
|
|
|
+ userList.value = form.handlerTypeItemsOrigin = JSON.parse(form.handlerTypeItems);
|
|
break;
|
|
break;
|
|
case 4:
|
|
case 4:
|
|
- form.handlerClassifiesOrgin = JSON.parse(form.handlerClassifies).map((v: any) => v.id);
|
|
|
|
|
|
+ form.handlerTypeItemsOrigin = JSON.parse(form.handlerTypeItems).map((v: any) => v.id);
|
|
break;
|
|
break;
|
|
default:
|
|
default:
|
|
break;
|
|
break;
|
|
@@ -313,14 +296,16 @@ onMounted(async () => {
|
|
id: item.key,
|
|
id: item.key,
|
|
name: item.value,
|
|
name: item.value,
|
|
}));
|
|
}));
|
|
- if (handlerTypeOptions.value.length) itemName.value = handlerTypeOptions.value[form.handlerType].label;
|
|
|
|
|
|
+ if (baseData.handlerTypeOptions.length) itemName.value = baseData.handlerTypeOptions[form.handlerType].label;
|
|
} else if ([3].includes(form.handlerType)) {
|
|
} else if ([3].includes(form.handlerType)) {
|
|
- if (handlerTypeOptions.value.length) itemName.value = handlerTypeOptions.value[form.handlerType].label;
|
|
|
|
|
|
+ if (baseData.handlerTypeOptions.length) itemName.value = baseData.handlerTypeOptions[form.handlerType].label;
|
|
} else if ([4].includes(form.handlerType)) {
|
|
} else if ([4].includes(form.handlerType)) {
|
|
- if (handlerTypeOptions.value.length) itemName.value = handlerTypeOptions.value[form.handlerType].label;
|
|
|
|
|
|
+ if (baseData.handlerTypeOptions.length) itemName.value = baseData.handlerTypeOptions[form.handlerType].label;
|
|
getOrgListFn();
|
|
getOrgListFn();
|
|
}
|
|
}
|
|
- nodesOptions.value = form.nodes ?? [];
|
|
|
|
|
|
+ if(form.instancePolicy || form.instancePolicy === 0){
|
|
|
|
+ selectInstancePolicy(form.instancePolicy);
|
|
|
|
+ }
|
|
});
|
|
});
|
|
// 导入属性及方法给外部调用
|
|
// 导入属性及方法给外部调用
|
|
defineExpose({
|
|
defineExpose({
|