From 777bcb6c5660c0ed14d85207377b62b779d81dde Mon Sep 17 00:00:00 2001
From: MrShi <1878285526@qq.com>
Date: 星期三, 20 五月 2026 23:08:55 +0800
Subject: [PATCH] Merge branch 'master' of http://139.186.142.91:10010/r/productDev/gtzxinglijicun

---
 admin/src/views/business/area.vue |   88 +++++++++++++++++++++++++++++--------------
 1 files changed, 59 insertions(+), 29 deletions(-)

diff --git a/admin/src/views/business/area.vue b/admin/src/views/business/area.vue
index 725bf56..911682a 100644
--- a/admin/src/views/business/area.vue
+++ b/admin/src/views/business/area.vue
@@ -1,15 +1,5 @@
 <template>
   <TableLayout :permissions="['business:areas:query']">
-    <!-- 鎼滅储琛ㄥ崟 -->
-    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
-      <el-form-item label="鍚嶇О" prop="name">
-        <el-input v-model="searchForm.name" placeholder="璇疯緭鍏ュ悕绉�" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <section>
-        <el-button type="primary" @click="search">鎼滅储</el-button>
-        <el-button @click="reset">閲嶇疆</el-button>
-      </section>
-    </el-form>
     <!-- 琛ㄦ牸鍜屽垎椤� -->
     <template v-slot:table-wrap>
       <el-table
@@ -22,7 +12,7 @@
         row-key="id"
         stripe
         border
-        :height="tableHeightNew - 40"
+        :height="tableHeightNew - 50"
         :header-row-class-name="'table-header'"
         class="doumee-element-table"
         @selection-change="handleSelectionChange"
@@ -34,14 +24,15 @@
         </el-table-column>
         <el-table-column prop="createDate" label="鍒涘缓鏃堕棿" align="center" min-width="140px"></el-table-column>
         <el-table-column prop="sortnum" label="鎺掑簭" align="center" min-width="140px"></el-table-column>
-        <el-table-column label="鐘舵��" align="center" min-width="140px">
+        <el-table-column label="寮�閫氱姸鎬�" align="center" min-width="140px">
           <template slot-scope="{ row }">
-            <el-switch
+            <el-switch v-if="row.type==1"
               v-model="row.status"
-              active-color="#13ce66"
+              @change="handleStatusChange($event, row)"
+              active-color="green"
               inactive-color="#ff4949"
-              active-value="1"
-              inactive-value="0">
+              :active-value="1"
+              :inactive-value="0">
             </el-switch>
           </template>
         </el-table-column>
@@ -49,15 +40,19 @@
           v-if="containPermissions(['business:areas:update'])"
           label="鎿嶄綔"
           align="center"
-          min-width="80"
+          min-width="180"
         >
           <template slot-scope="{ row }">
-            <el-button type="text" @click="openPriceRule(row)">璁′环瑙勫垯</el-button>
+            <el-button type="text" @click="openPriceRule(row)" v-if="row.type === 1">璁′环瑙勫垯</el-button>
+            <el-button type="text" @click="edit(row)" v-permissions="['business:areas:update']">缂栬緫</el-button>
+            <el-button v-if="row.type!=2" type="text" @click="createChild(row)" v-permissions="['business:areas:create']">鏂板缓{{ row.type==0 ? '甯�' : '鍖哄幙' }}</el-button>
+            <el-button type="text" style="color: red;" @click="deleteById(row)" v-permissions="['business:areas:delete']">鍒犻櫎</el-button>
           </template>
         </el-table-column>
       </el-table>
     </template>
     <OperaCityPriceRuleWindow ref="operaCityPriceRuleWindow" @success="handlePriceRuleSuccess"/>
+    <OperaAreasWindow ref="operaAreasWindow" @success="update"/>
   </TableLayout>
 </template>
 
@@ -65,12 +60,13 @@
 import BaseTable from '@/components/base/BaseTable'
 import TableLayout from '@/layouts/TableLayout'
 import Pagination from '@/components/common/Pagination'
-import { listByParentId } from '@/api/business/areas'
+import { listByParentId, updateStatus } from '@/api/business/areas'
 import OperaCityPriceRuleWindow from '@/components/business/OperaCityPriceRuleWindow'
+import OperaAreasWindow from '@/components/business/OperaAreasWindow'
 export default {
   name: 'Areas',
   extends: BaseTable,
-  components: { TableLayout, Pagination, OperaCityPriceRuleWindow },
+  components: { TableLayout, Pagination, OperaAreasWindow, OperaCityPriceRuleWindow },
   data () {
     return {
       // 鎼滅储
@@ -84,7 +80,7 @@
   },
   created () {
     this.config({
-      module: '鐪佸競鍖轰俊鎭〃',
+      module: '鐪佸競鍖轰俊鎭�',
       api: '/business/areas',
       'field.id': 'id',
       'field.main': 'id'
@@ -92,6 +88,25 @@
     this.search()
   },
   methods: {
+    deleteById (row) {
+      var that = this
+      const message = '纭鍒犻櫎閫夋嫨鐨勬暟鎹褰曞強鍏朵笅绾у瓙鏁版嵁鍚�?'
+      this.$dialog.deleteConfirm(message)
+        .then(() => {
+          this.isWorking.delete = true
+          this.api.deleteById(row.id)
+            .then(() => {
+              this.refreshLoadTree(row.parentId)
+            })
+            .catch(e => {
+              this.$tip.apiFailed(e)
+            })
+            .finally(() => {
+              this.isWorking.delete = false
+            })
+        })
+        .catch(() => {})
+    },
     // 椤电爜鍙樻洿澶勭悊
     handlePageChange (pageIndex) {
       this.isWorking.search = true
@@ -106,18 +121,26 @@
           this.isWorking.search = false
         })
     },
-    dataAddBool(array) {
+    dataAddBool (array) {
       array.forEach(item => {
         item.hasChildren = item.type != 2
         // item.childList = item.childList && this.dataAddBool(item.childList)
       })
       return array
     },
-    load(tree, treeNode, resolve) {
+    handleStatusChange (val, row) {
+      updateStatus({ id: row.id, status: val }).then(res => {
+        this.$tip.apiSuccess(res || '淇敼鎴愬姛')
+      }).catch(e => {
+        row.status = val === 1 ? 0 : 1
+        this.$tip.apiFailed(e)
+      })
+    },
+    load (tree, treeNode, resolve) {
       this.treeMaps.set(tree.id, { tree, treeNode, resolve })
       listByParentId({ parentId: tree.id, type: tree.type + 1 })
         .then(data => {
-          resolve(this.dataAddBool(data||[]))
+          resolve(this.dataAddBool(data || []))
         })
         .catch(e => {
           this.$tip.apiFailed(e)
@@ -126,7 +149,7 @@
           this.isWorking.search = false
         })
     },
-    refreshLoadTree(parentId) {
+    refreshLoadTree (parentId) {
       if (this.treeMaps.get(parentId)) {
         const { tree, treeNode, resolve } = this.treeMaps.get(parentId)
         this.$set(this.$refs.table.store.states.lazyTreeNodeMap, parentId, [])
@@ -141,14 +164,21 @@
         this.handlePageChange()
       }
     },
-    update(parentId) {
+    update (parentId) {
       this.refreshLoadTree(parentId)
     },
-    openPriceRule(row) {
-      this.$refs.operaCityPriceRuleWindow.open('璁′环瑙勫垯', row)
+    openPriceRule (row) {
+      this.$refs.operaCityPriceRuleWindow.open('璁′环瑙勫垯(' + (row.name || '') + ')', row.id)
     },
-    handlePriceRuleSuccess() {
+    handlePriceRuleSuccess () {
       this.$message.success('淇濆瓨鎴愬姛')
+    },
+    edit (row) {
+      // this.parentId = row.type==0 ? null : row.type==1 ? '缂栬緫甯�' : '缂栬緫鍖哄幙'
+      this.$refs.operaAreasWindow.open(row.type == 0 ? '缂栬緫鐪�' : row.type == 1 ? '缂栬緫甯�' : '缂栬緫鍖哄幙', row)
+    },
+    createChild (row) {
+      this.$refs.operaAreasWindow.open(row.type == 0 ? '鏂板缓甯�' : '鏂板缓鍘垮尯', { parentId: row.id, name: '', type: row.type === 1 ? 2 : 1 })
     }
   }
 }

--
Gitblit v1.9.3