Merge pull request 'fix : 修复公司/人员选择框bug' (#726) from dd into master

Reviewed-on: http://git.feashow.cn/clay/mosr-web/pulls/726
This commit is contained in:
2024-08-19 16:56:37 +00:00
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

View File

@@ -120,7 +120,7 @@
<el-button color="#DED0B2" v-else @click="handleResubmit(demandForm)">重新提交</el-button>
<el-button @click="handleBack">返回</el-button>
</div>
<company-picker :multiple="true" ref="companyRef" title="请选择征集公司" @ok="selected"
<company-picker :multiple="true" ref="companyRef" title="请选择征集公司" @ok="sureSelectedCompany" @cancelOrClear="cancelSelectedCompany"
v-model:value="selectedCompanyList"/>
<file-preview ref="filePreviewRef" v-if="filePreviewShow" :fileName="filePreviewParam.fileName"
:fileUrl="filePreviewParam.fileUrl"
@@ -283,8 +283,17 @@ const getName = (list) => {
const showCompany = () => {
companyRef.value.show()
}
const selected = (select) => {
const cancelSelectedCompany=(select)=>{
console.info("🚀 ~ file:add method:cancelSelectedCompany line:287 -----", select)
formData.value.companyIds = []
if(select.length>0){
for (let val of select) {
formData.value.companyIds.push(val.value)
}
}
selectedCompanyList.value = select
}
const sureSelectedCompany = (select) => {
formData.value.companyIds = []
for (let val of select) {
formData.value.companyIds.push(val.value)

View File

@@ -6,7 +6,7 @@
<baseTitle title="项目实施-上传附件" ></baseTitle>
<el-form :model="formData" ref="tagForm" label-width="auto">
<el-form-item label="标签名称" prop="tagName" style="margin-left: 15px;">
<el-input v-model="formData.tagName" placeholder="请输入标签名称" style="width: 300px" v-if="showInput" clearable/>
<el-input v-model="formData.tagName" placeholder="请输入标签名称" style="width: 300px;margin-right: 10px" v-if="showInput" clearable/>
<el-select v-model="formData.tagName" placeholder="请选择标签名称" clearable filterable style="width: 300px;margin-right: 10px" v-else>
<el-option
v-for="item in tagsOption"

View File

@@ -1,7 +1,7 @@
<template>
<el-dialog custom-class="custom-dialog" class="border" :border="false" closeFree width="1000px" style="height: 676px"
:title="title" :visible.sync="visible" v-model="visible" append-to-body :close-on-click-modal="true"
:destroy-on-close="true">
:title="title" :visible.sync="visible" v-model="visible" append-to-body :close-on-click-modal="false"
>
<div class="picker">
<div class="candidate" v-loading="loading">
<el-input v-model="filterText" @change="getList"