update:新增店铺会员功能

This commit is contained in:
hufflzp 2026-01-22 17:17:38 +08:00
parent 6c270ee2c5
commit 64316c3c8c
4 changed files with 262 additions and 0 deletions

View File

@ -0,0 +1,35 @@
import request from '@/utils/request'
import { URL } from '@/config'
export function getList(params) {
return request({
url: URL.shop.base.store.menber.getList,
method: 'get',
params,
})
}
export function exportMenber(params) {
return request({
url: URL.shop.base.store.menber.export,
method: 'get',
params,
responseType: 'blob',
})
}
export function getNotice(params) {
return request({
url: URL.shop.base.store.menber.view,
method: 'get',
params,
})
}
export function doDelete(data) {
return request({
url: URL.shop.base.store.grade.doDelete,
method: 'post',
data,
})
}

View File

@ -730,6 +730,12 @@ let url = {
api_url + '/admin/shop/shop-base-store-category/getStoreClassify',
categoryList: api_url + '/mobile/shop/shop-base-store-category/list',
},
menber:{
getList: api_url + '/admin/shop/shop-store-member/list',
export: api_url + '/admin/shop/shop-store-member/exportShopStoreMember',
view: api_url + '/admin/shop/shop-store-member/getShopStoreMember',
export: api_url + '/admin/shop/shop-store-member/exportShopStoreMember',
},
},
market: {
category: {

View File

@ -63,6 +63,23 @@ export function convertRouter(asyncRoutes) {
route.children.push(obj)
}
if (route.meta.title == '店铺' && route.name == 'Vab807') {
const obj = {
path: '/storeMenber',
component: '@/views/base/store/member/index.vue',
name: 'Vab807111',
redirect: null,
meta: {
title: '店铺会员',
icon: '',
noClosable: 0,
hidden: null,
},
menuHidden: false,
}
route.children.push(obj)
}
if (route.meta.title == '店铺' && route.name == 'Vab330') {
const obj = {
path: '/storeConf',

View File

@ -0,0 +1,204 @@
<template>
<div class="app-container">
<avue-crud :option="option" :table-loading="loading" :data="data" v-model:page="page" ref="crud" @row-del="rowDel" v-model="form" @row-update="rowUpdate" @row-save="rowSave" :before-open="beforeOpen" @search-change="searchChange" @search-reset="searchReset" @selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad">
<template slot="menuLeft">
<el-button type="warning" plain icon="el-icon-download" @click="exportExcel">导出 </el-button>
</template>
<!-- <template slot-scope="{type,size,row,index}" slot="menuBefore">
<el-button type="text" icon="el-icon-view" @click="openView(row)">查看 </el-button>
</template>-->
</avue-crud>
<menberview ref="menberviewref"></menberview>
</div>
</template>
<script>
import {
getList,
// remove,
// update,
// add,
exportMenber,
getNotice,
} from "@/api/base/store/menber.js";
export default {
data() {
return {
form: {
memberLevelName: '',
userLevelSpend: '',
userLevelName: '',
},
query: {},
loading: true,
page: {
pageSize: 10,
currentPage: 1,
total: 0,
},
selectionList: [],
option: {
indexLabel: '序号',
indexWidth: 200,
searchLabelWidth: 120,
labelWidth: 120,
calcHeight: 30,
dialogWidth: '70%',
tip: false,
searchShow: true,
searchMenuSpan: 6,
border: true,
index: false,
addBtn: false,
editBtn: false,
delBtn: false,
viewBtn: true,
selection: false,
excelBtn: false,
dialogClickModal: false,
card: true,
column: [
{
type: 'input',
label: '会员登录id',
prop: 'userId',
span: 12,
search: true,
},
{
type: 'input',
label: '会员昵称',
prop: 'userNickname',
span: 12,
},
{
type: 'input',
label: '新增会员时间',
prop: 'createTime',
span: 12,
hide: true,
},
{
type: 'input',
label: '消费金额',
prop: 'userLevelSpend',
span: 12,
hide: true,
},
{
type: 'input',
label: '用户等级',
prop: 'userLevelName',
span: 12,
hide: true,
},
{
type: 'input',
label: '会员等级 ',
prop: 'memberLevelName',
span: 12,
hide: true,
},
{
type: 'input',
label: '店铺名称',
prop: 'storeName',
span: 12,
},
{
type: 'input',
label: '会员手机号码',
prop: 'userAccount',
span: 12,
search: true,
},
],
},
data: [],
}
},
methods: {
//
async exportExcel(){
exportMenber().then(
(data) => {
const blob = new Blob([data])
const downloadElement = document.createElement('a')
const href = window.URL.createObjectURL(blob) //
downloadElement.href = href
downloadElement.download = decodeURIComponent('会员列表.xlsx') //
document.body.appendChild(downloadElement)
downloadElement.click() //
document.body.removeChild(downloadElement) //
window.URL.revokeObjectURL(href) //blob
}
)
},
openView(row) {
this.$refs.menberviewref.init(row)
},
searchReset() {
this.query = {}
this.onLoad(this.page)
},
searchChange(params, done) {
if (params.releaseTimeRange) {
params.startDate = params.releaseTimeRange[0]
params.endDate = params.releaseTimeRange[1]
}
this.query = params
this.page.currentPage = 1
this.onLoad(this.page, params)
done()
},
selectionChange(list) {
this.selectionList = list
},
selectionClear() {
this.selectionList = []
this.$refs.crud.toggleSelection()
},
beforeOpen(done, type) {
if (['edit', 'view'].includes(type)) {
getNotice({store_member_id:this.form.store_member_id,storeId:this.form.storeId}).then((res) => {
if (res.status!= 200){
this.$message.error(res.msg)
done(false)
}
this.form = res.data
this.form.memberLevelName = res.data.shopStoreMemberLevel.memberLevelName
this.form.userLevelName = res.data.shopStoreMemberLevel.userLevelName
this.form.userLevelSpend = res.data.shopStoreMemberLevel.userLevelSpend
})
}
done()
},
currentChange(currentPage) {
this.page.currentPage = currentPage
},
sizeChange(pageSize) {
this.page.pageSize = pageSize
},
refreshChange() {
this.onLoad(this.page, this.query)
},
onLoad(page, params = {}) {
let values = {
...params,
pageNum:page.currentPage,
pageSize:page.pageSize,
...this.query,
};
this.loading = true;
getList({...values}).then((res) => {
let resdata = res;
console.log(resdata);
this.page.total = resdata.total;
this.data = resdata.records;
this.loading = false
this.selectionClear();
});
},
},
}
</script>