fix : 修复公司/人员选择框bug
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<el-dialog custom-class="custom-dialog" class="border" :border="false" width="1000px" style="height: 676px"
|
||||
:title="title" :show-close="false" :visible.sync="visible" v-model="visible" append-to-body :close-on-click-modal="true" @close="closeDialog">
|
||||
:title="title" :show-close="false" :visible.sync="visible" v-model="visible" append-to-body :close-on-click-modal="false" @close="closeDialog">
|
||||
<div class="picker">
|
||||
<div class="candidate" v-loading="loading">
|
||||
<el-input v-model="filterText"
|
||||
@@ -17,8 +17,8 @@
|
||||
<el-tree :data="dataList" ref="tree" :props="defaultProps" empty-text="" node-key="value"
|
||||
:show-checkbox="showCheckbox" highlight-current default-expand-all
|
||||
:default-checked-keys="defaultChecked" :disabled="disabled"
|
||||
:check-strictly="!checkStrictly" @node-click="(node,check)=>handle(node,check)"
|
||||
@check-change="handleChange" :filter-node-method="filterNode">
|
||||
:check-strictly="!checkStrictly" @node-click="(node,check)=>handleNodeClick(node,check)"
|
||||
@check-change="handleCheckClick" :filter-node-method="filterNode">
|
||||
<template #default="{ node, data }">
|
||||
<div class="tree-node">
|
||||
<div style="display: flex;align-items: center;padding: 3px 0">
|
||||
@@ -39,7 +39,7 @@
|
||||
<el-empty :image-size="100" description="请点击左侧列表选择数据" v-show="selectList.length === 0"/>
|
||||
<div v-for="(selectItem, selectIndex) in selectList" :key="selectIndex" class="org-item">
|
||||
{{ selectItem.label }}
|
||||
<el-icon @click="noSelected(selectItem)" size="20" style="margin-left: 10px;cursor: pointer;">
|
||||
<el-icon @click="removeSingleSelected(selectItem)" size="20" style="margin-left: 10px;cursor: pointer;">
|
||||
<CircleClose/>
|
||||
</el-icon>
|
||||
</div>
|
||||
@@ -47,7 +47,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="footer">
|
||||
<el-button size="mini" @click="visible = false">取 消</el-button>
|
||||
<el-button size="mini" @click="cancelUserPicker">取 消</el-button>
|
||||
<el-button size="mini" color="#DED0B2" @click="selectConfirm">确 定</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
@@ -105,6 +105,8 @@ const defaultProps = {
|
||||
children: "children",
|
||||
disabled: "disabled",
|
||||
};
|
||||
|
||||
const isRemoveSingleSelected = ref(false);
|
||||
const emit = defineEmits(['update:modelValue'])
|
||||
const _value = computed({
|
||||
get() {
|
||||
@@ -175,7 +177,7 @@ const updateTreeCheck = (list, flag) => {
|
||||
}
|
||||
})
|
||||
}
|
||||
const handleChange = (data, checked) => {
|
||||
const handleCheckClick = (data, checked) => {
|
||||
if (data.value == -1) {
|
||||
if(checked){
|
||||
updateTreeCheck(dataList.value, false)
|
||||
@@ -219,7 +221,7 @@ const handleChange = (data, checked) => {
|
||||
}
|
||||
}
|
||||
};
|
||||
const handle = (node, check) => {
|
||||
const handleNodeClick = (node, check) => {
|
||||
if (check.isLeaf !== false) {
|
||||
if (props.multiple) {
|
||||
//不添加重复的数据到右边
|
||||
@@ -238,7 +240,7 @@ const handle = (node, check) => {
|
||||
}
|
||||
// _value.value = selectList.value
|
||||
};
|
||||
const noSelected = (selectItem) => {
|
||||
const removeSingleSelected = (selectItem) => {
|
||||
//左侧无选择框时,右侧显示×
|
||||
for (let i = 0; i < selectList.value.length; i++) {
|
||||
if (selectList.value[i].value === selectItem.value) {
|
||||
@@ -253,6 +255,7 @@ const noSelected = (selectItem) => {
|
||||
tree.value.setCheckedKeys([]);
|
||||
}
|
||||
}
|
||||
isRemoveSingleSelected.value = true
|
||||
};
|
||||
const clearSelected = () => {
|
||||
//清空
|
||||
@@ -261,18 +264,33 @@ const clearSelected = () => {
|
||||
cancelButtonText: "取消",
|
||||
type: "warning"
|
||||
}).then(() => {
|
||||
isRemoveSingleSelected.value = true
|
||||
if (!props.showCheckbox) {
|
||||
selectList.value = [];
|
||||
} else {
|
||||
handleChange("1");
|
||||
handleCheckClick("1");
|
||||
}
|
||||
});
|
||||
};
|
||||
const cancelUserPicker = () => {
|
||||
if (isRemoveSingleSelected.value&&localStorage.getItem('originallySelectedList')) {
|
||||
selectList.value = JSON.parse(localStorage.getItem('originallySelectedList'))
|
||||
}else{
|
||||
selectList.value=[]
|
||||
handleCheckClick("1");
|
||||
}
|
||||
emit("cancelOrClear", selectList.value);
|
||||
visible.value = false;
|
||||
nextTick(()=>{
|
||||
isRemoveSingleSelected.value=false
|
||||
})
|
||||
}
|
||||
const selectConfirm = () => {
|
||||
//确定按钮
|
||||
emit("ok", selectList.value);
|
||||
dataList.value = []
|
||||
visible.value = false;
|
||||
localStorage.setItem('originallySelectedList', JSON.stringify(selectList.value))
|
||||
};
|
||||
defineExpose({
|
||||
show
|
||||
|
||||
Reference in New Issue
Block a user