fix(meal): 修复堂食和打包成员选择器互斥问题

添加禁用已选成员的逻辑,防止同一成员被同时选为堂食和打包
This commit is contained in:
砂糖
2026-03-02 14:11:47 +08:00
parent cc4fd73ca6
commit 8d94cf7555
2 changed files with 22 additions and 5 deletions

View File

@@ -8,10 +8,11 @@
style="width: 200px;"
:multiple="multiple" collapse-tags>
<el-option
v-for="item in dictOptions"
v-for="item in disabledOptions"
:key="item.dictValue"
:label="item.dictLabel"
:value="item.dictValue"
:disabled="item.disabled"
/>
</el-select>
@@ -152,11 +153,12 @@ export default {
props: {
dictType: { type: String, default: '' },
editable: { type: Boolean, default: true },
kisv: { type: Boolean, default: false },
kisv: { type: Boolean, default: true },
value: { type: String, default: '' },
placeholder: { type: String, default: '请选择' },
refresh: { type: Boolean, default: true },
multiple: { type: Boolean, default: false },
disables: { type: String, default: '' },
},
data() {
return {
@@ -199,7 +201,15 @@ export default {
this.$emit('change', val)
}
}
}
},
disabledOptions() {
return this.dictOptions.map(item => {
return {
...item,
disabled: this.disabledFormat(item.dictValue)
}
})
},
},
watch: {
dictType: {
@@ -235,6 +245,13 @@ export default {
this.dictId = res.rows[0].dictId
return this.dictId
},
disabledFormat(item) {
if (this.disables) {
const list = this.disables.split(',')
return list.includes(item)
}
return false
},
// 新增:刷新字典数据
async handleRefresh() {
this.loading = true

View File

@@ -163,11 +163,11 @@
<DictSelect dictType="hrm_department" v-model="form.deptName" placeholder="请选择部门名称"></DictSelect>
</el-form-item>
<el-form-item label="堂食成员" prop="dineInPeopleList">
<dict-select dictType="hrm_leave_employee" v-model="form.dineInPeopleList" placeholder="请选择堂食成员" multiple @change="handleDineInPeopleChange"/>
<dict-select dictType="hrm_leave_employee" v-model="form.dineInPeopleList" placeholder="请选择堂食成员" multiple @change="handleDineInPeopleChange" :disables="form.takeoutPeopleList"/>
<div>{{ form.dineInPeople || 0 }}</div>
</el-form-item>
<el-form-item label="打包成员" prop="takeoutPeopleList">
<dict-select dictType="hrm_leave_employee" v-model="form.takeoutPeopleList" placeholder="请选择打包成员" multiple @change="handleTakeoutPeopleChange"/>
<dict-select dictType="hrm_leave_employee" v-model="form.takeoutPeopleList" placeholder="请选择打包成员" multiple @change="handleTakeoutPeopleChange" :disables="form.dineInPeopleList"/>
<div>{{ form.takeoutPeople || 0 }}</div>
</el-form-item>
<el-form-item label="用餐总人数" prop="totalPeople">