| | |
| | | Suitcase, Calendar, Location, Money, ShoppingCart, DocumentChecked, |
| | | Van, ArrowRight, User, InfoFilled |
| | | } from '@element-plus/icons-vue'; |
| | | import { getApproveProcessConfigNodeList, addApproveProcessConfigNode } from '@/api/collaborativeApproval/approvalManagement'; |
| | | import { userListNoPage } from '@/api/system/user'; |
| | | |
| | | // 当前选中的标签页 |
| | | const activeTab = ref('1'); |
| | |
| | | return texts[index] || `第${index + 1}级`; |
| | | }; |
| | | |
| | | // 获取审批人数量 |
| | | const getApproverCount = (typeValue) => { |
| | | const type = Number(typeValue); |
| | | const data = mockConfigData[type] || []; |
| | | return data.length; |
| | | }; |
| | | |
| | | // 模拟用户列表数据 |
| | | const userList = ref([ |
| | | { userId: 1, nickName: '张三' }, |
| | | { userId: 2, nickName: '李四' }, |
| | | { userId: 3, nickName: '王五' }, |
| | | { userId: 4, nickName: '赵六' }, |
| | | { userId: 5, nickName: '孙七' }, |
| | | { userId: 6, nickName: '周八' }, |
| | | { userId: 7, nickName: '吴九' }, |
| | | { userId: 8, nickName: '郑十' }, |
| | | ]); |
| | | |
| | | // 模拟审批配置数据存储(按审批类型分类) |
| | | const mockConfigData = { |
| | | 1: [ |
| | | { id: 1, approveType: 1, approverId: 1, approverName: '张三', sortOrder: 1 }, |
| | | { id: 2, approveType: 1, approverId: 2, approverName: '李四', sortOrder: 2 }, |
| | | ], |
| | | 2: [ |
| | | { id: 3, approveType: 2, approverId: 3, approverName: '王五', sortOrder: 1 }, |
| | | ], |
| | | 3: [], |
| | | 4: [ |
| | | { id: 4, approveType: 4, approverId: 1, approverName: '张三', sortOrder: 1 }, |
| | | { id: 5, approveType: 4, approverId: 3, approverName: '王五', sortOrder: 2 }, |
| | | { id: 6, approveType: 4, approverId: 5, approverName: '孙七', sortOrder: 3 }, |
| | | ], |
| | | 5: [], |
| | | 6: [], |
| | | 7: [], |
| | | }; |
| | | // 审批人列表(真实接口) |
| | | const userList = ref([]); |
| | | |
| | | // 审批人列表 |
| | | const approverList = ref([]); |
| | |
| | | }; |
| | | |
| | | // 加载审批配置数据(模拟) |
| | | const loadData = () => { |
| | | const loadData = async () => { |
| | | loading.value = true; |
| | | setTimeout(() => { |
| | | const data = mockConfigData[currentApproveType.value] || []; |
| | | approverList.value = data.sort((a, b) => a.sortOrder - b.sortOrder); |
| | | try { |
| | | const res = await getApproveProcessConfigNodeList(currentApproveType.value); |
| | | const source = Array.isArray(res?.data) |
| | | ? res.data |
| | | : Array.isArray(res?.rows) |
| | | ? res.rows |
| | | : Array.isArray(res?.data?.records) |
| | | ? res.data.records |
| | | : []; |
| | | const data = source.map((item, index) => ({ |
| | | ...item, |
| | | sortOrder: item.nodeOrder ?? item.sortOrder ?? index + 1, |
| | | })); |
| | | approverList.value = data.sort((a, b) => (a.sortOrder || 0) - (b.sortOrder || 0)); |
| | | originalList.value = JSON.parse(JSON.stringify(approverList.value)); |
| | | } catch (error) { |
| | | approverList.value = []; |
| | | originalList.value = []; |
| | | ElMessage.error('加载审批配置失败'); |
| | | } finally { |
| | | loading.value = false; |
| | | }, 300); |
| | | } |
| | | }; |
| | | |
| | | const loadUserList = async () => { |
| | | try { |
| | | const res = await userListNoPage(); |
| | | userList.value = Array.isArray(res?.data) ? res.data : []; |
| | | } catch (error) { |
| | | userList.value = []; |
| | | ElMessage.error('加载人员列表失败'); |
| | | } |
| | | }; |
| | | |
| | | // 审批人选择变化 |
| | |
| | | approverList.value[index + 1].sortOrder = index + 2; |
| | | }; |
| | | |
| | | // 保存配置(模拟) |
| | | const handleSave = () => { |
| | | // 保存配置 |
| | | const handleSave = async () => { |
| | | if (approverList.value.length === 0) { |
| | | ElMessage.warning('请至少配置一个审批人'); |
| | | return; |
| | |
| | | } |
| | | |
| | | saveLoading.value = true; |
| | | setTimeout(() => { |
| | | mockConfigData[currentApproveType.value] = approverList.value.map((item, index) => ({ |
| | | ...item, |
| | | id: item.id || Date.now() + index, |
| | | sortOrder: index + 1, |
| | | try { |
| | | const payload = approverList.value.map((item, index) => ({ |
| | | approveType: currentApproveType.value, |
| | | nodeOrder: index + 1, |
| | | approverId: item.approverId, |
| | | approverName: item.approverName, |
| | | })); |
| | | originalList.value = JSON.parse(JSON.stringify(mockConfigData[currentApproveType.value])); |
| | | approverList.value = JSON.parse(JSON.stringify(originalList.value)); |
| | | await addApproveProcessConfigNode(payload); |
| | | ElMessage.success('保存成功'); |
| | | await loadData(); |
| | | } catch (error) { |
| | | ElMessage.error('保存失败'); |
| | | } finally { |
| | | saveLoading.value = false; |
| | | }, 500); |
| | | } |
| | | }; |
| | | |
| | | // 重置 |
| | |
| | | .catch(() => {}); |
| | | }; |
| | | |
| | | onMounted(() => { |
| | | loadData(); |
| | | onMounted(async () => { |
| | | await loadUserList(); |
| | | await loadData(); |
| | | }); |
| | | </script> |
| | | |