|
@@ -478,6 +478,17 @@
|
|
|
prop="userName"
|
|
|
|
|
|
>
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <el-button
|
|
|
+ style="text-align: center;"
|
|
|
+ type="text"
|
|
|
+ @click="getTeamDetail(2,scope.row.userId,scope.row.userName,scope.row.type)">
|
|
|
+ {{
|
|
|
+ scope.row.userName
|
|
|
+ }}
|
|
|
+ </el-button>
|
|
|
+ </template>
|
|
|
+
|
|
|
</el-table-column>
|
|
|
<el-table-column
|
|
|
label="类型"
|
|
@@ -491,6 +502,17 @@
|
|
|
</el-table-column>
|
|
|
|
|
|
<el-table-column
|
|
|
+ label="人数"
|
|
|
+ align="center"
|
|
|
+ prop="teamCount"
|
|
|
+ width="120px"
|
|
|
+ >
|
|
|
+ <template slot-scope="scope">
|
|
|
+ {{ scope.row.teamCount }}
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+
|
|
|
+ <el-table-column
|
|
|
label="订单量"
|
|
|
align="center"
|
|
|
prop="orderNum"
|
|
@@ -640,7 +662,7 @@
|
|
|
<el-button
|
|
|
style="text-align: center; padding: 3px 0"
|
|
|
type="text"
|
|
|
- @click="getTeamDetail(scope.row.deptId,scope.row.deptName)">
|
|
|
+ @click="getTeamDetail(1,scope.row.deptId,scope.row.deptName,null)">
|
|
|
{{
|
|
|
scope.row.deptName
|
|
|
}}
|
|
@@ -970,9 +992,15 @@
|
|
|
v-loading="promoterLoading"
|
|
|
>
|
|
|
<div slot="header" class="clearfix">
|
|
|
- <span style="font-size: 16px; font-weight: bold; float: left"
|
|
|
- >分达人数据</span
|
|
|
- >
|
|
|
+ <span style="font-size: 16px; font-weight: bold; float: left">分达人数据</span>
|
|
|
+
|
|
|
+
|
|
|
+ <el-radio-group v-model="selectPromoterType" style="float: right" size="mini" @change="changePromoterType()">
|
|
|
+ <el-radio-button label="0">全部</el-radio-button>
|
|
|
+ <el-radio-button label="1">自营</el-radio-button>
|
|
|
+ <el-radio-button label="2">分销</el-radio-button>
|
|
|
+ </el-radio-group>
|
|
|
+
|
|
|
</div>
|
|
|
<el-table
|
|
|
:data="promoterList"
|
|
@@ -985,6 +1013,8 @@
|
|
|
prop="itemTitle"
|
|
|
width="240"
|
|
|
>
|
|
|
+
|
|
|
+
|
|
|
<template slot-scope="scope">
|
|
|
<div style="display: flex; width: 100%">
|
|
|
<div style="width: 40%">
|
|
@@ -995,7 +1025,10 @@
|
|
|
/>
|
|
|
</div>
|
|
|
<div style="width: 60%" class="item-name-calss">
|
|
|
- <p>Id:{{ scope.row.clipUserId }}</p>
|
|
|
+ <p>
|
|
|
+ Id:{{ scope.row.clipUserId }}
|
|
|
+
|
|
|
+ </p>
|
|
|
<p
|
|
|
style="
|
|
|
text-overflow: ellipsis;
|
|
@@ -1004,7 +1037,12 @@
|
|
|
width: 100%;
|
|
|
"
|
|
|
:title="scope.row.clipNickName">
|
|
|
- {{ scope.row.clipNickName }}
|
|
|
+ <el-button
|
|
|
+ style="text-align: center; padding: 3px 0"
|
|
|
+ type="text"
|
|
|
+ @click="getItemOrPromoterDetail(1,scope.row)">
|
|
|
+ {{ scope.row.clipNickName }}
|
|
|
+ </el-button>
|
|
|
</p>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -1195,7 +1233,12 @@
|
|
|
width: 100%;
|
|
|
"
|
|
|
:title="scope.row.itemTitle">
|
|
|
- {{ scope.row.itemTitle }}
|
|
|
+ <el-button
|
|
|
+ style="text-align: center; padding: 3px 0"
|
|
|
+ type="text"
|
|
|
+ @click="getItemOrPromoterDetail(2,scope.row)">
|
|
|
+ {{ scope.row.itemTitle }}
|
|
|
+ </el-button>
|
|
|
</p>
|
|
|
|
|
|
|
|
@@ -1204,6 +1247,7 @@
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column
|
|
|
+ v-if=" this.$store.getters.roles[0] == 'jy_admnin' || this.$store.getters.roles[0] == 'admin'"
|
|
|
label="毛利"
|
|
|
align="center"
|
|
|
prop="teamMember"
|
|
@@ -1521,7 +1565,7 @@
|
|
|
:before-close="handleClose">
|
|
|
<el-table
|
|
|
:data="teamDetailList"
|
|
|
- v-loading="teamDetailLoading"
|
|
|
+ v-loading="drawerLoading"
|
|
|
ref="multipleTable"
|
|
|
>
|
|
|
<el-table-column
|
|
@@ -1647,6 +1691,205 @@
|
|
|
</el-drawer>
|
|
|
|
|
|
|
|
|
+ <!-- 达人商品出单详情抽屉-->
|
|
|
+ <el-drawer
|
|
|
+ size="950px"
|
|
|
+ :title="drawerName"
|
|
|
+ :visible.sync="itemPromoterDetailDrawer"
|
|
|
+ :direction="direction"
|
|
|
+ :before-close="handleClose">
|
|
|
+ <el-table
|
|
|
+ :data="itemPromoterDetailList"
|
|
|
+ v-loading="drawerLoading"
|
|
|
+ ref="multipleTable"
|
|
|
+ >
|
|
|
+ <el-table-column
|
|
|
+ v-if="this.itemPromoterType == 1"
|
|
|
+ label="商品信息"
|
|
|
+ align="center"
|
|
|
+ prop="itemId"
|
|
|
+ width="260"
|
|
|
+ >
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <div style="display: flex; width: 100%">
|
|
|
+ <div style="width: 40%">
|
|
|
+ <img
|
|
|
+ :src="scope.row.imageUrl"
|
|
|
+ alt=""
|
|
|
+ style="width: 70px; height: auto"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ <div style="width: 60%" class="item-name-calss">
|
|
|
+ <p>Id: {{ scope.row.itemId }}</p>
|
|
|
+ <p
|
|
|
+ style="
|
|
|
+ text-overflow: ellipsis;
|
|
|
+ white-space: nowrap;
|
|
|
+ overflow: hidden;
|
|
|
+ width: 100%;
|
|
|
+ "
|
|
|
+ :title="scope.row.itemTitle">
|
|
|
+ {{ scope.row.itemTitle }}
|
|
|
+ </p>
|
|
|
+
|
|
|
+
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+
|
|
|
+ </el-table-column>
|
|
|
+
|
|
|
+
|
|
|
+ <el-table-column
|
|
|
+ label="达人信息"
|
|
|
+ align="center"
|
|
|
+ prop="itemTitle"
|
|
|
+ width="260"
|
|
|
+ v-if="this.itemPromoterType == 2"
|
|
|
+ >
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <div style="display: flex; width: 100%">
|
|
|
+ <div style="width: 40%">
|
|
|
+ <img
|
|
|
+ :src="scope.row.promoterUrl"
|
|
|
+ alt=""
|
|
|
+ style="width: 70px; height: auto"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ <div style="width: 60%" class="item-name-calss">
|
|
|
+ <p>
|
|
|
+ Id:{{ scope.row.clipUserId }}
|
|
|
+
|
|
|
+ </p>
|
|
|
+ <p
|
|
|
+ style="
|
|
|
+ text-overflow: ellipsis;
|
|
|
+ white-space: nowrap;
|
|
|
+ overflow: hidden;
|
|
|
+ width: 100%;
|
|
|
+ "
|
|
|
+ :title="scope.row.clipNickName">
|
|
|
+ {{ scope.row.clipNickName }}
|
|
|
+ </p>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+
|
|
|
+
|
|
|
+ <el-table-column
|
|
|
+ label="类型"
|
|
|
+ align="center"
|
|
|
+ prop="orderNum"
|
|
|
+ v-if="this.itemPromoterType == 2"
|
|
|
+ >
|
|
|
+ <template slot-scope="scope">
|
|
|
+ {{
|
|
|
+ scope.row.promoterType
|
|
|
+ }}
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+
|
|
|
+ <el-table-column
|
|
|
+ label="归属"
|
|
|
+ align="center"
|
|
|
+ prop="orderNum"
|
|
|
+ v-if="this.itemPromoterType == 2"
|
|
|
+ >
|
|
|
+ <template slot-scope="scope">
|
|
|
+ {{
|
|
|
+ scope.row.userName
|
|
|
+ }}
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+
|
|
|
+ <el-table-column
|
|
|
+ label="订单量"
|
|
|
+ align="center"
|
|
|
+ prop="orderNum"
|
|
|
+ >
|
|
|
+ <template slot-scope="scope">
|
|
|
+ {{
|
|
|
+ scope.row.orderNum
|
|
|
+ }}
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+
|
|
|
+ <el-table-column
|
|
|
+ label="环比"
|
|
|
+ align="center"
|
|
|
+ prop="orderNumRate"
|
|
|
+
|
|
|
+ >
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <i v-if="scope.row.orderNumRate" :style=" scope.row.orderNumRate > 0 ? 'color:red' : 'color:green'"
|
|
|
+ >{{ (scope.row.orderNumRate) + "%" }} </i>
|
|
|
+ <i v-else>
|
|
|
+ -
|
|
|
+ </i>
|
|
|
+
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+
|
|
|
+ <el-table-column
|
|
|
+ label="有效率"
|
|
|
+ align="center"
|
|
|
+ prop="teamMember"
|
|
|
+
|
|
|
+ >
|
|
|
+ <template slot-scope="scope">
|
|
|
+ {{
|
|
|
+ scope.row.validRadio
|
|
|
+ ? (scope.row.validRadio).toFixed(2) + "%"
|
|
|
+ : "-"
|
|
|
+ }}
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+
|
|
|
+ <el-table-column
|
|
|
+ label="gmv"
|
|
|
+ align="center"
|
|
|
+ prop="payAmount"
|
|
|
+
|
|
|
+ >
|
|
|
+ <template slot-scope="scope">
|
|
|
+ {{
|
|
|
+ scope.row.payAmount
|
|
|
+ }}
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+
|
|
|
+ <el-table-column
|
|
|
+ label="有效率"
|
|
|
+ align="center"
|
|
|
+ prop="teamMember"
|
|
|
+ >
|
|
|
+ <template slot-scope="scope">
|
|
|
+ {{
|
|
|
+ scope.row.validPayAmountRadio
|
|
|
+ ? (scope.row.validPayAmountRadio).toFixed(2) + "%"
|
|
|
+ : "-"
|
|
|
+ }}
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+
|
|
|
+ <el-table-column
|
|
|
+ label="发货率"
|
|
|
+ align="center"
|
|
|
+ prop="teamMember"
|
|
|
+ >
|
|
|
+ <template slot-scope="scope">
|
|
|
+ {{
|
|
|
+ scope.row.deliveryRadio
|
|
|
+ ? (scope.row.deliveryRadio).toFixed(2) + "%"
|
|
|
+ : "-"
|
|
|
+ }}
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ </el-drawer>
|
|
|
+
|
|
|
+
|
|
|
</div>
|
|
|
|
|
|
</template>
|
|
@@ -1656,24 +1899,27 @@
|
|
|
import {
|
|
|
getAddItemList, getAddItemListByClipUserId, getAddItemListByExpertId,
|
|
|
getAddItemListByUserId, getDingPanItemList,
|
|
|
- getGmvHours, getMentorBusinessList,
|
|
|
+ getGmvHours, getItemPromoterDetail, getMentorBusinessList,
|
|
|
getMonthData,
|
|
|
- getPeopleList, getPromoterList,
|
|
|
- getSumInfo, getTeamDetail,
|
|
|
+ getPeopleList, getPromoterItemDetail, getPromoterList,
|
|
|
+ getSumInfo, getTeamDetail, getTeamExpertBusinessDetail,
|
|
|
getTeamList, getTuiGuangList, getVideoList
|
|
|
} from "@/api/jiaoyang/report";
|
|
|
|
|
|
var echarts = require("echarts");
|
|
|
export default {
|
|
|
- name: "JyDingPan",
|
|
|
+ name: "jyDingPan",
|
|
|
data() {
|
|
|
return {
|
|
|
+ itemPromoterType: null,
|
|
|
+ itemPromoterDetailList: [],
|
|
|
+ itemPromoterDetailDrawer: false,
|
|
|
videoInfo: null,
|
|
|
openVideoVisible: false,
|
|
|
drawerName: null,
|
|
|
direction: 'rtl',
|
|
|
teamDetaildrawer: false,
|
|
|
- teamDetailLoading: false,
|
|
|
+ drawerLoading: false,
|
|
|
teamDetailList: [],
|
|
|
// 遮罩层
|
|
|
loading: false,
|
|
@@ -1811,6 +2057,7 @@ export default {
|
|
|
type: 1,
|
|
|
promoterRankList: [],
|
|
|
promoterTotal: 0,
|
|
|
+ selectPromoterType: 0,
|
|
|
};
|
|
|
},
|
|
|
filters: {},
|
|
@@ -1846,29 +2093,98 @@ export default {
|
|
|
|
|
|
methods: {
|
|
|
|
|
|
- getTeamDetail(item, deptName) {
|
|
|
+ changePromoterType() {
|
|
|
+ this.getPromoterList();
|
|
|
+ },
|
|
|
+
|
|
|
+ getItemOrPromoterDetail(type, item) { // type 1 达人下商品出单详情 2 商品下达人出单详情
|
|
|
+ this.itemPromoterDetailDrawer = true;
|
|
|
+ this.drawerLoading = true;
|
|
|
+ if (type == 1) {
|
|
|
+ this.itemPromoterType = 1;
|
|
|
+ let name = item.clipNickName + "(" + item.clipUserId + ")";
|
|
|
+ this.drawerName = name;
|
|
|
+ getPromoterItemDetail(
|
|
|
+ this.addDateRange(
|
|
|
+ {clipUserId: item.clipUserId},
|
|
|
+ this.uploadDate,
|
|
|
+ "startDate",
|
|
|
+ "endDate"
|
|
|
+ )
|
|
|
+ ).then((response) => {
|
|
|
+ this.drawerLoading = false;
|
|
|
+ this.itemPromoterDetailList = response.data;
|
|
|
+ }).catch((e) => {
|
|
|
+ this.drawerLoading = false;
|
|
|
+ });
|
|
|
+ }
|
|
|
+ if (type == 2) {
|
|
|
+ this.itemPromoterType = 2;
|
|
|
+ let name = item.itemTitle + "(" + item.itemId + ")";
|
|
|
+ this.drawerName = name;
|
|
|
+ getItemPromoterDetail(
|
|
|
+ this.addDateRange(
|
|
|
+ {itemId: item.itemId, userId: this.userId},
|
|
|
+ this.uploadDate,
|
|
|
+ "startDate",
|
|
|
+ "endDate"
|
|
|
+ )
|
|
|
+ ).then((response) => {
|
|
|
+ this.drawerLoading = false;
|
|
|
+ this.itemPromoterDetailList = response.data;
|
|
|
+ }).catch((e) => {
|
|
|
+ this.drawerLoading = false;
|
|
|
+ });
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+
|
|
|
+ getTeamDetail(type, item, deptName, userType) {
|
|
|
this.drawerName = deptName;
|
|
|
this.teamDetaildrawer = true;
|
|
|
- this.teamDetailLoading = true;
|
|
|
- getTeamDetail(
|
|
|
- this.addDateRange(
|
|
|
- {deptId: item},
|
|
|
- this.uploadDate,
|
|
|
- "startDate",
|
|
|
- "endDate"
|
|
|
- )
|
|
|
- ).then((response) => {
|
|
|
- this.teamDetailLoading = false;
|
|
|
- this.teamDetailList = response.data;
|
|
|
- }).catch((e) => {
|
|
|
- this.teamDetailLoading = false;
|
|
|
- });
|
|
|
+ this.drawerLoading = true;
|
|
|
+ if (type == 1) {
|
|
|
+ getTeamDetail(
|
|
|
+ this.addDateRange(
|
|
|
+ {deptId: item},
|
|
|
+ this.uploadDate,
|
|
|
+ "startDate",
|
|
|
+ "endDate"
|
|
|
+ )
|
|
|
+ ).then((response) => {
|
|
|
+ this.drawerLoading = false;
|
|
|
+ this.teamDetailList = response.data;
|
|
|
+ }).catch((e) => {
|
|
|
+ this.drawerLoading = false;
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ if (type == 2) {
|
|
|
+ getTeamExpertBusinessDetail(
|
|
|
+ this.addDateRange(
|
|
|
+ {userId: item, userType: userType},
|
|
|
+ this.uploadDate,
|
|
|
+ "startDate",
|
|
|
+ "endDate"
|
|
|
+ )
|
|
|
+ ).then((response) => {
|
|
|
+ this.drawerLoading = false;
|
|
|
+ this.teamDetailList = response.data;
|
|
|
+ }).catch((e) => {
|
|
|
+ this.drawerLoading = false;
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
},
|
|
|
|
|
|
handleClose() {
|
|
|
this.teamDetaildrawer = false;
|
|
|
+ this.itemPromoterDetailDrawer = false;
|
|
|
this.drawerName = null;
|
|
|
this.teamDetailList = [];
|
|
|
+ this.itemPromoterDetailList = [];
|
|
|
},
|
|
|
// 获取汇总信息
|
|
|
getSumData() {
|
|
@@ -1969,7 +2285,7 @@ export default {
|
|
|
this.promoterLoading = true;
|
|
|
getPromoterList(
|
|
|
this.addDateRange(
|
|
|
- {userId: this.userId},
|
|
|
+ {userId: this.userId, promoterType: this.selectPromoterType},
|
|
|
this.uploadDate,
|
|
|
"startDate",
|
|
|
"endDate"
|
|
@@ -2187,6 +2503,7 @@ export default {
|
|
|
let dd = date.getDate();
|
|
|
dd = dd < 10 ? "0" + dd : dd;
|
|
|
this.uploadDate = [`${y}-${MM}-${dd}`, `${y}-${MM}-${dd}`];
|
|
|
+ this.selectPromoterType = 0;
|
|
|
this.resetForm("queryForm");
|
|
|
this.handleQuery();
|
|
|
},
|