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