Commit 37fb367e authored by liudong1993's avatar liudong1993
parents 36c29b56 85b50a9a
...@@ -1099,6 +1099,12 @@ ...@@ -1099,6 +1099,12 @@
v-if="item.OrderLeaderGuestNum >= 1">+{{ item.OrderLeaderGuestNum }}</span>{{ $t("Operation.Op_people") }} v-if="item.OrderLeaderGuestNum >= 1">+{{ item.OrderLeaderGuestNum }}</span>{{ $t("Operation.Op_people") }}
</i> </i>
</p> </p>
<p>
<span>已收订</span>
<i>
<span class="TCL-redType">{{ item.DJNum }}</span> {{ $t("Operation.Op_people") }}
</i>
</p>
<p v-if="item.SingleDMNum > 0"> <p v-if="item.SingleDMNum > 0">
<span>{{ $t("salesModule.SingleJ") }}</span> <span>{{ $t("salesModule.SingleJ") }}</span>
<i>{{ item.SingleDMNum }}</i> <i>{{ item.SingleDMNum }}</i>
...@@ -3314,7 +3320,7 @@ ...@@ -3314,7 +3320,7 @@
that.Success(res.data.message); that.Success(res.data.message);
ttMsg.configId = res.data.data; ttMsg.configId = res.data.data;
that.getControlList(); that.getControlList();
that.gotoUrl(path,ttMsg); that.gotoUrl(path, ttMsg);
} else { } else {
that.Error(res.data.message); that.Error(res.data.message);
} }
...@@ -3481,7 +3487,7 @@ ...@@ -3481,7 +3487,7 @@
"】" + "】" +
this.$t("objFill.v101.dictriqiwei") + this.$t("objFill.v101.dictriqiwei") +
this.CopyTripAndFeatureMsg.StartDate; this.CopyTripAndFeatureMsg.StartDate;
tipMsg+=",变更日期后,请重新同步酒店信息。"; tipMsg += ",变更日期后,请重新同步酒店信息。";
} }
that.Confirm(tipMsg, function () { that.Confirm(tipMsg, function () {
that.saveLoading = true; that.saveLoading = true;
...@@ -3492,7 +3498,7 @@ ...@@ -3492,7 +3498,7 @@
that.saveLoading = false; that.saveLoading = false;
if (res.data.resultCode == 1) { if (res.data.resultCode == 1) {
if (that.CopyTripAndFeatureMsg.updateType == 1) { if (that.CopyTripAndFeatureMsg.updateType == 1) {
that.Success(that.$t("objFill.v101.fuzhixingccg")+res.data.message); that.Success(that.$t("objFill.v101.fuzhixingccg") + res.data.message);
} else { } else {
that.Success(res.data.message); that.Success(res.data.message);
} }
......
...@@ -718,6 +718,12 @@ ...@@ -718,6 +718,12 @@
v-if="item.OrderLeaderGuestNum>=1">+{{item.OrderLeaderGuestNum}}</span>{{$t('hotel.hotel_people')}} v-if="item.OrderLeaderGuestNum>=1">+{{item.OrderLeaderGuestNum}}</span>{{$t('hotel.hotel_people')}}
</i> </i>
</p> </p>
<p>
<span>已收订</span>
<i>
<span class="TCL-redType">{{ item.DJNum }}</span> {{ $t("Operation.Op_people") }}
</i>
</p>
<p> <p>
<span>{{$t('Operation.Op_takeSeat')}}</span> <span>{{$t('Operation.Op_takeSeat')}}</span>
<i>{{item.Occupied}}</i>{{$t('hotel.hotel_people')}} <i>{{item.Occupied}}</i>{{$t('hotel.hotel_people')}}
......
<style>
</style>
<template>
<div class="flexOne page-CouponDetail">
<div class="query-box">
<ul class="user_time_picker">
<li>
<span>
<em>{{$t('objFill.v102.fafangkeix')}}</em>
<el-select filterable v-model="msg.CustomerType" @change="getDropDowmCoupon();getList()">
<el-option :label="$t('Operation.Op_fellow')" value="0"></el-option>
<el-option :label="$t('Operation.Op_direct')" value="1"></el-option>
</el-select>
</span>
</li>
<li v-if="S_CheckAllOrder">
<span>
<em>{{$t('system.table_company')}}</em>
<el-select filterable :disabled="msg.IsParentCompany==2" v-model="msg.BrandId">
<el-option :label="$t('system.ph_buxian')" value="-1"></el-option>
<el-option v-for="item in companyList" :label="item.BName" :value="item.Id" :key="item.Id"></el-option>
</el-select>
</span>
</li>
<li>
<span>
<em>客户名称</em>
<el-input v-model="msg.CustomerKey" @keyup.enter.native="getList"></el-input>
</span>
</li>
<li>
<span>
<em>{{$t('active.cl_couponName')}}</em>
<el-select filterable v-model="msg.CouponId">
<el-option :label="$t('pub.pleaseSel')" value="0"></el-option>
<el-option v-for="item in CouponList" :key="item.id"
:label="item.couponsName" :value="item.id">
</el-option>
</el-select>
</span>
</li>
<li>
<span>
<em>{{$t('admin.admin_status')}}</em>
<el-select filterable v-model="msg.UseState">
<el-option :label="$t('pub.pleaseSel')" value="0"></el-option>
<el-option :label="$t('active.cl_wsyong')" value="1"></el-option>
<el-option :label="$t('active.cl_ysyong')" value="2"></el-option>
<el-option :label="$t('active.cl_yzfei')" value="3"></el-option>
</el-select>
</span>
</li>
<li>
<span>
<em>领取时间</em>
<el-date-picker class="h34" v-model="AcessDate" @change="timeAdd(1)" type="daterange"
value-format="yyyy-MM-dd">
</el-date-picker>
</span>
</li>
<li>
<span>
<em>使用时间</em>
<el-date-picker class="h34" v-model="UseDate" @change="timeAdd(1)" type="daterange"
value-format="yyyy-MM-dd">
</el-date-picker>
</span>
</li>
<li>
<span>
<em>过期时间</em>
<el-date-picker class="h34" v-model="ExpirationDate" @change="timeAdd(1)" type="daterange"
value-format="yyyy-MM-dd">
</el-date-picker>
</span>
</li>
<li>
<input type="button" class="hollowFixedBtn" :value="$t('pub.searchBtn')" @click="resetPageIndex(),getList()">
</li>
</ul>
</div>
<div class="clearfix"></div>
<div style="margin: 10px 0;" class="fz14 color333">
领取总数:<span class="colorE95252">{{
CountData.allCount
}}</span>&nbsp;&nbsp;&nbsp;&nbsp;已使用数:<span class="colorE95252">{{
CountData.allUCount
}}</span>&nbsp;&nbsp;&nbsp;&nbsp;未使用数:<span class="colorE95252">{{
CountData.allNCount
}}</span>&nbsp;&nbsp;&nbsp;&nbsp;作废数:<span class="colorE95252">{{
CountData.allFCount
}}</span>
</div>
<table class="singeRowTable" border="0" cellspacing="0" cellpadding="0">
<tr>
<th>客户名称</th>
<th>关联销售</th>
<th>优惠卷名称</th>
<th>优惠内容</th>
<th>使用状态</th>
<th>领取时间</th>
<th>过期时间</th>
<th>使用时间</th>
<th>关联订单</th>
</tr>
<tbody v-loading="loading">
<tr v-for="(item,index) in DataList" :key="index">
<td> <el-tooltip class="item" effect="dark" :content="item.contact+item.contactNumber" placement="top-start">
<span>{{item.userName}}</span>
</el-tooltip></td>
<td>
<el-tooltip class="item" effect="dark" :content="item.allSaleName" placement="top-start">
<span>{{item.saleName}}</span>
</el-tooltip></td>
<td>
{{item.couponsName}}</td>
<td>{{item.couponsType==1?("满"+item.useCondition+"元减"+item.denomination+"元"):("满"+item.useCondition+"打"+item.denomination+"折")}}</td>
<td>
<span v-if="item.useState == 1" style="color: green">{{$t('active.cl_wsyong')}}</span>
<span v-if="item.useState == 2" style="color: gary">{{$t('active.cl_ysyong')}}</span>
<span v-if="item.useState == 3" style="color: red">{{$t('active.cl_yzfei')}}</span>
</td>
<td>{{item.acessDate }}</td>
<td>{{item.effectDate }}{{item.expirationDate }}</td>
<td>{{item.useDate ? item.useDate : $t('active.cl_wsyong')}}</td>
<td>
<span v-if="item.orderId === 0">{{$t('active.cl_zanwu')}}</span>
<span v-else>{{item.orderId}}</span>
</td>
</tr>
</tbody>
</table>
<div class="noDataNotice" v-if="DataList.length<1">
<i class="iconfont icon-kong"></i>
<p>{{$t('active.ld_noData')}}</p>
</div>
<el-pagination background @current-change="handleCurrentChange" v-if="DataList.length>0"
:current-page.sync="currentPage" layout="total,prev, pager, next, jumper" :page-size="msg.pageSize"
:total="total"></el-pagination>
</div>
</template>
<script>
export default {
data() {
return {
loading: false,
DataList: [],
AcessDate: [],
UseDate: [],
ExpirationDate: [],
S_CheckAllOrder: false,
msg: {
pageIndex: 1,
pageSize: 15,
CouponId: "0",
UseState: "0",
CustomerType:"0",
BrandId:"-1",
CustomerKey:"",
SAcessDate:"",
EAcessDate:"",
SUseDate:"",
EUseDate:"",
SExpirationDate:"",
EExpirationDate:""
},
CouponList:[],//下拉优惠券
companyList: [],
currentPage: 1,
total: 0,
CountData:{},
};
},
created() {
// this.msg.couponId = this.$route.query.couponId
//this.msg.UseState = this.$route.query.UseState
},
mounted() {
let userInfo = this.getLocalStorage();
let ActionMenuCode = userInfo.ActionMenuCode;
if (ActionMenuCode.indexOf('S_CheckAllOrder') != -1) {
this.S_CheckAllOrder = true
}
if (!this.S_CheckAllOrder) {
this.msg.BrandId = userInfo.RB_Branch_id
}
this.getDropDowmCoupon();
this.getCompany();
this.getList();
this.getCountList();
},
methods: {
timeAdd(t) { // 日期格式
if (t == 1) { //领取时间
if (!this.AcessDate) {
this.msg.SAcessDate = '';
this.msg.EAcessDate = '';
return
}
this.msg.SAcessDate = this.AcessDate[0];
this.msg.EAcessDate = this.AcessDate[1];
}
if (t == 2) { //使用时间
if (!this.UseDate) {
this.SUseDate = '';
this.EUseDate = '';
return
}
this.SUseDate = this.UseDate[0];
this.EUseDate = this.UseDate[1];
}
if (t == 3) { //有效期
if (!this.ExpirationDate) {
this.msg.SExpirationDate = '';
this.msg.EExpirationDate = '';
return
}
this.msg.SExpirationDate = this.ExpirationDate[0];
this.msg.EExpirationDate = this.ExpirationDate[1];
}
},
getCountList() {
//获取数据
this.loading = true;
this.apipost(
"coupon_post_GetUserCouponCountList",
this.msg,
res => {
this.loading = false;
if (res.data.resultCode === 1) {
this.CountData = res.data.data;
} else {
this.$message.error(res.data.message)
}
}
);
},
getList() {
//获取数据
this.loading = true;
this.apipost(
"coupon_post_GetUserCouponPageList",
this.msg,
res => {
this.loading = false;
if (res.data.resultCode === 1) {
this.total = res.data.data.count;
this.DataList = res.data.data.pageData;
} else {
this.$message.error(res.data.message)
}
}
);
},
getCompany() {
this.apipost(
"admin_get_BranchGetList",
this.getCompanyMsg,
res => {
if (res.data.resultCode == 1) {
this.layerCompanyList = res.data.data;
this.companyList = res.data.data;
}
}
);
},
getDropDowmCoupon() {
this.apipost("coupon_post_GetDropDowmList", {
"CouponsName": "",
"BranchId": -1,
"CustomerType":this.msg.CustomerType
}, res => {
if (res.data.resultCode == 1) {
this.CouponList = res.data.data;
} else {
this.Info(res.data.message);
}
})
this.msg.CouponId="0";
},
handleCurrentChange(val) {
this.msg.pageIndex = val;
this.getList();
},
resetPageIndex() {
this.msg.pageIndex = 1;
this.currentPage = 1;
},
}
};
</script>
<template> <template>
<div class="full-box"> <div class="full-box">
<div class="data-box" style="padding-bottom: 20px;"> <div class="data-box" style="padding-bottom: 20px">
<div class="row items-center" style="margin-bottom: 20px;"> <div class="row items-center" style="margin-bottom: 20px">
<div class="page-title col">平台数据</div> <div class="page-title col">平台数据</div>
<div class="row items-center"> <div class="row items-center">
<el-select v-model="parameters.CusType" style="width:100px; margin-right: 20px;height:40px" @change="handleDateChange()"> <el-select
<el-option v-for="(x,i) in platforms" :key="i" :label="x.Name" :value="x.Id" ></el-option> v-model="parameters.CusType"
style="width: 100px; margin-right: 20px; height: 40px"
@change="handleDateChange()"
>
<el-option
v-for="(x, i) in platforms"
:key="i"
:label="x.Name"
:value="x.Id"
></el-option>
</el-select> </el-select>
<template v-if="userInfo.RB_Branch_id==0||userInfo.RB_Branch_id==49"> <template
v-if="userInfo.RB_Branch_id == 0 || userInfo.RB_Branch_id == 49"
>
<el-select <el-select
v-model="parameters.branchId" v-model="parameters.branchId"
style="margin-right: 20px;height:40px" style="margin-right: 20px; height: 40px"
@change="getDepartment(),parameters.RB_Department_Id=null,getEmpList(),parameters.empIdList=[],handleDateChange()" @change="
getDepartment(),
(parameters.RB_Department_Id = null),
getEmpList(),
(parameters.empIdList = []),
handleDateChange()
"
> >
<el-option <el-option
v-for="(x, i) in branchs" v-for="(x, i) in branchs"
...@@ -21,11 +38,19 @@ ...@@ -21,11 +38,19 @@
></el-option> ></el-option>
</el-select> </el-select>
</template> </template>
<treeselect style="margin-right: 20px;width:200px;" class="radius-input" :options="departmentList" v-model="parameters.RB_Department_Id" <treeselect
:label="$t('pub.unlimitedSel')" :normalizer="normalizer" @select="changeDepart" placeholder="请选择部门" /> style="margin-right: 20px; width: 200px"
class="radius-input"
:options="departmentList"
v-model="parameters.RB_Department_Id"
:label="$t('pub.unlimitedSel')"
:normalizer="normalizer"
@select="changeDepart"
placeholder="请选择部门"
/>
<el-select <el-select
v-model="parameters.empId" v-model="parameters.empId"
style="margin-right: 20px;height: 40px;" style="margin-right: 20px; height: 40px"
@change="handleDateChange()" @change="handleDateChange()"
filterable filterable
clearable clearable
...@@ -66,9 +91,9 @@ ...@@ -66,9 +91,9 @@
{{ x.title }} {{ x.title }}
</div> </div>
</div> </div>
<div class="sub-title q-my-md">今日实时数据 </div> <div class="sub-title q-my-md">今日实时数据</div>
<div class="card rounded big"> <div class="card rounded big">
<div style="margin: 0 12px;"> <div style="margin: 0 12px">
<div class="sub-title">今日客户数据</div> <div class="sub-title">今日客户数据</div>
<div class=""> <div class="">
<span class="dot"></span> <span class="dot"></span>
...@@ -78,24 +103,24 @@ ...@@ -78,24 +103,24 @@
<div class="q-mt-md row items-center"> <div class="q-mt-md row items-center">
<div class="data-items col NumCursorP" @click="goUrl(1)"> <div class="data-items col NumCursorP" @click="goUrl(1)">
<div>客户总数</div> <div>客户总数</div>
<div class="num" style="margin: 6px 0;"> <div class="num" style="margin: 6px 0">
<span class="datanum" style=""> <span class="datanum" style="">
<template v-if="customerObj"> <template v-if="customerObj">
{{ customerObj.TotalCustomerCount }} {{ customerObj.TotalCustomerCount }}
</template> </template>
</span> </span>
<span ></span> <span></span>
<span></span> <span></span>
</div> </div>
<div class="text-info">&nbsp;</div> <div class="text-info">&nbsp;</div>
</div> </div>
<el-divider <el-divider
direction="vertical" direction="vertical"
style="margin: 0 12px;height: 80%;" style="margin: 0 12px; height: 80%"
></el-divider> ></el-divider>
<div class="data-items col NumCursorP" @click="goUrl(2)"> <div class="data-items col NumCursorP" @click="goUrl(2)">
<div>今日新增客户</div> <div>今日新增客户</div>
<div class="num" style="margin: 6px 0;"> <div class="num" style="margin: 6px 0">
<span class="datanum"> <span class="datanum">
<template v-if="customerObj"> <template v-if="customerObj">
{{ customerObj.TodayCustomerCount }} {{ customerObj.TodayCustomerCount }}
...@@ -107,22 +132,22 @@ ...@@ -107,22 +132,22 @@
<span>较昨日</span> <span>较昨日</span>
<template v-if="customerObj"> <template v-if="customerObj">
<template v-if="customerObj.CustomerPercent > 0"> <template v-if="customerObj.CustomerPercent > 0">
<span class="green" style="margin:0 12px 0 5px;"> <span class="green" style="margin: 0 12px 0 5px">
{{ customerObj.CustomerPercent }}%</span {{ customerObj.CustomerPercent }}%</span
> >
</template> </template>
<template v-else> <template v-else>
<span class="red" style="margin-left: 5px;" <span class="red" style="margin-left: 5px"
>{{ customerObj.CustomerPercent }}%</span >{{ customerObj.CustomerPercent }}%</span
> >
</template> </template>
</template> </template>
</div> </div>
</div> </div>
<el-divider direction="vertical" style="margin: 0 12px;"></el-divider> <el-divider direction="vertical" style="margin: 0 12px"></el-divider>
<div class="data-items col NumCursorP" @click="goUrl(3)"> <div class="data-items col NumCursorP" @click="goUrl(3)">
<div>小程序激活数</div> <div>小程序激活数</div>
<div class="num" style="margin: 6px 0;"> <div class="num" style="margin: 6px 0">
<span class="datanum"> <span class="datanum">
<template v-if="customerObj"> <template v-if="customerObj">
{{ customerObj.TotalActivationCount }} {{ customerObj.TotalActivationCount }}
...@@ -133,10 +158,10 @@ ...@@ -133,10 +158,10 @@
<div class="text-info">&nbsp;</div> <div class="text-info">&nbsp;</div>
</div> </div>
<el-divider direction="vertical" style="margin: 0 12px;"></el-divider> <el-divider direction="vertical" style="margin: 0 12px"></el-divider>
<div class="data-items col NumCursorP" @click="goUrl(4)"> <div class="data-items col NumCursorP" @click="goUrl(4)">
<div>今日激活数</div> <div>今日激活数</div>
<div class="num" style="margin: 6px 0;"> <div class="num" style="margin: 6px 0">
<span class="datanum" <span class="datanum"
><template v-if="customerObj"> ><template v-if="customerObj">
{{ customerObj.TodayActivationCount }} {{ customerObj.TodayActivationCount }}
...@@ -148,12 +173,12 @@ ...@@ -148,12 +173,12 @@
<span>较昨日</span> <span>较昨日</span>
<template v-if="customerObj"> <template v-if="customerObj">
<template v-if="customerObj.ActivationPrecent > 0"> <template v-if="customerObj.ActivationPrecent > 0">
<span class="green" style="margin:0 12px 0 5px;"> <span class="green" style="margin: 0 12px 0 5px">
{{ customerObj.ActivationPrecent }}%</span {{ customerObj.ActivationPrecent }}%</span
> >
</template> </template>
<template v-else> <template v-else>
<span class="red" style="margin-left: 5px;"> <span class="red" style="margin-left: 5px">
{{ customerObj.ActivationPrecent }}%</span {{ customerObj.ActivationPrecent }}%</span
> >
</template> </template>
...@@ -163,21 +188,25 @@ ...@@ -163,21 +188,25 @@
</div> </div>
</div> </div>
<div class="card rounded big q-mt-md"> <div class="card rounded big q-mt-md">
<div style="margin: 0 12px;"> <div style="margin: 0 12px">
<div class="sub-title">客户数据走势</div> <div class="sub-title">客户数据走势</div>
<div class=""> <div class="">
<span class="dot"></span> <span class="dot"></span>
<span class="text-info">{{ parameters.dateRange.join("-") }}</span> <span class="text-info">{{ parameters.dateRange.join("-") }}</span>
</div> </div>
</div> </div>
<div style="height: 320px;"> <div style="height: 320px">
<Customer :chartData="customerObj" v-if="customerObj" :cusType="parameters.CusType"></Customer> <Customer
:chartData="customerObj"
v-if="customerObj"
:cusType="parameters.CusType"
></Customer>
</div> </div>
</div> </div>
<div class="sub-title q-my-md green">交易核心数据</div> <div class="sub-title q-my-md green">交易核心数据</div>
<div class="card rounded big"> <div class="card rounded big">
<div class="row items-center"> <div class="row items-center">
<div style="margin: 0 12px;" class="col"> <div style="margin: 0 12px" class="col">
<div class="sub-title">客户交易数据</div> <div class="sub-title">客户交易数据</div>
<div class=""> <div class="">
<span class="dot"></span> <span class="dot"></span>
...@@ -187,13 +216,14 @@ ...@@ -187,13 +216,14 @@
</div> </div>
</div> </div>
</div> </div>
<div class="q-mt-md row items-center"> <div class="q-mt-md " style="padding: 5px 10px;margin-bottom:12px;border-radius:10px;background:#EEE;color:#999;font-size:13px;display:inline-block">全平台数据</div>
<div class="row items-center">
<div class="data-items col NumCursorP" @click="goUrl(5)"> <div class="data-items col NumCursorP" @click="goUrl(5)">
<div>交易金额</div> <div>交易金额</div>
<div class="num" style="margin: 6px 0;"> <div class="num" style="margin: 6px 0">
<span class="datanum"> <span class="datanum">
<template v-if="customerObj"> <template v-if="customerObj">
{{customerObj.OrderTotalPreferPrice}} {{ customerObj.OrderTotalPreferPrice }}
</template> </template>
</span> </span>
<span></span> <span></span>
...@@ -201,45 +231,96 @@ ...@@ -201,45 +231,96 @@
</div> </div>
<el-divider <el-divider
direction="vertical" direction="vertical"
style="margin: 0 12px;height: 80%;" style="margin: 0 12px; height: 80%"
></el-divider> ></el-divider>
<div class="data-items col NumCursorP" @click="goUrl(6)"> <div class="data-items col NumCursorP" @click="goUrl(6)">
<div>收客人数</div> <div>收客人数</div>
<div class="num" style="margin: 6px 0;"> <div class="num" style="margin: 6px 0">
<span class="datanum"> <span class="datanum">
<template v-if="customerObj"> <template v-if="customerObj">
{{customerObj.OrderTotalGuestNum}} {{ customerObj.OrderTotalGuestNum }}
</template> </template>
</span> </span>
<span></span> <span></span>
</div> </div>
</div> </div>
<el-divider direction="vertical" style="margin: 0 12px;"></el-divider> <el-divider direction="vertical" style="margin: 0 12px"></el-divider>
<div class="data-items col NumCursorP" @click="goUrl(7)"> <div class="data-items col NumCursorP" @click="goUrl(7)">
<div>订单数</div> <div>订单数</div>
<div class="num" style="margin: 6px 0;"> <div class="num" style="margin: 6px 0">
<span class="datanum"> <span class="datanum">
<template v-if="customerObj"> <template v-if="customerObj">
{{customerObj.OrderTotalCount}} {{ customerObj.OrderTotalCount }}
</template> </template>
</span> </span>
<span></span> <span></span>
</div> </div>
</div> </div>
<el-divider direction="vertical" style="margin: 0 12px;"></el-divider> <el-divider direction="vertical" style="margin: 0 12px"></el-divider>
<div class="data-items col NumCursorP">
<div></div>
<div class="num" style="margin: 6px 0">
<span class="datanum"> </span>
<span></span>
</div>
</div>
</div>
<div class="q-mt-md" style="padding: 5px 10px;margin-bottom:12px;border-radius:10px;background:#EEE;color:#999;font-size:13px;display:inline-block">{{parameters.CusType==0?"旅小友":"和平国旅优选"}}平台数据</div>
<div class="row items-center">
<div class="data-items col NumCursorP" @click="goUrl(5)">
<div>小程序交易金额</div>
<div class="num" style="margin: 6px 0">
<span class="datanum">
<template v-if="customerObj">
{{ customerObj.OrderTotalPreferPriceM }}
</template>
</span>
<span></span>
</div>
</div>
<el-divider
direction="vertical"
style="margin: 0 12px; height: 80%"
></el-divider>
<div class="data-items col NumCursorP" @click="goUrl(6)">
<div>小程序收客人数</div>
<div class="num" style="margin: 6px 0">
<span class="datanum">
<template v-if="customerObj">
{{ customerObj.OrderTotalGuestNumeM }}
</template>
</span>
<span></span>
</div>
</div>
<el-divider direction="vertical" style="margin: 0 12px"></el-divider>
<div class="data-items col NumCursorP" @click="goUrl(7)">
<div>小程序订单数</div>
<div class="num" style="margin: 6px 0">
<span class="datanum">
<template v-if="customerObj">
{{ customerObj.OrderTotalCounteM }}
</template>
</span>
<span></span>
</div>
</div>
<el-divider direction="vertical" style="margin: 0 12px"></el-divider>
<div class="data-items col NumCursorP" @click="goUrl(8)"> <div class="data-items col NumCursorP" @click="goUrl(8)">
<div>用券订单数</div> <div>用券订单数</div>
<div class="num" style="margin: 6px 0;"> <div class="num" style="margin: 6px 0">
<span class="datanum"> <template v-if="customerObj"> <span class="datanum">
{{customerObj.OrderTotalUseCoupinCount}} <template v-if="customerObj">
</template></span> {{ customerObj.OrderTotalUseCoupinCount }}
</template></span
>
<span></span> <span></span>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div class="card rounded big q-mt-md"> <div class="card rounded big q-mt-md">
<div style="margin: 0 12px;"> <div style="margin: 0 12px">
<div class="sub-title">交易趋势图</div> <div class="sub-title">交易趋势图</div>
<div class=""> <div class="">
<span class="dot"></span> <span class="dot"></span>
...@@ -248,14 +329,18 @@ ...@@ -248,14 +329,18 @@
}}</span> }}</span>
</div> </div>
</div> </div>
<div style="height: 320px;"> <div style="height: 320px">
<Tradecount :chartData="customerObj" v-if="customerObj" :cusType="parameters.CusType"></Tradecount> <Tradecount
:chartData="customerObj"
v-if="customerObj"
:cusType="parameters.CusType"
></Tradecount>
</div> </div>
</div> </div>
<div class="sub-title q-my-md green">访问核心数据</div> <div class="sub-title q-my-md green">访问核心数据</div>
<div class="card rounded big"> <div class="card rounded big">
<div style="margin: 0 12px;"> <div style="margin: 0 12px">
<div class="sub-title">用户活跃概况</div> <div class="sub-title">用户活跃概况</div>
<div class=""> <div class="">
<span class="dot"></span> <span class="dot"></span>
...@@ -267,7 +352,7 @@ ...@@ -267,7 +352,7 @@
<div class="q-mt-md row items-center"> <div class="q-mt-md row items-center">
<div class="data-items col"> <div class="data-items col">
<div>小程序累计用户数</div> <div>小程序累计用户数</div>
<div class="num" style="margin: 6px 0;"> <div class="num" style="margin: 6px 0">
<span class="datanum">{{ baseWechatData.Visit_Total }}</span> <span class="datanum">{{ baseWechatData.Visit_Total }}</span>
<span></span> <span></span>
</div> </div>
...@@ -276,9 +361,9 @@ ...@@ -276,9 +361,9 @@
<span <span
:class="{ :class="{
red: baseWechatData.Visit_TotalYRate < 0, red: baseWechatData.Visit_TotalYRate < 0,
green: baseWechatData.Visit_TotalYRate >= 0 green: baseWechatData.Visit_TotalYRate >= 0,
}" }"
style="margin:0 12px 0 5px;" style="margin: 0 12px 0 5px"
>{{ baseWechatData.Visit_TotalYRate > 0 ? "+" : "" }} >{{ baseWechatData.Visit_TotalYRate > 0 ? "+" : "" }}
{{ baseWechatData.Visit_TotalYRate }}%</span {{ baseWechatData.Visit_TotalYRate }}%</span
> >
...@@ -286,9 +371,9 @@ ...@@ -286,9 +371,9 @@
<span <span
:class="{ :class="{
red: baseWechatData.Visit_TotalSRate < 0, red: baseWechatData.Visit_TotalSRate < 0,
green: baseWechatData.Visit_TotalSRate >= 0 green: baseWechatData.Visit_TotalSRate >= 0,
}" }"
style="margin:0 12px 0 5px;" style="margin: 0 12px 0 5px"
>{{ baseWechatData.Visit_TotalSRate > 0 ? "+" : "" }} >{{ baseWechatData.Visit_TotalSRate > 0 ? "+" : "" }}
{{ baseWechatData.Visit_TotalSRate }}%</span {{ baseWechatData.Visit_TotalSRate }}%</span
> >
...@@ -296,11 +381,11 @@ ...@@ -296,11 +381,11 @@
</div> </div>
<el-divider <el-divider
direction="vertical" direction="vertical"
style="margin: 0 12px;height: 80%;" style="margin: 0 12px; height: 80%"
></el-divider> ></el-divider>
<div class="data-items col"> <div class="data-items col">
<div>日访问人数</div> <div>日访问人数</div>
<div class="num" style="margin: 6px 0;"> <div class="num" style="margin: 6px 0">
<span class="datanum">{{ baseWechatData.Visit_UV }}</span> <span class="datanum">{{ baseWechatData.Visit_UV }}</span>
<span></span> <span></span>
</div> </div>
...@@ -309,9 +394,9 @@ ...@@ -309,9 +394,9 @@
<span <span
:class="{ :class="{
red: baseWechatData.Visit_UVYRate < 0, red: baseWechatData.Visit_UVYRate < 0,
green: baseWechatData.Visit_UVYRate >= 0 green: baseWechatData.Visit_UVYRate >= 0,
}" }"
style="margin:0 12px 0 5px;" style="margin: 0 12px 0 5px"
>{{ baseWechatData.Visit_UVYRate > 0 ? "+" : "" }} >{{ baseWechatData.Visit_UVYRate > 0 ? "+" : "" }}
{{ baseWechatData.Visit_UVYRate }}%</span {{ baseWechatData.Visit_UVYRate }}%</span
> >
...@@ -319,18 +404,18 @@ ...@@ -319,18 +404,18 @@
<span <span
:class="{ :class="{
red: baseWechatData.Visit_UVSRate < 0, red: baseWechatData.Visit_UVSRate < 0,
green: baseWechatData.Visit_UVSRate >= 0 green: baseWechatData.Visit_UVSRate >= 0,
}" }"
style="margin:0 12px 0 5px;" style="margin: 0 12px 0 5px"
>{{ baseWechatData.Visit_UVSRate > 0 ? "+" : "" }} >{{ baseWechatData.Visit_UVSRate > 0 ? "+" : "" }}
{{ baseWechatData.Visit_UVSRate }}%</span {{ baseWechatData.Visit_UVSRate }}%</span
> >
</div> </div>
</div> </div>
<el-divider direction="vertical" style="margin: 0 12px;"></el-divider> <el-divider direction="vertical" style="margin: 0 12px"></el-divider>
<div class="data-items col"> <div class="data-items col">
<div>日打开次数</div> <div>日打开次数</div>
<div class="num" style="margin: 6px 0;"> <div class="num" style="margin: 6px 0">
<span class="datanum">{{ baseWechatData.Session_CNT }}</span> <span class="datanum">{{ baseWechatData.Session_CNT }}</span>
<span></span> <span></span>
</div> </div>
...@@ -339,9 +424,9 @@ ...@@ -339,9 +424,9 @@
<span <span
:class="{ :class="{
red: baseWechatData.Session_CNTYRate < 0, red: baseWechatData.Session_CNTYRate < 0,
green: baseWechatData.Session_CNTYRate >= 0 green: baseWechatData.Session_CNTYRate >= 0,
}" }"
style="margin:0 12px 0 5px;" style="margin: 0 12px 0 5px"
>{{ baseWechatData.Session_CNTYRate > 0 ? "+" : "" }} >{{ baseWechatData.Session_CNTYRate > 0 ? "+" : "" }}
{{ baseWechatData.Session_CNTYRate }}%</span {{ baseWechatData.Session_CNTYRate }}%</span
> >
...@@ -349,19 +434,19 @@ ...@@ -349,19 +434,19 @@
<span <span
:class="{ :class="{
red: baseWechatData.Session_CNTSRate < 0, red: baseWechatData.Session_CNTSRate < 0,
green: baseWechatData.Session_CNTSRate >= 0 green: baseWechatData.Session_CNTSRate >= 0,
}" }"
style="margin:0 12px 0 5px;" style="margin: 0 12px 0 5px"
>{{ baseWechatData.Session_CNTSRate > 0 ? "+" : "" }} >{{ baseWechatData.Session_CNTSRate > 0 ? "+" : "" }}
{{ baseWechatData.Session_CNTSRate }}%</span {{ baseWechatData.Session_CNTSRate }}%</span
> >
</div> </div>
</div> </div>
<el-divider direction="vertical" style="margin: 0 12px;"></el-divider> <el-divider direction="vertical" style="margin: 0 12px"></el-divider>
<div class="data-items col"> <div class="data-items col">
<div>日转发人数</div> <div>日转发人数</div>
<div class="num" style="margin: 6px 0;"> <div class="num" style="margin: 6px 0">
<span class="datanum">{{ baseWechatData.Share_UV }}</span> <span class="datanum">{{ baseWechatData.Share_UV }}</span>
<span></span> <span></span>
</div> </div>
...@@ -370,9 +455,9 @@ ...@@ -370,9 +455,9 @@
<span <span
:class="{ :class="{
red: baseWechatData.Share_UVYRate < 0, red: baseWechatData.Share_UVYRate < 0,
green: baseWechatData.Share_UVYRate >= 0 green: baseWechatData.Share_UVYRate >= 0,
}" }"
style="margin:0 12px 0 5px;" style="margin: 0 12px 0 5px"
>{{ baseWechatData.Share_UVYRate > 0 ? "+" : "" }} >{{ baseWechatData.Share_UVYRate > 0 ? "+" : "" }}
{{ baseWechatData.Share_UVYRate }}%</span {{ baseWechatData.Share_UVYRate }}%</span
> >
...@@ -380,9 +465,9 @@ ...@@ -380,9 +465,9 @@
<span <span
:class="{ :class="{
red: baseWechatData.Share_UVSRate < 0, red: baseWechatData.Share_UVSRate < 0,
green: baseWechatData.Share_UVSRate >= 0 green: baseWechatData.Share_UVSRate >= 0,
}" }"
style="margin:0 12px 0 5px;" style="margin: 0 12px 0 5px"
>{{ baseWechatData.Share_UVSRate > 0 ? "+" : "" }} >{{ baseWechatData.Share_UVSRate > 0 ? "+" : "" }}
{{ baseWechatData.Share_UVSRate }}%</span {{ baseWechatData.Share_UVSRate }}%</span
> >
...@@ -392,17 +477,19 @@ ...@@ -392,17 +477,19 @@
</div> </div>
<div class="q-mt-md row items-center"> <div class="q-mt-md row items-center">
<div class="card rounded big col q-mr-md"> <div class="card rounded big col q-mr-md">
<div style="margin: 0 12px;"> <div style="margin: 0 12px">
<div class="sub-title">新增用户概况</div> <div class="sub-title">新增用户概况</div>
<div class=""> <div class="">
<span class="dot"></span> <span class="dot"></span>
<span class="text-info">数据更新:{{ parameters.dateRange[1] }}</span> <span class="text-info"
>数据更新:{{ parameters.dateRange[1] }}</span
>
</div> </div>
</div> </div>
<div class="q-mt-md row items-center"> <div class="q-mt-md row items-center">
<div class="data-items col"> <div class="data-items col">
<div>日新增用户</div> <div>日新增用户</div>
<div class="num" style="margin: 6px 0;"> <div class="num" style="margin: 6px 0">
<span class="datanum">{{ baseWechatData.Visit_UV_New }}</span> <span class="datanum">{{ baseWechatData.Visit_UV_New }}</span>
<span></span> <span></span>
</div> </div>
...@@ -411,9 +498,9 @@ ...@@ -411,9 +498,9 @@
<span <span
:class="{ :class="{
red: baseWechatData.Visit_UV_NewYRate < 0, red: baseWechatData.Visit_UV_NewYRate < 0,
green: baseWechatData.Visit_UV_NewYRate >= 0 green: baseWechatData.Visit_UV_NewYRate >= 0,
}" }"
style="margin:0 12px 0 5px;" style="margin: 0 12px 0 5px"
>{{ baseWechatData.Visit_UV_NewYRate > 0 ? "+" : "" }} >{{ baseWechatData.Visit_UV_NewYRate > 0 ? "+" : "" }}
{{ baseWechatData.Visit_UV_NewYRate }}%</span {{ baseWechatData.Visit_UV_NewYRate }}%</span
> >
...@@ -421,9 +508,9 @@ ...@@ -421,9 +508,9 @@
<span <span
:class="{ :class="{
red: baseWechatData.Visit_UV_NewSRate < 0, red: baseWechatData.Visit_UV_NewSRate < 0,
green: baseWechatData.Visit_UV_NewSRate >= 0 green: baseWechatData.Visit_UV_NewSRate >= 0,
}" }"
style="margin:0 12px 0 5px;" style="margin: 0 12px 0 5px"
>{{ baseWechatData.Visit_UV_NewSRate > 0 ? "+" : "" }} >{{ baseWechatData.Visit_UV_NewSRate > 0 ? "+" : "" }}
{{ baseWechatData.Visit_UV_NewSRate }}%</span {{ baseWechatData.Visit_UV_NewSRate }}%</span
> >
...@@ -431,11 +518,11 @@ ...@@ -431,11 +518,11 @@
</div> </div>
<el-divider <el-divider
direction="vertical" direction="vertical"
style="margin: 0 12px;height: 80%;" style="margin: 0 12px; height: 80%"
></el-divider> ></el-divider>
<div class="data-items col"> <div class="data-items col">
<div>人均停留时长</div> <div>人均停留时长</div>
<div class="num" style="margin: 6px 0;"> <div class="num" style="margin: 6px 0">
<span class="datanum">{{ baseWechatData.Stay_Time_UV }}</span> <span class="datanum">{{ baseWechatData.Stay_Time_UV }}</span>
<span></span> <span></span>
</div> </div>
...@@ -444,9 +531,9 @@ ...@@ -444,9 +531,9 @@
<span <span
:class="{ :class="{
red: baseWechatData.Stay_Time_UVYRate < 0, red: baseWechatData.Stay_Time_UVYRate < 0,
green: baseWechatData.Stay_Time_UVYRate >= 0 green: baseWechatData.Stay_Time_UVYRate >= 0,
}" }"
style="margin:0 12px 0 5px;" style="margin: 0 12px 0 5px"
>{{ baseWechatData.Stay_Time_UVYRate > 0 ? "+" : "" }} >{{ baseWechatData.Stay_Time_UVYRate > 0 ? "+" : "" }}
{{ baseWechatData.Stay_Time_UVYRate }}%</span {{ baseWechatData.Stay_Time_UVYRate }}%</span
> >
...@@ -454,9 +541,9 @@ ...@@ -454,9 +541,9 @@
<span <span
:class="{ :class="{
red: baseWechatData.Stay_Time_UVSRate < 0, red: baseWechatData.Stay_Time_UVSRate < 0,
green: baseWechatData.Stay_Time_UVSRate >= 0 green: baseWechatData.Stay_Time_UVSRate >= 0,
}" }"
style="margin:0 12px 0 5px;" style="margin: 0 12px 0 5px"
>{{ baseWechatData.Stay_Time_UVSRate > 0 ? "+" : "" }} >{{ baseWechatData.Stay_Time_UVSRate > 0 ? "+" : "" }}
{{ baseWechatData.Stay_Time_UVSRate }}%</span {{ baseWechatData.Stay_Time_UVSRate }}%</span
> >
...@@ -465,7 +552,7 @@ ...@@ -465,7 +552,7 @@
</div> </div>
</div> </div>
<div class="card rounded big col"> <div class="card rounded big col">
<div style="margin: 0 12px;"> <div style="margin: 0 12px">
<div class="sub-title">小程序留存概况</div> <div class="sub-title">小程序留存概况</div>
<div class=""> <div class="">
<span class="dot"></span> <span class="dot"></span>
...@@ -477,7 +564,7 @@ ...@@ -477,7 +564,7 @@
<div class="q-mt-md row items-center"> <div class="q-mt-md row items-center">
<div class="data-items col"> <div class="data-items col">
<div>新增用户留存</div> <div>新增用户留存</div>
<div class="num" style="margin: 6px 0;"> <div class="num" style="margin: 6px 0">
<span class="datanum">{{ baseWechatData.NewVisitUV }}</span> <span class="datanum">{{ baseWechatData.NewVisitUV }}</span>
<span></span> <span></span>
</div> </div>
...@@ -486,9 +573,9 @@ ...@@ -486,9 +573,9 @@
<span <span
:class="{ :class="{
red: baseWechatData.NewVisitUVYRate < 0, red: baseWechatData.NewVisitUVYRate < 0,
green: baseWechatData.NewVisitUVYRate >= 0 green: baseWechatData.NewVisitUVYRate >= 0,
}" }"
style="margin:0 12px 0 5px;" style="margin: 0 12px 0 5px"
>{{ baseWechatData.NewVisitUVYRate > 0 ? "+" : "" }} >{{ baseWechatData.NewVisitUVYRate > 0 ? "+" : "" }}
{{ baseWechatData.NewVisitUVYRate }}%</span {{ baseWechatData.NewVisitUVYRate }}%</span
> >
...@@ -496,9 +583,9 @@ ...@@ -496,9 +583,9 @@
<span <span
:class="{ :class="{
red: baseWechatData.NewVisitUVSRate < 0, red: baseWechatData.NewVisitUVSRate < 0,
green: baseWechatData.NewVisitUVSRate >= 0 green: baseWechatData.NewVisitUVSRate >= 0,
}" }"
style="margin:0 12px 0 5px;" style="margin: 0 12px 0 5px"
>{{ baseWechatData.NewVisitUVSRate > 0 ? "+" : "" }} >{{ baseWechatData.NewVisitUVSRate > 0 ? "+" : "" }}
{{ baseWechatData.NewVisitUVSRate }}%</span {{ baseWechatData.NewVisitUVSRate }}%</span
> >
...@@ -506,11 +593,11 @@ ...@@ -506,11 +593,11 @@
</div> </div>
<el-divider <el-divider
direction="vertical" direction="vertical"
style="margin: 0 12px;height: 80%;" style="margin: 0 12px; height: 80%"
></el-divider> ></el-divider>
<div class="data-items col"> <div class="data-items col">
<div>活跃用户留存数</div> <div>活跃用户留存数</div>
<div class="num" style="margin: 6px 0;"> <div class="num" style="margin: 6px 0">
<span class="datanum">{{ baseWechatData.VisitUV }}</span> <span class="datanum">{{ baseWechatData.VisitUV }}</span>
<span></span> <span></span>
</div> </div>
...@@ -519,9 +606,9 @@ ...@@ -519,9 +606,9 @@
<span <span
:class="{ :class="{
red: baseWechatData.VisitUVYRate < 0, red: baseWechatData.VisitUVYRate < 0,
green: baseWechatData.VisitUVYRate >= 0 green: baseWechatData.VisitUVYRate >= 0,
}" }"
style="margin:0 12px 0 5px;" style="margin: 0 12px 0 5px"
>{{ baseWechatData.VisitUVYRate > 0 ? "+" : "" }} >{{ baseWechatData.VisitUVYRate > 0 ? "+" : "" }}
{{ baseWechatData.VisitUVYRate }}%</span {{ baseWechatData.VisitUVYRate }}%</span
> >
...@@ -529,9 +616,9 @@ ...@@ -529,9 +616,9 @@
<span <span
:class="{ :class="{
red: baseWechatData.VisitUVSRate < 0, red: baseWechatData.VisitUVSRate < 0,
green: baseWechatData.VisitUVSRate >= 0 green: baseWechatData.VisitUVSRate >= 0,
}" }"
style="margin:0 12px 0 5px;" style="margin: 0 12px 0 5px"
>{{ baseWechatData.VisitUVSRate > 0 ? "+" : "" }} >{{ baseWechatData.VisitUVSRate > 0 ? "+" : "" }}
{{ baseWechatData.VisitUVSRate }}%</span {{ baseWechatData.VisitUVSRate }}%</span
> >
...@@ -542,7 +629,7 @@ ...@@ -542,7 +629,7 @@
</div> </div>
<div class="card rounded big q-mt-md"> <div class="card rounded big q-mt-md">
<div style="margin: 0 12px; " class="row items-center"> <div style="margin: 0 12px" class="row items-center">
<div class="col"> <div class="col">
<div class="sub-title">访问核心指标趋势</div> <div class="sub-title">访问核心指标趋势</div>
<div class=""> <div class="">
...@@ -551,25 +638,37 @@ ...@@ -551,25 +638,37 @@
}}</span> }}</span>
</div> </div>
</div> </div>
<el-select v-model="coreId" style="width: 140px; text-align: right;" @change="formatCoreTrend()"> <el-select
v-model="coreId"
style="width: 140px; text-align: right"
@change="formatCoreTrend()"
>
<el-option <el-option
v-for="(x, i) in coreLists" v-for="(x, i) in coreLists"
:key="i" :key="i"
:label="x.Name" :label="x.Name"
:value="x.Id" :value="x.Id"
></el-option> ></el-option>
</el-select> </el-select>
</div> </div>
<div class="text-small q-my-md" style="padding:0 12px;" v-if="currentCoreObj">平均:{{ currentCoreObj.avg }}{{ currentCoreObj.unit }}</div> <div
<div style="height: 320px; padding:0 12px"> class="text-small q-my-md"
<Coreview :chart-data="currentCoreObj" v-if="currentCoreObj"></Coreview> style="padding: 0 12px"
v-if="currentCoreObj"
>
平均:{{ currentCoreObj.avg }}{{ currentCoreObj.unit }}
</div>
<div style="height: 320px; padding: 0 12px">
<Coreview
:chart-data="currentCoreObj"
v-if="currentCoreObj"
></Coreview>
</div> </div>
</div> </div>
<div class="q-mt-md row"> <div class="q-mt-md row">
<div class="card rounded big col"> <div class="card rounded big col">
<div style="margin: 0 12px; " class="row items-center"> <div style="margin: 0 12px" class="row items-center">
<div class="col"> <div class="col">
<div class="sub-title">页面访问Top10</div> <div class="sub-title">页面访问Top10</div>
<div class=""> <div class="">
...@@ -578,7 +677,11 @@ ...@@ -578,7 +677,11 @@
}}</span> }}</span>
</div> </div>
</div> </div>
<el-select v-model="metricsId" style="width: 140px;" @change="formatPageData"> <el-select
v-model="metricsId"
style="width: 140px"
@change="formatPageData"
>
<el-option <el-option
v-for="(x, i) in metrics" v-for="(x, i) in metrics"
:key="i" :key="i"
...@@ -587,12 +690,15 @@ ...@@ -587,12 +690,15 @@
></el-option> ></el-option>
</el-select> </el-select>
</div> </div>
<div style="height: 320px; padding:0 12px;" class="q-mt-md"> <div style="height: 320px; padding: 0 12px" class="q-mt-md">
<Pagecount :chart-data="currentPageObj" v-if="currentPageObj"></Pagecount> <Pagecount
:chart-data="currentPageObj"
v-if="currentPageObj"
></Pagecount>
</div> </div>
</div> </div>
<div class="card rounded big col q-ml-md"> <div class="card rounded big col q-ml-md">
<div style="margin: 0 12px; " class="row items-center"> <div style="margin: 0 12px" class="row items-center">
<div class="col"> <div class="col">
<div class="sub-title">客户分布占比</div> <div class="sub-title">客户分布占比</div>
<div class=""> <div class="">
...@@ -601,7 +707,11 @@ ...@@ -601,7 +707,11 @@
}}</span> }}</span>
</div> </div>
</div> </div>
<el-select v-model="areaId" style="width: 140px;" @change="formatAreaData"> <el-select
v-model="areaId"
style="width: 140px"
@change="formatAreaData"
>
<el-option <el-option
v-for="(x, i) in areas" v-for="(x, i) in areas"
:key="i" :key="i"
...@@ -610,8 +720,11 @@ ...@@ -610,8 +720,11 @@
></el-option> ></el-option>
</el-select> </el-select>
</div> </div>
<div style="height: 320px; padding:0 12px;" class="q-mt-md"> <div style="height: 320px; padding: 0 12px" class="q-mt-md">
<Citiescount v-if="currentAreaObj" :chart-data="currentAreaObj"></Citiescount> <Citiescount
v-if="currentAreaObj"
:chart-data="currentAreaObj"
></Citiescount>
</div> </div>
</div> </div>
</div> </div>
...@@ -648,7 +761,7 @@ export default { ...@@ -648,7 +761,7 @@ export default {
start.setTime(start.getTime() - 3600 * 1000 * 24 * 8); start.setTime(start.getTime() - 3600 * 1000 * 24 * 8);
end.setTime(end.getTime()); end.setTime(end.getTime());
picker.$emit("pick", [start, end]); picker.$emit("pick", [start, end]);
} },
}, },
{ {
text: "最近一个月", text: "最近一个月",
...@@ -658,7 +771,7 @@ export default { ...@@ -658,7 +771,7 @@ export default {
start.setTime(start.getTime() - 3600 * 1000 * 24 * 31); start.setTime(start.getTime() - 3600 * 1000 * 24 * 31);
end.setTime(end.getTime()); end.setTime(end.getTime());
picker.$emit("pick", [start, end]); picker.$emit("pick", [start, end]);
} },
}, },
{ {
text: "最近三个月", text: "最近三个月",
...@@ -668,30 +781,30 @@ export default { ...@@ -668,30 +781,30 @@ export default {
start.setTime(start.getTime() - 3600 * 1000 * 24 * 91); start.setTime(start.getTime() - 3600 * 1000 * 24 * 91);
end.setTime(end.getTime()); end.setTime(end.getTime());
picker.$emit("pick", [start, end]); picker.$emit("pick", [start, end]);
} },
} },
], ],
disabledDate(time) { disabledDate(time) {
return time.getTime() > new Date(Date.now() ); return time.getTime() > new Date(Date.now());
} },
}, },
menus: [ menus: [
{ {
title: "客户数据", title: "客户数据",
path: "coreData" path: "coreData",
}, },
{ {
title: "交易数据", title: "交易数据",
path: "realTimeData" path: "realTimeData",
}, },
{ {
title: "访问分析", title: "访问分析",
path: "accessAnalysis" path: "accessAnalysis",
}, },
{ {
title: "产品统计", title: "产品统计",
path: "productStatistics" path: "productStatistics",
} },
], ],
branchs: [], branchs: [],
parameters: { parameters: {
...@@ -699,10 +812,10 @@ export default { ...@@ -699,10 +812,10 @@ export default {
dateRange: [], dateRange: [],
StartDate: "", StartDate: "",
EndDate: "", EndDate: "",
RB_Department_Id:null, RB_Department_Id: null,
empIdList:[], empIdList: [],
empId:"", empId: "",
CusType:0,//客户类型(0-同行(旅小友小程序),1-直客(和平国旅小程序)) CusType: 0, //客户类型(0-同行(旅小友小程序),1-直客(和平国旅小程序))
}, },
normalizer(node) { normalizer(node) {
var obj = { var obj = {
...@@ -714,75 +827,75 @@ export default { ...@@ -714,75 +827,75 @@ export default {
} }
return obj; return obj;
}, },
departmentList:[],//部门列表 departmentList: [], //部门列表
empList:[],//员工列表 empList: [], //员工列表
coreId: 1, coreId: 1,
coreLists: [ coreLists: [
{ {
Id: 1, Id: 1,
value: "Visit_Total", value: "Visit_Total",
Name: "累计用户数", Name: "累计用户数",
Unit:'人' Unit: "人",
}, },
{ {
Id: 2, Id: 2,
value:"Visit_UV", value: "Visit_UV",
Name: "日访问人数", Name: "日访问人数",
Unit:'人' Unit: "人",
}, },
{ {
Id: 3, Id: 3,
value: "Session_CNT", value: "Session_CNT",
Name: "日打开次数", Name: "日打开次数",
Unit:'次' Unit: "次",
}, },
{ {
Id: 4, Id: 4,
value: "Share_UV", value: "Share_UV",
Name: "转发人数", Name: "转发人数",
Unit:'人' Unit: "人",
}, },
{ {
Id: 5, Id: 5,
value: "Visit_UV_New", value: "Visit_UV_New",
Name: "日新增用户", Name: "日新增用户",
Unit:'人' Unit: "人",
}, },
{ {
Id: 9, Id: 9,
value: "VisitUV", value: "VisitUV",
Name: "活跃日留存", Name: "活跃日留存",
Unit:'人' Unit: "人",
}, },
{ {
Id: 10, Id: 10,
value: "NewVisitUV", value: "NewVisitUV",
Name: "新增日留存", Name: "新增日留存",
Unit:'人' Unit: "人",
}, },
{ {
Id: 11, Id: 11,
value: "Stay_Time_UV", value: "Stay_Time_UV",
Name: "人均停留时长", Name: "人均停留时长",
Unit:'秒' Unit: "秒",
}, },
{ {
Id: 12, Id: 12,
value: "Share_UV", value: "Share_UV",
Name: "转发次数", Name: "转发次数",
Unit:'次' Unit: "次",
}, },
{ {
Id: 13, Id: 13,
value: "Visit_Depth", value: "Visit_Depth",
Name: "平均访问深度", Name: "平均访问深度",
Unit:'层' Unit: "层",
}, },
{ {
Id: 14, Id: 14,
value: "Stay_Time_Session", value: "Stay_Time_Session",
Name: "次均停留时长", Name: "次均停留时长",
Unit:'秒' Unit: "秒",
}, },
], ],
metrics: [ metrics: [
...@@ -790,86 +903,85 @@ export default { ...@@ -790,86 +903,85 @@ export default {
id: 1, id: 1,
name: "访问次数", name: "访问次数",
value: "PageVisitPV", value: "PageVisitPV",
unit:'次' unit: "次",
}, },
{ {
id: 2, id: 2,
name: "访问人数", name: "访问人数",
value: 'PageVisitUV', value: "PageVisitUV",
unit:'人' unit: "人",
}, },
{ {
id: 3, id: 3,
name: "次均停留时长", name: "次均停留时长",
value: "PageStaytimePv", value: "PageStaytimePv",
unit:'秒' unit: "秒",
}, },
{ {
id: 4, id: 4,
name: "进入页次数", name: "进入页次数",
value:'EntrypagePv', value: "EntrypagePv",
unit:'次' unit: "次",
}, },
{ {
id: 5, id: 5,
name: "退出页次数", name: "退出页次数",
value:'ExitpagePv', value: "ExitpagePv",
unit:'次' unit: "次",
}, },
{ {
id: 6, id: 6,
name: "转发次数", name: "转发次数",
value: 'PageSharePv', value: "PageSharePv",
unit:'次' unit: "次",
}, },
{ {
id: 7, id: 7,
name: "转发人数", name: "转发人数",
value:'PageShareUV', value: "PageShareUV",
unit:'人' unit: "人",
} },
], ],
metricsId: 2, metricsId: 2,
areas: [ areas: [
{ {
Id: 1, Id: 1,
Name: "省份", Name: "省份",
Value: 'province' Value: "province",
}, },
{ {
Id: 2, Id: 2,
Name: "城市", Name: "城市",
Value: 'city' Value: "city",
} },
], ],
platforms: [ platforms: [
{ {
Id: 0, Id: 0,
Name: "同业" Name: "同业",
}, },
{ {
Id: 1, Id: 1,
Name: "直客" Name: "直客",
} },
], ],
platformId: 1, platformId: 1,
areaId: 1, areaId: 1,
customerObj: null, customerObj: null,
baseWechatData: {}, baseWechatData: {},
trendData:{}, trendData: {},
currentCoreObj:null, currentCoreObj: null,
pageData:{}, pageData: {},
currentPageObj:null, currentPageObj: null,
areaData:{}, areaData: {},
currentAreaObj:null, currentAreaObj: null,
userInfo:{}, userInfo: {},
}; };
}, },
created() { created() {
this.userInfo=this.getLocalStorage(); this.userInfo = this.getLocalStorage();
if(this.userInfo.RB_Branch_id!=0&&this.userInfo.RB_Branch_id!=49) if (this.userInfo.RB_Branch_id != 0 && this.userInfo.RB_Branch_id != 49) {
{ this.parameters.branchId = this.userInfo.RB_Branch_id;
this.parameters.branchId=this.userInfo.RB_Branch_id;
} }
this.getCompanyList(); this.getCompanyList();
this.getDepartment(); this.getDepartment();
...@@ -880,65 +992,63 @@ export default { ...@@ -880,65 +992,63 @@ export default {
end.setTime(end.getTime()); end.setTime(end.getTime());
this.parameters.dateRange = [ this.parameters.dateRange = [
start.toLocaleString().split(" ")[0], start.toLocaleString().split(" ")[0],
end.toLocaleString().split(" ")[0] end.toLocaleString().split(" ")[0],
]; ];
this.getHomeChat(); this.getHomeChat();
this.getCustomerStatic(); this.getCustomerStatic();
this.getPageData() this.getPageData();
this.getAreaData() this.getAreaData();
}, },
mounted() {}, mounted() {},
methods: { methods: {
goUrl(type) { goUrl(type) {
if(this.parameters.CusType==1&&(type==1||type==2)) { if (this.parameters.CusType == 1 && (type == 1 || type == 2)) {
var CStartTime = "";
var CStartTime=""; var CEndDate = "";
var CEndDate=""; if (type == 2) {
if(type==2){
// 创建当前日期对象 // 创建当前日期对象
const today = new Date(); const today = new Date();
// 获取年份、月份和日期,并补零处理 // 获取年份、月份和日期,并补零处理
const year = today.getFullYear(); const year = today.getFullYear();
const month = String(today.getMonth() + 1).padStart(2, '0'); // 月份从0开始,需加1 const month = String(today.getMonth() + 1).padStart(2, "0"); // 月份从0开始,需加1
const day = String(today.getDate()).padStart(2, '0'); const day = String(today.getDate()).padStart(2, "0");
// 组合成YYYY-MM-DD格式 // 组合成YYYY-MM-DD格式
const formattedDate = `${year}/${month}/${day}`; const formattedDate = `${year}/${month}/${day}`;
console.log(this.parameters.dateRange[0],"66666"); // 输出例如:2023-10-05 console.log(this.parameters.dateRange[0], "66666"); // 输出例如:2023-10-05
var CStartTime=formattedDate;//this.parameters.dateRange[0]; var CStartTime = formattedDate; //this.parameters.dateRange[0];
var CEndDate=formattedDate;//this.parameters.dateRange[1]; var CEndDate = formattedDate; //this.parameters.dateRange[1];
} }
let query= { let query = {
CStartTime: CStartTime, CStartTime: CStartTime,
CEndDate: CEndDate, CEndDate: CEndDate,
// EnterTime:this.parameters, // EnterTime:this.parameters,
BranchId: this.parameters.branchId+"", BranchId: this.parameters.branchId + "",
// RB_Department_Id:this.parameters.RB_Department_Id, // RB_Department_Id:this.parameters.RB_Department_Id,
EnterID:this.parameters.empId, EnterID: this.parameters.empId,
blank: "y", blank: "y",
} };
this.OpenNewPage('/directCustomerList',query); this.OpenNewPage("/directCustomerList", query);
} } else {
else{ let query = {
let query= {
CStartDate: this.parameters.dateRange[0], CStartDate: this.parameters.dateRange[0],
CEndDate: this.parameters.dateRange[1], CEndDate: this.parameters.dateRange[1],
BranchId: this.parameters.branchId, BranchId: this.parameters.branchId,
RB_Department_Id:this.parameters.RB_Department_Id, RB_Department_Id: this.parameters.RB_Department_Id,
EmployeeId:this.parameters.empId, EmployeeId: this.parameters.empId,
blank: "y", blank: "y",
} };
if(this.parameters.CusType==0){ if (this.parameters.CusType == 0) {
this.OpenNewPage('/salesVolumeRank',query); this.OpenNewPage("/salesVolumeRank", query);
} }
} }
}, },
changeDepart(node, instanceId){ changeDepart(node, instanceId) {
this.parameters.RB_Department_Id=node.DepartmentId; this.parameters.RB_Department_Id = node.DepartmentId;
this.parameters.empIdList=[]; this.parameters.empIdList = [];
this.parameters.empId=""; this.parameters.empId = "";
this.getEmpList(); this.getEmpList();
this.handleDateChange(); this.handleDateChange();
}, },
...@@ -949,8 +1059,8 @@ console.log(this.parameters.dateRange[0],"66666"); // 输出例如:2023-10-05 ...@@ -949,8 +1059,8 @@ console.log(this.parameters.dateRange[0],"66666"); // 输出例如:2023-10-05
RB_Branch_Id: "-1", RB_Branch_Id: "-1",
Status: "0", Status: "0",
}; };
this.departmentList=[]; this.departmentList = [];
postMsg.RB_Branch_Id=this.parameters.branchId; postMsg.RB_Branch_Id = this.parameters.branchId;
this.apipost( this.apipost(
"admin_Get_GetDepartmentTreeForReceiveQuery", "admin_Get_GetDepartmentTreeForReceiveQuery",
postMsg, postMsg,
...@@ -960,23 +1070,22 @@ console.log(this.parameters.dateRange[0],"66666"); // 输出例如:2023-10-05 ...@@ -960,23 +1070,22 @@ console.log(this.parameters.dateRange[0],"66666"); // 输出例如:2023-10-05
} else { } else {
this.Error(res.data.message); this.Error(res.data.message);
} }
}); }
);
}, },
getEmpList(){ getEmpList() {
this.empList=[]; this.empList = [];
let userMsg = { let userMsg = {
RB_Group_id: this.userInfo.RB_Group_id, RB_Group_id: this.userInfo.RB_Group_id,
RB_Branch_id: "-1", RB_Branch_id: "-1",
departmentId: "0", departmentId: "0",
IsLeave: "-1", IsLeave: "-1",
}; };
if(this.parameters.RB_Department_Id){ if (this.parameters.RB_Department_Id) {
userMsg.departmentId=this.parameters.RB_Department_Id; userMsg.departmentId = this.parameters.RB_Department_Id;
} }
userMsg.RB_Branch_id=this.parameters.branchId; userMsg.RB_Branch_id = this.parameters.branchId;
this.apipost( this.apipost("app_get_employeeInfo_v2", userMsg, (res) => {
"app_get_employeeInfo_v2", userMsg,
(res) => {
if (res.data.resultCode == 1) { if (res.data.resultCode == 1) {
this.empList = res.data.data; this.empList = res.data.data;
} }
...@@ -985,8 +1094,8 @@ console.log(this.parameters.dateRange[0],"66666"); // 输出例如:2023-10-05 ...@@ -985,8 +1094,8 @@ console.log(this.parameters.dateRange[0],"66666"); // 输出例如:2023-10-05
handleDateChange() { handleDateChange() {
this.getCustomerStatic(); this.getCustomerStatic();
this.getHomeChat(); this.getHomeChat();
this.getPageData() this.getPageData();
this.getAreaData() this.getAreaData();
}, },
handleCompanyChange() { handleCompanyChange() {
this.getCustomerStatic(); this.getCustomerStatic();
...@@ -998,7 +1107,7 @@ console.log(this.parameters.dateRange[0],"66666"); // 输出例如:2023-10-05 ...@@ -998,7 +1107,7 @@ console.log(this.parameters.dateRange[0],"66666"); // 输出例如:2023-10-05
this.parameters.EndDate = tempArray[1]; this.parameters.EndDate = tempArray[1];
} }
var that = this; var that = this;
that.apipost("erp_post_GetCustomerStatic", that.parameters, res => { that.apipost("erp_post_GetCustomerStatic", that.parameters, (res) => {
if (res.data.resultCode == 1) { if (res.data.resultCode == 1) {
this.customerObj = res.data.data; this.customerObj = res.data.data;
} else { } else {
...@@ -1015,146 +1124,145 @@ console.log(this.parameters.dateRange[0],"66666"); // 输出例如:2023-10-05 ...@@ -1015,146 +1124,145 @@ console.log(this.parameters.dateRange[0],"66666"); // 输出例如:2023-10-05
const msg = { const msg = {
Status: 0, Status: 0,
is_show: 0, is_show: 0,
RB_Group_Id: RB_Group_id RB_Group_Id: RB_Group_id,
}; };
this.apipost( this.apipost(
"admin_get_BranchGetList", "admin_get_BranchGetList",
msg, msg,
res => { (res) => {
if (res.data.resultCode == 1) { if (res.data.resultCode == 1) {
this.branchs = [ this.branchs = [
{ {
Id: -1, Id: -1,
BName: "全部" BName: "全部",
} },
]; ];
this.branchs = this.branchs.concat(res.data.data); this.branchs = this.branchs.concat(res.data.data);
} }
}, },
err => {} (err) => {}
); );
}, },
getHomeChat() { getHomeChat() {
const msg = { const msg = {
StartDate: this.parameters.dateRange[0], StartDate: this.parameters.dateRange[0],
EndDate: this.parameters.dateRange[1], EndDate: this.parameters.dateRange[1],
WechatType:this.parameters.CusType WechatType: this.parameters.CusType,
}; };
this.apipost( this.apipost(
"wechatstatistics_post_HomeWechatStatisticsList", "wechatstatistics_post_HomeWechatStatisticsList",
msg, msg,
res => { (res) => {
if (res.data.resultCode == 1) { if (res.data.resultCode == 1) {
this.baseWechatData = res.data.data; this.baseWechatData = res.data.data;
this.getTrendWechatData() this.getTrendWechatData();
} }
}, },
err => {} (err) => {}
); );
}, },
getTrendWechatData(){ getTrendWechatData() {
const msg = { const msg = {
StartDate: this.parameters.dateRange[0], StartDate: this.parameters.dateRange[0],
EndDate: this.parameters.dateRange[1], EndDate: this.parameters.dateRange[1],
WechatType:this.parameters.CusType, WechatType: this.parameters.CusType,
}; };
this.apipost( this.apipost(
"wechatstatistics_post_WechatStatisticsList", "wechatstatistics_post_WechatStatisticsList",
msg, msg,
res => { (res) => {
if (res.data.resultCode == 1) { if (res.data.resultCode == 1) {
this.trendData = res.data.data; this.trendData = res.data.data;
this.formatCoreTrend() this.formatCoreTrend();
} }
}, },
err => {} (err) => {}
); );
}, },
getPageData(){ getPageData() {
const msg = { const msg = {
StartDate: this.parameters.dateRange[0], StartDate: this.parameters.dateRange[0],
EndDate: this.parameters.dateRange[1], EndDate: this.parameters.dateRange[1],
WechatType:this.parameters.CusType WechatType: this.parameters.CusType,
}; };
this.apipost( this.apipost(
"wechatstatistics_post_PageVisitStatisticsList", "wechatstatistics_post_PageVisitStatisticsList",
msg, msg,
res => { (res) => {
if (res.data.resultCode == 1) { if (res.data.resultCode == 1) {
this.pageData = res.data.data; this.pageData = res.data.data;
this.formatPageData() this.formatPageData();
} }
}, },
err => {} (err) => {}
); );
}, },
getAreaData(){ getAreaData() {
const msg = { const msg = {
StartDate: this.parameters.dateRange[0], StartDate: this.parameters.dateRange[0],
EndDate: this.parameters.dateRange[1], EndDate: this.parameters.dateRange[1],
WechatType:this.parameters.CusType WechatType: this.parameters.CusType,
}; };
this.apipost( this.apipost(
"wechatstatistics_post_UserPortraitStatisticsList", "wechatstatistics_post_UserPortraitStatisticsList",
msg, msg,
res => { (res) => {
if (res.data.resultCode == 1) { if (res.data.resultCode == 1) {
this.areaData = res.data.data; this.areaData = res.data.data;
this.formatAreaData() this.formatAreaData();
} }
}, },
err => {} (err) => {}
); );
}, },
formatAreaData(){ formatAreaData() {
if(!this.areaData) return if (!this.areaData) return;
const filed = this.areas.find(x=>x.Id == this.areaId) const filed = this.areas.find((x) => x.Id == this.areaId);
let seriesData = this.areaData[filed.Value].map(x=> { let seriesData = this.areaData[filed.Value].map((x) => {
return { return {
name:x.DateStr, name: x.DateStr,
value:x.UserPortraitValue value: x.UserPortraitValue,
} };
}) });
this.currentAreaObj = { this.currentAreaObj = {
name:filed.Name+"分布占比", name: filed.Name + "分布占比",
pieData:seriesData pieData: seriesData,
} };
}, },
formatPageData(){ formatPageData() {
if(!this.pageData) return if (!this.pageData) return;
const filed = this.metrics.find(x=>x.id == this.metricsId) const filed = this.metrics.find((x) => x.id == this.metricsId);
const unit = filed.unit const unit = filed.unit;
let xAxisData = this.pageData[filed.value].map(x=>x.DateStr) let xAxisData = this.pageData[filed.value].map((x) => x.DateStr);
let seriesData = this.pageData[filed.value].map(x=>x[filed.value]) let seriesData = this.pageData[filed.value].map((x) => x[filed.value]);
this.currentPageObj = { this.currentPageObj = {
unit:unit, unit: unit,
xAxisData:xAxisData, xAxisData: xAxisData,
barData:{ barData: {
name:filed.name, name: filed.name,
data:seriesData data: seriesData,
} },
} };
}, },
formatCoreTrend(){ formatCoreTrend() {
if(!this.trendData) return if (!this.trendData) return;
const filed = this.coreLists.find(x=>x.Id == this.coreId) const filed = this.coreLists.find((x) => x.Id == this.coreId);
const avg = this.trendData[filed.value] const avg = this.trendData[filed.value];
const unit = filed.Unit const unit = filed.Unit;
const xAxisData = this.trendData.List.map(x=>x.CreateDayStr) const xAxisData = this.trendData.List.map((x) => x.CreateDayStr);
const seriesData = this.trendData.List.map(x=>x[filed.value]) const seriesData = this.trendData.List.map((x) => x[filed.value]);
if(!xAxisData || !seriesData) return if (!xAxisData || !seriesData) return;
this.currentCoreObj = { this.currentCoreObj = {
avg:avg, avg: avg,
unit:unit, unit: unit,
xAxisData:xAxisData, xAxisData: xAxisData,
lineData:{ lineData: {
name:filed.Name, name: filed.Name,
data:seriesData data: seriesData,
} },
} };
} },
} },
}; };
</script> </script>
<style> <style>
...@@ -1337,14 +1445,13 @@ console.log(this.parameters.dateRange[0],"66666"); // 输出例如:2023-10-05 ...@@ -1337,14 +1445,13 @@ console.log(this.parameters.dateRange[0],"66666"); // 输出例如:2023-10-05
color: rgba(0, 0, 0, 0.9) !important; color: rgba(0, 0, 0, 0.9) !important;
font-weight: bolder; font-weight: bolder;
} }
.radius-input .vue-treeselect__control{ .radius-input .vue-treeselect__control {
height: 40px; height: 40px;
border-radius: 12px !important; border-radius: 12px !important;
border:none !important; border: none !important;
overflow: hidden; overflow: hidden;
} }
.radius-input .vue-treeselect__single-value{ .radius-input .vue-treeselect__single-value {
height: 40px; height: 40px;
line-height: 40px; line-height: 40px;
} }
......
...@@ -5818,6 +5818,14 @@ export default { ...@@ -5818,6 +5818,14 @@ export default {
title: '优惠券发放列表' title: '优惠券发放列表'
} }
}, },
{
path: '/CouponAllDetail',
name: 'CouponAllDetail',
component: resolve => require(['@/components/activity/CouponAllDetail'], resolve),
meta: {
title: '优惠券发放统计列表'
}
},
{ {
path: '/LuckyDraw', path: '/LuckyDraw',
name: 'LuckyDraw', name: 'LuckyDraw',
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment