feat:后台修改用户标签

This commit is contained in:
dzc committed 2025-12-08 17:03:15 +08:00
1 parent 38633f0dd7
commit a44073ab70
2 files changed
+24 -7

No files matched your search

+5 -2
View File
@@ -47,18 +47,21 @@ export const getIntDictOptions = (dictType: string): NumberDictDataType[] => {
return dictOption
}
export const getStrDictOptions = (dictType: string) => {
export const getStrDictOptions = (dictType: string, excludeValues?: Array<string>) => {
// 获得通用的 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
}
@@ -3,7 +3,7 @@
<el-form ref="formRef" :model="formData" :rules="formRules" label-width="100px" v-loading="formLoading">
<el-form-item label="用户标签" prop="memberRecentTagList">
<el-select v-model="formData.memberRecentTagList" multiple placeholder="请选择用户标签" clearable class="!w-240px">
<el-option v-for="dict in getStrDictOptions(DICT_TYPE.MEMBER_RECENT_TAG)" :key="dict.value"
<el-option v-for="dict in getStrDictOptions(DICT_TYPE.MEMBER_RECENT_TAG, ['1', '2', '4'])" :key="dict.value"
:label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
@@ -28,8 +28,11 @@ const formData = ref<any>({
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