From 25e76defb57b2595499a5571edbbfc695a7c3809 Mon Sep 17 00:00:00 2001 From: wangjiahao <1522128093@qq.com> Date: Fri, 6 Jan 2023 18:32:15 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E5=BA=94=E7=94=A8):=20=E5=BA=94=E7=94=A8?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E7=A7=BB=E5=8A=A8=E5=88=B0=E5=85=B6=E4=BB=96?= =?UTF-8?q?=E5=88=86=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../panel/PanelAppTemplateController.java | 10 +- .../panel/PanelAppTemplateService.java | 10 + frontend/src/api/system/appTemplate.js | 8 + frontend/src/lang/en.js | 2 + frontend/src/lang/tw.js | 2 + frontend/src/lang/zh.js | 2 + .../panel/appTemplate/AppTemplateContent.vue | 37 ++- .../appTemplate/component/TemplateItem.vue | 13 +- .../component/TemplateMoveList.vue | 229 ++++++++++++++++++ 9 files changed, 306 insertions(+), 7 deletions(-) create mode 100644 frontend/src/views/panel/appTemplate/component/TemplateMoveList.vue diff --git a/backend/src/main/java/io/dataease/controller/panel/PanelAppTemplateController.java b/backend/src/main/java/io/dataease/controller/panel/PanelAppTemplateController.java index 984d04326d..56d3d7e222 100644 --- a/backend/src/main/java/io/dataease/controller/panel/PanelAppTemplateController.java +++ b/backend/src/main/java/io/dataease/controller/panel/PanelAppTemplateController.java @@ -8,6 +8,7 @@ import io.dataease.service.panel.PanelAppTemplateService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; + import javax.annotation.Resource; import java.util.List; @@ -57,7 +58,14 @@ public class PanelAppTemplateController { @PostMapping("/nameCheck") @I18n public String nameCheck(@RequestBody PanelAppTemplateRequest request) { - return panelAppTemplateService.nameCheck(request); + return panelAppTemplateService.nameCheck(request); + } + + @ApiOperation("移动") + @PostMapping("/move") + @I18n + public void move(@RequestBody PanelAppTemplateRequest request) { + panelAppTemplateService.move(request); } } diff --git a/backend/src/main/java/io/dataease/service/panel/PanelAppTemplateService.java b/backend/src/main/java/io/dataease/service/panel/PanelAppTemplateService.java index 51ce96c0a5..fe726d488f 100644 --- a/backend/src/main/java/io/dataease/service/panel/PanelAppTemplateService.java +++ b/backend/src/main/java/io/dataease/service/panel/PanelAppTemplateService.java @@ -120,6 +120,16 @@ public class PanelAppTemplateService { } + public void move(PanelAppTemplateRequest request) { + if (!CommonConstants.CHECK_RESULT.NONE.equals(nameCheck(CommonConstants.OPT_TYPE.INSERT, request.getName(), request.getPid(), request.getId()))) { + throw new RuntimeException("当前名称在目标分类中已经存在!请选择其他分类或修改名称"); + } + PanelAppTemplateWithBLOBs appTemplate = new PanelAppTemplateWithBLOBs(); + appTemplate.setId(request.getId()); + appTemplate.setPid(request.getPid()); + panelAppTemplateMapper.updateByPrimaryKeySelective(appTemplate); + } + //名称检查 public String nameCheck(String optType, String name, String pid, String id) { PanelAppTemplateExample example = new PanelAppTemplateExample(); diff --git a/frontend/src/api/system/appTemplate.js b/frontend/src/api/system/appTemplate.js index 6e11252b57..653c5ef6bd 100644 --- a/frontend/src/api/system/appTemplate.js +++ b/frontend/src/api/system/appTemplate.js @@ -56,3 +56,11 @@ export function nameCheck(data) { method: 'post' }) } + +export function move(data) { + return request({ + url: '/appTemplate/move', + data: data, + method: 'post' + }) +} diff --git a/frontend/src/lang/en.js b/frontend/src/lang/en.js index 3c4b418117..cef22fc9c8 100644 --- a/frontend/src/lang/en.js +++ b/frontend/src/lang/en.js @@ -2786,6 +2786,8 @@ export default { 'I18N_USER_TEMPLATE_ERROR': 'Template file error', 'i18n_max_user_import_size': 'File size exceeds 10M', app_template: { + move: 'Move', + move_item: 'Move App', datasource_new: 'New', datasource_history: 'Multiplexing', datasource_from: 'Datasource From', diff --git a/frontend/src/lang/tw.js b/frontend/src/lang/tw.js index 42af02d963..a38f7434c5 100644 --- a/frontend/src/lang/tw.js +++ b/frontend/src/lang/tw.js @@ -2780,6 +2780,8 @@ export default { 'I18N_USER_TEMPLATE_ERROR': '模版錯誤', 'i18n_max_user_import_size': '文件最大不能超過10M', app_template: { + move: '移動', + move_item: '移動應用', datasource_new: '新建', datasource_history: '復用', datasource_from: '數據來源', diff --git a/frontend/src/lang/zh.js b/frontend/src/lang/zh.js index e2080ca78a..ce47b5d099 100644 --- a/frontend/src/lang/zh.js +++ b/frontend/src/lang/zh.js @@ -2780,6 +2780,8 @@ export default { 'I18N_USER_TEMPLATE_ERROR': '模版错误', 'i18n_max_user_import_size': '文件最大不能超过10M', app_template: { + move: '移动', + move_item: '移动应用', datasource_new: '新建', datasource_history: '复用', datasource_from: '数据来源', diff --git a/frontend/src/views/panel/appTemplate/AppTemplateContent.vue b/frontend/src/views/panel/appTemplate/AppTemplateContent.vue index e733af591c..c0dcb90621 100644 --- a/frontend/src/views/panel/appTemplate/AppTemplateContent.vue +++ b/frontend/src/views/panel/appTemplate/AppTemplateContent.vue @@ -77,7 +77,7 @@ :label="dialogTitleLabel" prop="name" > - + - + + + + + + + @@ -159,10 +176,11 @@ import elementResizeDetectorMaker from 'element-resize-detector' import msgCfm from '@/components/msgCfm/index' import { uploadFileResult } from '@/api/staticResource/staticResource' import { imgUrlTrans } from '@/components/canvas/utils/utils' +import TemplateMoveList from '@/views/panel/appTemplate/component/TemplateMoveList' export default { name: 'AppTemplateContent', - components: { TemplateList, TemplateItem, TemplateImport }, + components: { TemplateMoveList, TemplateList, TemplateItem, TemplateImport }, mixins: [msgCfm], props: { showPosition: { @@ -173,6 +191,8 @@ export default { }, data() { return { + moveItemDialogShow: false, + currentMoveItem: {}, templateOptType: 'add', currentAppTemplateInfo: null, fileList: [], @@ -302,6 +322,9 @@ export default { case 'update': this.updateAppTemplate(data) break + case 'move': + this.moveTo(data) + break default: break } @@ -312,6 +335,10 @@ export default { this.currentAppTemplateInfo = data this.templateDialog.pid = data.pid }, + moveTo(data) { + this.moveItemDialogShow = true + this.currentMoveItem = data + }, templateDeleteConfirm(template) { const options = { title: '是否卸载当前应用?', @@ -349,6 +376,10 @@ export default { }) } }, + templateMoveClose() { + this.moveItemDialogShow = false + this.showCurrentTemplate(this.currentTemplateId, this.currentTemplateLabel) + }, showTemplateEditDialog(type, templateInfo) { this.templateEditForm = null this.formType = type diff --git a/frontend/src/views/panel/appTemplate/component/TemplateItem.vue b/frontend/src/views/panel/appTemplate/component/TemplateItem.vue index 7c7ad7d15b..c21f0789f4 100644 --- a/frontend/src/views/panel/appTemplate/component/TemplateItem.vue +++ b/frontend/src/views/panel/appTemplate/component/TemplateItem.vue @@ -29,20 +29,26 @@ trigger="click" @command="handleCommand" > - + - + {{ $t('commons.update') }} - + {{ $t('commons.uninstall') }} + + {{ $t('app_template.move') }} + @@ -84,6 +90,7 @@ + +