|
|
|
|
@ -197,19 +197,35 @@
|
|
|
|
|
<el-table-column label="用户编号" align="center" prop="id"/>
|
|
|
|
|
<el-table-column label="手机号码" align="center" prop="mobile" width="120px"/>
|
|
|
|
|
<el-table-column label="生日" align="center" prop="birthday" width="120px"/>
|
|
|
|
|
<el-table-column label="省" align="center" prop="province"/>
|
|
|
|
|
<el-table-column label="市" align="center" prop="city"/>
|
|
|
|
|
<el-table-column label="区" align="center" prop="area"/>
|
|
|
|
|
<el-table-column label="地区" align="center" prop="province" width="150px">
|
|
|
|
|
<template slot-scope="scope">
|
|
|
|
|
<span>{{ scope.row.province }}</span><br/>
|
|
|
|
|
<span>{{ scope.row.city }}</span><br/>
|
|
|
|
|
<span>{{ scope.row.area }}</span>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column label="信息完善" align="center" prop="isCompleteInformation">
|
|
|
|
|
<template slot-scope="scope">
|
|
|
|
|
<span v-show="scope.row.isCompleteInformation == 0">未完善</span>
|
|
|
|
|
<span v-show="scope.row.isCompleteInformation == 1">完善</span>
|
|
|
|
|
<span style="color: red" v-show="scope.row.isCompleteInformation == 0">未完善</span>
|
|
|
|
|
<span v-show="scope.row.isCompleteInformation == 1">已完善</span>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column label="用户注册时间" align="center" prop="createTime" width="200px"/>
|
|
|
|
|
<el-table-column label="仪器数量" align="center" prop="devicesNum"/>
|
|
|
|
|
<el-table-column label="小程序标签" align="center" prop=""/>
|
|
|
|
|
<el-table-column label="企微标签" align="center" prop=""/>
|
|
|
|
|
<el-table-column label="小程序标签" align="center" prop="miniProgramTags" width="150px">
|
|
|
|
|
<template slot-scope="scope">
|
|
|
|
|
<el-tag v-for="item in scope.row.miniProgramTags" :key="item.id">
|
|
|
|
|
{{ item.tagName }}
|
|
|
|
|
</el-tag>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column label="企微标签" align="center" prop="wecomTags" width="150px">
|
|
|
|
|
<template slot-scope="scope">
|
|
|
|
|
<el-tag v-for="item in scope.row.wecomTags" :key="item.id">
|
|
|
|
|
{{ item.tagName }}
|
|
|
|
|
</el-tag>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column label="是否对接" align="center" prop="is_abutment">
|
|
|
|
|
<template slot-scope="scope">
|
|
|
|
|
<span v-show="scope.row.isAbutment == 1">未对接</span>
|
|
|
|
|
@ -217,7 +233,13 @@
|
|
|
|
|
<span v-show="scope.row.isAbutment == 3">对接失败</span>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column label="积分" align="center" prop="credit"/>
|
|
|
|
|
<el-table-column label="积分" align="center" prop="credit">
|
|
|
|
|
<template slot-scope="scope">
|
|
|
|
|
<el-button size="mini" type="text" @click="viewUserIntegralDetail(scope.row)">
|
|
|
|
|
{{ scope.row.credit }}
|
|
|
|
|
</el-button>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column label="即将过期积分" align="center" prop=""/>
|
|
|
|
|
<el-table-column label="用户类型" align="center" prop="userType">
|
|
|
|
|
<template slot-scope="scope">
|
|
|
|
|
@ -235,7 +257,11 @@
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column label="消息列表" align="center" prop="">
|
|
|
|
|
<span>查看详情</span>
|
|
|
|
|
<template slot-scope="scope">
|
|
|
|
|
<el-button size="mini" type="text" @click="viewMessageDetail(scope.row)">
|
|
|
|
|
查看详情
|
|
|
|
|
</el-button>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
|
|
|
|
<template slot-scope="scope">
|
|
|
|
|
@ -541,6 +567,81 @@
|
|
|
|
|
<el-button @click="cancelscriptDialog">取 消</el-button>
|
|
|
|
|
</div>
|
|
|
|
|
</el-dialog>
|
|
|
|
|
|
|
|
|
|
<!-- 查看用户消息列表 -->
|
|
|
|
|
<el-dialog title="消息记录" :visible.sync="userScriptLogVisible" width="90%"
|
|
|
|
|
:before-close="cancelUserScriptLogDialog">
|
|
|
|
|
<template>
|
|
|
|
|
<el-table :data="userScriptLogQuery.userScriptList" :stripe="true" style="width: 100%">
|
|
|
|
|
<el-table-column type="index" width="50"></el-table-column>
|
|
|
|
|
<el-table-column prop="messageType" label="消息类型" width="100px">
|
|
|
|
|
<template slot-scope="scope">
|
|
|
|
|
<span v-show="scope.row.messageType == 0">未知</span>
|
|
|
|
|
<span v-show="scope.row.messageType == 1">用户注册</span>
|
|
|
|
|
<span v-show="scope.row.messageType == 2">绑定仪器</span>
|
|
|
|
|
<span v-show="scope.row.messageType == 3">打卡活动</span>
|
|
|
|
|
<span v-show="scope.row.messageType == 4">护理计划</span>
|
|
|
|
|
<span v-show="scope.row.messageType == 5">问卷活动</span>
|
|
|
|
|
<span v-show="scope.row.messageType == 6">会员管理</span>
|
|
|
|
|
<span v-show="scope.row.messageType == 7">消息模板</span>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column prop="titile" label="标题" width="200"></el-table-column>
|
|
|
|
|
<el-table-column prop="content" label="内容"></el-table-column>
|
|
|
|
|
<el-table-column prop="isRead" label="状态" width="100">
|
|
|
|
|
<template slot-scope="scope">
|
|
|
|
|
<span v-show="scope.row.isRead == 0">未读</span>
|
|
|
|
|
<span v-show="scope.row.isRead == 1">已读</span>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column prop="createTime" label="发送时间" width="200"></el-table-column>
|
|
|
|
|
<el-table-column prop="status" label="操作" width="100">
|
|
|
|
|
<template slot-scope="scope">
|
|
|
|
|
<el-button v-show="scope.row.status == 0" size="mini" type="text" @click="delUserScriptLog(scope.row)">
|
|
|
|
|
撤销
|
|
|
|
|
</el-button>
|
|
|
|
|
<el-button v-show="scope.row.status == 1" size="mini" type="text" disabled>已撤销</el-button>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
</el-table>
|
|
|
|
|
</template>
|
|
|
|
|
<pagination
|
|
|
|
|
v-show="userScriptLogQuery.total>0"
|
|
|
|
|
:total="userScriptLogQuery.total"
|
|
|
|
|
:page.sync="userScriptLogQuery.pageNum"
|
|
|
|
|
:limit.sync="userScriptLogQuery.pageSize"
|
|
|
|
|
@pagination="getUserScriptLogList"
|
|
|
|
|
/>
|
|
|
|
|
</el-dialog>
|
|
|
|
|
|
|
|
|
|
<!-- 查看用户积分列表 -->
|
|
|
|
|
<el-dialog title="积分记录" :visible.sync="userIntegralLogVisible" width="90%"
|
|
|
|
|
:before-close="cancelUserIntegralLogDialog">
|
|
|
|
|
<template>
|
|
|
|
|
<el-table :data="userIntegralLogQuery.userIntegralLogList" @sort-change="userIntegralSortChang"
|
|
|
|
|
:default-sort="{prop: 'createTime', order: 'desc'}" :stripe="true" style="width: 100%">
|
|
|
|
|
<el-table-column type="index" width="50"></el-table-column>
|
|
|
|
|
<el-table-column prop="source" label="类型" width="100px">
|
|
|
|
|
<template slot-scope="scope">
|
|
|
|
|
<span v-show="scope.row.source == 0">减少积分</span>
|
|
|
|
|
<span v-show="scope.row.source == 1">增加积分</span>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column prop="floatScore" label="变动积分"
|
|
|
|
|
:sortable="'custom'" width="100"></el-table-column>
|
|
|
|
|
<el-table-column prop="soureId" label="来源ID" width="100"></el-table-column>
|
|
|
|
|
<el-table-column prop="remarkContent" label="说明"></el-table-column>
|
|
|
|
|
<el-table-column prop="createTime" :sortable="'custom'" label="操作时间" width="200"></el-table-column>
|
|
|
|
|
</el-table>
|
|
|
|
|
</template>
|
|
|
|
|
<pagination
|
|
|
|
|
v-show="userIntegralLogQuery.total>0"
|
|
|
|
|
:total="userIntegralLogQuery.total"
|
|
|
|
|
:page.sync="userIntegralLogQuery.pageNum"
|
|
|
|
|
:limit.sync="userIntegralLogQuery.pageSize"
|
|
|
|
|
@pagination="getUserIntegralLogList"
|
|
|
|
|
/>
|
|
|
|
|
</el-dialog>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
@ -569,7 +670,7 @@ import {
|
|
|
|
|
getMiniProgramTagsTree,
|
|
|
|
|
scriptTreeSelect,
|
|
|
|
|
editRemark, delRemark,
|
|
|
|
|
openOrCloseClock, openOrCloseActivity,
|
|
|
|
|
openOrCloseClock, openOrCloseActivity, uObtainUserScriptLog, delUserScriptLog, obtainUserIntegralLog,
|
|
|
|
|
} from "@/api/system/member";
|
|
|
|
|
import Treeselect from "@riophae/vue-treeselect";
|
|
|
|
|
import {tagTreeSelect} from "@/api/system/wechatTab";
|
|
|
|
|
@ -580,6 +681,23 @@ export default {
|
|
|
|
|
components: {Treeselect},
|
|
|
|
|
data() {
|
|
|
|
|
return {
|
|
|
|
|
tableData: [{
|
|
|
|
|
date: '2016-05-02',
|
|
|
|
|
name: '王小虎',
|
|
|
|
|
address: '上海市普陀区金沙江路 1518 弄'
|
|
|
|
|
}, {
|
|
|
|
|
date: '2016-05-04',
|
|
|
|
|
name: '王小虎',
|
|
|
|
|
address: '上海市普陀区金沙江路 1517 弄'
|
|
|
|
|
}, {
|
|
|
|
|
date: '2016-05-01',
|
|
|
|
|
name: '王小虎',
|
|
|
|
|
address: '上海市普陀区金沙江路 1519 弄'
|
|
|
|
|
}, {
|
|
|
|
|
date: '2016-05-03',
|
|
|
|
|
name: '王小虎',
|
|
|
|
|
address: '上海市普陀区金沙江路 1516 弄'
|
|
|
|
|
}],
|
|
|
|
|
// 遮罩层
|
|
|
|
|
loading: true,
|
|
|
|
|
// 选中数组
|
|
|
|
|
@ -671,6 +789,28 @@ export default {
|
|
|
|
|
// 当类型为模板发送时,选择了二级话术标题后,显示内容用,不传后端保存
|
|
|
|
|
scriptContent: null,
|
|
|
|
|
},
|
|
|
|
|
// 用户消息记录
|
|
|
|
|
userScriptLogVisible: false,
|
|
|
|
|
userScriptLogQuery: {
|
|
|
|
|
total: 0,
|
|
|
|
|
pageNum: 1,
|
|
|
|
|
pageSize: 10,
|
|
|
|
|
wxUserId: null,
|
|
|
|
|
userScriptList: null,
|
|
|
|
|
orderByColumn: "createTime",
|
|
|
|
|
isAsc: "desc"
|
|
|
|
|
},
|
|
|
|
|
// 用户积分记录
|
|
|
|
|
userIntegralLogVisible: false,
|
|
|
|
|
userIntegralLogQuery: {
|
|
|
|
|
total: 0,
|
|
|
|
|
pageNum: 1,
|
|
|
|
|
pageSize: 10,
|
|
|
|
|
userIntegralLogList: null,
|
|
|
|
|
userId: null,
|
|
|
|
|
orderByColumn: "createTime",
|
|
|
|
|
isAsc: "desc"
|
|
|
|
|
},
|
|
|
|
|
// 查询参数
|
|
|
|
|
queryParams: {
|
|
|
|
|
pageNum: 1,
|
|
|
|
|
@ -822,9 +962,25 @@ export default {
|
|
|
|
|
this.batchRemarkVisible = false;
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
cancelUserScriptLogDialog() {
|
|
|
|
|
this.userScriptLogVisible = false;
|
|
|
|
|
this.userScriptLogQuery.total = 0;
|
|
|
|
|
this.userScriptLogQuery.pageNum = 1;
|
|
|
|
|
this.userScriptLogQuery.pageSize = 10;
|
|
|
|
|
this.userScriptLogQuery.wxUserId = null;
|
|
|
|
|
this.userScriptLogQuery.userScriptList = null;
|
|
|
|
|
},
|
|
|
|
|
cancelUserIntegralLogDialog() {
|
|
|
|
|
this.userIntegralLogVisible = false;
|
|
|
|
|
this.userIntegralLogQuery.total = 0
|
|
|
|
|
this.userIntegralLogQuery.pageNum = 1;
|
|
|
|
|
this.userIntegralLogQuery.pageSize = 10;
|
|
|
|
|
this.userIntegralLogQuery.userId = null;
|
|
|
|
|
this.userIntegralLogQuery.userIntegralLogList = null;
|
|
|
|
|
},
|
|
|
|
|
cancelscriptDialog(isclose) {
|
|
|
|
|
this.scriptForm.isCustom = null,
|
|
|
|
|
this.scriptForm.scriptName = null;
|
|
|
|
|
this.scriptForm.isCustom = null;
|
|
|
|
|
this.scriptForm.scriptName = null;
|
|
|
|
|
this.scriptForm.titile = null;
|
|
|
|
|
this.scriptForm.content = null;
|
|
|
|
|
this.scriptForm.tagType = null;
|
|
|
|
|
@ -1320,6 +1476,48 @@ export default {
|
|
|
|
|
this.download('system/member/export', {
|
|
|
|
|
...this.queryParams
|
|
|
|
|
}, `member_${new Date().getTime()}.xlsx`)
|
|
|
|
|
},
|
|
|
|
|
// 打开用户消息列表窗口
|
|
|
|
|
viewMessageDetail(row) {
|
|
|
|
|
this.userScriptLogQuery.wxUserId = row.id;
|
|
|
|
|
this.getUserScriptLogList();
|
|
|
|
|
this.userScriptLogVisible = true;
|
|
|
|
|
},
|
|
|
|
|
// 分页获取 用户消息列表
|
|
|
|
|
getUserScriptLogList() {
|
|
|
|
|
uObtainUserScriptLog(this.userScriptLogQuery).then(response => {
|
|
|
|
|
this.userScriptLogQuery.userScriptList = response.rows;
|
|
|
|
|
this.userScriptLogQuery.total = response.total;
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
// 删除用户消息
|
|
|
|
|
delUserScriptLog(row) {
|
|
|
|
|
let wxUserScriptLog = {
|
|
|
|
|
id: row.id,
|
|
|
|
|
status: row.status == 0 ? 1 : 0,
|
|
|
|
|
}
|
|
|
|
|
delUserScriptLog(wxUserScriptLog).then(Response => {
|
|
|
|
|
row.status = wxUserScriptLog.status;
|
|
|
|
|
this.$modal.msgSuccess("撤销成功");
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
// 打开用户积分列表窗口
|
|
|
|
|
viewUserIntegralDetail(row) {
|
|
|
|
|
this.userIntegralLogQuery.userId = row.id;
|
|
|
|
|
this.getUserIntegralLogList();
|
|
|
|
|
this.userIntegralLogVisible = true;
|
|
|
|
|
},
|
|
|
|
|
// 分页获取用户积分列表
|
|
|
|
|
getUserIntegralLogList() {
|
|
|
|
|
obtainUserIntegralLog(this.userIntegralLogQuery).then(Response => {
|
|
|
|
|
this.userIntegralLogQuery.userIntegralLogList = Response.rows;
|
|
|
|
|
this.userIntegralLogQuery.total = Response.total;
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
userIntegralSortChang({column, prop}) {
|
|
|
|
|
this.userIntegralLogQuery.orderByColumn = prop;
|
|
|
|
|
this.userIntegralLogQuery.isAsc = column.order == 'ascending' ? 'asc' : 'desc';
|
|
|
|
|
this.getUserIntegralLogList();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|