crm功能开发

This commit is contained in:
13405411873 2025-06-20 15:20:15 +08:00
parent 953107c43a
commit 6697638f19
4 changed files with 211 additions and 3 deletions

10
src/api/member/crm.js Normal file
View File

@ -0,0 +1,10 @@
import request from '@/utils/request'
// 查询会员列表
export function listMember(query) {
return request({
url: '/member/member/crmList',
method: 'get',
params: query
})
}

View File

@ -0,0 +1,155 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item>
<el-form-item label="昵称" prop="nickName">
<el-input
v-model="queryParams.nickName"
placeholder="请输入博主昵称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="手机号" prop="tel">
<el-input
v-model="queryParams.tel"
placeholder="请输入博主手机号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="memberList" >
<el-table-column label="昵称" align="center" prop="nickName" />
<el-table-column label="会员" align="center" prop="memberCardName" />
<el-table-column label="联系方式" align="center" prop="tel" />
<el-table-column label="邀请人" align="center" prop="inviteName" />
<el-table-column label="剩余积分" align="center" prop="bpoints" />
<el-table-column label="本月消费金额" align="center" prop="monthMoney" />
<el-table-column label="总消费金额" align="center" prop="allMoney" />
<el-table-column label="注册时间" align="center" prop="createTime" />
<el-table-column label="状态" align="center" prop="status">
<template slot-scope="scope">
<el-tag v-if="scope.row.status == 0" type="success">正常</el-tag>
<el-tag v-if="scope.row.status == 1" type="danger">冻结</el-tag>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
@click="detail(scope.row)"
v-hasPermi="['member:member:edit']"
>查看</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<BloggerDraw ref="formRef" />
</div>
</template>
<script>
import { listMember } from "@/api/member/crm";
import { changeUserStatus } from "@/api/system/user";
import BloggerDraw from "@/views/member/blogger/form/bloggerDraw.vue"
export default {
name: "Blogger",
dicts: ['dl_identity_type'],
components:{
BloggerDraw
},
data() {
return {
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
memberList: [],
//
title: "",
//
open: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
userType: '02',
identityType: null,
nickName:null,
tel:null
},
//
form: {},
//
rules: {
}
};
},
created() {
this.getList();
},
methods: {
/** 查询会员列表 */
getList() {
this.loading = true;
listMember(this.queryParams).then(response => {
this.memberList = response.data.records;
this.total = response.data.total;
this.loading = false;
});
},
/**冻结解冻*/
update(userId,status){
changeUserStatus(userId,status).then(response => {
this.$modal.msgSuccess("处理成功");
this.open = false;
this.getList();
});
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
/** 查看详情 */
detail(row) {
this.$refs['formRef'].initDraw(row.userId)
},
}
};
</script>

View File

@ -20,6 +20,11 @@
/>
</el-select>
</el-form-item>
<el-form-item label="通告数量" prop="identityType">
<el-input-number v-model="queryParams.params.minnum" :min="0" label="最小值"></el-input-number>
<el-input-number style="margin-left: 5px" v-model="queryParams.params.maxnum" :min="0" label="最大值"></el-input-number>
</el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
@ -28,7 +33,7 @@
<el-row :gutter="10" class="mb8">
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="memberList" >
<el-table @sort-change="sortChange" v-loading="loading" :data="memberList" >
<el-table-column label="昵称" align="center" prop="nickName" />
<el-table-column label="身份类型" align="center" prop="identityType">
<template slot-scope="scope">
@ -39,7 +44,7 @@
<el-table-column label="会员" align="center" prop="memberCardName" />
<el-table-column label="联系方式" align="center" prop="tel" />
<!-- <el-table-column label="剩余额度" align="center" prop="tremaining" />-->
<el-table-column label="通告数量" align="center" prop="ttotalNum" />
<el-table-column sortable="custom" label="通告数量" align="center" prop="ttotalNum" />
<el-table-column label="粉丝数量" align="center" prop="tfansNum" />
<el-table-column label="报名免打扰" align="center" prop="topenDisturb" />
<el-table-column label="状态" align="center" prop="status">
@ -114,7 +119,8 @@ export default {
pageSize: 10,
userType: '01',
identityType: null,
nickName:null
nickName:null,
params:{}
},
//
form: {},
@ -127,6 +133,17 @@ export default {
this.getList();
},
methods: {
sortChange(e){
console.log(e,137)
if (e.prop=='ttotalNum'){
if(e.order=='ascending'){
this.queryParams.params.orderBy = 'ttotalNum asc'
}else{
this.queryParams.params.orderBy = 'ttotalNum desc'
}
}
this.getList()
},
/** 查询会员列表 */
getList() {
this.loading = true;
@ -145,6 +162,14 @@ export default {
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.queryParams={
pageNum: 1,
pageSize: 10,
userType: '01',
identityType: null,
nickName:null,
params:{}
},
this.handleQuery();
},

View File

@ -96,6 +96,24 @@
@pagination="getNoticeList"
/>
</el-card>
<!-- 开卡记录 -->
<el-card class="box-card">
<div slot="header" class="clearfix">
<span>开卡记录</span>
</div>
<el-table
size="small"
:data="bloggerDetail.cards"
height="150">
<el-table-column prop="cardName" width="150" align="center" label="开卡名称"/>
<el-table-column prop="createTime" align="center" label="开卡时间"/>
<el-table-column label="费用" align="center" prop="goodsPrice"/>
</el-table>
</el-card>
<BusiCardForm ref="refForm" :isDetail="true"/>
</el-drawer>
</template>