|
@@ -27,25 +27,44 @@
|
|
<el-timeline>
|
|
<el-timeline>
|
|
<el-timeline-item v-for="(item, index) in nodeModelsData" :key="index" placement="top" :timestamp="item.nodeName">
|
|
<el-timeline-item v-for="(item, index) in nodeModelsData" :key="index" placement="top" :timestamp="item.nodeName">
|
|
<div class="flex">
|
|
<div class="flex">
|
|
- <div v-if="item.type === 1">
|
|
|
|
|
|
+ <template v-if="item.type === 1">
|
|
<div v-if="[2, 5].indexOf(item.setType) > -1">
|
|
<div v-if="[2, 5].indexOf(item.setType) > -1">
|
|
- <el-tag v-if="item.setType === 2" type="primary">{{ setTypeOptions_config[item.setType] }}</el-tag>
|
|
|
|
- <el-tag v-if="item.setType === 5" type="primary">{{
|
|
|
|
|
|
+ <el-tag v-if="item.setType === 5" type="primary">{{ setTypeOptions_config[item.setType] }}</el-tag>
|
|
|
|
+ <el-tag v-if="item.setType === 2" type="primary">{{
|
|
item.examineLevel === 1 ? '直接主管' : `发起人的第${item.examineLevel}级主管`
|
|
item.examineLevel === 1 ? '直接主管' : `发起人的第${item.examineLevel}级主管`
|
|
}}</el-tag>
|
|
}}</el-tag>
|
|
</div>
|
|
</div>
|
|
- <div v-if="item.setType === 4">
|
|
|
|
- <div v-if="item.selectMode" class="mr-2">
|
|
|
|
|
|
+ <template v-if="item.setType === 4">
|
|
|
|
+ <div v-if="item.selectMode === 3" class="mr-2">
|
|
|
|
+ <el-tooltip content="添加角色" placement="bottom">
|
|
|
|
+ <el-button style="width: 32px" @click="selectHandler(item, 3)">
|
|
|
|
+ <svg-icon style="font-size: 18px" icon-class="flow-group-add" />
|
|
|
|
+ </el-button>
|
|
|
|
+ </el-tooltip>
|
|
|
|
+ </div>
|
|
|
|
+
|
|
|
|
+ <div v-else class="mr-2">
|
|
<el-tooltip content="添加用户" placement="bottom">
|
|
<el-tooltip content="添加用户" placement="bottom">
|
|
<el-button style="width: 32px" @click="selectHandler(item, 1)">
|
|
<el-button style="width: 32px" @click="selectHandler(item, 1)">
|
|
<svg-icon style="font-size: 18px" icon-class="flow-user-add" />
|
|
<svg-icon style="font-size: 18px" icon-class="flow-user-add" />
|
|
</el-button>
|
|
</el-button>
|
|
</el-tooltip>
|
|
</el-tooltip>
|
|
</div>
|
|
</div>
|
|
- </div>
|
|
|
|
|
|
+ </template>
|
|
|
|
+ </template>
|
|
|
|
+
|
|
|
|
+ <template v-else>其他的类型还未兼容</template>
|
|
|
|
+
|
|
|
|
+ <div v-if="item.selectMode !== 3">
|
|
|
|
+ <FlowNodeAvatar v-for="(childItem, childIndex) in item.nodeAssigneeList" :key="childIndex" :name="childItem.name" />
|
|
|
|
+ </div>
|
|
|
|
+ <div v-if="item.selectMode === 3">
|
|
|
|
+ <FlowNodeAvatar v-for="(childItem, childIndex) in item.nodeAssigneeList" :key="childIndex" :name="childItem.name">
|
|
|
|
+ <template #avatar>
|
|
|
|
+ <svg-icon icon-class="flow-group" color="#fff" />
|
|
|
|
+ </template>
|
|
|
|
+ </FlowNodeAvatar>
|
|
</div>
|
|
</div>
|
|
- <div v-else>其他的类型</div>
|
|
|
|
- <FlowNodeAvatar v-for="(childItem, childIndex) in item.nodeAssigneeList" :key="childIndex" :name="childItem.name" />
|
|
|
|
</div>
|
|
</div>
|
|
</el-timeline-item>
|
|
</el-timeline-item>
|
|
</el-timeline>
|
|
</el-timeline>
|
|
@@ -80,12 +99,7 @@
|
|
</template>
|
|
</template>
|
|
|
|
|
|
<!-- 选择人员/角色-->
|
|
<!-- 选择人员/角色-->
|
|
- <use-select
|
|
|
|
- ref="useSelectRef"
|
|
|
|
- v-bind="active_selectOpts"
|
|
|
|
- :max-selected="maxSelectedLength"
|
|
|
|
- @update:selected="updateActive_assigneeMap"
|
|
|
|
- ></use-select>
|
|
|
|
|
|
+ <use-select ref="useSelectRef" v-bind="active_selectOpts" @update:selected="updateActive_assigneeMap"></use-select>
|
|
</el-dialog>
|
|
</el-dialog>
|
|
</template>
|
|
</template>
|
|
|
|
|
|
@@ -146,21 +160,10 @@ const datas = reactive({
|
|
active_selectOpts: {},
|
|
active_selectOpts: {},
|
|
useSelectRef: null,
|
|
useSelectRef: null,
|
|
active_assigneeKey: null,
|
|
active_assigneeKey: null,
|
|
- maxSelectedLength: 1,
|
|
|
|
nodeTypeData: null
|
|
nodeTypeData: null
|
|
})
|
|
})
|
|
-const {
|
|
|
|
- formRef,
|
|
|
|
- uploadLoading,
|
|
|
|
- rollbackOptions,
|
|
|
|
- btnDisabled,
|
|
|
|
- nodeModelsData,
|
|
|
|
- active_selectOpts,
|
|
|
|
- useSelectRef,
|
|
|
|
- active_assigneeKey,
|
|
|
|
- maxSelectedLength,
|
|
|
|
- nodeTypeData
|
|
|
|
-} = toRefs(datas)
|
|
|
|
|
|
+const { formRef, uploadLoading, rollbackOptions, btnDisabled, nodeModelsData, active_selectOpts, useSelectRef, active_assigneeKey, nodeTypeData } =
|
|
|
|
+ toRefs(datas)
|
|
const $myEmit = defineEmits(['update:modelValue', 'successCb'])
|
|
const $myEmit = defineEmits(['update:modelValue', 'successCb'])
|
|
|
|
|
|
const closeDialog = () => {
|
|
const closeDialog = () => {
|
|
@@ -232,14 +235,20 @@ const updateActive_assigneeMap = assignees => {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
const selectHandler = (item, type) => {
|
|
const selectHandler = (item, type) => {
|
|
- // selectMode: 1 自选一人 2 自选两人
|
|
|
|
|
|
+ // 发起人自选 (1: 选择一个人, 2: 选择多个人 3: 自选角色)
|
|
// nodeModelsData.value数组中查找和nodeKey相匹配的对象值
|
|
// nodeModelsData.value数组中查找和nodeKey相匹配的对象值
|
|
const foundNode = findNodeByKey(item.nodeKey)
|
|
const foundNode = findNodeByKey(item.nodeKey)
|
|
|
|
+
|
|
let config = foundNode ? { assignees: foundNode.nodeAssigneeList, type } : { assignees: [], type }
|
|
let config = foundNode ? { assignees: foundNode.nodeAssigneeList, type } : { assignees: [], type }
|
|
|
|
+ if (item.selectMode === 1) {
|
|
|
|
+ config.selectOpts = { maxSelected: 1 }
|
|
|
|
+ }
|
|
|
|
+ // 插入备选列表 candidateAssignees
|
|
|
|
+ config.selectOpts = { ...config.selectOpts, candidateAssignees: foundNode.nodeCandidate?.assignees }
|
|
|
|
+
|
|
active_assigneeKey.value = item.nodeKey
|
|
active_assigneeKey.value = item.nodeKey
|
|
active_selectOpts.value = config.selectOpts || {}
|
|
active_selectOpts.value = config.selectOpts || {}
|
|
- maxSelectedLength.value = item.selectMode
|
|
|
|
- useSelectRef.value.open(type, config.assignees)
|
|
|
|
|
|
+ useSelectRef.value.open(item.selectMode === 3 ? 3 : 1, config.assignees)
|
|
}
|
|
}
|
|
|
|
|
|
const submitForm = debounce(() => {
|
|
const submitForm = debounce(() => {
|