3; 店铺历史数据 - 差导出

4; 营销记录 - 差页面判断
This commit is contained in:
wangshuai 2024-08-02 18:09:35 +08:00
parent 5f3cf75082
commit ad405e2c73
9 changed files with 222 additions and 233 deletions

View File

@ -1,6 +1,7 @@
package com.ruoyi.business.controller; package com.ruoyi.business.controller;
import com.ruoyi.business.domain.*; import com.ruoyi.business.domain.*;
import com.ruoyi.business.domain.resp.RespBusStoreHistoryInfo;
import com.ruoyi.business.req.ReqBusStoreConfigInfo; import com.ruoyi.business.req.ReqBusStoreConfigInfo;
import com.ruoyi.business.req.ReqBusStoreInfo; import com.ruoyi.business.req.ReqBusStoreInfo;
import com.ruoyi.business.domain.resp.RespBusStoreInfo; import com.ruoyi.business.domain.resp.RespBusStoreInfo;
@ -14,6 +15,7 @@ import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.system.mapper.SysDictDataMapper; import com.ruoyi.system.mapper.SysDictDataMapper;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
@ -125,45 +127,7 @@ public class BusStoreInfoController extends BaseController {
busStoreInfo.setEndTime(busStoreInfo.getParams().get("endTime").toString()+" 23:59:59"); busStoreInfo.setEndTime(busStoreInfo.getParams().get("endTime").toString()+" 23:59:59");
} }
List<RespBusStoreInfo> listNew = busStoreInfoService.storeStatistics(busStoreInfo); List<RespBusStoreInfo> listNew = busStoreInfoService.storeStatistics(busStoreInfo);
TableDataInfo rspData = getDataTable(listNew); return getDataTable(listNew);
// List<BusStoreInfo> list = busStoreInfoService.selectBusStoreInfoList(busStoreInfo);
// TableDataInfo rspData = getDataTable(list);
// List<RespBusStoreInfo> tableList = list.stream()
// .map(busStoreInfo1 -> {
// RespBusStoreInfo info = new RespBusStoreInfo(busStoreInfo1);
// BusStoreDayInfo busStoreDayInfo = new BusStoreDayInfo();
// busStoreDayInfo.setStoreId(info.getId());
// List<BusStoreDayInfo> ll = busStoreDayInfoService.selectBusStoreDayInfoList(busStoreDayInfo);
// int a = ll.get(0).getLastPositiveReviewsNum();//todo 好评-五星
// int b = ll.get(0).getLastReturnVisitNum();
// info.setLastOrderNum(ll.get(0).getLastOrderNum());
// info.setLastReturnVisitNum(b);
// info.setLastPositiveReviewsNum(a);
// info.setLastFiveStarReviewsNum(ll.get(0).getLastFiveStarReviewsNum());
//// String date = LocalDateTime.now().minusDays(1).format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
//// List<BusReturnVisitInfo> llll = iBusReturnVisitInfoService.selectBusReturnVisitInfoListByDate(busStoreInfo1.getStoreCode(),date);
//// info.setLastReturnVisitNum(llll.size());
// info.setScore(ll.get(0).getScore());
// if (a != 0 && b != 0) {
// info.setLastReturnVisitRate(getRate(a,b));
// } else {
// info.setLastReturnVisitRate("0");
// }
// String today = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
// List<BusReturnVisitInfo> lll = iBusReturnVisitInfoService.selectBusReturnVisitInfoListByDate(busStoreInfo1.getStoreCode(),today);
// info.setTodayReturnVisitNum(lll.size());
// BusStoreConfigInfo busStoreConfigInfo = new BusStoreConfigInfo();
// busStoreConfigInfo.setStoreCode(busStoreInfo1.getStoreCode());
// List<BusStoreConfigInfo> list1 = iBusStoreConfigInfoService.selectBusStoreConfigInfoList(busStoreConfigInfo);
// if(list1.size() == 1){
// info.setReturnVisitUserRange(list1.get(0).getMinOrderNum()+"~"+list1.get(0).getMaxOrderNum());
// }
// return info;
// })
// .collect(Collectors.toList());
//// tableList.forEach(System.out::println);
// rspData.setRows(tableList);
return rspData;
} }
@ApiOperation("查询店铺信息列表") @ApiOperation("查询店铺信息列表")
@ -176,44 +140,13 @@ public class BusStoreInfoController extends BaseController {
if (!"admin".equals(user.getUsername())) { if (!"admin".equals(user.getUsername())) {
busStoreInfo.setBindUser(user.getUsername()); busStoreInfo.setBindUser(user.getUsername());
} }
List<BusStoreInfo> list = busStoreInfoService.selectBusStoreInfoList(busStoreInfo); if(StringUtils.isEmpty(busStoreInfo.getStoreBelong())){
TableDataInfo rspData = getDataTable(list); DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
List<RespBusStoreInfo> tableList = list.stream() LocalDateTime localDateTime = LocalDateTime.now().minusDays(1);
.map(busStoreInfo1 -> { busStoreInfo.setStoreBelong(localDateTime.format(dateTimeFormatter));
RespBusStoreInfo info = new RespBusStoreInfo(busStoreInfo1);
BusStoreDayInfo busStoreDayInfo = new BusStoreDayInfo();
busStoreDayInfo.setStoreId(info.getId());
List<BusStoreDayInfo> ll = busStoreDayInfoService.selectBusStoreDayInfoList(busStoreDayInfo);
int a = ll.get(0).getLastPositiveReviewsNum();//todo 好评-五星
int b = ll.get(0).getLastReturnVisitNum();
info.setLastOrderNum(ll.get(0).getLastOrderNum());
info.setLastReturnVisitNum(b);
info.setLastPositiveReviewsNum(a);
info.setLastFiveStarReviewsNum(ll.get(0).getLastFiveStarReviewsNum());
// String date = LocalDateTime.now().minusDays(1).format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
// List<BusReturnVisitInfo> llll = iBusReturnVisitInfoService.selectBusReturnVisitInfoListByDate(busStoreInfo1.getStoreCode(),date);
// info.setLastReturnVisitNum(llll.size());
info.setScore(ll.get(0).getScore());
if (a != 0 && b != 0) {
info.setLastReturnVisitRate(getRate(a,b));
} else {
info.setLastReturnVisitRate("0");
} }
String today = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); List<RespBusStoreHistoryInfo> list = busStoreInfoService.storeHistoryStatistics(busStoreInfo);
List<BusReturnVisitInfo> lll = iBusReturnVisitInfoService.selectBusReturnVisitInfoListByDate(busStoreInfo1.getStoreCode(),today); return getDataTable(list);
info.setTodayReturnVisitNum(lll.size());
BusStoreConfigInfo busStoreConfigInfo = new BusStoreConfigInfo();
busStoreConfigInfo.setStoreCode(busStoreInfo1.getStoreCode());
List<BusStoreConfigInfo> list1 = iBusStoreConfigInfoService.selectBusStoreConfigInfoList(busStoreConfigInfo);
if(list1.size() == 1){
info.setReturnVisitUserRange(list1.get(0).getMinOrderNum()+"~"+list1.get(0).getMaxOrderNum());
}
return info;
})
.collect(Collectors.toList());
// tableList.forEach(System.out::println);
rspData.setRows(tableList);
return rspData;
} }
@ApiOperation("查询店铺信息列表") @ApiOperation("查询店铺信息列表")

View File

@ -52,4 +52,7 @@ public class ReqBusStoreInfo extends BaseEntity {
/** 回访渠道 */ /** 回访渠道 */
@ApiModelProperty(name = "回访渠道") @ApiModelProperty(name = "回访渠道")
private String marketingChannels; private String marketingChannels;
@ApiModelProperty(name = "统计时间")
private String storeBelong;
} }

View File

@ -0,0 +1,91 @@
package com.ruoyi.business.domain.resp;
import com.alibaba.fastjson2.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.business.domain.BusStoreInfo;
import com.ruoyi.common.annotation.Excel;
import lombok.Data;
import java.util.Date;
@Data
public class RespBusStoreHistoryInfo {
/**
* $column.columnComment
*/
private Long id;
/**
* 平台类型
*/
@Excel(name = "平台类型")
@JSONField(ordinal = 1)
private String platformType;
/**
* 店铺编码
*/
@Excel(name = "编号")
@JSONField(ordinal = 2)
private String storeCode;
/**
* 店铺名称
*/
@Excel(name = "名称")
@JSONField(ordinal = 3)
private String storeName;
/**
* 店铺归属
*/
// @ApiModelProperty(name = "归属")
private String storeBelong;
@Excel(name = "昨日单量")
@JSONField(ordinal = 4)
private int lastOrderNum;
/** 昨日好评量 */
@Excel(name = "昨日好评量")
@JSONField(ordinal = 5)
private int lastPositiveReviewsNum;
/** 昨日五星量 */
@Excel(name = "昨日五星量")
@JSONField(ordinal = 6)
private int lastFiveStarReviewsNum;
/** 昨日回访量 */
@Excel(name = "昨日回访量")
@JSONField(ordinal = 7)
private int lastReturnVisitNum;
/** 昨日回访比50% */
@Excel(name = "昨日回访比")
@JSONField(ordinal = 8)
private String lastReturnVisitRate;
/** 金额 */
@Excel(name = "金额")
@JSONField(ordinal = 9)
private int price;
/**
* 绑定时间创建
*/
@Excel(name = "金额")
@JSONField(ordinal = 10)
@JsonFormat(pattern = "yyyy-MM-dd")
private Date bindTime;
/** 评分 */
@Excel(name = "评分")
@JSONField(ordinal = 11)
private String score;
}

View File

@ -2,6 +2,7 @@ package com.ruoyi.business.mapper;
import java.util.List; import java.util.List;
import com.ruoyi.business.domain.BusStoreInfo; import com.ruoyi.business.domain.BusStoreInfo;
import com.ruoyi.business.domain.resp.RespBusStoreHistoryInfo;
import com.ruoyi.business.domain.resp.RespBusStoreInfo; import com.ruoyi.business.domain.resp.RespBusStoreInfo;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
@ -72,4 +73,9 @@ public interface BusStoreInfoMapper
List<RespBusStoreInfo> storeStatistics(BusStoreInfo busStoreInfo); List<RespBusStoreInfo> storeStatistics(BusStoreInfo busStoreInfo);
List<RespBusStoreInfo> storeStatisticsExport(BusStoreInfo busStoreInfo); List<RespBusStoreInfo> storeStatisticsExport(BusStoreInfo busStoreInfo);
List<RespBusStoreHistoryInfo> storeHistoryStatistics(BusStoreInfo busStoreInfo);
List<RespBusStoreHistoryInfo> storeHistoryStatisticsExport(BusStoreInfo busStoreInfo);
} }

View File

@ -4,6 +4,7 @@ import java.util.List;
import com.ruoyi.business.domain.BusStoreConfigInfo; import com.ruoyi.business.domain.BusStoreConfigInfo;
import com.ruoyi.business.domain.BusStoreInfo; import com.ruoyi.business.domain.BusStoreInfo;
import com.ruoyi.business.domain.resp.RespBusStoreHistoryInfo;
import com.ruoyi.business.domain.resp.RespBusStoreInfo; import com.ruoyi.business.domain.resp.RespBusStoreInfo;
/** /**
@ -87,5 +88,7 @@ public interface IBusStoreInfoService
List<RespBusStoreInfo> storeStatisticsExport(BusStoreInfo busStoreInfo); List<RespBusStoreInfo> storeStatisticsExport(BusStoreInfo busStoreInfo);
List<RespBusStoreHistoryInfo> storeHistoryStatistics(BusStoreInfo busStoreInfo);
int changeStoreStatus(BusStoreInfo busStoreInfo); int changeStoreStatus(BusStoreInfo busStoreInfo);
} }

View File

@ -6,6 +6,7 @@ import java.util.List;
import com.ruoyi.business.domain.BusMarketOperationInfo; import com.ruoyi.business.domain.BusMarketOperationInfo;
import com.ruoyi.business.domain.BusSaleInfo; import com.ruoyi.business.domain.BusSaleInfo;
import com.ruoyi.business.domain.BusStoreConfigInfo; import com.ruoyi.business.domain.BusStoreConfigInfo;
import com.ruoyi.business.domain.resp.RespBusStoreHistoryInfo;
import com.ruoyi.business.domain.resp.RespBusStoreInfo; import com.ruoyi.business.domain.resp.RespBusStoreInfo;
import com.ruoyi.business.mapper.BusMarketOperationInfoMapper; import com.ruoyi.business.mapper.BusMarketOperationInfoMapper;
import com.ruoyi.business.mapper.BusSaleInfoMapper; import com.ruoyi.business.mapper.BusSaleInfoMapper;
@ -172,6 +173,12 @@ public class BusStoreInfoServiceImpl implements IBusStoreInfoService
public List<RespBusStoreInfo> storeStatisticsExport(BusStoreInfo busStoreInfo) { public List<RespBusStoreInfo> storeStatisticsExport(BusStoreInfo busStoreInfo) {
return busStoreInfoMapper.storeStatisticsExport(busStoreInfo); return busStoreInfoMapper.storeStatisticsExport(busStoreInfo);
} }
@Override
public List<RespBusStoreHistoryInfo> storeHistoryStatistics(BusStoreInfo busStoreInfo) {
return busStoreInfoMapper.storeHistoryStatistics(busStoreInfo);
}
/** /**
* 批量删除店铺信息 * 批量删除店铺信息
* *

View File

@ -159,6 +159,34 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="bindId != null "> and s.bind_id = #{bindId}</if> <if test="bindId != null "> and s.bind_id = #{bindId}</if>
ORDER BY s.bind_time desc ORDER BY s.bind_time desc
</select> </select>
<select id="storeHistoryStatistics" resultType="com.ruoyi.business.domain.resp.RespBusStoreHistoryInfo">
SELECT s.id,
s.platform_type platformType,
s.store_code storeCode,
s.store_name storeName,
sd.last_order_num lastOrderNum,
sd.last_positive_reviews_num lastPositiveReviewsNum,
sd.last_five_star_reviews_num lastFiveStarReviewsNum,
sd.last_return_visit_num lastReturnVisitNum,
ifnull(round((sd.last_positive_reviews_num/sd.last_return_visit_num)*100,2),0) as lastReturnVisitRate,
sd.score,
s.price,
DATE_FORMAT(sd.create_time,'%Y-%m-%d') bindTime
FROM bus_store_info s
LEFT JOIN bus_store_day_history_info sd ON s.id = sd.store_id and DATE_FORMAT(sd.create_time,'%Y-%m-%d') = #{storeBelong}
LEFT JOIN bus_store_config_info sc ON s.store_code = sc.store_code
where s.self_delivery_status != '3'
<if test="selfDeliveryStatus != null and selfDeliveryStatus != ''"> and s.self_delivery_status = #{selfDeliveryStatus}</if>
<if test="saleBindId != null "> and s.sale_bind_id = #{saleBindId}</if>
<if test="bindUser != null and bindUser != ''"> and s.bind_user = #{bindUser}</if>
<if test="platformType != null and platformType != ''"> and s.platform_type = #{platformType}</if>
<if test="storeCode != null and storeCode != ''"> and s.store_code = #{storeCode}</if>
<if test="storeName != null and storeName != ''"> and s.store_name like concat('%', #{storeName}, '%')</if>
<if test="grantStatus != null and grantStatus != ''"> and s.grant_status = #{grantStatus}</if>
<if test="returnVisitStatus != null and returnVisitStatus != ''"> and s.return_visit_status = #{returnVisitStatus}</if>
<if test="marketingChannels != null and marketingChannels != ''"> and s.marketing_channels = #{marketingChannels}</if>
<if test="bindId != null "> and s.bind_id = #{bindId}</if>
</select>
<select id="storeStatisticsExport" resultType="com.ruoyi.business.domain.resp.RespBusStoreInfo"> <select id="storeStatisticsExport" resultType="com.ruoyi.business.domain.resp.RespBusStoreInfo">
SELECT SELECT
s.id, s.id,
@ -185,7 +213,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
sd.last_five_star_reviews_num lastFiveStarReviewsNum, sd.last_five_star_reviews_num lastFiveStarReviewsNum,
sd.last_return_visit_num lastReturnVisitNum, sd.last_return_visit_num lastReturnVisitNum,
ifnull(round((sd.last_positive_reviews_num/sd.last_return_visit_num)*100,2),0) as lastReturnVisitRate, ifnull(round((sd.last_positive_reviews_num/sd.last_return_visit_num)*100,2),0) as lastReturnVisitRate,
ifnull(sdd.ct,0) todayReturnVisitNum, s.price,
sd.score, sd.score,
s.bind_time bindTime, s.bind_time bindTime,
CONCAT(sc.min_order_num,'~',sc.max_order_num) returnVisitUserRange, CONCAT(sc.min_order_num,'~',sc.max_order_num) returnVisitUserRange,
@ -196,14 +224,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
END selfDeliveryStatus END selfDeliveryStatus
FROM FROM
bus_store_info s bus_store_info s
LEFT JOIN bus_store_day_info sd ON s.id = sd.store_id LEFT JOIN bus_store_day_history_info sd ON s.id = sd.store_id and DATE_FORMAT(sd.create_time,'%Y-%m-%d') = #{storeBelong}
LEFT JOIN bus_store_config_info sc ON s.store_code = sc.store_code LEFT JOIN bus_store_config_info sc ON s.store_code = sc.store_code
LEFT JOIN (
select rv.store_code,count(rv.id) ct
from bus_return_visit_info rv
where DATE_FORMAT(rv.return_visit_time,'%Y-%m-%d') = CURDATE()
group by rv.store_code
) sdd ON sdd.store_code = s.store_code
where s.self_delivery_status != '3' where s.self_delivery_status != '3'
<if test="selfDeliveryStatus != null and selfDeliveryStatus != ''"> and s.self_delivery_status = #{selfDeliveryStatus}</if> <if test="selfDeliveryStatus != null and selfDeliveryStatus != ''"> and s.self_delivery_status = #{selfDeliveryStatus}</if>
<if test="saleBindId != null "> and s.sale_bind_id = #{saleBindId}</if> <if test="saleBindId != null "> and s.sale_bind_id = #{saleBindId}</if>
@ -218,6 +240,39 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
ORDER BY s.bind_time desc ORDER BY s.bind_time desc
</select> </select>
<select id="storeHistoryStatisticsExport" resultType="com.ruoyi.business.domain.resp.RespBusStoreHistoryInfo">
SELECT
s.id,
CASE s.platform_type
WHEN '1' THEN '美团'
WHEN '2' THEN '饿了么'
ELSE ''
END as platformType,
s.store_code storeCode,
s.store_name storeName,
sd.last_order_num lastOrderNum,
sd.last_positive_reviews_num lastPositiveReviewsNum,
sd.last_five_star_reviews_num lastFiveStarReviewsNum,
sd.last_return_visit_num lastReturnVisitNum,
ifnull(round((sd.last_positive_reviews_num/sd.last_return_visit_num)*100,2),0) as lastReturnVisitRate,
s.price,
sd.score,
DATE_FORMAT(sd.create_time,'%Y-%m-%d') bindTime
FROM bus_store_info s
LEFT JOIN bus_store_day_history_info sd ON s.id = sd.store_id and DATE_FORMAT(sd.create_time,'%Y-%m-%d') = #{storeBelong}
LEFT JOIN bus_store_config_info sc ON s.store_code = sc.store_code
where s.self_delivery_status != '3'
<if test="saleBindId != null "> and s.sale_bind_id = #{saleBindId}</if>
<if test="bindUser != null and bindUser != ''"> and s.bind_user = #{bindUser}</if>
<if test="platformType != null and platformType != ''"> and s.platform_type = #{platformType}</if>
<if test="storeCode != null and storeCode != ''"> and s.store_code = #{storeCode}</if>
<if test="storeName != null and storeName != ''"> and s.store_name like concat('%', #{storeName}, '%')</if>
<if test="grantStatus != null and grantStatus != ''"> and s.grant_status = #{grantStatus}</if>
<if test="returnVisitStatus != null and returnVisitStatus != ''"> and s.return_visit_status = #{returnVisitStatus}</if>
<if test="marketingChannels != null and marketingChannels != ''"> and s.marketing_channels = #{marketingChannels}</if>
<if test="bindId != null "> and s.bind_id = #{bindId}</if>
</select>
<insert id="insertBusStoreInfo" parameterType="BusStoreInfo" useGeneratedKeys="true" keyProperty="id"> <insert id="insertBusStoreInfo" parameterType="BusStoreInfo" useGeneratedKeys="true" keyProperty="id">
insert into bus_store_info insert into bus_store_info
<trim prefix="(" suffix=")" suffixOverrides=","> <trim prefix="(" suffix=")" suffixOverrides=",">

View File

@ -8,7 +8,14 @@ export function listStore(query) {
params: query params: query
}) })
} }
// 查询店铺列表
export function listHistory(query) {
return request({
url: '/business/store/listHistory',
method: 'get',
params: query
})
}
// 查询归属销售列表 // 查询归属销售列表
export function getMtUrl(query) { export function getMtUrl(query) {
return request({ return request({

View File

@ -113,17 +113,26 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="10"> <el-col :span="5">
<el-form-item label="创建时间"> <el-form-item label="统计时间">
<el-date-picker <el-date-picker clearable
v-model="queryParams.storeBelong"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择统计时间"
style="width: 240px">
</el-date-picker>
<!-- <el-date-picker
v-model="dateRange" v-model="dateRange"
value-format="yyyy-MM-dd" value-format="yyyy-MM-dd"
type="daterange" type="daterange"
range-separator="至" range-separator="至"
start-placeholder="开始日期" start-placeholder="开始日期"
end-placeholder="结束日期"> end-placeholder="结束日期">
</el-date-picker> </el-date-picker> -->
</el-form-item> </el-form-item>
</el-col>
<el-col :span="5">
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button> <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button> <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
@ -175,32 +184,28 @@
{{ (queryParams.pageNum - 1) * queryParams.pageSize + scope.$index + 1 }} {{ (queryParams.pageNum - 1) * queryParams.pageSize + scope.$index + 1 }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="名称" prop="storeName" align="center" />
<el-table-column label="编号" prop="storeCode" align="center" />
<el-table-column label="平台" prop="platformType" width="55"> <el-table-column label="平台" prop="platformType" width="55">
<template slot-scope="scope"> <template slot-scope="scope">
<dict-tag :options="dict.type.sys_platform_type" :value="scope.row.platformType"/> <dict-tag :options="dict.type.sys_platform_type" :value="scope.row.platformType"/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="编号" prop="storeCode" align="center" /> <!-- <el-table-column label="在线状态" prop ="grantStatus" align="center" width="75" >
<el-table-column label="名称" prop="storeName" align="center" />
<el-table-column label="在线状态" prop ="grantStatus" align="center" width="75" >
<template slot-scope="scope"> <template slot-scope="scope">
<dict-tag :options="dict.type.sys_grant_status" :value="scope.row.grantStatus"/> <dict-tag :options="dict.type.sys_grant_status" :value="scope.row.grantStatus"/>
</template> </template>
</el-table-column> </el-table-column> -->
<el-table-column label="昨日单量" prop="lastOrderNum" align="center" width="75"/> <el-table-column label="昨日单量" prop="lastOrderNum" align="center" />
<el-table-column label="昨日好评量" prop="lastPositiveReviewsNum" align="center" width="85"/> <el-table-column label="昨日好评量" prop="lastPositiveReviewsNum" align="center" />
<el-table-column label="昨日五星量" prop="lastFiveStarReviewsNum" align="center" width="85"/> <el-table-column label="昨日五星量" prop="lastFiveStarReviewsNum" align="center" />
<el-table-column label="昨日回访量" prop="lastReturnVisitNum" align="center" width="85"/> <el-table-column label="昨日回访量" prop="lastReturnVisitNum" align="center" />
<el-table-column label="昨日H评比(%)" prop="lastReturnVisitRate" align="center" :render-header="renderPrice" width="120" /> <el-table-column label="昨日H评比(%)" prop="lastReturnVisitRate" align="center" :render-header="renderPrice" />
<el-table-column label="今日回访量" prop="todayReturnVisitNum" align="center" width="85" /> <!-- <el-table-column label="今日回访量" prop="todayReturnVisitNum" align="center" /> -->
<el-table-column label="评分" prop="score" align="center" width="55" /> <el-table-column label="评分" prop="score" align="center" />
<el-table-column label="归属" prop="saleBindId" align="center" :formatter="idToName" width="65" /> <!-- <el-table-column label="归属" prop="saleBindId" align="center" :formatter="idToName" /> -->
<el-table-column label="创建时间" align="center" prop="bindTime" width="160"> <el-table-column label="统计时间" align="center" prop="bindTime"/>
<template slot-scope="scope"> <!-- <el-table-column label="营销用户下单" prop="returnVisitUserRange" align="center" /> -->
<span>{{ parseTime(scope.row.bindTime) }}</span>
</template>
</el-table-column>
<el-table-column label="营销用户下单" prop="returnVisitUserRange" align="center" width="110" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width =120> <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width =120>
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <el-button
@ -226,128 +231,6 @@
:limit.sync="queryParams.pageSize" :limit.sync="queryParams.pageSize"
@pagination="getList" @pagination="getList"
/> />
<el-dialog :title="title" :visible.sync="open" width="800px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="150px">
<el-form-item label="早高峰时段-方案" prop="content1">
<!-- <el-input v-model="form.storeCode" placeholder="店铺编码" /> -->
<el-select
v-model="form.content1"
placeholder="选择话术"
clearable
style="width: 240px"
>
<el-option
v-for="dict in dict.type.bus_script_type"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="午高峰时段-方案" prop="content2">
<el-select
v-model="form.content2"
placeholder="选择话术"
clearable
style="width: 240px"
>
<el-option
v-for="dict in dict.type.bus_script_type"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="晚高峰时段-方案" prop="content3">
<el-select
v-model="form.content3"
placeholder="选择话术"
clearable
style="width: 240px"
>
<el-option
v-for="dict in dict.type.bus_script_type"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="默认时间段-方案" prop="content4">
<el-select
v-model="form.content4"
placeholder="选择话术"
clearable
style="width: 240px"
>
<el-option
v-for="dict in dict.type.bus_script_type"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="营销用户-下单次数 >=" prop="min_order_num">
<el-input-number v-model="form.minOrderNum" placeholder="请输入营销下单次数" :min="1"/>
</el-form-item>
<el-form-item label="营销用户-下单次数 <=" prop="max_order_num">
<el-input-number v-model="form.maxOrderNum" placeholder="请输入营销下单次数" :min="1"/>
</el-form-item>
<el-form-item label="营销时段" prop="start_time">
<el-time-picker
is-range
v-model="timeRange"
value-format = "HH:mm:ss"
range-separator="至"
start-placeholder="开始时间"
end-placeholder="结束时间"
placeholder="选择时间范围">
</el-time-picker>
</el-form-item>
<el-form-item label="营销时长" prop="selfDeliveryDuration">
<el-input-number v-model="form.selfDeliveryDuration" controls-position="right" :min="0" />
</el-form-item>
<el-form-item label="营销限额" prop="quota">
<el-input-number v-model="form.quota" controls-position="right" :min="0" />
</el-form-item>
<el-form-item label="是否拼好饭">
<el-radio-group v-model="form.isSpliceOrder">
<el-radio
v-for="dict in dict.type.sys_yes_no"
:key="dict.value"
:label="dict.value"
>{{dict.label}}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="店铺归属" prop="saleBindId">
<el-select
v-model="form.saleBindId"
placeholder="店铺归属"
filterable
clearable
style="width: 240px"
>
<el-option
v-for="dict in saleList"
:key="dict.id"
:label="dict.saleName+' '+dict.id"
:value="dict.id"
/>
</el-select>
</el-form-item>
<el-form-item label="备注">
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容"></el-input>
<!-- <img class="btn" :src="imageUrl" alt="your-image-description" > -->
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
<el-dialog :visible.sync="open1" width="800px" append-to-body> <el-dialog :visible.sync="open1" width="800px" append-to-body>
<el-form ref="form1" :model="form1" label-width="150px"> <el-form ref="form1" :model="form1" label-width="150px">
@ -386,7 +269,7 @@
<script> <script>
import { listStore, changeReturnVisitStatus, getMtUrl, changeSelfDeliveryStatus, getStoreConfig, updateStoreConfig, getStoreStatistics, generateWord, nowIntegral, setUpPrize } from "@/api/business/store"; import { listHistory, changeReturnVisitStatus, getMtUrl, changeSelfDeliveryStatus, getStoreConfig, updateStoreConfig, getStoreStatistics, generateWord, nowIntegral, setUpPrize } from "@/api/business/store";
import { listSaleA} from "@/api/business/sale"; import { listSaleA} from "@/api/business/sale";
import { listA} from "@/api/agent/info"; import { listA} from "@/api/agent/info";
@ -443,7 +326,8 @@ export default {
storeName: undefined, storeName: undefined,
saleBindId: undefined, saleBindId: undefined,
grantStatus: undefined, grantStatus: undefined,
returnVisitStatus: undefined returnVisitStatus: undefined,
storeBelong: undefined
}, },
saleList: [], saleList: [],
agentList:[], agentList:[],
@ -505,7 +389,7 @@ export default {
/** 查询角色列表 */ /** 查询角色列表 */
getList() { getList() {
this.loading = true; this.loading = true;
listStore(this.addDateRange(this.queryParams, this.dateRange)).then(response => { listHistory(this.queryParams).then(response => {
this.storeList = response.rows; this.storeList = response.rows;
this.total = response.total; this.total = response.total;
this.loading = false; this.loading = false;