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();
+ }
},
};