From a44073ab70dc1b34af08cc39ef701a174ab0b711 Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Mon, 8 Dec 2025 17:03:15 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E5=90=8E=E5=8F=B0=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E6=A0=87=E7=AD=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/utils/dict.ts | 7 ++++-- .../user/components/UserMemberTagForm.vue | 24 +++++++++++++++---- 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/src/utils/dict.ts b/src/utils/dict.ts index 5dbf9fcc..41c45789 100644 --- a/src/utils/dict.ts +++ b/src/utils/dict.ts @@ -47,18 +47,21 @@ export const getIntDictOptions = (dictType: string): NumberDictDataType[] => { return dictOption } -export const getStrDictOptions = (dictType: string) => { +export const getStrDictOptions = (dictType: string, excludeValues?: Array) => { // 获得通用的 DictDataType 列表 const dictOptions: DictDataType[] = getDictOptions(dictType) // 转换成 string 类型的 StringDictDataType 类型 // why 需要特殊转换:避免 IDEA 在 v-for="dict in getStrDictOptions(...)" 时,el-option 的 key 会告警 - const dictOption: StringDictDataType[] = [] + let dictOption: StringDictDataType[] = [] dictOptions.forEach((dict: DictDataType) => { dictOption.push({ ...dict, value: dict.value + '' }) }) + if (excludeValues && excludeValues.length) { + dictOption = dictOption.filter((dict: StringDictDataType) => !excludeValues.includes(dict.value)) + } return dictOption } diff --git a/src/views/member/user/components/UserMemberTagForm.vue b/src/views/member/user/components/UserMemberTagForm.vue index 59ba8f09..5e2d7eb4 100644 --- a/src/views/member/user/components/UserMemberTagForm.vue +++ b/src/views/member/user/components/UserMemberTagForm.vue @@ -3,7 +3,7 @@ - @@ -28,8 +28,11 @@ const formData = ref({ id: undefined, memberRecentTagList: [], }) + +const memberRecentTagList = ref() + const formRules = reactive({ - memberRecentTagList: [{ required: true, message: '用户标签不能为空', trigger: 'blur' }] + // memberRecentTagList: [{ required: true, message: '用户标签不能为空', trigger: 'blur' }] }) const formRef = ref() @@ -42,8 +45,13 @@ const open = async (id?: number) => { formLoading.value = true try { const data = await UserApi.getUser(id) - if (data && data.memberTagList.length) { - data.memberRecentTagList = data.memberTagList.map(item => item.tagBizType) + if (data && data.memberTagList?.length) { + const bizTypes = data.memberTagList.map(item => item.tagBizType) ?? [] + data.memberRecentTagList = bizTypes.filter(item => !['1', '2', '4'].includes(item)) + memberRecentTagList.value = bizTypes.filter(item => ['1', '2', '4'].includes(item)) + } else { + data.memberRecentTagList = [] + memberRecentTagList.value = [] } formData.value = data } finally { @@ -63,7 +71,13 @@ const submitForm = async () => { // 提交请求 formLoading.value = true try { - await UserApi.updateUser(formData.value) + const _params = formData.value + if (!_params.memberRecentTagList || !_params.memberRecentTagList?.length) { + _params.memberRecentTagList = [] + } + _params.memberRecentTagList.push(...memberRecentTagList.value) + + await UserApi.updateUser(_params) message.success(t('common.updateSuccess')) dialogVisible.value = false