From 814c4e8a608d4abfcef031826222f969bc61b8a0 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期六, 11 四月 2026 15:47:23 +0800
Subject: [PATCH] #地图管理列表优化
---
src/main/java/com/zy/asrs/mapper/BasMapMapper.java | 2
src/main/webapp/views/basMap/basMap.html | 31 ++++++++++
src/main/resources/mapper/BasMapMapper.xml | 14 ++++
src/main/java/com/zy/asrs/service/impl/BasMapServiceImpl.java | 14 ++++
src/main/java/com/zy/asrs/controller/BasMapController.java | 12 +++
src/main/webapp/static/js/basMap/basMap.js | 92 ++++++++++++++++++++++++++++--
src/main/java/com/zy/asrs/service/BasMapService.java | 7 ++
7 files changed, 164 insertions(+), 8 deletions(-)
diff --git a/src/main/java/com/zy/asrs/controller/BasMapController.java b/src/main/java/com/zy/asrs/controller/BasMapController.java
index 66318de..062ce52 100644
--- a/src/main/java/com/zy/asrs/controller/BasMapController.java
+++ b/src/main/java/com/zy/asrs/controller/BasMapController.java
@@ -37,6 +37,16 @@
return R.ok(basMapService.getById(String.valueOf(id)));
}
+ @GetMapping("/basMap/payload/{id}/auth")
+ @ManagerAuth
+ public R getPayload(@PathVariable("id") Integer id) {
+ BasMap basMap = basMapService.selectPayloadById(id);
+ if (basMap == null) {
+ return R.error("鍦板浘涓嶅瓨鍦�");
+ }
+ return R.ok(basMap);
+ }
+
@RequestMapping(value = "/basMap/list/auth")
@ManagerAuth
public R list(@RequestParam(defaultValue = "1")Integer curr,
@@ -51,7 +61,7 @@
allLike(BasMap.class, param.keySet(), wrapper, condition);
if (!Cools.isEmpty(orderByField)){wrapper.orderBy(true, "asc".equals(orderByType), humpToLine(orderByField));}
wrapper.orderBy(true, true, "lev");
- return R.ok(basMapService.page(new Page<>(curr, limit), wrapper));
+ return R.ok(basMapService.pageLight(new Page<>(curr, limit), wrapper));
}
private <T> void convert(Map<String, Object> map, QueryWrapper<T> wrapper){
diff --git a/src/main/java/com/zy/asrs/mapper/BasMapMapper.java b/src/main/java/com/zy/asrs/mapper/BasMapMapper.java
index 6cdaf55..2253d59 100644
--- a/src/main/java/com/zy/asrs/mapper/BasMapMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/BasMapMapper.java
@@ -13,4 +13,6 @@
boolean deleteByLev(Integer lev);//鍒犻櫎鎸囧畾妤煎眰鍦板浘
+ BasMap selectPayloadById(Integer id);//鎸塱d鏌ヨ鍦板浘澶у瓧娈�
+
}
diff --git a/src/main/java/com/zy/asrs/service/BasMapService.java b/src/main/java/com/zy/asrs/service/BasMapService.java
index 0abd219..f25a8d7 100644
--- a/src/main/java/com/zy/asrs/service/BasMapService.java
+++ b/src/main/java/com/zy/asrs/service/BasMapService.java
@@ -1,5 +1,8 @@
package com.zy.asrs.service;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zy.asrs.entity.BasMap;
import java.util.List;
@@ -16,4 +19,8 @@
int syncLocMastByMap(Integer lev);//鎸夊湴鍥惧悓姝ユ寚瀹氭ゼ灞俵ocType
+ IPage<BasMap> pageLight(Page<BasMap> page, QueryWrapper<BasMap> wrapper);//杞婚噺鍒嗛〉鏌ヨ
+
+ BasMap selectPayloadById(Integer id);//鎸塱d鏌ヨ鍦板浘澶у瓧娈�
+
}
diff --git a/src/main/java/com/zy/asrs/service/impl/BasMapServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/BasMapServiceImpl.java
index 8e15ed0..d8d8e92 100644
--- a/src/main/java/com/zy/asrs/service/impl/BasMapServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/BasMapServiceImpl.java
@@ -4,6 +4,8 @@
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.core.common.Cools;
import com.core.exception.CoolException;
@@ -50,6 +52,18 @@
}
@Override
+ public IPage<BasMap> pageLight(Page<BasMap> page, QueryWrapper<BasMap> wrapper) {
+ QueryWrapper<BasMap> queryWrapper = wrapper == null ? new QueryWrapper<>() : wrapper;
+ queryWrapper.select("id", "create_time", "update_time", "lev", "base_row", "base_row_code", "base_bay", "base_bay_code");
+ return this.baseMapper.selectPage(page, queryWrapper);
+ }
+
+ @Override
+ public BasMap selectPayloadById(Integer id) {
+ return this.baseMapper.selectPayloadById(id);
+ }
+
+ @Override
@Transactional
public int syncLocMastByMap(Integer lev) {
if (lev == null || lev <= 0) {
diff --git a/src/main/resources/mapper/BasMapMapper.xml b/src/main/resources/mapper/BasMapMapper.xml
index a195cc9..e17ce74 100644
--- a/src/main/resources/mapper/BasMapMapper.xml
+++ b/src/main/resources/mapper/BasMapMapper.xml
@@ -18,6 +18,14 @@
</resultMap>
+ <resultMap id="PayloadResultMap" type="com.zy.asrs.entity.BasMap">
+ <id column="id" property="id" />
+ <result column="lev" property="lev" />
+ <result column="data" property="data" />
+ <result column="last_data" property="lastData" />
+ <result column="origin_data" property="originData" />
+ </resultMap>
+
<select id="selectLatestMap" resultMap="BaseResultMap">
select *
from asr_bas_map
@@ -26,4 +34,10 @@
limit 0,1
</select>
+ <select id="selectPayloadById" resultMap="PayloadResultMap">
+ select id, lev, data, last_data, origin_data
+ from asr_bas_map
+ where id = #{id}
+ </select>
+
</mapper>
diff --git a/src/main/webapp/static/js/basMap/basMap.js b/src/main/webapp/static/js/basMap/basMap.js
index 105fe22..d5e1c79 100644
--- a/src/main/webapp/static/js/basMap/basMap.js
+++ b/src/main/webapp/static/js/basMap/basMap.js
@@ -499,7 +499,7 @@
}
function isSearchableField(field) {
- return !!field && field.kind !== 'image' && !field.textarea;
+ return !!field && field.kind !== 'image' && !field.textarea && ['data', 'lastData', 'originData'].indexOf(field.field) === -1;
}
function isSortableField(field) {
@@ -556,7 +556,9 @@
}
function createDefaultVisibleColumnKeys() {
- return fieldMeta.map(function (field) {
+ return fieldMeta.filter(function (field) {
+ return ['data', 'lastData', 'originData'].indexOf(field.field) === -1;
+ }).map(function (field) {
return field.field;
});
}
@@ -842,6 +844,18 @@
mode: 'create',
submitting: false
},
+ payloadDialog: {
+ visible: false,
+ loading: false,
+ row: null,
+ data: {
+ id: null,
+ lev: '',
+ data: '',
+ lastData: '',
+ originData: ''
+ }
+ },
layoutTimer: null,
tableResizeHandler: null,
dialogForm: createFormDefaults(),
@@ -1092,16 +1106,82 @@
this.dialog.visible = true;
this.$nextTick(this.resetDialogState);
},
+ createEmptyPayloadData: function () {
+ return {
+ id: null,
+ lev: '',
+ data: '',
+ lastData: '',
+ originData: ''
+ };
+ },
+ openPayloadDialog: function (row) {
+ var self = this;
+ if (!row || isEmptyValue(row[self.primaryKeyField])) {
+ self.$message.warning('褰撳墠璁板綍涓嶅瓨鍦�');
+ return;
+ }
+ self.payloadDialog.visible = true;
+ self.payloadDialog.loading = true;
+ self.payloadDialog.row = row;
+ self.payloadDialog.data = self.createEmptyPayloadData();
+ $.ajax({
+ url: baseUrl + '/' + simpleEntityName + '/payload/' + encodeURIComponent(row[self.primaryKeyField]) + '/auth',
+ method: 'GET',
+ headers: self.authHeaders(),
+ success: function (res) {
+ self.payloadDialog.loading = false;
+ if (self.handleForbidden(res)) {
+ return;
+ }
+ if (!res || res.code !== 200) {
+ self.$message.error((res && res.msg) ? res.msg : '鍔犺浇鍦板浘鏁版嵁澶辫触');
+ return;
+ }
+ self.payloadDialog.data = $.extend({}, self.createEmptyPayloadData(), res.data || {});
+ },
+ error: function () {
+ self.payloadDialog.loading = false;
+ self.$message.error('鍔犺浇鍦板浘鏁版嵁澶辫触');
+ }
+ });
+ },
openEditDialog: function (row) {
var self = this;
+ if (!row || isEmptyValue(row[self.primaryKeyField])) {
+ self.$message.warning('褰撳墠璁板綍涓嶅瓨鍦�');
+ return;
+ }
self.dialog.mode = 'edit';
self.dialog.visible = true;
self.$nextTick(function () {
self.resetDialogState();
- fillFormFromRow(row, self.dialogForm, self.dialogDisplay);
- if (self.$refs.dialogForm) {
- self.$refs.dialogForm.clearValidate();
- }
+ self.dialog.submitting = true;
+ $.ajax({
+ url: baseUrl + '/' + simpleEntityName + '/' + encodeURIComponent(row[self.primaryKeyField]) + '/auth',
+ method: 'GET',
+ headers: self.authHeaders(),
+ success: function (res) {
+ self.dialog.submitting = false;
+ if (self.handleForbidden(res)) {
+ return;
+ }
+ if (!res || res.code !== 200) {
+ self.$message.error((res && res.msg) ? res.msg : '鍔犺浇璇︽儏澶辫触');
+ self.dialog.visible = false;
+ return;
+ }
+ fillFormFromRow(res.data || {}, self.dialogForm, self.dialogDisplay);
+ if (self.$refs.dialogForm) {
+ self.$refs.dialogForm.clearValidate();
+ }
+ },
+ error: function () {
+ self.dialog.submitting = false;
+ self.dialog.visible = false;
+ self.$message.error('鍔犺浇璇︽儏澶辫触');
+ }
+ });
});
},
buildDialogPayload: function () {
diff --git a/src/main/webapp/views/basMap/basMap.html b/src/main/webapp/views/basMap/basMap.html
index c6774fa..0c5b56b 100644
--- a/src/main/webapp/views/basMap/basMap.html
+++ b/src/main/webapp/views/basMap/basMap.html
@@ -583,8 +583,9 @@
<span v-else>{{ valueOrDash(getTableValue(scope.row, field)) }}</span>
</template>
</el-table-column>
- <el-table-column label="鎿嶄綔" width="220" fixed="right" align="center">
+ <el-table-column label="鎿嶄綔" width="300" fixed="right" align="center">
<template slot-scope="scope">
+ <el-button type="text" @click="openPayloadDialog(scope.row)">鏌ョ湅鍦板浘鏁版嵁</el-button>
<el-button type="text" @click="openVisualEditor(scope.row)">鍙鍖栫紪杈�</el-button>
<el-button type="text" @click="openEditDialog(scope.row)">淇敼</el-button>
<el-button type="text" style="color:#f56c6c;" @click="removeRows([scope.row[primaryKeyField]])">鍒犻櫎</el-button>
@@ -612,6 +613,34 @@
<el-dialog
class="dialog-panel"
+ title="鍦板浘鏁版嵁璇︽儏"
+ :visible.sync="payloadDialog.visible"
+ width="960px"
+ :close-on-click-modal="false">
+ <div v-loading="payloadDialog.loading">
+ <el-descriptions :column="2" border size="small" style="margin-bottom: 16px;">
+ <el-descriptions-item label="ID">{{ valueOrDash(payloadDialog.data.id) }}</el-descriptions-item>
+ <el-descriptions-item label="灞傛暟">{{ valueOrDash(payloadDialog.data.lev) }}</el-descriptions-item>
+ </el-descriptions>
+ <el-tabs>
+ <el-tab-pane label="瀹炴椂鏁版嵁">
+ <el-input :value="stringValue(payloadDialog.data.data)" type="textarea" :rows="8" readonly></el-input>
+ </el-tab-pane>
+ <el-tab-pane label="鏈�杩戞暟鎹�">
+ <el-input :value="stringValue(payloadDialog.data.lastData)" type="textarea" :rows="8" readonly></el-input>
+ </el-tab-pane>
+ <el-tab-pane label="鍘熷鍦板浘">
+ <el-input :value="stringValue(payloadDialog.data.originData)" type="textarea" :rows="8" readonly></el-input>
+ </el-tab-pane>
+ </el-tabs>
+ </div>
+ <div slot="footer" class="dialog-footer">
+ <el-button @click="payloadDialog.visible = false">鍏抽棴</el-button>
+ </div>
+ </el-dialog>
+
+ <el-dialog
+ class="dialog-panel"
:title="dialog.mode === 'create' ? '鏂板鍦板浘' : '淇敼鍦板浘'"
:visible.sync="dialog.visible"
width="760px"
--
Gitblit v1.9.1