From 022e13de4490b06cc5be7d5a5fbe8ca0b29ef7fc Mon Sep 17 00:00:00 2001
From: gaoshp <291585735@qq.com>
Date: 星期日, 12 五月 2024 13:15:38 +0800
Subject: [PATCH] 库区库位

---
 src/views/console/basic-data/material-warehousing-data/reservoir-location/reservoir-location.vue |  133 ++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 122 insertions(+), 11 deletions(-)

diff --git a/src/views/console/basic-data/material-warehousing-data/reservoir-location/reservoir-location.vue b/src/views/console/basic-data/material-warehousing-data/reservoir-location/reservoir-location.vue
index da8827c..6c1570f 100644
--- a/src/views/console/basic-data/material-warehousing-data/reservoir-location/reservoir-location.vue
+++ b/src/views/console/basic-data/material-warehousing-data/reservoir-location/reservoir-location.vue
@@ -1,7 +1,7 @@
 <!--
  * @Date: 2024-05-07 22:51:22
  * @LastEditors: Sneed
- * @LastEditTime: 2024-05-10 23:16:26
+ * @LastEditTime: 2024-05-12 13:14:41
  * @FilePath: /belleson-frontend/Users/mache/Documents/demo/cps-web/src/views/console/basic-data/material-warehousing-data/reservoir-location/reservoir-location.vue
 -->
 <template>
@@ -12,7 +12,21 @@
                     <el-container>
                         <el-main>
                             <el-tree default-expand-all ref="group" node-key="id" :data="treeData" :props="props"
-                                @node-click="nodeClick" highlight-current :current-node-key="params.areaId"></el-tree>
+                                @node-click="nodeClick" highlight-current :current-node-key="params.areaId">
+                                <template #default="{ node, data }">
+                                    <div class="custom-tree-node">
+                                        <span :class="data.isArea ? 'treedisabled' : ''">{{
+                                            node.label }}</span>
+                                        <el-icon class="icon" @click.stop="renameArea(data)" v-if="data.status"
+                                            style="margin-left: auto;margin-right: 4px;">
+                                            <ElIconEditPen />
+                                        </el-icon>
+                                        <el-icon class="icon" v-if="data.status" @click.stop="delArea(data)">
+                                            <ElIconDelete />
+                                        </el-icon>
+                                    </div>
+                                </template>
+                            </el-tree>
                         </el-main>
                         <el-footer>
                             <el-button @click="addArea" type="primary" icon="el-icon-plus" size="small">娣诲姞搴撳尯</el-button>
@@ -25,7 +39,7 @@
                         <!-- <el-button type="primary">瀵煎叆</el-button> -->
                         <import-table style="margin:0 8px" :exportUrl="exportUrl" :uploadUrl="uploadUrl"></import-table>
                         <el-button type="primary" @click="getExport">瀵煎嚭</el-button>
-                        <el-popconfirm width="220" title="纭畾灏嗛�夋嫨鐨勬暟鎹垹闄�" @confirm="table_del([scope.row], '0')">
+                        <el-popconfirm width="220" title="纭畾灏嗛�夋嫨鐨勬暟鎹垹闄�" @confirm="table_del(selection, '0')">
                             <template #reference>
                                 <el-button :disabled="selection.length == 0" type="danger" plain
                                     icon="el-icon-delete"></el-button>
@@ -69,10 +83,10 @@
                 </el-container>
             </el-container>
         </el-card>
-        <el-dialog v-model="areaVisible" title="娣诲姞" width="500">
+        <el-dialog v-model="areaVisible" title="搴撳尯淇℃伅" width="500">
             <el-form :model="form" :rules="rules" ref="dialogForm" label-width="120px" label-position="center">
                 <el-form-item label="搴撳尯缂栧彿" prop="code">
-                    <el-input v-model="form.code" />
+                    <el-input :disabled="form.id" v-model="form.code" />
                 </el-form-item>
                 <el-form-item label="搴撳尯鍚嶇О" prop="name">
                     <el-input v-model="form.name" />
@@ -81,6 +95,26 @@
             <template #footer>
                 <div class="dialog-footer">
                     <el-button type="primary" @click="saveArea">
+                        纭畾
+                    </el-button>
+                </div>
+            </template>
+        </el-dialog>
+        <el-dialog v-model="optionVisible" title="搴撲綅淇℃伅" width="500">
+            <el-form :model="form1" :rules="rules1" ref="dialogForm1" label-width="120px" label-position="center">
+                <el-form-item v-show="form1.warehouseCode" label="搴撲綅缂栧彿" prop="warehouseCode">
+                    <el-input disabled v-model="form1.warehouseCode" />
+                </el-form-item>
+                <el-form-item label="搴撲綅鍚嶇О" prop="warehouseName">
+                    <el-input v-model="form1.warehouseName" />
+                </el-form-item>
+                <el-form-item label="澶囨敞" prop="remark">
+                    <el-input v-model="form1.remark" />
+                </el-form-item>
+            </el-form>
+            <template #footer>
+                <div class="dialog-footer">
+                    <el-button type="primary" @click="savePosition">
                         纭畾
                     </el-button>
                 </div>
@@ -129,6 +163,13 @@
                     })
                 }
             },
+            optionVisible: false,
+            form1: {},
+            rules1: {
+                warehouseName: [
+                    { required: true, message: '蹇呭~' }
+                ]
+            },
         }
     },
     mounted() {
@@ -145,13 +186,45 @@
             this.params.areaId = node.id
             this.$refs?.table?.reload(this.params)
         },
+        renameArea(data) {
+            this.form = { ...data }
+            this.areaVisible = true
+        },
         addArea() {
             this.form = {}
             this.areaVisible = true
         },
+        delArea({ id }) {
+            this.$confirm(`纭畾鍒犻櫎閫変腑褰撳墠搴撳尯锛焋, '鎻愮ず', {
+                type: 'warning'
+            }).then(() => {
+                const loading = this.$loading();
+                this.$HTTP.get(`/api/blade-cps/warehouse-area/station-count?id=${id}`).then(res => {
+                    if (res.data > 0) {
+                        this.$message.warning("璇ュ簱鍖哄凡缁忕粦瀹氬簱浣嶏紝璇峰厛娓呴櫎搴撲綅锛�")
+                    } else {
+                        this.$HTTP.delete(`/api/blade-cps/warehouse-area/remove`, {}, { data: [id] }).then(res => {
+                            this.$message.success('鎿嶄綔鎴愬姛')
+                            this.init()
+                        })
+                    }
+                })
+                loading.close();
+
+            }).catch(() => {
+
+            })
+        },
         saveArea() {
             this.$refs.dialogForm.validate(async (valid) => {
                 if (valid) {
+                    if (this.form.id) {
+                        return this.$HTTP.put(`/api/blade-cps/warehouse-area/update`, { ...this.form }).then(res => {
+                            this.$message.success('鎿嶄綔鎴愬姛')
+                            this.areaVisible = false
+                            this.init()
+                        })
+                    }
                     this.$HTTP.post(`/api/blade-cps/warehouse-area/insert`, { ...this.form, parentId: 1 }).then(res => {
                         this.$message.success('鎿嶄綔鎴愬姛')
                         this.areaVisible = false
@@ -164,13 +237,36 @@
             this.$refs.table.reload()
         },
         table_add() {
-
+            this.form1 = {}
+            this.optionVisible = true
         },
-        table_del() {
-
+        table_del(ids) {
+            this.$HTTP.delete(`/api/blade-cps/warehouse-station/remove`, {}, { data: ids.map(v => v.id) }).then(res => {
+                this.$message.success('鎿嶄綔鎴愬姛')
+                this.search()
+            })
         },
-        table_edit() {
-
+        table_edit(row) {
+            this.form1 = { ...row }
+            this.optionVisible = true
+        },
+        savePosition() {
+            this.$refs.dialogForm1.validate(async (valid) => {
+                if (valid) {
+                    if (this.form1.id) {
+                        return this.$HTTP.put(`/api/blade-cps/warehouse-station/update`, { ...this.form1, areaId: this.params.areaId }).then(res => {
+                            this.$message.success('鎿嶄綔鎴愬姛')
+                            this.optionVisible = false
+                            this.search()
+                        })
+                    }
+                    this.$HTTP.post(`/api/blade-cps/warehouse-station/insert`, { ...this.form1, areaId: this.params.areaId }).then(res => {
+                        this.$message.success('鎿嶄綔鎴愬姛')
+                        this.optionVisible = false
+                        this.search()
+                    })
+                }
+            })
         },
         handleSelectionChange(selection) {
             this.selection = selection
@@ -186,4 +282,19 @@
 }
 </script>
 
-<style lang="scss" scoped></style>
\ No newline at end of file
+<style lang="scss" scoped>
+.custom-tree-node {
+    width: 100%;
+    display: flex;
+
+    .icon {
+        visibility: hidden;
+    }
+}
+
+.custom-tree-node:hover {
+    .icon {
+        visibility: visible;
+    }
+}
+</style>
\ No newline at end of file

--
Gitblit v1.9.3