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 @@
+
+