一单四制优化及加入工作流

This commit is contained in:
王利强
2026-07-27 09:27:22 +08:00
parent 455fd4fc07
commit 7c3285ed5a
725 changed files with 19668 additions and 2921 deletions

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
{"version":3,"file":"FlowAssigneeTree.js","sources":["components/flow/FlowAssigneeTree.vue","F:/software/HBuilderX/HBuilderX/plugins/uniapp-cli-vite/uniComponent:/RTovaGV4aWV5dW4vVGhyZWVDaGVja3NPbmVFeHBvc3VyZV9wbGF0Zm9ybS8xMi4wN2Nob25ncWl4aW5kZS_kuInmn6XkuIDmm53lhYnlsI_nqIvluo8vdGhyZWVvbmVjaGVja1_lsI_nqIvluo8vY29tcG9uZW50cy9mbG93L0Zsb3dBc3NpZ25lZVRyZWUudnVl"],"sourcesContent":["<template>\r\n\t<view class=\"assignee-tree\">\r\n\t\t<template v-for=\"row in flatRows\" :key=\"row.key\">\r\n\t\t\t<view\r\n\t\t\t\tv-if=\"row.type === 'dept'\"\r\n\t\t\t\tclass=\"dept-node\"\r\n\t\t\t\t:style=\"{ paddingLeft: `${row.level * 24 + 20}rpx` }\"\r\n\t\t\t>\r\n\t\t\t\t<text class=\"dept-name\">{{ row.deptName }}</text>\r\n\t\t\t</view>\r\n\t\t\t<view\r\n\t\t\t\tv-else\r\n\t\t\t\tclass=\"user-item\"\r\n\t\t\t\t:class=\"{ active: String(selectedIdentityId) === String(resolveAssigneeIdentityId(row.user)) }\"\r\n\t\t\t\t:style=\"{ paddingLeft: `${row.level * 24 + 20}rpx` }\"\r\n\t\t\t\t@click=\"handleSelect(row.user)\"\r\n\t\t\t>\r\n\t\t\t\t<text class=\"user-item-text\">{{ formatAssigneeDisplayName(row.user) }}</text>\r\n\t\t\t\t<text\r\n\t\t\t\t\tv-if=\"String(selectedIdentityId) === String(resolveAssigneeIdentityId(row.user))\"\r\n\t\t\t\t\tclass=\"cuIcon-check text-blue\"\r\n\t\t\t\t></text>\r\n\t\t\t</view>\r\n\t\t</template>\r\n\t</view>\r\n</template>\r\n\r\n<script setup>\r\nimport { computed } from 'vue';\r\nimport {\r\n\tflattenApproverDeptTree,\r\n\tformatAssigneeDisplayName,\r\n\tresolveAssigneeIdentityId\r\n} from './flowAssigneeUtils.js';\r\n\r\nconst props = defineProps({\r\n\tdepts: {\r\n\t\ttype: Array,\r\n\t\tdefault: () => []\r\n\t},\r\n\tselectedIdentityId: {\r\n\t\ttype: String,\r\n\t\tdefault: ''\r\n\t}\r\n});\r\n\r\nconst emit = defineEmits(['select']);\r\n\r\nconst flatRows = computed(() => flattenApproverDeptTree(props.depts));\r\n\r\nconst handleSelect = (user) => {\r\n\temit('select', user);\r\n};\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n.dept-node {\r\n\tpadding: 20rpx 20rpx 12rpx;\r\n\tfont-size: 26rpx;\r\n\tcolor: #909399;\r\n\tline-height: 1.4;\r\n}\r\n\r\n.dept-name {\r\n\tfont-weight: 600;\r\n}\r\n\r\n.user-item {\r\n\tdisplay: flex;\r\n\talign-items: center;\r\n\tjustify-content: space-between;\r\n\tpadding: 24rpx 20rpx;\r\n\tborder-bottom: 1rpx solid #f5f5f5;\r\n\r\n\t&.active {\r\n\t\t.user-item-text {\r\n\t\t\tcolor: #2667E9;\r\n\t\t\tfont-weight: 600;\r\n\t\t}\r\n\t}\r\n\r\n\t.user-item-text {\r\n\t\tflex: 1;\r\n\t\tfont-size: 28rpx;\r\n\t\tcolor: #333;\r\n\t}\r\n}\r\n</style>\r\n","import Component from 'E:/hexieyun/ThreeChecksOneExposure_platform/12.07chongqixinde/三查一曝光小程序/threeonecheck_小程序/components/flow/FlowAssigneeTree.vue'\nwx.createComponent(Component)"],"names":["computed","flattenApproverDeptTree"],"mappings":";;;;;;;;;;;;;;;;;AAmCA,UAAM,QAAQ;AAWd,UAAM,OAAO;AAEb,UAAM,WAAWA,cAAQ,SAAC,MAAMC,kCAAAA,wBAAwB,MAAM,KAAK,CAAC;AAEpE,UAAM,eAAe,CAAC,SAAS;AAC9B,WAAK,UAAU,IAAI;AAAA,IACpB;;;;;;;;;;;;;;;;;;;;;;;;;;ACnDA,GAAG,gBAAgB,SAAS;"}

View File

@@ -0,0 +1 @@
{"version":3,"file":"flowAssigneeUtils.js","sources":["components/flow/flowAssigneeUtils.js"],"sourcesContent":["export const resolveAssigneeIdentityId = (user) => {\r\n\tif (!user) return '';\r\n\tconst id = user.identityId ?? user.userIdentityId ?? user.userId ?? '';\r\n\treturn id === '' || id == null ? '' : String(id);\r\n};\r\n\r\nexport const getAssigneeItemKey = (user) => {\r\n\tconst identityId = resolveAssigneeIdentityId(user);\r\n\tif (identityId) return `identity-${identityId}`;\r\n\treturn `user-${user.userId || user.nickName || ''}`;\r\n};\r\n\r\nexport const formatAssigneeDisplayName = (user) => {\r\n\tif (!user) return '';\r\n\tif (user.identityName) {\r\n\t\treturn `${user.nickName || user.userName || ''}_${user.identityName}`;\r\n\t}\r\n\tif (user.postName) {\r\n\t\treturn `${user.nickName || user.userName || ''}_${user.postName}`;\r\n\t}\r\n\treturn user.nickName || user.userName || user.name || '未知人员';\r\n};\r\n\r\nexport const normalizeApproverDeptTree = (data) => {\r\n\tif (!data) return [];\r\n\tif (Array.isArray(data)) return data;\r\n\tif (Array.isArray(data.records)) return data.records;\r\n\tif (Array.isArray(data.list)) return data.list;\r\n\treturn [];\r\n};\r\n\r\nexport const findAssigneeUserInDeptTree = (depts, identityId) => {\r\n\tif (!identityId || !Array.isArray(depts)) return null;\r\n\tfor (const dept of depts) {\r\n\t\tconst user = (dept.users || []).find(\r\n\t\t\t(item) => String(resolveAssigneeIdentityId(item)) === String(identityId)\r\n\t\t);\r\n\t\tif (user) return user;\r\n\t\tif (dept.children?.length) {\r\n\t\t\tconst found = findAssigneeUserInDeptTree(dept.children, identityId);\r\n\t\t\tif (found) return found;\r\n\t\t}\r\n\t}\r\n\treturn null;\r\n};\r\n\r\n/** 将部门树拍平为可渲染行(部门标题 + 人员),避免小程序递归组件不展示子部门 */\r\nexport const flattenApproverDeptTree = (depts, level = 0) => {\r\n\tconst rows = [];\r\n\tif (!Array.isArray(depts)) return rows;\r\n\tfor (const dept of depts) {\r\n\t\trows.push({\r\n\t\t\ttype: 'dept',\r\n\t\t\tkey: `dept-${dept.deptId ?? dept.deptName ?? level}`,\r\n\t\t\tdeptName: dept.deptName || '',\r\n\t\t\tlevel\r\n\t\t});\r\n\t\tfor (const user of dept.users || []) {\r\n\t\t\trows.push({\r\n\t\t\t\ttype: 'user',\r\n\t\t\t\tkey: getAssigneeItemKey(user),\r\n\t\t\t\tuser,\r\n\t\t\t\tlevel: level + 1\r\n\t\t\t});\r\n\t\t}\r\n\t\tif (dept.children?.length) {\r\n\t\t\trows.push(...flattenApproverDeptTree(dept.children, level + 1));\r\n\t\t}\r\n\t}\r\n\treturn rows;\r\n};\r\n"],"names":[],"mappings":";AAAY,MAAC,4BAA4B,CAAC,SAAS;AAClD,MAAI,CAAC;AAAM,WAAO;AAClB,QAAM,KAAK,KAAK,cAAc,KAAK,kBAAkB,KAAK,UAAU;AACpE,SAAO,OAAO,MAAM,MAAM,OAAO,KAAK,OAAO,EAAE;AAChD;AAEO,MAAM,qBAAqB,CAAC,SAAS;AAC3C,QAAM,aAAa,0BAA0B,IAAI;AACjD,MAAI;AAAY,WAAO,YAAY,UAAU;AAC7C,SAAO,QAAQ,KAAK,UAAU,KAAK,YAAY,EAAE;AAClD;AAEY,MAAC,4BAA4B,CAAC,SAAS;AAClD,MAAI,CAAC;AAAM,WAAO;AAClB,MAAI,KAAK,cAAc;AACtB,WAAO,GAAG,KAAK,YAAY,KAAK,YAAY,EAAE,IAAI,KAAK,YAAY;AAAA,EACnE;AACD,MAAI,KAAK,UAAU;AAClB,WAAO,GAAG,KAAK,YAAY,KAAK,YAAY,EAAE,IAAI,KAAK,QAAQ;AAAA,EAC/D;AACD,SAAO,KAAK,YAAY,KAAK,YAAY,KAAK,QAAQ;AACvD;AAEY,MAAC,4BAA4B,CAAC,SAAS;AAClD,MAAI,CAAC;AAAM,WAAO;AAClB,MAAI,MAAM,QAAQ,IAAI;AAAG,WAAO;AAChC,MAAI,MAAM,QAAQ,KAAK,OAAO;AAAG,WAAO,KAAK;AAC7C,MAAI,MAAM,QAAQ,KAAK,IAAI;AAAG,WAAO,KAAK;AAC1C,SAAO;AACR;AAEY,MAAC,6BAA6B,CAAC,OAAO,eAAe;;AAChE,MAAI,CAAC,cAAc,CAAC,MAAM,QAAQ,KAAK;AAAG,WAAO;AACjD,aAAW,QAAQ,OAAO;AACzB,UAAM,QAAQ,KAAK,SAAS,CAAE,GAAE;AAAA,MAC/B,CAAC,SAAS,OAAO,0BAA0B,IAAI,CAAC,MAAM,OAAO,UAAU;AAAA,IAC1E;AACE,QAAI;AAAM,aAAO;AACjB,SAAI,UAAK,aAAL,mBAAe,QAAQ;AAC1B,YAAM,QAAQ,2BAA2B,KAAK,UAAU,UAAU;AAClE,UAAI;AAAO,eAAO;AAAA,IAClB;AAAA,EACD;AACD,SAAO;AACR;AAGY,MAAC,0BAA0B,CAAC,OAAO,QAAQ,MAAM;;AAC5D,QAAM,OAAO,CAAA;AACb,MAAI,CAAC,MAAM,QAAQ,KAAK;AAAG,WAAO;AAClC,aAAW,QAAQ,OAAO;AACzB,SAAK,KAAK;AAAA,MACT,MAAM;AAAA,MACN,KAAK,QAAQ,KAAK,UAAU,KAAK,YAAY,KAAK;AAAA,MAClD,UAAU,KAAK,YAAY;AAAA,MAC3B;AAAA,IACH,CAAG;AACD,eAAW,QAAQ,KAAK,SAAS,CAAA,GAAI;AACpC,WAAK,KAAK;AAAA,QACT,MAAM;AAAA,QACN,KAAK,mBAAmB,IAAI;AAAA,QAC5B;AAAA,QACA,OAAO,QAAQ;AAAA,MACnB,CAAI;AAAA,IACD;AACD,SAAI,UAAK,aAAL,mBAAe,QAAQ;AAC1B,WAAK,KAAK,GAAG,wBAAwB,KAAK,UAAU,QAAQ,CAAC,CAAC;AAAA,IAC9D;AAAA,EACD;AACD,SAAO;AACR;;;;;;"}