This commit is contained in:
dzc committed 2026-11-05 15:30:19 +08:00
1 parent a9bac9d3bf
commit c1411e0fde
1 file changed
+19 -14
@@ -30,7 +30,7 @@ const formData = ref<any>({
memberRecentTagList: [],
})
const memberRecentTagList = ref()
const systemTagTypes = ref<string[]>([])
const formRules = reactive({
// memberRecentTagList: [{ required: true, message: '用户标签不能为空', trigger: 'blur' }]
@@ -47,12 +47,14 @@ const open = async (id?: number) => {
try {
const data = await UserApi.getUser(id)
if (data && data.memberTagList?.length) {
const bizTypes = data.memberTagList.map(item => item.tagBizType) ?? []
const bizTypes = Array.from(new Set<string>(
data.memberTagList.map((item: { tagBizType: string }) => item.tagBizType)
))
data.memberRecentTagList = bizTypes.filter(item => !['2', '4'].includes(item))
memberRecentTagList.value = bizTypes.filter(item => ['2', '4'].includes(item))
systemTagTypes.value = bizTypes.filter(item => ['2', '4'].includes(item))
} else {
data.memberRecentTagList = []
memberRecentTagList.value = []
systemTagTypes.value = []
}
formData.value = data
} finally {
@@ -65,20 +67,22 @@ defineExpose({ open }) // 提供 open 方法,用于打开弹窗
/** 提交表单 */
const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调
const submitForm = async () => {
// 校验表单
if (!formRef) return
const valid = await formRef.value.validate()
if (!valid) return
// 提交请求
if (formLoading.value || !formRef.value) return
// 校验期间也阻止重复提交。
formLoading.value = true
try {
const _params = formData.value
if (!_params.memberRecentTagList || !_params.memberRecentTagList?.length) {
_params.memberRecentTagList = []
const valid = await formRef.value.validate()
if (!valid) return
// 保留系统管理的新人/VIP标签,独立构造请求,失败重试不会累加到表单。
const params = {
...formData.value,
memberRecentTagList: Array.from(new Set<string>([
...(formData.value.memberRecentTagList ?? []),
...systemTagTypes.value
]))
}
_params.memberRecentTagList.push(...memberRecentTagList.value)
await UserApi.updateUser(_params)
await UserApi.updateUser(params)
message.success(t('common.updateSuccess'))
dialogVisible.value = false
@@ -95,6 +99,7 @@ const resetForm = () => {
id: undefined,
memberRecentTagList: [],
}
systemTagTypes.value = []
formRef.value?.resetFields()
}
</script>