From 916b4c88fc7507993974991ca34568c08ca2d46f Mon Sep 17 00:00:00 2001 From: limengnan <420004014@qq.com> Date: Thu, 26 Jun 2025 17:48:23 +0800 Subject: [PATCH 1/8] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=A2=9C=E8=89=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/core-frontend/src/style/index.less | 10 ++++++++++ .../visualized/data/dataset/form/UnionItemEdit.vue | 4 ++-- .../application/service/dataset/form/UnionItemEdit.vue | 4 ++-- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/core/core-frontend/src/style/index.less b/core/core-frontend/src/style/index.less index 468eebc..62fb4e5 100644 --- a/core/core-frontend/src/style/index.less +++ b/core/core-frontend/src/style/index.less @@ -695,3 +695,13 @@ strong { .ed-checkbox__label:hover{ color: #fff ; } + + +.ed-select-dropdown__item.hover, .ed-select-dropdown__item:hover { + background-color: rgba(67, 67, 67, 1) !important; +} + +// .ed-input.is-disabled .ed-input__wrapper{ +// background-color: rgba(37, 38, 38, 1) !important; +// box-shadow: 0 0 0 1px rgba(51, 51, 51, 0)inset; +// } \ No newline at end of file diff --git a/core/core-frontend/src/views/visualized/data/dataset/form/UnionItemEdit.vue b/core/core-frontend/src/views/visualized/data/dataset/form/UnionItemEdit.vue index aa92d98..12e30df 100644 --- a/core/core-frontend/src/views/visualized/data/dataset/form/UnionItemEdit.vue +++ b/core/core-frontend/src/views/visualized/data/dataset/form/UnionItemEdit.vue @@ -194,7 +194,7 @@ init() + +:deep(.l7-button-control) { + background-color: #000000 !important; +} + +:deep(.l7-button-control:not(:disabled):hover) { + background-color: #000000d5 !important; +} + +:deep(.l7-button-control .l7-iconfont) { + fill: #fff !important; + color: #fff !important; +} + +// :deep(.l7-control-container .l7-top) { +// top: auto !important; +// bottom: 133px !important; + +// } From 9d9ca6f137cfe307afb9a4f5a97a3ac169e53736 Mon Sep 17 00:00:00 2001 From: weitang Date: Fri, 27 Jun 2025 10:25:58 +0800 Subject: [PATCH 4/8] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=A4=8D=E5=88=B6?= =?UTF-8?q?=E6=A8=A1=E5=9D=97=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/controller/ModuleController.java | 30 +++++++++++++++++++ .../server/StaticResourceServer.java | 2 +- .../src/main/resources/application.yml | 6 ++-- 3 files changed, 34 insertions(+), 4 deletions(-) diff --git a/core/core-backend/src/main/java/io/gisbi/application/module/controller/ModuleController.java b/core/core-backend/src/main/java/io/gisbi/application/module/controller/ModuleController.java index 95939c9..4bff6eb 100644 --- a/core/core-backend/src/main/java/io/gisbi/application/module/controller/ModuleController.java +++ b/core/core-backend/src/main/java/io/gisbi/application/module/controller/ModuleController.java @@ -1,5 +1,6 @@ package io.gisbi.application.module.controller; +import cn.hutool.core.bean.BeanUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -49,6 +50,35 @@ public class ModuleController { return ResponseResult.successData(moduleService.createModule(module)); } + // 复制模块 + @PostMapping("/copy/{id}") + public ResponseResult copy(@PathVariable String id) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(Module::getId, id); + Map moduleMap = moduleService.getMap(wrapper); + + if (moduleMap == null || moduleMap.isEmpty()) { + return ResponseResult.error("模块不存在"); + } + + try { + Module module = BeanUtil.toBean(moduleMap, Module.class); + module.setId(null); + module.setCreateTime(LocalDateTime.now()); + module.setCreateBy(AuthUtils.getUser().getUserId().toString()); + + boolean result = moduleService.createModule(module); + if (result) { + return ResponseResult.success("模块复制成功"); + } else { + return ResponseResult.error("模块复制失败"); + } + } catch (Exception e) { + return ResponseResult.error("复制模块失败,请联系管理员"); + } + } + + // 修改模块 @PostMapping("/update") public ResponseResult update(@RequestBody Module module) { diff --git a/core/core-backend/src/main/java/io/gisbi/visualization/server/StaticResourceServer.java b/core/core-backend/src/main/java/io/gisbi/visualization/server/StaticResourceServer.java index 7cf1a21..49fb8c0 100644 --- a/core/core-backend/src/main/java/io/gisbi/visualization/server/StaticResourceServer.java +++ b/core/core-backend/src/main/java/io/gisbi/visualization/server/StaticResourceServer.java @@ -34,7 +34,7 @@ import java.util.Map; @RequestMapping("/staticResource") public class StaticResourceServer implements StaticResourceApi { - @Value("${gisbi.path.static-resource:/opt/gisbi2.0/data/static-resource/}") + @Value("${gisbi.path.static-resource:E:/opt/gisbi2.0/data/static-resource/}") private String staticDir; @Override diff --git a/core/core-backend/src/main/resources/application.yml b/core/core-backend/src/main/resources/application.yml index f9a804a..4e513ed 100644 --- a/core/core-backend/src/main/resources/application.yml +++ b/core/core-backend/src/main/resources/application.yml @@ -36,9 +36,9 @@ logging: file: path: /opt/gisbi2.0/logs # sql日志生产环境注释掉 -mybatis-plus: - configuration: - log-impl: org.apache.ibatis.logging.stdout.StdOutImpl +#mybatis-plus: +# configuration: +# log-impl: org.apache.ibatis.logging.stdout.StdOutImpl quartz: enabled: true From f2f9cb308ba689828f8d093b94a4886cd398e20e Mon Sep 17 00:00:00 2001 From: weitang Date: Fri, 27 Jun 2025 11:22:33 +0800 Subject: [PATCH 5/8] =?UTF-8?q?fix:=E5=A4=8D=E5=88=B6=E6=A8=A1=E5=9D=97?= =?UTF-8?q?=E5=90=8D=E7=A7=B0=E5=8A=A0=E4=B8=8A=E5=8C=BA=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/controller/ModuleController.java | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/core/core-backend/src/main/java/io/gisbi/application/module/controller/ModuleController.java b/core/core-backend/src/main/java/io/gisbi/application/module/controller/ModuleController.java index 4bff6eb..437a3c0 100644 --- a/core/core-backend/src/main/java/io/gisbi/application/module/controller/ModuleController.java +++ b/core/core-backend/src/main/java/io/gisbi/application/module/controller/ModuleController.java @@ -15,7 +15,6 @@ import java.time.LocalDateTime; import java.util.List; import java.util.Map; - /** *

* 应用_系统模块 前端控制器 @@ -36,8 +35,8 @@ public class ModuleController { @GetMapping("/list") public ResponseResult page(@RequestParam String appId) { QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.eq("app_id",appId); - wrapper.orderByAsc("pid","sort"); // 按编码倒序排列 + wrapper.eq("app_id", appId); + wrapper.orderByAsc("pid", "sort"); // 按编码倒序排列 List> list = moduleService.listMaps(wrapper); return ResponseResult.successData(list); } @@ -64,6 +63,7 @@ public class ModuleController { try { Module module = BeanUtil.toBean(moduleMap, Module.class); module.setId(null); + module.setName(module.getName() + "(复制)"); module.setCreateTime(LocalDateTime.now()); module.setCreateBy(AuthUtils.getUser().getUserId().toString()); @@ -78,7 +78,6 @@ public class ModuleController { } } - // 修改模块 @PostMapping("/update") public ResponseResult update(@RequestBody Module module) { @@ -94,7 +93,7 @@ public class ModuleController { // 获取模块详情 @GetMapping("/{id}") public ResponseResult getById(@PathVariable String id) { - Map moduleMap=null; + Map moduleMap = null; try { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(Module::getId, id); @@ -107,8 +106,8 @@ public class ModuleController { // 新增:根据pid判断是否有子节点 @GetMapping("/checkHasChildren") - public boolean checkHasChildren(@RequestParam String appId,@RequestParam String pid) { - boolean hasChildren = moduleService.existsChildrenByPid(appId,pid); + public boolean checkHasChildren(@RequestParam String appId, @RequestParam String pid) { + boolean hasChildren = moduleService.existsChildrenByPid(appId, pid); return hasChildren; } } From ca3c5fd2c940345042a23fbc65d93b9798dad690 Mon Sep 17 00:00:00 2001 From: weitang Date: Fri, 27 Jun 2025 11:39:32 +0800 Subject: [PATCH 6/8] =?UTF-8?q?feat:=E6=96=B0=E5=A2=9E=E8=8F=9C=E5=8D=95?= =?UTF-8?q?=E9=80=BB=E8=BE=91=20=E6=96=B0=E5=A2=9E=E8=8F=9C=E5=8D=95?= =?UTF-8?q?=E7=9A=84=E4=B8=8A=E7=A7=BB=E5=92=8C=E4=B8=8B=E7=A7=BB=E6=93=8D?= =?UTF-8?q?=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/controller/MenuController.java | 13 +++++ .../system/service/IMenuService.java | 3 ++ .../system/service/impl/MenuServiceImpl.java | 50 +++++++++++++++++++ 3 files changed, 66 insertions(+) diff --git a/core/core-backend/src/main/java/io/gisbi/application/system/controller/MenuController.java b/core/core-backend/src/main/java/io/gisbi/application/system/controller/MenuController.java index b8d6038..713f343 100644 --- a/core/core-backend/src/main/java/io/gisbi/application/system/controller/MenuController.java +++ b/core/core-backend/src/main/java/io/gisbi/application/system/controller/MenuController.java @@ -47,6 +47,19 @@ public class MenuController { } } + /** + * 上移/下移菜单 + */ + @PostMapping("/changeOrder") + public ResponseResult changeOrder(@RequestParam String menuId, @RequestParam String direction) { + boolean result = menuService.changeOrder(menuId, direction); + if (result) { + return ResponseResult.success(); + } else { + return ResponseResult.error(); + } + } + /*********************************** * 用途说明:修改菜单及按钮根据ID * 参数说明 diff --git a/core/core-backend/src/main/java/io/gisbi/application/system/service/IMenuService.java b/core/core-backend/src/main/java/io/gisbi/application/system/service/IMenuService.java index 0e7d950..5bcb013 100644 --- a/core/core-backend/src/main/java/io/gisbi/application/system/service/IMenuService.java +++ b/core/core-backend/src/main/java/io/gisbi/application/system/service/IMenuService.java @@ -49,4 +49,7 @@ public interface IMenuService extends IService

{ * 返回值说明: 菜单结构树集合 ***********************************/ List> permissionAssignment(String appId ,String roleId); + + boolean changeOrder(String menuId, String direction); + } diff --git a/core/core-backend/src/main/java/io/gisbi/application/system/service/impl/MenuServiceImpl.java b/core/core-backend/src/main/java/io/gisbi/application/system/service/impl/MenuServiceImpl.java index f2c836a..c7f5459 100644 --- a/core/core-backend/src/main/java/io/gisbi/application/system/service/impl/MenuServiceImpl.java +++ b/core/core-backend/src/main/java/io/gisbi/application/system/service/impl/MenuServiceImpl.java @@ -214,6 +214,56 @@ public class MenuServiceImpl extends ServiceImpl implements IM return listTree; } + @Override + public boolean changeOrder(String menuId, String direction) { + Menu currentMenu = menuMapper.selectById(menuId); + if (currentMenu == null) { + return false; + } + + String parentId = currentMenu.getParentid(); + + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("parentid", parentId); + wrapper.orderByAsc("orderno"); + + List siblings = menuMapper.selectList(wrapper); + + int index = -1; + for (int i = 0; i < siblings.size(); i++) { + if (siblings.get(i).getId().equals(menuId)) { + index = i; + break; + } + } + + if ("up".equals(direction)) { + if (index > 0) { + swapOrder(siblings.get(index), siblings.get(index - 1)); + } else { + return false; // 已是第一个,无法上移 + } + } else if ("down".equals(direction)) { + if (index < siblings.size() - 1) { + swapOrder(siblings.get(index), siblings.get(index + 1)); + } else { + return false; // 已是最后一个,无法下移 + } + } else { + return false; // 方向错误 + } + return true; + } + + private void swapOrder(Menu m1, Menu m2) { + Integer temp = m1.getOrderno(); + m1.setOrderno(m2.getOrderno()); + m2.setOrderno(temp); + + menuMapper.updateById(m1); + menuMapper.updateById(m2); + } + /********************************** * 用途说明: 生成权菜单权限树 * 参数说明 sysMenus From 967dc4499a992783449845b3674ea7097a8f7c3d Mon Sep 17 00:00:00 2001 From: limengnan <420004014@qq.com> Date: Fri, 27 Jun 2025 12:00:38 +0800 Subject: [PATCH 7/8] =?UTF-8?q?=E5=8F=AF=E8=A7=86=E5=8C=96=E5=A4=A7?= =?UTF-8?q?=E5=B1=8F=E5=8E=BB=E6=8E=89=E8=BE=B9=E6=A1=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/data-visualization/canvas/ComponentWrapper.vue | 1 + .../src/components/data-visualization/canvas/Shape.vue | 1 + 2 files changed, 2 insertions(+) diff --git a/core/core-frontend/src/components/data-visualization/canvas/ComponentWrapper.vue b/core/core-frontend/src/components/data-visualization/canvas/ComponentWrapper.vue index 599c211..5fe8fa5 100644 --- a/core/core-frontend/src/components/data-visualization/canvas/ComponentWrapper.vue +++ b/core/core-frontend/src/components/data-visualization/canvas/ComponentWrapper.vue @@ -522,6 +522,7 @@ const updateFromMobile = (e, type) => { height: 100%; position: relative; background-size: 100% 100% !important; + padding: 0 !important; .wrapper-inner-adaptor { position: relative; transform-style: preserve-3d; diff --git a/core/core-frontend/src/components/data-visualization/canvas/Shape.vue b/core/core-frontend/src/components/data-visualization/canvas/Shape.vue index e094036..750bb22 100644 --- a/core/core-frontend/src/components/data-visualization/canvas/Shape.vue +++ b/core/core-frontend/src/components/data-visualization/canvas/Shape.vue @@ -1181,6 +1181,7 @@ onMounted(() => { height: 100%; position: relative; background-size: 100% 100% !important; + padding:0 !important; } .shape-selected { From 91e54730f0aa81c2c5379a3744bce3fcb3875de1 Mon Sep 17 00:00:00 2001 From: limengnan <420004014@qq.com> Date: Fri, 27 Jun 2025 12:01:31 +0800 Subject: [PATCH 8/8] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E8=8F=9C=E5=8D=95?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=A4=8D=E5=88=B6=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/api/application/module.ts | 7 ++++- .../application/module/Leftmenu/index.vue | 31 ++++++++++++++++--- 2 files changed, 33 insertions(+), 5 deletions(-) diff --git a/core/core-frontend/src/api/application/module.ts b/core/core-frontend/src/api/application/module.ts index 0cf321b..19d8800 100644 --- a/core/core-frontend/src/api/application/module.ts +++ b/core/core-frontend/src/api/application/module.ts @@ -13,4 +13,9 @@ export const moduleById = id => request.get({ url: '/application/module/'+id }) // request.get({ url: `/application/module/${id}` }) export const moduleDel = async id => - request.delete({ url: `/application/module/${id}` }) \ No newline at end of file + request.delete({ url: `/application/module/${id}` }) + export const moduleCopy = async id => + request.post({ url: `/application/module/copy/${id}` }) + + + \ No newline at end of file diff --git a/core/core-frontend/src/viewsnew/application/module/Leftmenu/index.vue b/core/core-frontend/src/viewsnew/application/module/Leftmenu/index.vue index e372d4e..325c0c0 100644 --- a/core/core-frontend/src/viewsnew/application/module/Leftmenu/index.vue +++ b/core/core-frontend/src/viewsnew/application/module/Leftmenu/index.vue @@ -4,7 +4,7 @@ import { useRouter, useRoute } from 'vue-router' import { ElMessage,ElMessageBox } from 'element-plus-secondary' import { useI18n } from '@/hooks/web/useI18n' import { publicTree } from '@/utils/validate'; -import { moduleList,moduleAdd,moduleUpdate,moduleDel } from '@/api/application/module' +import { moduleList,moduleAdd,moduleUpdate,moduleDel,moduleCopy } from '@/api/application/module' const emit = defineEmits(['handleNodeClick']) const { t } = useI18n() const router = useRouter() @@ -207,7 +207,30 @@ function saveData(){ // 保存 } } -function moveTreeClic(){ // 移动 +function copyClick(){ + ElMessageBox.confirm('是否确定复制该'+ (dataInfo.value.nodeType == '01'?'目录' : '模块'), { + confirmButtonType: 'primary', + type: 'warning', + confirmButtonText: '确定', + cancelButtonText: '取消', + }).then(() => { + moduleCopy(dataInfo.value.id).then((res) => { + if(res.code == '0' && res.data.code == '0'){ + ElMessage.success('复制成功') + getInit() + }else{ + ElMessage.error(res.data.msg) + } + + isDialog.value = false + }).catch(() => { + isSwitch.value = false + }) + }) + +} +function moveTreeClic(){ // + } function editTreeClic(){ // 编辑 isSwitch.value = false @@ -333,8 +356,8 @@ function delTreeClic(){ // 删除
新建模块
-
复制
-
移动到
+
复制
+
重命名
删除