| | |
| | | const modalVisible = ref(false); |
| | | const modalLoading = ref(false); |
| | | const currentEditId = ref<string | number>(''); // 当前编辑的ID |
| | | const fullMenuTree = ref([]); |
| | | |
| | | // 打开弹窗 |
| | | const open = async (params: ModalProps = { update: false }) => { |
| | |
| | | await setupPageSelect(); |
| | | |
| | | if (params.id) { |
| | | await formApi.setFieldValue('menuId', params.id); |
| | | await formApi.setFieldValue('menuParentId', params.id); |
| | | if (params.update) { |
| | | // 获取详情数据 |
| | | const record = await pageInfo(params.id); |
| | | console.log('编辑数据:', record); |
| | | |
| | | // 设置基础表单数据 |
| | | const menuParentId = String(record.menuParentId || record.parentId || ''); |
| | | await formApi.setValues({ |
| | | name: record.name, |
| | | menuId: record.menuId || record.parentId || params.id, // 优先使用menuId,其次parentId |
| | | menuParentId: menuParentId, // 用 menuParentId 字段 |
| | | status: record.status, |
| | | remark: record.remark, |
| | | actionsFunc: record.actionsFunc ? JSON.parse(record.actionsFunc) : ['add', 'edit', 'delete', 'query'] |
| | |
| | | // 恢复选中的字段 |
| | | if (record.showColumn) { |
| | | selectedFields.value = JSON.parse(record.showColumn); |
| | | console.log('恢复选中字段:', selectedFields.value); |
| | | } |
| | | } catch (e) { |
| | | console.error('加载表单设计数据失败:', e); |
| | |
| | | filteredList.forEach(item => { item.menuName = $t(item.menuName); }); |
| | | // 转为树结构 |
| | | const menuTree = listToTree(filteredList, { id: 'menuId', pid: 'parentId' }); |
| | | // 加根节点 |
| | | const fullMenuTree = [ |
| | | // 递归映射 menuId -> menuParentId |
| | | function mapMenuIdToParentId(list) { |
| | | return list.map(item => { |
| | | const newItem = { ...item, menuParentId: item.menuId }; |
| | | if (item.children) { |
| | | newItem.children = mapMenuIdToParentId(item.children); |
| | | } |
| | | return newItem; |
| | | }); |
| | | } |
| | | fullMenuTree.value = [ |
| | | { |
| | | menuId: 0, |
| | | menuParentId: 0, |
| | | menuName: $t('menu.root'), |
| | | children: menuTree, |
| | | children: mapMenuIdToParentId(menuTree), |
| | | }, |
| | | ]; |
| | | // 生成全路径名 |
| | | addFullName(fullMenuTree, 'menuName', ' / '); |
| | | addFullName(fullMenuTree.value, 'menuName', ' / '); |
| | | |
| | | formApi.updateSchema([ |
| | | { |
| | | componentProps: { |
| | | fieldNames: { |
| | | label: 'menuName', |
| | | value: 'menuId', |
| | | value: 'menuId', // 用 menuId |
| | | children: 'children' |
| | | }, |
| | | getPopupContainer, |
| | | listHeight: 300, |
| | | showSearch: true, |
| | | treeData: fullMenuTree, |
| | | treeData: fullMenuTree.value, |
| | | treeDefaultExpandAll: false, |
| | | treeDefaultExpandedKeys: [0], |
| | | treeLine: { showLeafIcon: false }, |
| | | treeNodeFilterProp: 'menuName', |
| | | treeNodeLabelProp: 'fullName', |
| | | }, |
| | | fieldName: 'menuId', |
| | | fieldName: 'menuParentId', // 用 menuParentId |
| | | }, |
| | | ]); |
| | | } |
| | |
| | | const syncAllFields = () => { |
| | | // 获取表单组件的规则描述 |
| | | const formDesc = designer.value?.getFormDescription?.(); |
| | | console.log('表单组件描述:', formDesc); |
| | | |
| | | if (!formDesc || !Array.isArray(formDesc)) { |
| | | message.warning('暂无设计数据'); |
| | |
| | | field: item.field |
| | | })); |
| | | |
| | | console.log('提取的字段:', allFields); |
| | | |
| | | if (allFields.length === 0) { |
| | | message.warning('未找到可用字段'); |
| | |
| | | |
| | | // 处理设计器变化 |
| | | const handleDesignerChange = () => { |
| | | console.log('设计器内容变化'); |
| | | nextTick(() => { |
| | | updateFieldOptions(); |
| | | }); |
| | |
| | | |
| | | // 当设计器内容变化时更新字段选项 |
| | | const updateFieldOptions = () => { |
| | | console.log('updateFieldOptions'); |
| | | console.log('designer.value', designer.value); |
| | | |
| | | // 获取表单组件的规则描述 |
| | | const formDesc = designer.value?.getFormDescription?.(); |
| | | if (!formDesc || !Array.isArray(formDesc)) return; |
| | |
| | | label: item.title, |
| | | value: item.field |
| | | })); |
| | | |
| | | console.log('更新后的字段选项:', fieldOptions.value); |
| | | }; |
| | | |
| | | // 监听设计器内容变化 |