绑定区域

master
xy 1 year ago
parent ebea67e841
commit 19967dd775

@ -19,7 +19,7 @@
</div> </div>
<div style="overflow: auto;" :style="{height:height+'px'}"> <div style="overflow: auto;" :style="{height:height+'px'}">
<el-scrollbar style="flex: 1"> <el-scrollbar style="flex: 1">
<el-tabs tab-position="left" v-model="activeUser" @tab-click="getAdminAreas(),getAdminTypes(),checkNewTreeNodes()"> <el-tabs tab-position="left" v-model="activeUser" @tab-click="switchTab">
<el-tab-pane v-for="item in users" :label="item.name" :name="String(item.id)"></el-tab-pane> <el-tab-pane v-for="item in users" :label="item.name" :name="String(item.id)"></el-tab-pane>
</el-tabs> </el-tabs>
</el-scrollbar> </el-scrollbar>
@ -61,6 +61,7 @@
<h4 style="padding: 16px 0;">区域权限</h4> <h4 style="padding: 16px 0;">区域权限</h4>
<el-tree :data="list" <el-tree :data="list"
:key="newElTreeTag"
ref="newElTree" ref="newElTree"
node-key="code" node-key="code"
lazy lazy
@ -113,28 +114,43 @@ export default {
originalArea:[], originalArea:[],
originalType:[], originalType:[],
list:[], list:[],
newElTreeTag: 0,
} }
}, },
methods: { methods: {
async loadNode (node, resolve) { async loadNode (node, resolve) {
const list = await this.getList(node?.data?.code || 0) const list = await this.getList(node?.data?.code || 0,node?.data?.level || 0)
resolve(list) resolve(list)
}, },
checkNewTreeNodes () { switchTab () {
++this.newElTreeTag;
this.getAdminAreas();
this.getAdminTypes();
this.checkNewTreeNodes();
},
checkNewTreeNodes (level = 0) {
this.$nextTick(() => { this.$nextTick(() => {
this.$refs['newElTree'].setCheckedKeys([]) if (level === 0) {
this.$refs['newElTree'].setCheckedKeys([])
}
let user = this.users.find(i => i.id == this.activeUser) let user = this.users.find(i => i.id == this.activeUser)
if (user && user.village) { if (user && user.village) {
this.$refs['newElTree'].setCheckedKeys(user.village.map(i => Number(i.village_code))) let village = new Map()
user.village.filter(i => i.level === level+1).forEach(item => {
village.set(item.village_code,item)
})
this.$refs['newElTree'].setCheckedKeys([...village.values()].map(i => Number(i.village_code)))
} }
}) })
}, },
async getList(pcode = 0){ async getList(pcode = 0,level = 0){
const res = await getVillages({ pcode }); const res = await getVillages({ pcode });
this.checkNewTreeNodes() this.checkNewTreeNodes(level)
if (pcode === 0) { if (pcode === 0) {
this.list = res.list this.list = res.list
return [] return []
@ -257,6 +273,7 @@ export default {
this.$message.warning("用户不存在") this.$message.warning("用户不存在")
return return
} }
delete submitUser.village
submitUser.village_code = this.$refs['newElTree']?.getCheckedNodes()?.filter(i => i.level === 5)?.map(i => i.code)?.toString() submitUser.village_code = this.$refs['newElTree']?.getCheckedNodes()?.filter(i => i.level === 5)?.map(i => i.code)?.toString()
Promise.all([...areaPromiseAll,...typePromiseAll,save(submitUser)]).then(res => { Promise.all([...areaPromiseAll,...typePromiseAll,save(submitUser)]).then(res => {
this.getAdminTypes() this.getAdminTypes()

Loading…
Cancel
Save