From b2b6a261be9ba5826190b69a83407f8d48c560bd Mon Sep 17 00:00:00 2001 From: yaojn Date: Mon, 3 Jun 2024 10:48:37 +0800 Subject: [PATCH] =?UTF-8?q?-=20[=E5=8A=9F=E8=83=BD]=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E6=8E=A7=E4=BB=B6=E6=94=AF=E6=8C=81=E4=BD=9C=E4=B8=BA=E8=81=94?= =?UTF-8?q?=E5=8A=A8=E6=BA=90=E5=A4=B4=E6=8E=A7=E4=BB=B6=20=20=20-=20[?= =?UTF-8?q?=E5=85=B3=E8=81=94]#[1136326269698048]=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E6=8E=A7=E4=BB=B6=E6=94=AF=E6=8C=81=E4=BD=9C=E4=B8=BA=E8=81=94?= =?UTF-8?q?=E5=8A=A8=E6=BA=90=E5=A4=B4=E6=8E=A7=E4=BB=B6=20http://192.168.?= =?UTF-8?q?0.96:8090/demo/rdm.html#/story-detail/939050947543040/939050947?= =?UTF-8?q?543042/1136326269698048?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/resources/plugins/TsSheet/form-item.vue | 82 ++++++++++++------- .../form/config/common/reaction-filter.vue | 2 +- 2 files changed, 53 insertions(+), 31 deletions(-) diff --git a/src/resources/plugins/TsSheet/form-item.vue b/src/resources/plugins/TsSheet/form-item.vue index eecdfccb..da52a727 100644 --- a/src/resources/plugins/TsSheet/form-item.vue +++ b/src/resources/plugins/TsSheet/form-item.vue @@ -343,38 +343,17 @@ export default { if (formItem && formItem.config) { let valueList = []; let textList = []; - if (this.formData[formItemUuid] instanceof Array) { + let currentFormData = this.formData[formItemUuid]; + if (currentFormData instanceof Array) { this.formData[formItemUuid].forEach(value => { - if (typeof value === 'string') { - valueList.push(value); - if (!this.$utils.isEmpty(formItem.config.dataList)) { - let findData = formItem.config.dataList.find(f => f.value === value); - textList.push(findData.text); - } else { - textList.push(value); - } - } else if (typeof value == 'object') { - valueList.push(value[column]); - textList.push(value.text); - } + const { text, value: tmpValue } = this.handleFilterValue(value, column, formItem); + valueList.push(tmpValue); + textList.push(text); }); - } else { - let value = this.formData[formItemUuid]; - if (!this.$utils.isEmpty(value)) { - let tmpText = value; - let tmpValue = value; - if (typeof value === 'object') { - tmpText = value.text; - tmpValue = value[column]; - } - if (!this.$utils.isEmpty(formItem.config.dataList)) { - const findData = formItem.config.dataList.find(f => f[column] === tmpValue); - textList.push(findData.text); - } else { - textList.push(tmpText); - valueList.push(tmpValue); - } - } + } else if (!this.$utils.isEmpty(currentFormData)) { + const { text, value: tmpValue } = this.handleFilterValue(currentFormData, column, formItem); + valueList.push(tmpValue); + textList.push(text); } if (valueList.length > 0) { this.filter.push({ uuid: r.matrixAttrUuid, @@ -417,6 +396,49 @@ export default { } } }, + handleFilterValue(value, column, formItem = {}) { + let tmpText, tmpValue; + let {handler = '', config = {}} = formItem || {}; + let {dataList = []} = config; + if (typeof value === 'string') { + tmpText = tmpValue = value; + if (handler == 'formuserselect') { + tmpText = tmpValue = this.handleUserSelectValue(value); + } else if (!this.$utils.isEmpty(dataList)) { + const findData = dataList.find(f => f.value === value); + tmpText = findData ? findData.text : value; + } + } else if (typeof value === 'object') { + tmpText = value.text; + tmpValue = value[column]; + if (handler == 'formuserselect') { + tmpText = this.handleUserSelectValue(tmpText); + tmpValue = this.handleUserSelectValue(tmpValue); + } else if (!this.$utils.isEmpty(dataList) && tmpValue) { + const findData = dataList.find(f => f[column] === tmpValue); + tmpText = findData ? findData.text : tmpText; + } + } + return { text: tmpText, value: tmpValue }; + }, + handleUserSelectValue(value) { + // 处理用户下拉组件的值,去掉前缀 + let prefixList = ['user#', 'team#', 'role#']; + let currentValue = this.$utils.deepClone(value); + let uuid = ''; + let parts = []; + prefixList.some((v) => { + if (!this.$utils.isEmpty(currentValue) && currentValue.includes(v)) { + parts = currentValue.split(v) || []; + if (parts.length > 1) { + uuid = parts[1] || ''; + return true; + } + } + return false; + }); + return uuid; + }, //检查条件涉及的值是否发生变化,如果没变化则不触发联动 isConditionDataChange(action, reaction, newFormData, oldFormData, formItemUuid) { if (!newFormData) { diff --git a/src/resources/plugins/TsSheet/form/config/common/reaction-filter.vue b/src/resources/plugins/TsSheet/form/config/common/reaction-filter.vue index a46a4b96..6ef999f7 100644 --- a/src/resources/plugins/TsSheet/form/config/common/reaction-filter.vue +++ b/src/resources/plugins/TsSheet/form/config/common/reaction-filter.vue @@ -125,7 +125,7 @@ export default { filter: {}, computed: { otherFormItemList() { - let list = this.formItemList.filter(d => d.uuid !== this.formItem.uuid && ['formselect', 'formradio', 'formcheckbox'].includes(d.handler)); + let list = this.formItemList.filter(d => d.uuid !== this.formItem.uuid && ['formselect', 'formradio', 'formcheckbox', 'formuserselect'].includes(d.handler)); let newList = []; list.forEach(item => { let obj = { -- Gitee