NGTools/pagesPackage/ngTools_depart/depart_select.vue
ldeyun 9dbfdc6c71 V1.0.0
微信小程序运行成功;
H5运行成功
2024-09-30 01:30:39 +08:00

136 lines
3.5 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>
<view>
<uni-easyinput @focus="open" v-model="selectText" placeholder="选择父级部门"></uni-easyinput>
<next-tree ref="nextTreeRef" funcMode="radio" uiMode="popup" :selectParent="true" labelKey="depart_name"
valueKey="_id" :multiple="false" :treeData="departTreeData" @confirm="onnodeclick" @change="onchange">
</next-tree>
</view>
</template>
<script>
import {
getJsonTree,
groupBy
} from "@/js_sdk/util/jsonData";
import {
saveDepartStore,
saveDictItemStore,
getDictItemStore,
getDepartStore
} from '@/js_sdk/util/dictTools.js';
export default {
data() {
return {
departTreeData: [],
selectText: "",
departID: "",
selectIDs:[]
}
},
props: {
selectID: {
type: String,
default: ""
},
},
watch: {
selectID: {
immediate: true,
deep: true,
handler(val) {
console.log(val)
this.departTreeData = getDepartStore()
this.selectIDs=[];
this.selectIDs.push(val)
this.echoDefault(this.selectIDs)
}
}
},
mounted() {
this.departTreeData = getDepartStore()
},
onShow() {
},
methods: {
open() {
this.departTreeData = getDepartStore();
setTimeout(() => {
this.$refs.nextTreeRef.showTree = true;
}, 500)
},
echoDefault(selectIds) {
this.checkedTreeData(this.departTreeData, selectIds)
console.log('treeData的数据', this.departTreeData)
console.log('treeData的选中的', selectIds)
this.funcMode = 'checkbox'
// this.$refs.nextTreeRef.showTree = true
},
checkedTreeData(treeData, selectIds) {
// 注意 vue2当数据深嵌套时如果没有在treeData里面初始化checked属性那在改变数据的时候直接将checked属性赋值为true这时候ui界面有可能不会更新
// 这时候建议使用this.$set去更新checked属性值或者在初始化this.treeData的时候初始化checked属性
(treeData || []).map(item => {
if (selectIds.indexOf(item._id) !== -1) {
console.log('v选中的', item)
this.selectText=item.depart_name
this.$emit("change", selectIds[0], this.selectText)
item.checked = true
} else {
item.checked = false
}
if (item.children && item.children.length) {
this.checkedTreeData(item.children, selectIds)
}
})
},
onchange(e) {
console.log("xzzzz---" + JSON.stringify(e))
let temp = this.getTreeName(e);
this.selectText = temp.strName;
let arrID = [];
let departParentID = "";
try {
arrID = temp.strID.split('/')
if (arrID.length > 1) {
departParentID = arrID[arrID.length - 1]
} else {
departParentID = arrID[0]
}
} catch (e) {
//TODO handle the exception
}
console.log(departParentID, this.selectText)
this.$emit("change", departParentID, this.selectText)
},
onnodeclick(e) {
// this.selectText = JSON.stringify(this.getTreeName(e));
// this.$emit("change",e[0]._id,this.selectText)
},
getTreeName(tree) {
// console.log("e", tree)
let treeParents = tree[0].parents
var strName = "";
var strID = "";
if (treeParents.length > 0) {
for (let i = 0; i < treeParents.length; i++) {
strName = strName + treeParents[i].depart_name + "/";
strID = strID + treeParents[i]._id + "/";
}
}
strName = strName + tree[0].depart_name;
strID = strID + tree[0]._id;
return {
"strName": strName,
"strID": strID
}
}
}
}
</script>