|
|
@@ -190,6 +190,7 @@
|
|
|
>
|
|
|
<el-table-column type="selection" width="55"></el-table-column>
|
|
|
<el-table-column type="index" label="序号" width="55" align="center"></el-table-column>
|
|
|
+ <el-table-column prop="liveId" label="直播间编码" width="90" ></el-table-column>
|
|
|
<el-table-column prop="liveName" label="直播间名称" min-width="160" show-overflow-tooltip></el-table-column>
|
|
|
<el-table-column prop="liveType" label="直播类型" width="100" align="center">
|
|
|
<template slot-scope="scope">
|
|
|
@@ -315,7 +316,7 @@
|
|
|
title="直播间详情"
|
|
|
:visible.sync="detailDrawerVisible"
|
|
|
direction="rtl"
|
|
|
- size="60%"
|
|
|
+ size="80%"
|
|
|
:before-close="closeDetailDrawer"
|
|
|
>
|
|
|
<div v-if="!showUserDetail" class="detail-content">
|
|
|
@@ -554,6 +555,31 @@
|
|
|
</el-table-column>
|
|
|
<el-table-column prop="companyName" label="分公司" min-width="150"></el-table-column>
|
|
|
<el-table-column prop="salesName" label="销售" min-width="120"></el-table-column>
|
|
|
+ <el-table-column prop="isCompleted" label="是否完课" min-width="120">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <el-tag v-if="scope.row.isCompleted == 1" type="success">完课</el-tag>
|
|
|
+ <el-tag v-if="scope.row.isCompleted == 0" type="info">未完课</el-tag>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="rewardType" label="领取类型" min-width="160">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <dict-tag :options="liveRewardTypeList" :value="scope.row.rewardType"/>
|
|
|
+ <el-button
|
|
|
+ v-if="scope.row.rewardType != 4 && scope.row.rewardType != 99"
|
|
|
+ type="text"
|
|
|
+ size="small"
|
|
|
+ style="margin-left: 8px;"
|
|
|
+ @click="handleOpenRedPacketLog(scope.row)"
|
|
|
+ >红包/积分领取详细</el-button>
|
|
|
+ <el-button
|
|
|
+ v-if="scope.row.rewardType == 4 || scope.row.rewardType == 5 || scope.row.rewardType == 6 || scope.row.rewardType == 7"
|
|
|
+ type="text"
|
|
|
+ size="small"
|
|
|
+ style="margin-left: 8px;"
|
|
|
+ @click="handleOpenCouponLog(scope.row)"
|
|
|
+ >核销卷领取详情</el-button>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
</el-table>
|
|
|
<!-- 用户详情分页组件 -->
|
|
|
<pagination
|
|
|
@@ -567,6 +593,89 @@
|
|
|
/>
|
|
|
</div>
|
|
|
</el-drawer>
|
|
|
+
|
|
|
+ <!-- 红包领取详情侧边栏 -->
|
|
|
+ <el-drawer
|
|
|
+ title="红包领取详情"
|
|
|
+ :visible.sync="redPacketLogDrawerVisible"
|
|
|
+ direction="rtl"
|
|
|
+ size="60%"
|
|
|
+ >
|
|
|
+ <el-table
|
|
|
+ :data="redPacketLogList"
|
|
|
+ v-loading="redPacketLogLoading"
|
|
|
+ border
|
|
|
+ style="width: 100%"
|
|
|
+ >
|
|
|
+ <el-table-column type="index" label="序号" width="60" align="center"></el-table-column>
|
|
|
+ <el-table-column prop="liveId" label="直播间id" min-width="120"></el-table-column>
|
|
|
+ <el-table-column prop="userId" label="用户id" min-width="120"></el-table-column>
|
|
|
+ <el-table-column prop="amount" label="金额" min-width="120" align="center">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ {{ scope.row.amount != null ? scope.row.amount : '-' }}
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="status" label="状态" min-width="100" align="center">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <el-tag v-if="scope.row.status == 1" type="success">已领取</el-tag>
|
|
|
+ <el-tag v-else-if="scope.row.status == 0" type="info">未领取</el-tag>
|
|
|
+ <el-tag v-else type="info">{{ scope.row.status }}</el-tag>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="createTime" label="领取时间" min-width="160" align="center"></el-table-column>
|
|
|
+ <el-table-column prop="remark" label="备注" min-width="160" align="center"></el-table-column>
|
|
|
+ </el-table>
|
|
|
+ <pagination
|
|
|
+ v-show="redPacketLogTotal > 0"
|
|
|
+ :total="redPacketLogTotal"
|
|
|
+ :page.sync="redPacketLogQueryParams.pageNum"
|
|
|
+ :limit.sync="redPacketLogQueryParams.pageSize"
|
|
|
+ :page-sizes="[10, 20, 50]"
|
|
|
+ @pagination="loadRedPacketLogList"
|
|
|
+ style="margin-top: 20px;"
|
|
|
+ />
|
|
|
+ </el-drawer>
|
|
|
+
|
|
|
+ <!-- 核销卷领取详情侧边栏 -->
|
|
|
+ <el-drawer
|
|
|
+ title="核销卷领取详情"
|
|
|
+ :visible.sync="couponLogDrawerVisible"
|
|
|
+ direction="rtl"
|
|
|
+ size="60%"
|
|
|
+ >
|
|
|
+ <el-table
|
|
|
+ :data="couponLogList"
|
|
|
+ v-loading="couponLogLoading"
|
|
|
+ border
|
|
|
+ style="width: 100%"
|
|
|
+ >
|
|
|
+ <el-table-column type="index" label="序号" width="60" align="center"></el-table-column>
|
|
|
+ <el-table-column prop="nickname" label="会员昵称" min-width="120"></el-table-column>
|
|
|
+ <el-table-column prop="phone" label="会员手机号" min-width="120"></el-table-column>
|
|
|
+ <el-table-column prop="couponTitle" label="优惠券名称" min-width="120"></el-table-column>
|
|
|
+ <el-table-column prop="couponPrice" label="优惠券面值" min-width="100" align="center"></el-table-column>
|
|
|
+ <el-table-column prop="useMinPrice" label="最低消费" min-width="100" align="center"></el-table-column>
|
|
|
+ <el-table-column prop="limitTime" label="优惠券结束时间" min-width="160" align="center"></el-table-column>
|
|
|
+ <el-table-column prop="createTime" label="领取时间" min-width="160" align="center"></el-table-column>
|
|
|
+ <el-table-column prop="useTime" label="使用时间" min-width="160" align="center"></el-table-column>
|
|
|
+ <el-table-column prop="status" label="状态" min-width="100" align="center">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <el-tag v-if="scope.row.status == 1" type="success">已使用</el-tag>
|
|
|
+ <el-tag v-else-if="scope.row.status == 0" type="info">未使用</el-tag>
|
|
|
+ <el-tag v-else type="info">{{ scope.row.status }}</el-tag>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ <pagination
|
|
|
+ v-show="couponLogTotal > 0"
|
|
|
+ :total="couponLogTotal"
|
|
|
+ :page.sync="couponLogQueryParams.pageNum"
|
|
|
+ :limit.sync="couponLogQueryParams.pageSize"
|
|
|
+ :page-sizes="[10, 20, 50]"
|
|
|
+ @pagination="loadCouponLogList"
|
|
|
+ style="margin-top: 20px;"
|
|
|
+ />
|
|
|
+ </el-drawer>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
@@ -574,6 +683,9 @@
|
|
|
import { listLiveData, exportLiveData, autoTagAndRemark, dashboardData, getLiveDataDetailBySql, getLiveUserDetailListBySql, exportLiveUserDetail } from "@/api/live/liveData";
|
|
|
import { batchUpdateExternalContactNotes } from "@/api/qw/externalContact";
|
|
|
import { addTag } from "@/api/qw/externalContact";
|
|
|
+import { listLiveRedPacketLog } from "@/api/live/liveRedPacketLog";
|
|
|
+import { listStoreCouponUser } from "@/api/live/liveCouponUser";
|
|
|
+import { selectDictLabel } from '@/utils/common'
|
|
|
|
|
|
export default {
|
|
|
name: "LiveData",
|
|
|
@@ -584,6 +696,7 @@ export default {
|
|
|
exportLoading: false,
|
|
|
showSearch: true,
|
|
|
dataList: [],
|
|
|
+ liveRewardTypeList: [],
|
|
|
total: 0,
|
|
|
multipleSelection: [],
|
|
|
allChecked: false,
|
|
|
@@ -648,6 +761,28 @@ export default {
|
|
|
userDetailQueryParams: {
|
|
|
pageNum: 1,
|
|
|
pageSize: 10
|
|
|
+ },
|
|
|
+ // 红包领取详情
|
|
|
+ redPacketLogDrawerVisible: false,
|
|
|
+ redPacketLogList: [],
|
|
|
+ redPacketLogLoading: false,
|
|
|
+ redPacketLogTotal: 0,
|
|
|
+ redPacketLogQueryParams: {
|
|
|
+ pageNum: 1,
|
|
|
+ pageSize: 10,
|
|
|
+ liveId: null,
|
|
|
+ userId: null
|
|
|
+ },
|
|
|
+ // 核销卷领取详情
|
|
|
+ couponLogDrawerVisible: false,
|
|
|
+ couponLogList: [],
|
|
|
+ couponLogLoading: false,
|
|
|
+ couponLogTotal: 0,
|
|
|
+ couponLogQueryParams: {
|
|
|
+ pageNum: 1,
|
|
|
+ pageSize: 10,
|
|
|
+ userId: null,
|
|
|
+ type: null
|
|
|
}
|
|
|
};
|
|
|
},
|
|
|
@@ -655,9 +790,14 @@ export default {
|
|
|
this.liveId = this.$route.query.liveId;
|
|
|
this.queryParams.liveId = this.liveId;
|
|
|
|
|
|
+ this.getDicts("sys_live_reward_type").then((response) => {
|
|
|
+ this.liveRewardTypeList = response.data;
|
|
|
+ });
|
|
|
+
|
|
|
this.getList();
|
|
|
},
|
|
|
methods: {
|
|
|
+ selectDictLabel,
|
|
|
/** 获取统计数据 */
|
|
|
getStatistics() {
|
|
|
if (!this.liveId) return;
|
|
|
@@ -956,6 +1096,60 @@ export default {
|
|
|
}).catch(() => {
|
|
|
this.userDetailExportLoading = false;
|
|
|
});
|
|
|
+ },
|
|
|
+ /** 打开红包领取详情 */
|
|
|
+ handleOpenRedPacketLog(row) {
|
|
|
+ this.redPacketLogDrawerVisible = true;
|
|
|
+ this.redPacketLogQueryParams.liveId = this.currentLiveId;
|
|
|
+ this.redPacketLogQueryParams.userId = row.userId;
|
|
|
+ this.redPacketLogQueryParams.pageNum = 1;
|
|
|
+ this.loadRedPacketLogList();
|
|
|
+ },
|
|
|
+ /**
|
|
|
+ * 打开核销卷详情
|
|
|
+ */
|
|
|
+ handleOpenCouponLog(row){
|
|
|
+ this.couponLogDrawerVisible = true;
|
|
|
+ this.couponLogQueryParams.userId = row.userId;
|
|
|
+ this.couponLogQueryParams.type = '4-live-' + this.currentLiveId;
|
|
|
+ this.couponLogQueryParams.pageNum = 1;
|
|
|
+ this.loadCouponLogList();
|
|
|
+ },
|
|
|
+
|
|
|
+ /** 加载核销卷领取详情列表 */
|
|
|
+ loadCouponLogList() {
|
|
|
+ this.couponLogLoading = true;
|
|
|
+ listStoreCouponUser({
|
|
|
+ pageNum: this.couponLogQueryParams.pageNum,
|
|
|
+ pageSize: this.couponLogQueryParams.pageSize,
|
|
|
+ userId: this.couponLogQueryParams.userId,
|
|
|
+ type: this.couponLogQueryParams.type
|
|
|
+ }).then(response => {
|
|
|
+ this.couponLogList = response.rows || [];
|
|
|
+ this.couponLogTotal = response.total || 0;
|
|
|
+ this.couponLogLoading = false;
|
|
|
+ }).catch(() => {
|
|
|
+ this.couponLogLoading = false;
|
|
|
+ });
|
|
|
+ },
|
|
|
+
|
|
|
+ /** 加载红包领取详情列表 */
|
|
|
+ loadRedPacketLogList() {
|
|
|
+ this.redPacketLogLoading = true;
|
|
|
+ listLiveRedPacketLog({
|
|
|
+ pageNum: this.redPacketLogQueryParams.pageNum,
|
|
|
+ pageSize: this.redPacketLogQueryParams.pageSize,
|
|
|
+ liveId: this.redPacketLogQueryParams.liveId,
|
|
|
+ userId: this.redPacketLogQueryParams.userId
|
|
|
+ }).then(response => {
|
|
|
+ if (response.code === 200) {
|
|
|
+ this.redPacketLogList = response.rows || [];
|
|
|
+ this.redPacketLogTotal = response.total || 0;
|
|
|
+ }
|
|
|
+ this.redPacketLogLoading = false;
|
|
|
+ }).catch(() => {
|
|
|
+ this.redPacketLogLoading = false;
|
|
|
+ });
|
|
|
}
|
|
|
}
|
|
|
};
|