Browse Source

2026-06-30

数据字典多选默认值
master
fengyuan_yang 4 weeks ago
parent
commit
ff1e7e1422
  1. 26
      src/views/modules/rohs/rohsRecord.vue
  2. 93
      src/views/modules/sys/dict.vue

26
src/views/modules/rohs/rohsRecord.vue

@ -310,12 +310,34 @@
</el-form>
<el-form :inline="true" label-position="top" :model="modalData">
<el-form-item label="所需审批文件/Qualification Documents needed" >
<dict-data-select class="rohs-multiple-two-rows" v-model="modalData.qualificationDocumentsNeededList" multiple :title="getMultipleSelectTitle(modalData.qualificationDocumentsNeededList)" :disabled="isRohsFieldDisabled('qualificationDocumentsNeeded')" style="width: 807px" dict-type="rohs_qualification_docs"></dict-data-select>
<dict-data-select
:key="'qualification-default-' + (modalData.referenceNo || '') + '-' + (isEditMode ? 'edit' : 'add')"
class="rohs-multiple-two-rows"
v-model="modalData.qualificationDocumentsNeededList"
multiple
:use-default-value="!isEditMode"
:use-type-multi-default-value="!isEditMode"
:title="getMultipleSelectTitle(modalData.qualificationDocumentsNeededList)"
:disabled="isRohsFieldDisabled('qualificationDocumentsNeeded')"
style="width: 807px"
dict-type="rohs_qualification_docs">
</dict-data-select>
</el-form-item>
</el-form>
<el-form :inline="true" label-position="top" :model="modalData" style="margin-top: 40px">
<el-form-item label="测试报告必测项/Test Report including items">
<dict-data-select class="rohs-multiple-two-rows" v-model="modalData.testReportIncludingItemsList" multiple :title="getMultipleSelectTitle(modalData.testReportIncludingItemsList)" :disabled="isRohsFieldDisabled('testReportIncludingItems')" style="width: 807px" dict-type="rohs_test_report_items"></dict-data-select>
<dict-data-select
:key="'test-report-default-' + (modalData.referenceNo || '') + '-' + (isEditMode ? 'edit' : 'add')"
class="rohs-multiple-two-rows"
v-model="modalData.testReportIncludingItemsList"
multiple
:use-default-value="!isEditMode"
:use-type-multi-default-value="!isEditMode"
:title="getMultipleSelectTitle(modalData.testReportIncludingItemsList)"
:disabled="isRohsFieldDisabled('testReportIncludingItems')"
style="width: 807px"
dict-type="rohs_test_report_items">
</dict-data-select>
</el-form-item>
</el-form>
<el-form :inline="true" label-position="top" :model="modalData" style="margin-top: 40px">

93
src/views/modules/sys/dict.vue

@ -26,6 +26,8 @@ export default {
dictId:undefined,
dictName:undefined,
dictType: undefined,
multiDefaultValue: '',
multiDefaultValueList: [],
status:'Y',
createBy:this.$store.state.user.name,
createDate:undefined,
@ -77,10 +79,39 @@ export default {
removeDictType(row){
this.$message.success(row)
},
normalizeMultiDefaultValueList (value) {
if (value === null || value === undefined) {
return []
}
const cache = new Set()
return String(value)
.split(/[;,\n]/)
.map(item => String(item || '').trim())
.filter(item => {
if (!item || cache.has(item)) {
return false
}
cache.add(item)
return true
})
},
syncMultiDefaultValueFromList () {
const list = Array.isArray(this.saveData.multiDefaultValueList) ? this.saveData.multiDefaultValueList : []
const normalized = this.normalizeMultiDefaultValueList(list.join(';'))
this.$set(this.saveData, 'multiDefaultValueList', normalized)
this.$set(this.saveData, 'multiDefaultValue', normalized.join(';'))
},
openDictTypeDialog(val,row){
this.insertOrUpdate = val;
if (row){
this.saveData = {...row}
this.saveData = {
...row,
multiDefaultValue: row.multiDefaultValue || '',
multiDefaultValueList: this.normalizeMultiDefaultValueList(row.multiDefaultValue)
}
} else {
this.$set(this.saveData, 'multiDefaultValue', '')
this.$set(this.saveData, 'multiDefaultValueList', [])
}
this.saveDataDialogFlag = true
},
@ -90,6 +121,8 @@ export default {
dictId:undefined,
dictName:undefined,
dictType: undefined,
multiDefaultValue: '',
multiDefaultValueList: [],
status:'Y',
createBy:this.$store.state.user.name,
createDate:undefined,
@ -113,6 +146,7 @@ export default {
})
},
saveDictType(){
this.syncMultiDefaultValueFromList();
saveDictType(this.saveData).then(({data})=>{
if (data && data.code === 0){
this.$message.success(data.msg);
@ -126,6 +160,7 @@ export default {
})
},
updateDictType(){
this.syncMultiDefaultValueFromList();
updateDictType(this.saveData).then(({data})=>{
if (data && data.code === 0){
this.$message.success(data.msg);
@ -318,7 +353,20 @@ export default {
<el-form-item label="字典类型" prop="dictType">
<el-input v-model="saveData.dictType" :disabled="insertOrUpdate !== 0" clearable/>
</el-form-item>
<el-form-item label="应用菜单" prop="menuId">
<el-form-item label="多选默认值">
<dict-data-select
:key="'multi-default-' + (saveData.dictType || '') + '-' + insertOrUpdate"
class="rohs-multiple-two-rows"
v-model="saveData.multiDefaultValueList"
multiple
clearable
:use-default-value="false"
:disabled="insertOrUpdate === 0 || !saveData.dictType"
:dict-type="saveData.dictType"
style="width: 100%">
</dict-data-select>
</el-form-item>
<el-form-item label="应用菜单" prop="menuId" style="margin-top: 40px">
<el-select v-model="saveData.menuId" style="width: 40%;">
<el-option :value="i.menuId" :label="i.name" v-for="i in menuList" :key="i.menuId"></el-option>
</el-select>
@ -350,4 +398,45 @@ export default {
/deep/ .el-textarea .el-textarea__inner {
padding: 0px 5px;
}
/deep/ .rohs-multiple-two-rows.el-select .el-input__inner,
/deep/ .rohs-multiple-two-rows .el-select .el-input__inner {
min-height: 62px !important;
height: auto !important;
padding-top: 6px !important;
padding-bottom: 6px !important;
}
/deep/ .rohs-multiple-two-rows.el-select .el-select__tags,
/deep/ .rohs-multiple-two-rows .el-select .el-select__tags {
max-width: calc(100% - 34px) !important;
max-height: 50px;
overflow-y: auto;
overflow-x: hidden;
white-space: normal;
}
/deep/ .rohs-multiple-two-rows.el-select .el-select__tags > span,
/deep/ .rohs-multiple-two-rows .el-select .el-select__tags > span {
display: inline;
max-width: 100%;
white-space: normal;
}
/deep/ .rohs-multiple-two-rows.el-select .el-select__tags .el-tag,
/deep/ .rohs-multiple-two-rows .el-select .el-select__tags .el-tag {
display: inline-flex;
max-width: 100%;
height: auto;
line-height: 16px;
margin-bottom: 2px;
white-space: normal;
vertical-align: middle;
}
/deep/ .rohs-multiple-two-rows.el-select .el-select__tags .el-tag .el-select__tags-text,
/deep/ .rohs-multiple-two-rows .el-select .el-select__tags .el-tag .el-select__tags-text {
white-space: normal;
word-break: break-all;
}
</style>
Loading…
Cancel
Save