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