From 05aec1e9986fbe3e907259bb1a1396f129bd0fa1 Mon Sep 17 00:00:00 2001
From: MrShi <1878285526@qq.com>
Date: 星期五, 06 二月 2026 14:14:48 +0800
Subject: [PATCH] 优化

---
 admin/src/views/business/member.vue |  192 +++++++++++++++++++++++++++++++++--------------
 1 files changed, 133 insertions(+), 59 deletions(-)

diff --git a/admin/src/views/business/member.vue b/admin/src/views/business/member.vue
index b632c08..87d15a3 100644
--- a/admin/src/views/business/member.vue
+++ b/admin/src/views/business/member.vue
@@ -2,92 +2,92 @@
   <TableLayout :permissions="['business:member: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"  style="width: 150px" placeholder="璇疯緭鍏ュ悕绉�" @keypress.enter.native="search"></el-input>
+      <el-form-item label="濮撳悕" prop="name">
+        <el-input v-model="searchForm.name"  style="width: 180px" placeholder="璇疯緭鍏ュ鍚�" @keypress.enter.native="search"></el-input>
       </el-form-item>
       <el-form-item label="宸ュ彿" prop="code">
-        <el-input v-model="searchForm.code" style="width: 150px" placeholder="璇疯緭鍏ュ伐鍙�" @keypress.enter.native="search"></el-input>
+        <el-input v-model="searchForm.code" style="width: 180px" placeholder="璇疯緭鍏ュ伐鍙�" @keypress.enter.native="search"></el-input>
       </el-form-item>
-      <el-form-item label="鎴樺尯" prop="fieldIdList">
+      <el-form-item label="鎴樺尯" prop="zhanquIds">
         <el-select
-            v-model="searchForm.fieldIdList"
-            style="width: 150px"
+            v-model="searchForm.zhanquIds"
+            style="width: 180px"
             placeholder="鎴樺尯"
             clearable
-            multiple
             @change="search"
         >
           <el-option
-              v-for="item in cateList"
+              v-for="item in cateList.filter(item=>{return item.type==0})"
               :key="item.id"
               :value="item.id"
               :label="item.name"
           ></el-option>
         </el-select>
       </el-form-item>
-      <el-form-item label="鍟嗕笟鍖栫被鍨�" prop="busTypeIdList">
+      <el-form-item label="鍟嗕笟鍖栫被鍨�" prop="bustypeIdList">
         <el-select
-            v-model="searchForm.busTypeIdList"
-            style="width: 150px"
+            v-model="searchForm.bustypeIdList"
+            style="width: 180px"
             placeholder="鍟嗕笟鍖栫被鍨�"
             clearable
             multiple
+            collapse-tags
             @change="search"
         >
           <el-option
-              v-for="item in cateList1"
+              v-for="item in cateList.filter(item=>{return item.type==1})"
               :key="item.id"
               :value="item.id"
               :label="item.name"
           ></el-option>
         </el-select>
       </el-form-item>
-      <el-form-item label="鎿呴暱棰嗗煙" prop="levelIdList">
+      <el-form-item label="鎿呴暱棰嗗煙" prop="fieldIdList">
         <el-select
-            v-model="searchForm.levelIdList"
-            style="width: 150px"
+            v-model="searchForm.fieldIdList"
+            style="width: 300px"
             placeholder="鎿呴暱棰嗗煙"
             clearable
+            collapse-tags
             multiple
             @change="search"
         >
           <el-option
-              v-for="item in cateList2"
+              v-for="item in cateList.filter(item=>{return item.type==2})"
               :key="item.id"
               :value="item.id"
               :label="item.name"
           ></el-option>
         </el-select>
       </el-form-item>
-      <el-form-item label="鑰佸笀绛夌骇" prop="levelIdList">
+      <el-form-item label="鑰佸笀绛夌骇" prop="levelId">
         <el-select
-            v-model="searchForm.levelIdList"
-            style="width: 150px"
+            v-model="searchForm.levelId"
+            style="width: 180px"
             placeholder="鑰佸笀绛夌骇"
             clearable
-            multiple
             @change="search"
         >
           <el-option
-              v-for="item in cateList3"
+              v-for="item in cateList.filter(item=>{return item.type==3})"
               :key="item.id"
               :value="item.id"
               :label="item.name"
           ></el-option>
         </el-select>
+      </el-form-item>
         <el-form-item label="鐘舵��" prop="status">
           <el-select
               v-model="searchForm.status"
               placeholder="鐘舵��"
               clearable
-              style="width: 150px"
+              style="width: 180px"
               @change="search"
           >
             <el-option :key="0" :value="0" label="鍚敤"></el-option>
             <el-option :key="1" :value="1" label="绂佺敤"></el-option>
           </el-select>
         </el-form-item>
-      </el-form-item>
       <section>
         <el-button type="primary" @click="search">鎼滅储</el-button>
         <el-button @click="reset">閲嶇疆</el-button>
@@ -110,8 +110,8 @@
         <el-table-column type="selection" width="55"></el-table-column>
         <el-table-column  prop="imgurl" label="鍥剧墖" min-width="100px">
           <template slot-scope="{row}">
-            <el-image v-if="row.fullImgurl" style="width: 50px; height: 50px; margin-right: 10px" :src="row.fullImgurl"
-                      :preview-src-list="[row.fullImgurl]">
+            <el-image v-if="row.fullImgurl" style="width: 50px; margin-right: 10px" :src="row.fullImgurl"
+              :preview-src-list="[row.fullImgurl]">
             </el-image>
           </template>
         </el-table-column>
@@ -125,7 +125,11 @@
         </el-table-column>
         <el-table-column prop="positon" label="宀椾綅" min-width="120px"></el-table-column>
         <el-table-column prop="levelName" label="绛夌骇" min-width="100px"></el-table-column>
-        <el-table-column prop="jobYear" label="浠庝笟骞翠唤" min-width="100px"></el-table-column>
+        <el-table-column prop="workYears" label="浠庝笟骞翠唤" min-width="100px">
+          <template slot-scope="{row}">
+            {{row.workYears}}骞�
+          </template>
+        </el-table-column>
         <el-table-column prop="serveNum" label="鏈嶅姟鍟嗗満" min-width="100px">
           <template slot-scope="{row}">
             <span v-if="row.serveNum">{{row.serveNum}}涓�</span>
@@ -133,29 +137,51 @@
         </el-table-column>
         <el-table-column prop="caseNum" label="鏍囨潌妗堜緥" min-width="100px">
           <template slot-scope="{row}">
-            <span v-if="row.caseNum">{{row.caseNum}}涓�</span>
+            <span >{{row.caseNum || 0}}涓�</span>
           </template>
         </el-table-column>
-        <el-table-column prop="busTypeNames" label="鍟嗕笟鍖栫被鍨�" min-width="200px"></el-table-column>
-        <el-table-column prop="areaNames" label="鏈嶅姟鎴樺尯" min-width="200px"></el-table-column>
-        <el-table-column prop="fieldNames" label="鎿呴暱棰嗗煙" min-width="200px"></el-table-column>
-        <el-table-column label="鐘舵��">
+        <el-table-column prop="busTypeNames" label="鍟嗕笟鍖栫被鍨�" min-width="200px">
+          <template slot-scope="{row}">
+            <div v-if="row.typeList && row.typeList.length">
+             <div style="display:inline-block;" v-for="(item,index) in row.typeList">{{item.name||''}} <span v-if="index < row.typeList.length-1" style="display:inline-block;padding: 0px 3px;">/</span></div>
+            </div>
+          </template>
+        </el-table-column>
+        <el-table-column prop="areaNames" label="鏈嶅姟鎴樺尯" min-width="200px">
+          <template slot-scope="{row}">
+            <div v-if="row.zqList && row.zqList.length">
+              <div style="display:inline-block;" v-for="(item,index) in row.zqList">{{item.name||''}} <span v-if="index < row.zqList.length-1" style="display:inline-block;padding: 0px 3px;">/</span></div>
+            </div>
+          </template>
+        </el-table-column>
+        <el-table-column prop="fieldNames" label="鎿呴暱棰嗗煙" min-width="200px">
+          <template slot-scope="{row}">
+            <div v-if="row.fieldList && row.fieldList.length">
+              <div style="width: 190px; display: -webkit-box; -webkit-box-orient: vertical; line-clamp: 2; overflow: hidden;">
+                <template v-for="(item,index) in row.fieldList">{{item.name||''}} <template v-if="index < row.fieldList.length-1">/</template></template>
+              </div>
+            </div>
+          </template>
+        </el-table-column>
+        <el-table-column prop="fee" label="璐圭敤鏍囧噯(鍏�/鍛�)" min-width="130px"></el-table-column>
+        <el-table-column prop="updateUserName" label="鎿嶄綔浜�" min-width="100px"></el-table-column>
+        <el-table-column prop="updateTime" label="鏈�杩戞搷浣滄椂闂�" min-width="150px"></el-table-column>
+        <el-table-column label="鐘舵��" fixed="right">
           <template slot-scope="{row}">
             <el-switch @change="changeStatus($event, row)" v-model="row.status" active-color="#13ce66"
-            inactive-color="#ff4949" :active-value="0" :inactive-value="1">
+                       inactive-color="#ff4949" :active-value="0" :inactive-value="1">
             </el-switch>
           </template>
         </el-table-column>
-        <el-table-column prop="updateUserName" label="鎿嶄綔浜�" min-width="100px"></el-table-column>
-        <el-table-column prop="updateTime" label="鏈�杩戞搷浣滄椂闂�" min-width="150px"></el-table-column>
         <el-table-column
           v-if="containPermissions(['business:member:update', 'business:member:delete'])"
           label="鎿嶄綔"
-          min-width="120"
+          min-width="180"
           fixed="right"
         >
           <template slot-scope="{row}">
             <el-button type="text" @click="$refs.operaMemberWindow.open('缂栬緫鑰佸笀', row,searchForm.type)" icon="el-icon-edit" v-permissions="['business:member:update']">缂栬緫</el-button>
+            <el-button type="text"   @click="$refs.OperaCasesListWindow.open('鏌ョ湅鑰佸笀妗堜緥銆�'+row.name+'銆�', row.id)" icon="el-icon-picture-outline">妗堜緥</el-button>
             <el-button type="text" style="color: red" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:member:delete']">鍒犻櫎</el-button>
           </template>
         </el-table-column>
@@ -170,6 +196,7 @@
     <!-- 鏂板缓/淇敼 -->
     <OperaMemberWindow ref="operaMemberWindow" @success="handlePageChange"/>
     <OperaMemberImportWindow ref="OperaMemberImportWindow" @success="handlePageChange" />
+    <OperaCasesListWindow ref="OperaCasesListWindow" @success="handlePageChange" />
   </TableLayout>
 </template>
 
@@ -179,27 +206,27 @@
 import Pagination from '@/components/common/Pagination'
 import OperaMemberWindow from '@/components/business/OperaMemberWindow'
 import OperaMemberImportWindow from '@/components/business/OperaMemberImportWindow'
+import OperaCasesListWindow from '@/components/business/OperaCasesListWindow'
 import { findAll as cateList } from '@/api/business/category'
 export default {
   name: 'Category',
   extends: BaseTable,
-  components: { TableLayout, Pagination, OperaMemberWindow ,OperaMemberImportWindow},
+  components: { TableLayout, Pagination, OperaMemberWindow ,OperaMemberImportWindow,OperaCasesListWindow},
   data () {
     return {
       // 鎼滅储
       searchForm: {
         name: '',
+        queryFlag:1,
         code: '',
         status: null,
-        levelIdList:[],
+        levelId:null,
         fieldIdList: [],
-        busTypeIdList:[],
+        zhanquIds:null,
+        bustypeIdList:[],
         type: 0
       },
-      cateList:[],
-      cateList1:[],
-      cateList2:[],
-      cateList3:[],
+      cateList:[]
     }
   },
   created () {
@@ -211,33 +238,80 @@
     })
     this.search()
     cateList({
-      type: 0 , //鎴樺尯
     }).then(res => {
       this.cateList = res
     })
-    cateList({
-      type: 1 , //鍟嗕笟鍖�
-    }).then(res => {
-      this.cateList1 = res
-    })
-    cateList({
-      type: 2 , //鎿呴暱棰嗙敤
-    }).then(res => {
-      this.cateList2 = res
-    })
-    cateList({
-      type: 3 , //绛夌骇
-    }).then(res => {
-      this.cateList3 = res
-    })
+
   },
   methods: {
+    deleteById (row, childConfirm = true, call) {
+      this.__checkApi()
+      let message = `纭鍒犻櫎鑰佸笀鏁版嵁鍚�?`
+      if (childConfirm && row.children != null && row.children.length > 0) {
+        message = `纭鍒犻櫎鑰佸笀鏁版嵁鍚�?`
+      }
+      this.$dialog.deleteConfirm(message)
+              .then(() => {
+                this.isWorking.delete = true
+                this.api.deleteById(row[this.configData['field.id']])
+                        .then(() => {
+                          this.__afterDelete()
+                          if (call) {
+                            call()
+                          }
+                        })
+                        .catch(e => {
+                          this.$tip.apiFailed(e)
+                        })
+                        .finally(() => {
+                          this.isWorking.delete = false
+                        })
+              })
+              .catch(() => {})
+    },
+    deleteByIdInBatch (childConfirm = true, call) {
+      this.__checkApi()
+      if (this.tableData.selectedRows.length === 0) {
+        this.$tip.warning('璇疯嚦灏戦�夋嫨涓�鏉℃暟鎹�')
+        return
+      }
+      let message = `纭鍒犻櫎鑰佸笀鏁版嵁鍚�?`
+      if (childConfirm) {
+        const containChildrenRows = []
+        for (const row of this.tableData.selectedRows) {
+          if (row.children != null && row.children.length > 0) {
+            containChildrenRows.push(row[this.configData['field.main']])
+          }
+        }
+        if (containChildrenRows.length > 0) {
+          message = `纭鍒犻櫎鑰佸笀鏁版嵁鍚�?`
+        }
+      }
+      this.$dialog.deleteConfirm(message)
+              .then(() => {
+                this.isWorking.delete = true
+                this.api.deleteByIdInBatch(this.tableData.selectedRows.map(row => row[this.configData['field.id']]).join(','))
+                        .then(() => {
+                          this.__afterDelete(this.tableData.selectedRows.length)
+                          if (call) {
+                            call()
+                          }
+                        })
+                        .catch(e => {
+                          this.$tip.apiFailed(e)
+                        })
+                        .finally(() => {
+                          this.isWorking.delete = false
+                        })
+              })
+              .catch(() => {})
+    },
     changeStatus (e, row) {
       this.working = true
       this.api.updateStatus({ id: row.id, status: e })
         .then(res => {
           this.$tip.apiSuccess(res || '鎿嶄綔鎴愬姛')
-          this.search()
+          this.handlePageChange()
         })
         .catch(e => {
           this.$tip.apiFailed(e)

--
Gitblit v1.9.3