2025-02-13 15:34:30 +08:00

206 lines
8.4 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div class="layout-content-wrap background-color-fff border-radius-8">
<div class="border-b-solid-lighter-1 p-h-24">
<div class="flex-row justify-content-between height-56 align-items-center">
<div class="color-text-primary f22">团队管理</div>
<div class="flex-row color-text-regular f14">
<div class="mr-24">
<el-input
placeholder="请输入团队名称"
suffix-icon="el-icon-search"
v-model.trim="queryData.name"
size="small"
clearable
@change="handleSearch"
@keydown.enter.native="handleSearch"
>
</el-input>
</div>
<el-button type="primary" @click="handleAddForm" size="small">新增团队</el-button>
</div>
</div>
</div>
<div class="layout-tabs-content-box">
<!-- table -->
<div class="">
<el-table ref="monthlyPlanTable"
:data="tableData"
:header-cell-style="{background:'#F5F7FA'}"
row-key="id"
lazy
:load="load"
:tree-props="{children: 'children', hasChildren: 'hasChildren'}"
>
<el-table-column prop="name" label="团队名称" width="250"></el-table-column>
<el-table-column label="团队负责人">
<template slot-scope="scope">
<div class="flex-row">
{{ListToString(scope.row.masterName)}}
</div>
</template>
</el-table-column>
<el-table-column label="团队负责人手机号">
<template slot-scope="scope">
<div class="flex-row">
{{ListToString(scope.row.masterPhone)}}
</div>
</template>
</el-table-column>
<el-table-column prop="count" label="团队人数" width="120"></el-table-column>
<el-table-column prop="remark" label="团队描述" width="350"></el-table-column>
<el-table-column label="操作" width="190">
<template slot-scope="scope">
<div class="flex-row">
<div class="f14 color-1960F4 cursor-pointer mr-8" v-if="scope.row.pid == 0" @click="handleAddDeptForm(scope,1)">添加团队</div>
<div class="f14 color-1960F4 cursor-pointer mr-8" v-if="scope.row.pid == 0" @click="handleAddForm(scope)">编辑</div>
<div class="f14 color-1960F4 cursor-pointer mr-8" v-else @click="handleAddDeptForm(scope,0)">编辑</div>
<div class="f14 color-1960F4 cursor-pointer" @click="handleDelete(scope)">删除</div>
</div>
</template>
</el-table-column>
</el-table>
<div class="text-center p-v-24">
<el-pagination
@size-change="getDeptList"
@current-change="getDeptList"
:current-page="queryData.current"
:page-size="queryData.size"
layout="total, prev, pager, next, jumper"
:total="total">
</el-pagination>
</div>
</div>
</div>
<!-- 新增-编辑 -->
<addOrEditAreaDialog v-if="addOrEditAreaConfig" :addOrEditAreaConfig.sync="addOrEditAreaConfig" />
<addOrEditDeptDialog v-if="addOrEditDeptConfig" :addOrEditDeptConfig.sync="addOrEditDeptConfig" />
</div>
</template>
<script>
import systemManageApi from "@/services/systemManage";
export default {
components: {
addOrEditDeptDialog: () => import('./components/addOrEditDeptDialog.vue'),
addOrEditAreaDialog: () => import('./components/addOrEditAreaDialog.vue'),
},
data() {
return {
tableData:[],
queryData: {
pid:0,
name:'',
current: 1,
size: 10,
companyId:this.$store.state.userinfo.companyId,//机构id 平台管理默认为0
},
total: 0,
addOrEditDeptConfig:null,//新增弹窗
addOrEditAreaConfig:null,//新增弹窗
map: new Map(),
};
},
created() {
this.getDeptList(1)
},
methods: {
// 新增
handleAddForm(scope){
let title = scope.row?'编辑团队':'新增团队'
let data = scope.row?scope.row:''
this.addOrEditAreaConfig={
title:title,
data: data
}
},
// 新增
handleAddDeptForm(scope,type){
let title = type == 0?'编辑团队':'新增团队'
let data = scope.row
this.addOrEditDeptConfig={
title:title,
data: data
}
},
// 搜索
handleSearch(){
this.queryData.current = 1;
this.queryData.size = 10;
this.getDeptList()
},
getDeptList(val,parentId = 0){
console.log(parentId,'parentId')
if(parentId == 0)
{
if(val!=undefined){this.queryData.current = val}
systemManageApi.getDeptList(this.queryData).then(res => {
if (!res.code) {
this.tableData = res.records;
this.tableData.forEach(item =>{
item.hasChildren = true
})
this.total = res.total;
}
})
}
else
{
this.refresh(parentId)
}
},
// 删除
handleDelete(scope){
this.$confirm("此操作将永久删除该区域, 是否继续?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
}).then(() => {
if(!this.$clickThrottle()) { return }//防止重复点击
systemManageApi.deleteDeptById({ id: scope.row.id }).then((res) => {
this.$message.success("成功");
this.getDeptList(1,scope.row.pid)
});
}).catch((e) => {});
},
ListToString(letlist){
let letString=''
if(letlist){
letlist.forEach((element,index) => {
if(index==0){letString=element}else{letString+=','+element}
});
}
return letString;
},
load(tree, treeNode, resolve) {
// console.log(tree,treeNode,resolve)
systemManageApi.getDeptList({pid:tree.id,name:"",current:1,size:50,companyId:this.$store.state.userinfo.companyId}).then(res => {
if (!res.code) {
// 在节点展示加载数据时记录treeNode节点
this.map.set(tree.id, {tree,treeNode,resolve});
resolve(res.records)
}
})
},
// 在新增、编辑、删除子节点时通过父级id找到对应的treeNode重新加载子节点列表完成数据刷新
refresh(parentId) {
if(this.map.get(parentId)) {
const {tree,treeNode,resolve} = this.map.get(parentId);
if(tree) {
this.load(tree, treeNode, resolve);
}
}
},
}
};
</script>
<style lang="scss" scoped>
.el-table--fit {
border:1px solid $border-color-lighter !important;
border-bottom: 0!important;
}
</style>