diff --git a/src/api/member/tag/index.ts b/src/api/member/tag/index.ts
new file mode 100644
index 00000000..a844dbe3
--- /dev/null
+++ b/src/api/member/tag/index.ts
@@ -0,0 +1,36 @@
+import request from '@/config/axios'
+
+export interface TagVO {
+ id: number
+ name: string
+}
+
+// 查询会员标签列表
+export const getMemberTagPage = async (params) => {
+ return await request.get({ url: `/member/tag/page`, params })
+}
+
+// 查询会员标签详情
+export const getMemberTag = async (id: number) => {
+ return await request.get({ url: `/member/tag/get?id=` + id })
+}
+
+// 新增会员标签
+export const createMemberTag = async (data: TagVO) => {
+ return await request.post({ url: `/member/tag/create`, data })
+}
+
+// 修改会员标签
+export const updateMemberTag = async (data: TagVO) => {
+ return await request.put({ url: `/member/tag/update`, data })
+}
+
+// 删除会员标签
+export const deleteMemberTag = async (id: number) => {
+ return await request.delete({ url: `/member/tag/delete?id=` + id })
+}
+
+// 导出会员标签 Excel
+export const exportMemberTag = async (params) => {
+ return await request.download({ url: `/member/tag/export-excel`, params })
+}
diff --git a/src/views/member/tag/TagForm.vue b/src/views/member/tag/TagForm.vue
new file mode 100644
index 00000000..d45ea589
--- /dev/null
+++ b/src/views/member/tag/TagForm.vue
@@ -0,0 +1,91 @@
+
+
+
+
diff --git a/src/views/member/tag/components/MemberTagSelect.vue b/src/views/member/tag/components/MemberTagSelect.vue
new file mode 100644
index 00000000..ec4f4617
--- /dev/null
+++ b/src/views/member/tag/components/MemberTagSelect.vue
@@ -0,0 +1,69 @@
+
+
+
+
+
+ 新增标签
+
+
+
+
+
+
+
diff --git a/src/views/member/tag/index.vue b/src/views/member/tag/index.vue
new file mode 100644
index 00000000..49633edf
--- /dev/null
+++ b/src/views/member/tag/index.vue
@@ -0,0 +1,179 @@
+
+
+
+
+
+
+
+
+
+
+
+ 搜索
+ 重置
+
+ 新增
+
+
+ 导出
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 编辑
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/member/user/UserForm.vue b/src/views/member/user/UserForm.vue
index a6d02582..c10d3fea 100644
--- a/src/views/member/user/UserForm.vue
+++ b/src/views/member/user/UserForm.vue
@@ -57,6 +57,9 @@
:render-after-expand="true"
/>
+
+
+
@@ -72,6 +75,7 @@ import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
import * as UserApi from '@/api/member/user'
import * as AreaApi from '@/api/system/area'
import { defaultProps } from '@/utils/tree'
+import MemberTagSelect from '@/views/member/tag/components/MemberTagSelect.vue'
const { t } = useI18n() // 国际化
const message = useMessage() // 消息弹窗
@@ -90,7 +94,8 @@ const formData = ref({
sex: undefined,
areaId: undefined,
birthday: undefined,
- mark: undefined
+ mark: undefined,
+ tagIds: []
})
const formRules = reactive({
mobile: [{ required: true, message: '手机号不能为空', trigger: 'blur' }],
@@ -163,7 +168,8 @@ const resetForm = () => {
areaId: undefined,
birthday: undefined,
mark: undefined,
- createTime: undefined
+ createTime: undefined,
+ tagIds: []
}
formRef.value?.resetFields()
}
diff --git a/src/views/member/user/index.vue b/src/views/member/user/index.vue
index 925eca04..0389de37 100644
--- a/src/views/member/user/index.vue
+++ b/src/views/member/user/index.vue
@@ -48,6 +48,9 @@
class="!w-240px"
/>
+
+
+
搜索
重置
@@ -69,6 +72,16 @@
+
+
+ {{ tagName }}
+
+
@@ -119,6 +132,7 @@ import { dateFormatter } from '@/utils/formatTime'
import * as UserApi from '@/api/member/user'
import UserForm from './UserForm.vue'
import { DICT_TYPE } from '@/utils/dict'
+import MemberTagSelect from '@/views/member/tag/components/MemberTagSelect.vue'
defineOptions({ name: 'MemberUser' })
@@ -134,7 +148,8 @@ const queryParams = reactive({
nickname: null,
mobile: null,
loginDate: [],
- createTime: []
+ createTime: [],
+ tagIds: []
})
const queryFormRef = ref() // 搜索的表单
const exportLoading = ref(false) // 导出的加载中