From 6f10d1a4ba4df1565927ced7d70e77fe21f487e1 Mon Sep 17 00:00:00 2001 From: 康鲁杰 <60095866+KangLujie@users.noreply.github.com> Date: 星期三, 25 六月 2025 15:28:49 +0800 Subject: [PATCH] 修改自定义表单 --- ruoyi-modules/sc-page-designer/src/main/java/org/ruoyi/pageDesigner/domain/PageDesignerVo.java | 10 +-- ruoyi-modules/sc-page-designer/src/main/java/org/ruoyi/pageDesigner/service/impl/PageDesignerTemplateServiceImpl.java | 8 +- ruoyi-modules/sc-page-designer/src/main/java/org/ruoyi/pageDesigner/domain/PageDesignerDTO.java | 1 ruoyi-ui/apps/web-antd/src/views/tool/page-designer/page-drawer.vue | 40 +++++++------ ruoyi-ui/apps/web-antd/src/views/tool/page-designer/data.tsx | 8 +- ruoyi-ui/apps/web-antd/src/views/tool/template/template-drawer.vue | 4 ruoyi-modules/sc-page-designer/src/main/resources/mapper/PageDesignerMapper.xml | 8 ++ ruoyi-modules/sc-page-designer/src/main/java/org/ruoyi/pageDesigner/service/impl/PageDesignerServiceImpl.java | 44 ++++++++++++++ ruoyi-modules/sc-page-designer/src/main/java/org/ruoyi/pageDesigner/domain/PageDesigner.java | 2 ruoyi-ui/apps/web-antd/src/views/tool/template/index.vue | 10 +- 10 files changed, 92 insertions(+), 43 deletions(-) diff --git a/ruoyi-modules/sc-page-designer/src/main/java/org/ruoyi/pageDesigner/domain/PageDesigner.java b/ruoyi-modules/sc-page-designer/src/main/java/org/ruoyi/pageDesigner/domain/PageDesigner.java index 0e2916b..19603e1 100644 --- a/ruoyi-modules/sc-page-designer/src/main/java/org/ruoyi/pageDesigner/domain/PageDesigner.java +++ b/ruoyi-modules/sc-page-designer/src/main/java/org/ruoyi/pageDesigner/domain/PageDesigner.java @@ -22,6 +22,8 @@ private String name; @TableField("MENU_ID") private String menuId; // 鍏宠仈鐨勮彍鍗旾D + @TableField("MENU_PARENT_ID") + private String menuParentId; // 鍏宠仈鐨勮彍鍗曠埗ID @TableField("STATUS") private String status; @TableField(value = "DEL_FLAG") diff --git a/ruoyi-modules/sc-page-designer/src/main/java/org/ruoyi/pageDesigner/domain/PageDesignerDTO.java b/ruoyi-modules/sc-page-designer/src/main/java/org/ruoyi/pageDesigner/domain/PageDesignerDTO.java index 7224b38..bf81590 100644 --- a/ruoyi-modules/sc-page-designer/src/main/java/org/ruoyi/pageDesigner/domain/PageDesignerDTO.java +++ b/ruoyi-modules/sc-page-designer/src/main/java/org/ruoyi/pageDesigner/domain/PageDesignerDTO.java @@ -23,4 +23,5 @@ private String formJson; // 琛ㄥ崟璁捐 JSON 瀛楃涓� private String showColumn; // 瀛楁鏄剧ず閰嶇疆 private String actionsFunc; // 鍚敤鐨勬搷浣滈」锛堝鍒犳敼鏌ワ級 + private String menuParentId; } diff --git a/ruoyi-modules/sc-page-designer/src/main/java/org/ruoyi/pageDesigner/domain/PageDesignerVo.java b/ruoyi-modules/sc-page-designer/src/main/java/org/ruoyi/pageDesigner/domain/PageDesignerVo.java index 54bb8fa..6d079fe 100644 --- a/ruoyi-modules/sc-page-designer/src/main/java/org/ruoyi/pageDesigner/domain/PageDesignerVo.java +++ b/ruoyi-modules/sc-page-designer/src/main/java/org/ruoyi/pageDesigner/domain/PageDesignerVo.java @@ -5,6 +5,7 @@ import org.ruoyi.system.domain.vo.SysMenuVo; import java.io.Serializable; +import java.util.Date; /** * @author kanglujie @@ -15,13 +16,8 @@ public class PageDesignerVo implements Serializable { private Long id; // 淇敼鏃朵紶鍏� private String name; // 椤甸潰鍚嶇О - private String menuId; // 鍏宠仈鑿滃崟 ID - private String parentId; // 鍏宠仈鑿滃崟 ID private String status; // 鍚敤鐘舵�� private String remark; // 澶囨敞 - private String formJson; // 琛ㄥ崟璁捐 JSON 瀛楃涓� - private String showColumn; // 瀛楁鏄剧ず閰嶇疆 - private String actionsFunc; // 鍚敤鐨勬搷浣滈」锛堝鍒犳敼鏌ワ級 - private SysMenuVo menu; // 鍒涘缓浜轰俊鎭� - private SysMenuVo parent; // 鍒涘缓浜轰俊鎭� + private String menuParentId; // 鑿滃崟鐖禝D + private Date createTime; // 鍒涘缓鏃堕棿 } diff --git a/ruoyi-modules/sc-page-designer/src/main/java/org/ruoyi/pageDesigner/service/impl/PageDesignerServiceImpl.java b/ruoyi-modules/sc-page-designer/src/main/java/org/ruoyi/pageDesigner/service/impl/PageDesignerServiceImpl.java index e42337c..e7bd36f 100644 --- a/ruoyi-modules/sc-page-designer/src/main/java/org/ruoyi/pageDesigner/service/impl/PageDesignerServiceImpl.java +++ b/ruoyi-modules/sc-page-designer/src/main/java/org/ruoyi/pageDesigner/service/impl/PageDesignerServiceImpl.java @@ -1,6 +1,8 @@ package org.ruoyi.pageDesigner.service.impl; import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSONObject; +import com.amazonaws.util.json.Jackson; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -20,6 +22,9 @@ import org.ruoyi.pageDesigner.domain.PageDesignerVo; import org.ruoyi.pageDesigner.mapper.PageDesignerMapper; import org.ruoyi.pageDesigner.service.PageDesignerService; +import org.ruoyi.system.domain.SysMenu; +import org.ruoyi.system.mapper.SysMenuMapper; +import org.ruoyi.system.mapper.SysUserMapper; import org.springframework.stereotype.Service; import java.util.List; @@ -34,18 +39,42 @@ public class PageDesignerServiceImpl extends ServiceImpl<PageDesignerMapper, PageDesigner> implements PageDesignerService { - private final ObjectMapper objectMapper; + private final SysMenuMapper menuMapper; @Override public void add(PageDesignerDTO dto) { + SysMenu menu = new SysMenu(); + menu.setMenuName(dto.getName()); + menu.setParentId(Long.valueOf(dto.getMenuParentId())); + menu.setOrderNum(100); + menu.setPath("page"); + menu.setComponent("tool/template/index"); + menu.setIsFrame("1"); + menu.setIsCache("0"); + menu.setMenuType("C"); // C:鐩綍, M:鑿滃崟, F:鎸夐挳 + menu.setVisible("0"); + menu.setStatus(dto.getStatus()); + menuMapper.insert(menu); PageDesigner entity = convertToEntity(dto); + entity.setMenuId(menu.getMenuId().toString()); this.save(entity); + JSONObject json = new JSONObject(); + json.put("pageId", entity.getId().toString()); + String jsonString = json.toJSONString(); + menu.setQueryParam(jsonString); + menuMapper.updateById(menu); } @Override public void updatePage(PageDesignerDTO dto) { PageDesigner entity = convertToEntity(dto); this.updateById(entity); + PageDesigner byId = this.getById(entity.getId()); + SysMenu menu = new SysMenu(); + menu.setMenuId(Long.valueOf(byId.getMenuId())); + menu.setStatus(entity.getStatus()); + menu.setParentId(Long.valueOf(entity.getMenuParentId())); + menuMapper.updateById(menu); } @Override @@ -79,7 +108,17 @@ @Override public void deleteByIds(List<Long> ids) { - this.removeByIds(ids); + List<PageDesigner> designers = this.listByIds(ids); + for (PageDesigner designer : designers) { + Long id = designer.getId(); + this.removeById(id); + + Long menuId = Long.valueOf(designer.getMenuId()); + if (menuId != null) { + menuMapper.deleteById(menuId); + } + } + } private PageDesigner convertToEntity(PageDesignerDTO dto) { @@ -92,6 +131,7 @@ entity.setFormJson(dto.getFormJson()); entity.setShowColumn(dto.getShowColumn()); entity.setActionsFunc(dto.getActionsFunc()); + entity.setMenuParentId(dto.getMenuParentId()); return entity; } } diff --git a/ruoyi-modules/sc-page-designer/src/main/java/org/ruoyi/pageDesigner/service/impl/PageDesignerTemplateServiceImpl.java b/ruoyi-modules/sc-page-designer/src/main/java/org/ruoyi/pageDesigner/service/impl/PageDesignerTemplateServiceImpl.java index 4901a54..8ed291e 100644 --- a/ruoyi-modules/sc-page-designer/src/main/java/org/ruoyi/pageDesigner/service/impl/PageDesignerTemplateServiceImpl.java +++ b/ruoyi-modules/sc-page-designer/src/main/java/org/ruoyi/pageDesigner/service/impl/PageDesignerTemplateServiceImpl.java @@ -1,5 +1,6 @@ package org.ruoyi.pageDesigner.service.impl; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -8,6 +9,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.fasterxml.jackson.databind.ObjectMapper; import lombok.RequiredArgsConstructor; +import org.ruoyi.common.core.constant.UserConstants; import org.ruoyi.core.page.PageQuery; import org.ruoyi.core.page.TableDataInfo; import org.ruoyi.pageDesigner.domain.*; @@ -50,13 +52,13 @@ private Wrapper<PageDesignerTemplate> buildQueryWrapper(PageDesignerTemplateDTO dto) { //Map<String, Object> params = pageDesignerDTO.getParams(); QueryWrapper<PageDesignerTemplate> wrapper = Wrappers.query(); - //wrapper.eq("del_flag", UserConstants.USER_NORMAL) - // .eq(ObjectUtil.isNotNull(pageDesignerDTO.getId()), "id", pageDesignerDTO.getId()) + wrapper.eq("del_flag", UserConstants.USER_NORMAL) + .eq(ObjectUtil.isNotNull(dto.getPageId()), "page_id", dto.getPageId()) // .like(StringUtils.isNotBlank(pageDesignerDTO.getName()), "name", pageDesignerDTO.getName()) // .eq(StringUtils.isNotBlank(pageDesignerDTO.getStatus()), "status", pageDesignerDTO.getStatus()) // .between(params.get("beginTime") != null && params.get("endTime") != null, // "create_time", params.get("beginTime"), params.get("endTime")) - //; + ; return wrapper; } @Override diff --git a/ruoyi-modules/sc-page-designer/src/main/resources/mapper/PageDesignerMapper.xml b/ruoyi-modules/sc-page-designer/src/main/resources/mapper/PageDesignerMapper.xml index 033657e..bd1d17f 100644 --- a/ruoyi-modules/sc-page-designer/src/main/resources/mapper/PageDesignerMapper.xml +++ b/ruoyi-modules/sc-page-designer/src/main/resources/mapper/PageDesignerMapper.xml @@ -9,6 +9,9 @@ <id property="id" column="id"/> <result property="name" column="name"/> <result property="status" column="status"/> + <result property="createTime" column="create_time"/> + <result property="menuParentId" column="menu_parent_id"/> + <result property="remark" column="remark"/> </resultMap> @@ -16,7 +19,10 @@ select id, name, - status + status, + create_time, + menu_parent_id, + remark from page_designer ${ew.getCustomSqlSegment} </select> diff --git a/ruoyi-ui/apps/web-antd/src/views/tool/page-designer/data.tsx b/ruoyi-ui/apps/web-antd/src/views/tool/page-designer/data.tsx index eaf43de..9c1dab0 100644 --- a/ruoyi-ui/apps/web-antd/src/views/tool/page-designer/data.tsx +++ b/ruoyi-ui/apps/web-antd/src/views/tool/page-designer/data.tsx @@ -41,7 +41,7 @@ field: 'status', slots: { default: ({ row }) => { - return row.status === '1' ? '姝e父' : '鍋滅敤'; + return row.status === '0' ? '姝e父' : '鍋滅敤'; }, }, }, @@ -66,7 +66,7 @@ }, { component: 'TreeSelect', - fieldName: 'menuId', + fieldName: 'menuParentId', label: '涓婄骇鐩綍', componentProps: { allowClear: true, @@ -80,8 +80,8 @@ label: '鐘舵��', componentProps: { options: [ - { label: '姝e父', value: '1' }, - { label: '鍋滅敤', value: '0' }, + { label: '姝e父', value: '0' }, + { label: '鍋滅敤', value: '1' }, ], }, rules: 'selectRequired', diff --git a/ruoyi-ui/apps/web-antd/src/views/tool/page-designer/page-drawer.vue b/ruoyi-ui/apps/web-antd/src/views/tool/page-designer/page-drawer.vue index a73c4ee..153664d 100644 --- a/ruoyi-ui/apps/web-antd/src/views/tool/page-designer/page-drawer.vue +++ b/ruoyi-ui/apps/web-antd/src/views/tool/page-designer/page-drawer.vue @@ -40,6 +40,7 @@ const modalVisible = ref(false); const modalLoading = ref(false); const currentEditId = ref<string | number>(''); // 褰撳墠缂栬緫鐨処D +const fullMenuTree = ref([]); // 鎵撳紑寮圭獥 const open = async (params: ModalProps = { update: false }) => { @@ -51,16 +52,16 @@ 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锛屽叾娆arentId + menuParentId: menuParentId, // 鐢� menuParentId 瀛楁 status: record.status, remark: record.remark, actionsFunc: record.actionsFunc ? JSON.parse(record.actionsFunc) : ['add', 'edit', 'delete', 'query'] @@ -80,7 +81,6 @@ // 鎭㈠閫変腑鐨勫瓧娈� if (record.showColumn) { selectedFields.value = JSON.parse(record.showColumn); - console.log('鎭㈠閫変腑瀛楁:', selectedFields.value); } } catch (e) { console.error('鍔犺浇琛ㄥ崟璁捐鏁版嵁澶辫触:', e); @@ -116,36 +116,46 @@ 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 }, ]); } @@ -155,7 +165,6 @@ const syncAllFields = () => { // 鑾峰彇琛ㄥ崟缁勪欢鐨勮鍒欐弿杩� const formDesc = designer.value?.getFormDescription?.(); - console.log('琛ㄥ崟缁勪欢鎻忚堪:', formDesc); if (!formDesc || !Array.isArray(formDesc)) { message.warning('鏆傛棤璁捐鏁版嵁'); @@ -170,7 +179,6 @@ field: item.field })); - console.log('鎻愬彇鐨勫瓧娈�:', allFields); if (allFields.length === 0) { message.warning('鏈壘鍒板彲鐢ㄥ瓧娈�'); @@ -190,7 +198,6 @@ // 澶勭悊璁捐鍣ㄥ彉鍖� const handleDesignerChange = () => { - console.log('璁捐鍣ㄥ唴瀹瑰彉鍖�'); nextTick(() => { updateFieldOptions(); }); @@ -198,9 +205,6 @@ // 褰撹璁″櫒鍐呭鍙樺寲鏃舵洿鏂板瓧娈甸�夐」 const updateFieldOptions = () => { - console.log('updateFieldOptions'); - console.log('designer.value', designer.value); - // 鑾峰彇琛ㄥ崟缁勪欢鐨勮鍒欐弿杩� const formDesc = designer.value?.getFormDescription?.(); if (!formDesc || !Array.isArray(formDesc)) return; @@ -216,8 +220,6 @@ label: item.title, value: item.field })); - - console.log('鏇存柊鍚庣殑瀛楁閫夐」:', fieldOptions.value); }; // 鐩戝惉璁捐鍣ㄥ唴瀹瑰彉鍖� diff --git a/ruoyi-ui/apps/web-antd/src/views/tool/template/index.vue b/ruoyi-ui/apps/web-antd/src/views/tool/template/index.vue index d198eaa..16b3c41 100644 --- a/ruoyi-ui/apps/web-antd/src/views/tool/template/index.vue +++ b/ruoyi-ui/apps/web-antd/src/views/tool/template/index.vue @@ -176,7 +176,7 @@ const safeDetail = { id: detail.id, name: detail.name, - menuId: detail.menuId, + menuParentId: detail.menuId, status: detail.status, remark: detail.remark, formJson: detail.formJson, @@ -234,7 +234,7 @@ ...formValues, }; if (pageId.value) { - queryParams.pageDesignId = pageId.value; + queryParams.pageId = pageId.value; } const resp = await templateList(queryParams); // 澶勭悊姣忔潯 row 鐨� formData @@ -294,7 +294,7 @@ // 濡傛灉鏈� pageId锛屼紶閫掔粰鏂板 const params: any = { update: false }; if (pageId.value) { - params.pageDesignId = pageId.value; + params.pageId = pageId.value; } // 鍔ㄦ�佷紶閫抐ormJson锛屽厛JSON.parse锛屼繚璇佹槸绾璞� if (pageDesignDetail.value && pageDesignDetail.value.formJson) { @@ -315,7 +315,7 @@ const params: any = { id: record.id, update: true, - pageDesignId: pageId.value, // 浼犻�掗〉闈㈣璁D + pageId: pageId.value, // 浼犻�掗〉闈㈣璁D record: record // 浼犻�掑畬鏁寸殑璁板綍鏁版嵁 }; @@ -323,7 +323,7 @@ try { const formJson = JSON.parse(pageDesignDetail.value.formJson); params.formJson = formJson; - console.log('缂栬緫鏃朵紶閫掓暟鎹�:', { record, formJson, pageDesignId: pageId.value }); + console.log('缂栬緫鏃朵紶閫掓暟鎹�:', { record, formJson, pageId: pageId.value }); } catch (error) { console.error('瑙f瀽 formJson 澶辫触:', error); params.formJson = undefined; diff --git a/ruoyi-ui/apps/web-antd/src/views/tool/template/template-drawer.vue b/ruoyi-ui/apps/web-antd/src/views/tool/template/template-drawer.vue index da11342..a3d88e0 100644 --- a/ruoyi-ui/apps/web-antd/src/views/tool/template/template-drawer.vue +++ b/ruoyi-ui/apps/web-antd/src/views/tool/template/template-drawer.vue @@ -9,7 +9,7 @@ interface ModalProps { id?: number | string; update: boolean; - pageDesignId?: string | number; + pageId?: string | number; formJson?: any; } @@ -67,7 +67,7 @@ modalLoading.value = true; isUpdate.value = params.update; currentEditId.value = params.id || ''; - currentPageId.value = params.pageId || params.pageDesignId || ''; + currentPageId.value = params.pageId || ''; // 璁剧疆鍔ㄦ�佽〃鍗曞瓧娈碉紝濮嬬粓绉婚櫎鎵�鏈塻ubmit鎸夐挳 if (params.formJson) { -- Gitblit v1.9.3