Skip to content

Commit 31dfa86

Browse files
committed
REVIEW 公众号的粉丝管理
1 parent eccfa11 commit 31dfa86

File tree

4 files changed

+286
-293
lines changed

4 files changed

+286
-293
lines changed
File renamed without changes.

src/views/mp/mpuser/index.vue

Lines changed: 0 additions & 293 deletions
This file was deleted.

src/views/mp/user/UserForm.vue

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
<template>
2+
<Dialog title="修改" v-model="dialogVisible">
3+
<el-form
4+
ref="formRef"
5+
:model="formData"
6+
:rules="formRules"
7+
label-width="80px"
8+
v-loading="formLoading"
9+
>
10+
<el-form-item label="昵称" prop="nickname">
11+
<el-input v-model="formData.nickname" placeholder="请输入昵称" />
12+
</el-form-item>
13+
<el-form-item label="备注" prop="remark">
14+
<el-input v-model="formData.remark" placeholder="请输入备注" />
15+
</el-form-item>
16+
<el-form-item label="标签" prop="tagIds">
17+
<el-select v-model="formData.tagIds" multiple clearable placeholder="请选择标签">
18+
<el-option
19+
v-for="item in tagList"
20+
:key="item.tagId"
21+
:label="item.name"
22+
:value="item.tagId"
23+
/>
24+
</el-select>
25+
</el-form-item>
26+
</el-form>
27+
<template #footer>
28+
<el-button @click="submitForm" type="primary" :disabled="formLoading">确 定</el-button>
29+
<el-button @click="dialogVisible = false">取 消</el-button>
30+
</template>
31+
</Dialog>
32+
</template>
33+
<script setup lang="ts">
34+
import * as MpTagApi from '@/api/mp/tag'
35+
import * as MpUserApi from '@/api/mp/user'
36+
const { t } = useI18n() // 国际化
37+
const message = useMessage() // 消息弹窗
38+
39+
const dialogVisible = ref(false) // 弹窗的是否展示
40+
const formLoading = ref(false) // 表单的加载中
41+
const formData = ref({
42+
id: undefined,
43+
nickname: undefined,
44+
remark: undefined,
45+
tagIds: []
46+
})
47+
const formRules = reactive({}) // 表单的校验
48+
const formRef = ref() // 表单 Ref
49+
const tagList = ref([]) // 公众号标签列表
50+
51+
/** 打开弹窗 */
52+
const open = async (id: number) => {
53+
dialogVisible.value = true
54+
resetForm()
55+
// 修改时,设置数据
56+
if (id) {
57+
formLoading.value = true
58+
try {
59+
formData.value = await MpUserApi.getUser(id)
60+
} finally {
61+
formLoading.value = false
62+
}
63+
}
64+
// 加载标签
65+
tagList.value = await MpTagApi.getSimpleTagList()
66+
}
67+
defineExpose({ open }) // 提供 open 方法,用于打开弹窗
68+
69+
/** 提交表单 */
70+
const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调
71+
const submitForm = async () => {
72+
// 校验表单
73+
if (!formRef) return
74+
const valid = await formRef.value.validate()
75+
if (!valid) return
76+
// 提交请求
77+
formLoading.value = true
78+
try {
79+
await MpUserApi.updateUser(formData.value)
80+
message.success(t('common.updateSuccess'))
81+
dialogVisible.value = false
82+
// 发送操作成功的事件
83+
emit('success')
84+
} finally {
85+
formLoading.value = false
86+
}
87+
}
88+
89+
/** 重置表单 */
90+
const resetForm = () => {
91+
formData.value = {
92+
id: undefined,
93+
nickname: undefined,
94+
remark: undefined,
95+
tagIds: []
96+
}
97+
formRef.value?.resetFields()
98+
}
99+
</script>

0 commit comments

Comments
 (0)