From d35c5cac9aa1ecdd064320e1253de0686da6cdf8 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期四, 12 三月 2026 14:02:16 +0800
Subject: [PATCH] #

---
 src/main/webapp/views/basMap/basMap.html   |   24 +++++++
 src/main/webapp/static/js/basMap/basMap.js |  113 +++++++++++++++++++++++++++++++++++++
 2 files changed, 134 insertions(+), 3 deletions(-)

diff --git a/src/main/webapp/static/js/basMap/basMap.js b/src/main/webapp/static/js/basMap/basMap.js
index bc41975..bf30ac2 100644
--- a/src/main/webapp/static/js/basMap/basMap.js
+++ b/src/main/webapp/static/js/basMap/basMap.js
@@ -818,6 +818,8 @@
                     primaryKeyField: primaryKeyField,
                     loading: false,
                     exporting: false,
+                    importingMap: false,
+                    initializingLocMast: false,
                     tableData: [],
                     selection: [],
                     advancedFiltersVisible: false,
@@ -880,8 +882,12 @@
                     });
                 },
                 editableFields: function () {
+                    var editableKeys = {
+                        lev: true,
+                        originData: true
+                    };
                     return this.fieldMeta.filter(function (field) {
-                        return !field.primaryKey;
+                        return editableKeys[field.field];
                     });
                 },
                 exportColumns: function () {
@@ -1097,6 +1103,109 @@
                         }
                     });
                 },
+                buildDialogPayload: function () {
+                    var self = this;
+                    var payload = {};
+                    if (!isEmptyValue(self.dialogForm[self.primaryKeyField])) {
+                        payload[self.primaryKeyField] = self.dialogForm[self.primaryKeyField];
+                    }
+                    self.editableFields.forEach(function (field) {
+                        var value = self.dialogForm[field.field];
+                        if (field.valueType === 'number' && !isEmptyValue(value)) {
+                            value = Number(value);
+                        }
+                        if (field.valueType === 'number' && value === '') {
+                            value = null;
+                        }
+                        payload[field.field] = value;
+                    });
+                    return payload;
+                },
+                triggerMapImport: function () {
+                    var uploadInput = this.$refs.mapUploadInput;
+                    if (!uploadInput) {
+                        this.$message.error('涓婁紶鎺т欢鏈噯澶囧ソ');
+                        return;
+                    }
+                    uploadInput.value = '';
+                    uploadInput.click();
+                },
+                handleMapFileChange: function (event) {
+                    var self = this;
+                    var uploadInput = event && event.target ? event.target : self.$refs.mapUploadInput;
+                    var file = uploadInput && uploadInput.files ? uploadInput.files[0] : null;
+                    var formData;
+                    if (!file) {
+                        return;
+                    }
+                    formData = new FormData();
+                    formData.append('file', file);
+                    self.importingMap = true;
+                    $.ajax({
+                        url: baseUrl + '/basMap/crn/upload',
+                        method: 'POST',
+                        headers: self.authHeaders(),
+                        data: formData,
+                        processData: false,
+                        contentType: false,
+                        success: function (res) {
+                            if (self.handleForbidden(res)) {
+                                return;
+                            }
+                            if (!res || res.code !== 200) {
+                                self.$message.error((res && res.msg) ? res.msg : '瀵煎叆澶辫触');
+                                return;
+                            }
+                            self.$message.success(res.msg || '瀵煎叆鎴愬姛');
+                            self.loadTable();
+                        },
+                        error: function () {
+                            self.$message.error('瀵煎叆澶辫触');
+                        },
+                        complete: function () {
+                            self.importingMap = false;
+                            if (uploadInput) {
+                                uploadInput.value = '';
+                            }
+                        }
+                    });
+                },
+                promptInitLocMast: function () {
+                    var self = this;
+                    self.$prompt('璇疯緭鍏ュ垵濮嬪寲搴撲綅灞傛暟', '鍒濆鍖栧簱浣�', {
+                        confirmButtonText: '纭畾',
+                        cancelButtonText: '鍙栨秷',
+                        inputPattern: /^\d+$/,
+                        inputErrorMessage: '璇疯緭鍏ユ暟瀛楀眰鏁�'
+                    }).then(function (payload) {
+                        self.initializingLocMast = true;
+                        $.ajax({
+                            url: baseUrl + '/locMast/init',
+                            method: 'POST',
+                            headers: self.authHeaders(),
+                            data: {
+                                lev: $.trim(payload && payload.value ? payload.value : '')
+                            },
+                            success: function (res) {
+                                if (self.handleForbidden(res)) {
+                                    return;
+                                }
+                                if (!res || res.code !== 200) {
+                                    self.$message.error((res && res.msg) ? res.msg : '鍒濆鍖栧け璐�');
+                                    return;
+                                }
+                                self.$message.success(res.msg || '鍒濆鍖栨垚鍔�');
+                                self.loadTable();
+                            },
+                            error: function () {
+                                self.$message.error('鍒濆鍖栧け璐�');
+                            },
+                            complete: function () {
+                                self.initializingLocMast = false;
+                            }
+                        });
+                    }).catch(function () {});
+                },
                 submitDialog: function () {
                     var self = this;
                     if (!self.$refs.dialogForm) {
@@ -1111,7 +1220,7 @@
                             url: baseUrl + '/' + simpleEntityName + '/' + (self.dialog.mode === 'create' ? 'add' : 'update') + '/auth',
                             method: 'POST',
                             headers: self.authHeaders(),
-                            data: buildPayload(self.dialogForm),
+                            data: self.buildDialogPayload(),
                             success: function (res) {
                                 self.dialog.submitting = false;
                                 if (self.handleForbidden(res)) {
diff --git a/src/main/webapp/views/basMap/basMap.html b/src/main/webapp/views/basMap/basMap.html
index b5f6011..c001131 100644
--- a/src/main/webapp/views/basMap/basMap.html
+++ b/src/main/webapp/views/basMap/basMap.html
@@ -412,6 +412,22 @@
                     <div class="toolbar-ops">
                         <el-button size="small" type="primary" plain icon="el-icon-plus" @click="openCreateDialog">鏂板</el-button>
                         <el-button size="small" type="danger" plain icon="el-icon-delete" :disabled="selection.length === 0" @click="removeSelection">鍒犻櫎</el-button>
+                        <el-button
+                            size="small"
+                            plain
+                            icon="el-icon-upload2"
+                            :loading="importingMap"
+                            @click="triggerMapImport">
+                            瀵煎叆鍦板浘
+                        </el-button>
+                        <el-button
+                            size="small"
+                            plain
+                            icon="el-icon-refresh"
+                            :loading="initializingLocMast"
+                            @click="promptInitLocMast">
+                            鍒濆鍖栧簱浣�
+                        </el-button>
                         <el-popover
                             placement="bottom"
                             width="320"
@@ -580,7 +596,7 @@
 
     <el-dialog
         class="dialog-panel"
-        :title="dialog.mode === 'create' ? '鏂板 BasMap' : '淇敼 BasMap'"
+        :title="dialog.mode === 'create' ? '鏂板鍦板浘' : '淇敼鍦板浘'"
         :visible.sync="dialog.visible"
         width="760px"
         :close-on-click-modal="false">
@@ -659,6 +675,12 @@
             <el-button type="primary" :loading="dialog.submitting" @click="submitDialog">淇濆瓨</el-button>
         </div>
     </el-dialog>
+
+    <input
+        ref="mapUploadInput"
+        type="file"
+        style="display:none;"
+        @change="handleMapFileChange">
 </div>
 
 <script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>

--
Gitblit v1.9.1