fix : 修复公司/人员选择框bug

This commit is contained in:
2024-08-20 00:56:12 +08:00
parent ce2d39e3bf
commit 8f9d5eb37b
4 changed files with 42 additions and 15 deletions

View File

@@ -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