diff --git a/manager/src/api/member.js b/manager/src/api/member.js index 312629cd..93f9e728 100644 --- a/manager/src/api/member.js +++ b/manager/src/api/member.js @@ -148,3 +148,25 @@ export const increaseMemberWallet = (params) => { export const updateMemberPoint = (params) => { return putRequest(`/passport/member/updateMemberPoint`, params); }; + +export const getMemberGroupByPage = (params) => { + return getRequest("/member/memberGroup/getByPage", params); +}; +export const getMemberGroup = (id) => { + return getRequest(`/member/memberGroup/get/${id}`); +}; +export const addMemberGroup = (params) => { + return postRequest(`/member/memberGroup`, params); +}; +export const updateMemberGroup = (id, params) => { + return putRequest(`/member/memberGroup/update/${id}`, params); +}; +export const deleteMemberGroup = (id) => { + return deleteRequest(`/member/memberGroup/delete/${id}`); +}; + +export const addMemberGroupUsers = (groupId, memberIds) => { + return postRequest(`/member/memberGroup/${groupId}/users`, { + memberIds: Array.isArray(memberIds) ? memberIds.join(",") : memberIds, + }); +}; diff --git a/manager/src/router/router.js b/manager/src/router/router.js index b20d50f7..19df6bbf 100644 --- a/manager/src/router/router.js +++ b/manager/src/router/router.js @@ -147,6 +147,12 @@ export const otherRouter = { name: "member-detail", component: () => import("@/views/member/list/memberDetail.vue") }, + { + path: "member-group", + title: "会员分组", + name: "member-group", + component: () => import("@/views/member/group/index.vue") + }, { path: "goods/goods-info/goodsDetail", diff --git a/manager/src/views/member/group/index.vue b/manager/src/views/member/group/index.vue new file mode 100644 index 00000000..213b2df3 --- /dev/null +++ b/manager/src/views/member/group/index.vue @@ -0,0 +1,257 @@ + + + diff --git a/manager/src/views/member/list/index.vue b/manager/src/views/member/list/index.vue index 388fe212..91f1db79 100644 --- a/manager/src/views/member/list/index.vue +++ b/manager/src/views/member/list/index.vue @@ -18,6 +18,11 @@ + + + @@ -25,9 +30,22 @@ + -
+
确定 + +
+ + + +
+
+ + +
+
@@ -146,6 +177,19 @@ export default { multipleMap, ossManage, }, + computed: { + tableColumns() { + if (this.selectedMember) return this.columns; + return [ + { + type: "selection", + width: 60, + align: "center", + }, + ...this.columns, + ]; + }, + }, data() { return { defaultPic:require('@/assets/default.png'), @@ -169,6 +213,7 @@ export default { username: "", mobile: "", disabled: "OPEN", + groupId: "", }, picModelFlag: false, // 选择图片 form: {}, // 表单数据 @@ -200,6 +245,16 @@ export default { point: null, type: "INCREASE", }, + selectedRows: [], + memberGroupFlag: false, + memberGroupLoading: false, + memberGroupForm: { + groupId: "", + }, + memberGroupRule: { + groupId: [{ required: true, message: "请选择会员分组", trigger: "change" }], + }, + memberGroupList: [], memberPointRule: { type: [{ required: true, message: "请选择类型", trigger: "change" }], point: [ @@ -515,6 +570,52 @@ export default { }, }, methods: { + onSelectionChange(selection) { + this.selectedRows = selection || []; + }, + openSetMemberGroup() { + this.memberGroupFlag = true; + this.memberGroupLoading = false; + this.memberGroupForm = { groupId: "" }; + this.$nextTick(() => { + if (this.$refs.memberGroupForm) this.$refs.memberGroupForm.resetFields(); + }); + this.loadMemberGroupList(); + }, + loadMemberGroupList() { + API_Member.getMemberGroupByPage({ pageNumber: 1, pageSize: 1000 }).then((res) => { + if (res && res.success && res.result) { + this.memberGroupList = res.result.records || []; + } + }); + }, + clearSelection() { + if (this.$refs.table && this.$refs.table.clearSelection) { + this.$refs.table.clearSelection(); + } + }, + submitSetMemberGroup() { + if (this.selectedRows.length === 0) { + this.$Message.warning("请先选择会员"); + return; + } + this.$refs.memberGroupForm.validate((valid) => { + if (!valid) return; + const memberIds = this.selectedRows.map((item) => item.id); + this.memberGroupLoading = true; + API_Member.addMemberGroupUsers(this.memberGroupForm.groupId, memberIds).then((res) => { + this.memberGroupLoading = false; + if (res && res.success) { + this.$Message.success("设置成功"); + this.memberGroupFlag = false; + this.selectedRows = []; + this.clearSelection(); + } else if (res && res.message) { + this.$Message.error(res.message); + } + }); + }); + }, // 回调给父级 callback(val, index) { this.selectMember.forEach(item=>{item.___selected = false}) @@ -594,6 +695,11 @@ export default { //查询会员列表 getData() { + this.loading = true; + if (!this.selectedMember) { + this.selectedRows = []; + this.clearSelection(); + } API_Member.getMemberListData(this.searchForm).then((res) => { if (res.result.records) { this.loading = false; @@ -759,6 +865,9 @@ export default { }, mounted() { this.getData(); + if (!this.selectedMember) { + this.loadMemberGroupList(); + } }, };