Procházet zdrojové kódy

feat: 部门加入表单

luoyali před 1 rokem
rodič
revize
c08c310db5

+ 11 - 13
src/components/packages/formEditor/index.vue

@@ -21,6 +21,7 @@ export default {
 import { ls } from '@/utils/index'
 import user from '@/api/system/user'
 import role from '@/api/system/role'
+import department from '@/api/system/department'
 // import department from '@/api/system/department'
 
 const token = ls.get('token')
@@ -166,16 +167,11 @@ const getRoleList = async () => {
 getRoleList()
 
 // 部门列表
-// const getDepartmentList = async () => {
-// 	let res = await department.departmentPageApi({ page: 1, pageSize: 99999 })
-// 	departmentOptList.value = res.records.map(item => {
-// 		return {
-// 			value: item.id,
-// 			label: item.name
-// 		}
-// 	})
-// }
-// getDepartmentList()
+const getDepartmentList = async () => {
+	let res = await department.departmentPageApi({ page: 1, pageSize: 99999 })
+	departmentOptList.value = res.data || []
+}
+getDepartmentList()
 
 const setSelection = node => {
 	let result = ''
@@ -233,7 +229,9 @@ const addFieldData = (node, isCopy = false) => {
 			if (node.options.renderType === 3) {
 				node.options.options = roleOptList.value
 			}
-			if (node.options.renderType === 4) {
+		}
+		if (node.type === 'cascader') {
+			if (node.options.renderType === 2) {
 				node.options.options = departmentOptList.value
 			}
 		}
@@ -548,7 +546,7 @@ provide('Everright', {
 <template>
 	<el-dialog v-model="state.previewVisible" destroy-on-close fullscreen :class="[ns.e('previewDialog')]" @closed="previewPlatform = pc">
 		<template #header>
-			<DeviceSwitch :model-value="previewPlatform" @update:modelValue="val => handleOperation(7, val)"></DeviceSwitch>
+			<DeviceSwitch :model-value="previewPlatform" @update:model-value="val => handleOperation(7, val)"></DeviceSwitch>
 		</template>
 		<el-scrollbar>
 			<div v-loading="previewLoading" :class="[ns.e('previewDialogWrap'), previewPlatform === 'mobile' && ns.is('mobilePreview')]">
@@ -567,7 +565,7 @@ provide('Everright', {
 						<slot name="operation-left"></slot>
 					</div>
 					<div>
-						<DeviceSwitch :model-value="state.platform" @update:modelValue="val => switchPlatform(val)"></DeviceSwitch>
+						<DeviceSwitch :model-value="state.platform" @update:model-value="val => switchPlatform(val)"></DeviceSwitch>
 					</div>
 					<div>
 						<slot name="operation-right"></slot>

+ 132 - 131
src/components/packages/hooks/use-props/index.js

@@ -295,7 +295,7 @@ export const useProps = (state, data, isPc = true, isRoot = false, specialHandli
 				break
 			case 'select':
 				// 当前选中的值,如果是人员就获取人员的api,部门就获取部门的api
-				if ([2, 3, 4].indexOf(renderType) > -1) {
+				if ([2, 3].indexOf(renderType) > -1) {
 					result.options = options?.options
 				} else if (renderType === 1) {
 					result.options = _.get(state, `data[${options.dataKey}].list`, [])
@@ -387,136 +387,137 @@ export const useProps = (state, data, isPc = true, isRoot = false, specialHandli
 				break
 			case 'cascader':
 				if (renderType === 2) {
-					result.options = [
-						{
-							id: '3',
-							createId: '0',
-							createBy: 'admin',
-							createTime: '2022-02-20 22:21',
-							updateBy: 'admin',
-							updateTime: '2024-05-02 13:18',
-							pid: '0',
-							name: '飞龙驱动科技',
-							code: '1000',
-							sort: 2,
-							remark: '太阳科技',
-							status: 1,
-							headId: '0',
-							headName: 'CEO',
-							children: [
-								{
-									id: '1778237792399392769',
-									createId: '0',
-									createBy: 'admin',
-									createTime: '2024-04-11 09:45',
-									pid: '3',
-									name: '财务部',
-									code: '0023',
-									sort: 4,
-									remark: '财务部',
-									status: 0,
-									headId: '1778236187025342466',
-									parentName: '飞龙驱动科技'
-								},
-								{
-									id: '1778247413147107329',
-									createId: '0',
-									createBy: 'admin',
-									createTime: '2024-04-11 10:23',
-									pid: '3',
-									name: '应用部',
-									code: 'yingyongbu',
-									sort: 2,
-									remark: '应用部',
-									status: 1,
-									headId: '1778236187025342466',
-									headName: '夏小华',
-									parentName: '飞龙驱动科技'
-								},
-								{
-									id: '1778246587070545922',
-									createId: '0',
-									createBy: 'admin',
-									createTime: '2024-04-11 10:19',
-									pid: '3',
-									name: '综合管理部',
-									code: 'zongheguanli',
-									sort: 1,
-									remark: '综合管理',
-									status: 1,
-									headId: '1778236187025342466',
-									headName: '部门领导',
-									parentName: '飞龙驱动科技',
-									children: [
-										{
-											id: '1778247724637093889',
-											createId: '0',
-											createBy: 'admin',
-											createTime: '2024-04-11 10:24',
-											pid: '1778246587070545922',
-											name: '人事部',
-											code: 'renshibu',
-											sort: 1,
-											remark: '人事部',
-											status: 1,
-											headId: '1778235419958444034',
-											headName: '出纳',
-											parentName: '综合管理部'
-										}
-									]
-								},
-								{
-									id: '2',
-									createId: '0',
-									createBy: 'admin',
-									createTime: '2021-11-07 10:13',
-									updateBy: 'admin',
-									updateTime: '2024-04-11 10:22',
-									pid: '3',
-									name: '产品部',
-									code: '2000',
-									sort: 0,
-									remark: '产品部',
-									status: 1,
-									headId: '1778236021094481921',
-									headName: '杨小凤',
-									parentName: '飞龙驱动科技',
-									children: [
-										{
-											id: '1',
-											createId: '0',
-											createBy: 'admin',
-											createTime: '2022-02-20 22:19',
-											updateBy: 'admin',
-											updateTime: '2023-12-30 14:23',
-											pid: '2',
-											name: '开发 A 组',
-											code: '2020',
-											sort: 1,
-											remark: '开发 A 组',
-											status: 1,
-											parentName: '产品部'
-										},
-										{
-											id: '1696346580223049729',
-											createId: '0',
-											createBy: 'admin',
-											createTime: '2023-08-29 10:18',
-											updateBy: 'admin',
-											updateTime: '2023-12-30 14:23',
-											pid: '2',
-											name: '开发 B 组',
-											code: '2010',
-											sort: 1,
-											remark: '开发 B 组',
-											status: 1,
-											parentName: '产品部'
-										}
-									]
-								}
-							]
-						}
-					]
+					result.options = options?.options
+					// result.options = [
+					// 	{
+					// 		id: '3',
+					// 		createId: '0',
+					// 		createBy: 'admin',
+					// 		createTime: '2022-02-20 22:21',
+					// 		updateBy: 'admin',
+					// 		updateTime: '2024-05-02 13:18',
+					// 		pid: '0',
+					// 		name: '飞龙驱动科技',
+					// 		code: '1000',
+					// 		sort: 2,
+					// 		remark: '太阳科技',
+					// 		status: 1,
+					// 		headId: '0',
+					// 		headName: 'CEO',
+					// 		children: [
+					// 			{
+					// 				id: '1778237792399392769',
+					// 				createId: '0',
+					// 				createBy: 'admin',
+					// 				createTime: '2024-04-11 09:45',
+					// 				pid: '3',
+					// 				name: '财务部',
+					// 				code: '0023',
+					// 				sort: 4,
+					// 				remark: '财务部',
+					// 				status: 0,
+					// 				headId: '1778236187025342466',
+					// 				parentName: '飞龙驱动科技'
+					// 			},
+					// 			{
+					// 				id: '1778247413147107329',
+					// 				createId: '0',
+					// 				createBy: 'admin',
+					// 				createTime: '2024-04-11 10:23',
+					// 				pid: '3',
+					// 				name: '应用部',
+					// 				code: 'yingyongbu',
+					// 				sort: 2,
+					// 				remark: '应用部',
+					// 				status: 1,
+					// 				headId: '1778236187025342466',
+					// 				headName: '夏小华',
+					// 				parentName: '飞龙驱动科技'
+					// 			},
+					// 			{
+					// 				id: '1778246587070545922',
+					// 				createId: '0',
+					// 				createBy: 'admin',
+					// 				createTime: '2024-04-11 10:19',
+					// 				pid: '3',
+					// 				name: '综合管理部',
+					// 				code: 'zongheguanli',
+					// 				sort: 1,
+					// 				remark: '综合管理',
+					// 				status: 1,
+					// 				headId: '1778236187025342466',
+					// 				headName: '部门领导',
+					// 				parentName: '飞龙驱动科技',
+					// 				children: [
+					// 					{
+					// 						id: '1778247724637093889',
+					// 						createId: '0',
+					// 						createBy: 'admin',
+					// 						createTime: '2024-04-11 10:24',
+					// 						pid: '1778246587070545922',
+					// 						name: '人事部',
+					// 						code: 'renshibu',
+					// 						sort: 1,
+					// 						remark: '人事部',
+					// 						status: 1,
+					// 						headId: '1778235419958444034',
+					// 						headName: '出纳',
+					// 						parentName: '综合管理部'
+					// 					}
+					// 				]
+					// 			},
+					// 			{
+					// 				id: '2',
+					// 				createId: '0',
+					// 				createBy: 'admin',
+					// 				createTime: '2021-11-07 10:13',
+					// 				updateBy: 'admin',
+					// 				updateTime: '2024-04-11 10:22',
+					// 				pid: '3',
+					// 				name: '产品部',
+					// 				code: '2000',
+					// 				sort: 0,
+					// 				remark: '产品部',
+					// 				status: 1,
+					// 				headId: '1778236021094481921',
+					// 				headName: '杨小凤',
+					// 				parentName: '飞龙驱动科技',
+					// 				children: [
+					// 					{
+					// 						id: '1',
+					// 						createId: '0',
+					// 						createBy: 'admin',
+					// 						createTime: '2022-02-20 22:19',
+					// 						updateBy: 'admin',
+					// 						updateTime: '2023-12-30 14:23',
+					// 						pid: '2',
+					// 						name: '开发 A 组',
+					// 						code: '2020',
+					// 						sort: 1,
+					// 						remark: '开发 A 组',
+					// 						status: 1,
+					// 						parentName: '产品部'
+					// 					},
+					// 					{
+					// 						id: '1696346580223049729',
+					// 						createId: '0',
+					// 						createBy: 'admin',
+					// 						createTime: '2023-08-29 10:18',
+					// 						updateBy: 'admin',
+					// 						updateTime: '2023-12-30 14:23',
+					// 						pid: '2',
+					// 						name: '开发 B 组',
+					// 						code: '2010',
+					// 						sort: 1,
+					// 						remark: '开发 B 组',
+					// 						status: 1,
+					// 						parentName: '产品部'
+					// 					}
+					// 				]
+					// 			}
+					// 		]
+					// 	}
+					// ]
 				} else if (renderType === 1) {
 					result.options = _.get(state, `data[${options.dataKey}].list`, [])
 				}

+ 2 - 1
src/components/packages/utils/field.js

@@ -199,8 +199,9 @@ const syncWidthByPlatform = (node, platform, syncFullplatform = false, value) =>
 const transferLabelPath = (node) => {
   const inputTypeFlag = node.type === 'input' // input框
   const selectTypeFlag = node.type === 'select' // select框
+  const cascaderTypeFlag = node.type === 'cascader' // cascader
   let defaultFields = ''
-  if (inputTypeFlag || selectTypeFlag) {
+  if (inputTypeFlag || selectTypeFlag || cascaderTypeFlag) {
     defaultFields = `${node.type}.${node.options.renderType - 1}`
   } else {
     defaultFields = `${node.type}`