From ffdc01d610f8d13a8fb5d0f300ab492eba42b65f Mon Sep 17 00:00:00 2001 From: ulleo Date: Tue, 16 Apr 2024 15:27:01 +0800 Subject: [PATCH] =?UTF-8?q?feat(X-Pack):=20=E6=95=B0=E6=8D=AE=E5=A1=AB?= =?UTF-8?q?=E6=8A=A5=E8=A1=A8=E5=8D=95=E6=94=AF=E6=8C=81=E7=A7=BB=E5=8A=A8?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E5=A4=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../datafill/DataFillController.java | 8 +- .../service/datafill/DataFillService.java | 17 ++- .../views/dataFilling/form/MoveSelector.vue | 136 ++++++++++++++++++ .../src/views/dataFilling/form/dataFilling.js | 8 ++ .../src/views/dataFilling/form/index.vue | 42 +++++- 5 files changed, 204 insertions(+), 7 deletions(-) create mode 100644 core/frontend/src/views/dataFilling/form/MoveSelector.vue diff --git a/core/backend/src/main/java/io/dataease/controller/datafill/DataFillController.java b/core/backend/src/main/java/io/dataease/controller/datafill/DataFillController.java index 902775d84c..5f3ec554e1 100644 --- a/core/backend/src/main/java/io/dataease/controller/datafill/DataFillController.java +++ b/core/backend/src/main/java/io/dataease/controller/datafill/DataFillController.java @@ -50,7 +50,13 @@ public class DataFillController { @ApiIgnore @PostMapping("/form/update") public ResultHolder updateForm(@RequestBody DataFillFormWithBLOBs dataFillForm) throws Exception { - return dataFillService.updateForm(dataFillForm); + return dataFillService.updateForm(dataFillForm, null); + } + + @ApiIgnore + @PostMapping("/form/move") + public ResultHolder moveForm(@RequestBody DataFillFormWithBLOBs dataFillForm) throws Exception { + return dataFillService.updateForm(dataFillForm, "move"); } @PostMapping("/manage/form/{id}") diff --git a/core/backend/src/main/java/io/dataease/service/datafill/DataFillService.java b/core/backend/src/main/java/io/dataease/service/datafill/DataFillService.java index fb36f57f00..07afcad184 100644 --- a/core/backend/src/main/java/io/dataease/service/datafill/DataFillService.java +++ b/core/backend/src/main/java/io/dataease/service/datafill/DataFillService.java @@ -83,7 +83,7 @@ public class DataFillService { dataFillForm.setId(uuid); - checkName(uuid, dataFillForm.getName(), dataFillForm.getPid(), dataFillForm.getLevel(), dataFillForm.getNodeType(), DataFillConstants.OPT_TYPE_INSERT); + checkName(uuid, dataFillForm.getName(), dataFillForm.getPid(), dataFillForm.getNodeType(), DataFillConstants.OPT_TYPE_INSERT); if (!StringUtils.equals(dataFillForm.getNodeType(), "folder")) { List fields = gson.fromJson(dataFillForm.getForms(), new TypeToken>() { @@ -152,7 +152,7 @@ public class DataFillService { } @DeCleaner(value = DePermissionType.DATA_FILL, key = "pid") - public ResultHolder updateForm(DataFillFormWithBLOBs dataFillForm) { + public ResultHolder updateForm(DataFillFormWithBLOBs dataFillForm, String type) { if (!CommonBeanFactory.getBean(AuthUserService.class).pluginLoaded()) { DataEaseException.throwException("invalid"); @@ -161,8 +161,15 @@ public class DataFillService { Assert.notNull(dataFillForm.getId(), "id cannot be null"); DataFillFormWithBLOBs form = dataFillFormMapper.selectByPrimaryKey(dataFillForm.getId()); - //todo 改变文件夹位置 - checkName(dataFillForm.getId(), dataFillForm.getName(), form.getPid(), form.getLevel(), form.getNodeType(), DataFillConstants.OPT_TYPE_UPDATE); + + if (StringUtils.equals("move", type)) { + //改变文件夹位置 + checkName(dataFillForm.getId(), form.getName(), dataFillForm.getPid(), form.getNodeType(), DataFillConstants.OPT_TYPE_UPDATE); + dataFillForm.setName(null); + dataFillForm.setNodeType(null); + } else { + checkName(dataFillForm.getId(), dataFillForm.getName(), form.getPid(), form.getNodeType(), DataFillConstants.OPT_TYPE_UPDATE); + } dataFillForm.setUpdateTime(new Date()); dataFillFormMapper.updateByPrimaryKeySelective(dataFillForm); @@ -172,7 +179,7 @@ public class DataFillService { return ResultHolder.success(dataFillForm.getId()); } - private void checkName(String id, String name, String pid, int level, String nodeType, String optType) { + private void checkName(String id, String name, String pid, String nodeType, String optType) { DataFillFormExample example = new DataFillFormExample(); if (DataFillConstants.OPT_TYPE_INSERT.equalsIgnoreCase(optType)) { example.createCriteria().andPidEqualTo(pid).andNameEqualTo(name).andNodeTypeEqualTo(nodeType); diff --git a/core/frontend/src/views/dataFilling/form/MoveSelector.vue b/core/frontend/src/views/dataFilling/form/MoveSelector.vue new file mode 100644 index 0000000000..771cacb2cb --- /dev/null +++ b/core/frontend/src/views/dataFilling/form/MoveSelector.vue @@ -0,0 +1,136 @@ + + + + + diff --git a/core/frontend/src/views/dataFilling/form/dataFilling.js b/core/frontend/src/views/dataFilling/form/dataFilling.js index e08d63629f..b39b60eb78 100644 --- a/core/frontend/src/views/dataFilling/form/dataFilling.js +++ b/core/frontend/src/views/dataFilling/form/dataFilling.js @@ -16,6 +16,14 @@ export function updateForm(data) { data }) } +export function moveForm(data) { + return request({ + url: 'dataFilling/form/move', + method: 'post', + loading: true, + data + }) +} export function listForm(data) { return request({ diff --git a/core/frontend/src/views/dataFilling/form/index.vue b/core/frontend/src/views/dataFilling/form/index.vue index f639e17227..3b85336039 100644 --- a/core/frontend/src/views/dataFilling/form/index.vue +++ b/core/frontend/src/views/dataFilling/form/index.vue @@ -6,12 +6,16 @@ import ViewTable from './ViewTable.vue' import { listForm, saveForm, updateForm, deleteForm, getWithPrivileges } from '@/views/dataFilling/form/dataFilling' import { cloneDeep } from 'lodash-es' import { hasPermission } from '@/directive/Permission' +import DataFillingFormMoveSelector from './MoveSelector.vue' export default { name: 'DataFillingForm', - components: { DeAsideContainer, DeContainer, NoSelect, ViewTable }, + components: { DataFillingFormMoveSelector, DeAsideContainer, DeContainer, NoSelect, ViewTable }, data() { return { + selectedItem: undefined, + moveDialogTitle: '', + moveGroup: false, treeLoading: false, requiredRule: { required: true, message: this.$t('commons.required'), trigger: ['blur', 'change'] }, activeName: 'forms', @@ -86,8 +90,16 @@ export default { case 'delete': this.delete(param.data) break + case 'move': + this.moveTo(param.data) + break } }, + moveTo(data) { + this.selectedItem = data + this.moveGroup = true + this.moveDialogTitle = this.$t('dataset.m1') + (data.name.length > 10 ? (data.name.substr(0, 10) + '...') : data.name) + this.$t('dataset.m2') + }, openUpdateForm(param) { this.updateFormData = cloneDeep(param.data) this.showUpdateName = true @@ -137,6 +149,12 @@ export default { }).catch(() => { }) }, + onMoveSuccess() { + this.moveGroup = false + listForm({}).then(res => { + this.formList = res.data || [] + }) + }, beforeClickMore(optType, data, node) { return { type: data.nodeType, @@ -346,6 +364,12 @@ export default { > {{ $t('panel.rename') }} + + {{ $t('dataset.move_to') }} + + + + +