| @@ -5,16 +5,10 @@ import java.util.List; | |||||||
|  |  | ||||||
| import com.stdiet.common.utils.DateUtils; | import com.stdiet.common.utils.DateUtils; | ||||||
| import com.stdiet.common.utils.StringUtils; | import com.stdiet.common.utils.StringUtils; | ||||||
|  | import com.stdiet.custom.domain.SysLiveSchedulFanRecord; | ||||||
| import org.springframework.security.access.prepost.PreAuthorize; | import org.springframework.security.access.prepost.PreAuthorize; | ||||||
| import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||||
| import org.springframework.web.bind.annotation.GetMapping; | import org.springframework.web.bind.annotation.*; | ||||||
| import org.springframework.web.bind.annotation.PostMapping; |  | ||||||
| import org.springframework.web.bind.annotation.PutMapping; |  | ||||||
| import org.springframework.web.bind.annotation.DeleteMapping; |  | ||||||
| import org.springframework.web.bind.annotation.PathVariable; |  | ||||||
| import org.springframework.web.bind.annotation.RequestBody; |  | ||||||
| import org.springframework.web.bind.annotation.RequestMapping; |  | ||||||
| import org.springframework.web.bind.annotation.RestController; |  | ||||||
| import com.stdiet.common.annotation.Log; | import com.stdiet.common.annotation.Log; | ||||||
| import com.stdiet.common.core.controller.BaseController; | import com.stdiet.common.core.controller.BaseController; | ||||||
| import com.stdiet.common.core.domain.AjaxResult; | import com.stdiet.common.core.domain.AjaxResult; | ||||||
| @@ -261,4 +255,21 @@ public class SysLiveSchedulController extends BaseController | |||||||
|         } |         } | ||||||
|         return AjaxResult.success(live); |         return AjaxResult.success(live); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 给对应直播添加、更新进粉记录 | ||||||
|  |      */ | ||||||
|  |     @PostMapping(value = "/addOrEditSysLiveSchedulFanRecord") | ||||||
|  |     public AjaxResult addOrEditSysLiveSchedulFanRecord(@RequestBody  SysLiveSchedulFanRecord sysLiveSchedulFanRecord){ | ||||||
|  |         int row = sysLiveSchedulFanRecord.getId() == null ? sysLiveSchedulService.addLiveSchedulFanRecord(sysLiveSchedulFanRecord) : sysLiveSchedulService.updateLiveSchedulFanRecord(sysLiveSchedulFanRecord); | ||||||
|  |         return toAjax(row); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 给对应直播删除进粉记录 | ||||||
|  |      */ | ||||||
|  |     @GetMapping(value = "/delSysLiveSchedulFanRecord") | ||||||
|  |     public AjaxResult delSysLiveSchedulFanRecord(@RequestParam("id")Long id){ | ||||||
|  |         return toAjax(sysLiveSchedulService.delLiveSchedulFanRecord(id)); | ||||||
|  |     } | ||||||
| } | } | ||||||
| @@ -119,4 +119,13 @@ public class SysWxSaleAccountController extends BaseController | |||||||
|     { |     { | ||||||
|         return toAjax(sysWxSaleAccountService.deleteSysWxSaleAccountByIds(ids)); |         return toAjax(sysWxSaleAccountService.deleteSysWxSaleAccountByIds(ids)); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 查询所有微信账号 | ||||||
|  |      */ | ||||||
|  |     @GetMapping("/getAllWxAccount") | ||||||
|  |     public AjaxResult getAllWxAccount() { | ||||||
|  |         List<SysWxSaleAccount> list = sysWxSaleAccountService.selectSysWxSaleAccountList(new SysWxSaleAccount()); | ||||||
|  |         return AjaxResult.success(list); | ||||||
|  |     } | ||||||
| } | } | ||||||
| @@ -81,5 +81,9 @@ public class SysLiveSchedul extends BaseEntity | |||||||
|  |  | ||||||
|     private String fanChannelName; |     private String fanChannelName; | ||||||
|  |  | ||||||
|  |     //导粉情况 | ||||||
|     private List<Map<String,Object>> wxAccountList; |     private List<Map<String,Object>> wxAccountList; | ||||||
|  |  | ||||||
|  |     //进粉情况 | ||||||
|  |     private List<Map<String,Object>> addFanList; | ||||||
| } | } | ||||||
| @@ -0,0 +1,43 @@ | |||||||
|  | package com.stdiet.custom.domain; | ||||||
|  |  | ||||||
|  | import java.util.Date; | ||||||
|  | import com.fasterxml.jackson.annotation.JsonFormat; | ||||||
|  | import com.stdiet.common.utils.DateUtils; | ||||||
|  | import lombok.Data; | ||||||
|  | import com.stdiet.common.annotation.Excel; | ||||||
|  | import com.stdiet.common.core.domain.BaseEntity; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 直播记录中每场直播对应进粉记录对象 sys_live_schedul_fan_record | ||||||
|  |  * | ||||||
|  |  * @author xzj | ||||||
|  |  * @date 2021-08-19 | ||||||
|  |  */ | ||||||
|  | @Data | ||||||
|  | public class SysLiveSchedulFanRecord extends BaseEntity | ||||||
|  | { | ||||||
|  |     private static final long serialVersionUID = 1L; | ||||||
|  |  | ||||||
|  |     /** $column.columnComment */ | ||||||
|  |     private Long id; | ||||||
|  |  | ||||||
|  |     /** 直播ID */ | ||||||
|  |     @Excel(name = "直播ID") | ||||||
|  |     private Long liveSchedulId; | ||||||
|  |  | ||||||
|  |     /** 微信账号ID */ | ||||||
|  |     @Excel(name = "微信账号ID") | ||||||
|  |     private Long saleWxAccountId; | ||||||
|  |  | ||||||
|  |     /** 进粉客户微信号 */ | ||||||
|  |     @Excel(name = "进粉客户微信号") | ||||||
|  |     private String fanWxNumber; | ||||||
|  |  | ||||||
|  |     /** 进粉时间 */ | ||||||
|  |     @JsonFormat(pattern = "yyyy-MM-dd HH:mm") | ||||||
|  |     @Excel(name = "进粉时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm") | ||||||
|  |     private Date enterFanTime; | ||||||
|  |  | ||||||
|  |     /** 删除标识 0未删除 1已删除 */ | ||||||
|  |     private Integer delFlag; | ||||||
|  | } | ||||||
| @@ -0,0 +1,61 @@ | |||||||
|  | package com.stdiet.custom.mapper; | ||||||
|  |  | ||||||
|  | import java.util.List; | ||||||
|  | import com.stdiet.custom.domain.SysLiveSchedulFanRecord; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 直播记录中每场直播对应进粉记录Mapper接口 | ||||||
|  |  * | ||||||
|  |  * @author xzj | ||||||
|  |  * @date 2021-08-19 | ||||||
|  |  */ | ||||||
|  | public interface SysLiveSchedulFanRecordMapper | ||||||
|  | { | ||||||
|  |     /** | ||||||
|  |      * 查询直播记录中每场直播对应进粉记录 | ||||||
|  |      * | ||||||
|  |      * @param id 直播记录中每场直播对应进粉记录ID | ||||||
|  |      * @return 直播记录中每场直播对应进粉记录 | ||||||
|  |      */ | ||||||
|  |     public SysLiveSchedulFanRecord selectSysLiveSchedulFanRecordById(Long id); | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 查询直播记录中每场直播对应进粉记录列表 | ||||||
|  |      * | ||||||
|  |      * @param sysLiveSchedulFanRecord 直播记录中每场直播对应进粉记录 | ||||||
|  |      * @return 直播记录中每场直播对应进粉记录集合 | ||||||
|  |      */ | ||||||
|  |     public List<SysLiveSchedulFanRecord> selectSysLiveSchedulFanRecordList(SysLiveSchedulFanRecord sysLiveSchedulFanRecord); | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 新增直播记录中每场直播对应进粉记录 | ||||||
|  |      * | ||||||
|  |      * @param sysLiveSchedulFanRecord 直播记录中每场直播对应进粉记录 | ||||||
|  |      * @return 结果 | ||||||
|  |      */ | ||||||
|  |     public int insertSysLiveSchedulFanRecord(SysLiveSchedulFanRecord sysLiveSchedulFanRecord); | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 修改直播记录中每场直播对应进粉记录 | ||||||
|  |      * | ||||||
|  |      * @param sysLiveSchedulFanRecord 直播记录中每场直播对应进粉记录 | ||||||
|  |      * @return 结果 | ||||||
|  |      */ | ||||||
|  |     public int updateSysLiveSchedulFanRecord(SysLiveSchedulFanRecord sysLiveSchedulFanRecord); | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 删除直播记录中每场直播对应进粉记录 | ||||||
|  |      * | ||||||
|  |      * @param id 直播记录中每场直播对应进粉记录ID | ||||||
|  |      * @return 结果 | ||||||
|  |      */ | ||||||
|  |     public int deleteSysLiveSchedulFanRecordById(Long id); | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 批量删除直播记录中每场直播对应进粉记录 | ||||||
|  |      * | ||||||
|  |      * @param ids 需要删除的数据ID | ||||||
|  |      * @return 结果 | ||||||
|  |      */ | ||||||
|  |     public int deleteSysLiveSchedulFanRecordByIds(Long[] ids); | ||||||
|  | } | ||||||
| @@ -4,6 +4,7 @@ import java.util.List; | |||||||
|  |  | ||||||
| import com.stdiet.common.core.domain.AjaxResult; | import com.stdiet.common.core.domain.AjaxResult; | ||||||
| import com.stdiet.custom.domain.SysLiveSchedul; | import com.stdiet.custom.domain.SysLiveSchedul; | ||||||
|  | import com.stdiet.custom.domain.SysLiveSchedulFanRecord; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * 直播排班Service接口 |  * 直播排班Service接口 | ||||||
| @@ -91,4 +92,25 @@ public interface ISysLiveSchedulService | |||||||
|      * @return |      * @return | ||||||
|      */ |      */ | ||||||
|     public SysLiveSchedul getLiveSchedulByTime(SysLiveSchedul sysLiveSchedul); |     public SysLiveSchedul getLiveSchedulByTime(SysLiveSchedul sysLiveSchedul); | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 给对应直播添加进粉记录 | ||||||
|  |      * @return | ||||||
|  |      */ | ||||||
|  |     int addLiveSchedulFanRecord(SysLiveSchedulFanRecord sysLiveSchedulFanRecord); | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 给对应直播更新进粉记录 | ||||||
|  |      * @param sysLiveSchedulFanRecord | ||||||
|  |      * @return | ||||||
|  |      */ | ||||||
|  |     int updateLiveSchedulFanRecord(SysLiveSchedulFanRecord sysLiveSchedulFanRecord); | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 给对应直播删除进粉记录 | ||||||
|  |      * @param id | ||||||
|  |      * @return | ||||||
|  |      */ | ||||||
|  |     int delLiveSchedulFanRecord(Long id); | ||||||
| } | } | ||||||
| @@ -8,6 +8,8 @@ import java.util.List; | |||||||
| import com.stdiet.common.core.domain.AjaxResult; | import com.stdiet.common.core.domain.AjaxResult; | ||||||
| import com.stdiet.common.utils.DateUtils; | import com.stdiet.common.utils.DateUtils; | ||||||
| import com.stdiet.common.utils.SecurityUtils; | import com.stdiet.common.utils.SecurityUtils; | ||||||
|  | import com.stdiet.custom.domain.SysLiveSchedulFanRecord; | ||||||
|  | import com.stdiet.custom.mapper.SysLiveSchedulFanRecordMapper; | ||||||
| import lombok.Data; | import lombok.Data; | ||||||
| import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||||
| import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||||
| @@ -27,6 +29,9 @@ public class SysLiveSchedulServiceImpl implements ISysLiveSchedulService | |||||||
|     @Autowired |     @Autowired | ||||||
|     private SysLiveSchedulMapper sysLiveSchedulMapper; |     private SysLiveSchedulMapper sysLiveSchedulMapper; | ||||||
|  |  | ||||||
|  |     @Autowired | ||||||
|  |     private SysLiveSchedulFanRecordMapper sysLiveSchedulFanRecordMapper; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 查询直播排班 |      * 查询直播排班 | ||||||
|      * |      * | ||||||
| @@ -186,4 +191,29 @@ public class SysLiveSchedulServiceImpl implements ISysLiveSchedulService | |||||||
|     public SysLiveSchedul getLiveSchedulByTime(SysLiveSchedul sysLiveSchedul){ |     public SysLiveSchedul getLiveSchedulByTime(SysLiveSchedul sysLiveSchedul){ | ||||||
|         return sysLiveSchedulMapper.getLiveSchedulByTime(sysLiveSchedul); |         return sysLiveSchedulMapper.getLiveSchedulByTime(sysLiveSchedul); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 给对应直播添加进粉记录 | ||||||
|  |      * @return | ||||||
|  |      */ | ||||||
|  |     public int addLiveSchedulFanRecord(SysLiveSchedulFanRecord sysLiveSchedulFanRecord){ | ||||||
|  |         return sysLiveSchedulFanRecordMapper.insertSysLiveSchedulFanRecord(sysLiveSchedulFanRecord); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 给对应直播修改进粉记录 | ||||||
|  |      * @return | ||||||
|  |      */ | ||||||
|  |     public int updateLiveSchedulFanRecord(SysLiveSchedulFanRecord sysLiveSchedulFanRecord){ | ||||||
|  |         return sysLiveSchedulFanRecordMapper.updateSysLiveSchedulFanRecord(sysLiveSchedulFanRecord); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 给对应直播删除进粉记录 | ||||||
|  |      * @param id | ||||||
|  |      * @return | ||||||
|  |      */ | ||||||
|  |     public int delLiveSchedulFanRecord(Long id){ | ||||||
|  |         return sysLiveSchedulFanRecordMapper.deleteSysLiveSchedulFanRecordById(id); | ||||||
|  |     } | ||||||
| } | } | ||||||
| @@ -0,0 +1,85 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8" ?> | ||||||
|  | <!DOCTYPE mapper | ||||||
|  |         PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" | ||||||
|  |         "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | ||||||
|  | <mapper namespace="com.stdiet.custom.mapper.SysLiveSchedulFanRecordMapper"> | ||||||
|  |  | ||||||
|  |     <resultMap type="SysLiveSchedulFanRecord" id="SysLiveSchedulFanRecordResult"> | ||||||
|  |         <result property="id"    column="id"    /> | ||||||
|  |         <result property="liveSchedulId"    column="live_schedul_id"    /> | ||||||
|  |         <result property="saleWxAccountId"    column="sale_wx_account_id"    /> | ||||||
|  |         <result property="fanWxNumber"    column="fan_wx_number"    /> | ||||||
|  |         <result property="enterFanTime"    column="enter_fan_time"    /> | ||||||
|  |         <result property="createTime"    column="create_time"    /> | ||||||
|  |         <result property="createBy"    column="create_by"    /> | ||||||
|  |         <result property="updateTime"    column="update_time"    /> | ||||||
|  |         <result property="updateBy"    column="update_by"    /> | ||||||
|  |         <result property="delFlag"    column="del_flag"    /> | ||||||
|  |     </resultMap> | ||||||
|  |  | ||||||
|  |     <sql id="selectSysLiveSchedulFanRecordVo"> | ||||||
|  |         select id, live_schedul_id, sale_wx_account_id, fan_wx_number, enter_fan_time, create_time, create_by, update_time, update_by, del_flag from sys_live_schedul_fan_record | ||||||
|  |     </sql> | ||||||
|  |  | ||||||
|  |     <select id="selectSysLiveSchedulFanRecordList" parameterType="SysLiveSchedulFanRecord" resultMap="SysLiveSchedulFanRecordResult"> | ||||||
|  |         <include refid="selectSysLiveSchedulFanRecordVo"/> where del_flag = 0 | ||||||
|  |     </select> | ||||||
|  |  | ||||||
|  |     <select id="selectSysLiveSchedulFanRecordById" parameterType="Long" resultMap="SysLiveSchedulFanRecordResult"> | ||||||
|  |         <include refid="selectSysLiveSchedulFanRecordVo"/> | ||||||
|  |         where id = #{id} and del_flag = 0 | ||||||
|  |     </select> | ||||||
|  |  | ||||||
|  |     <insert id="insertSysLiveSchedulFanRecord" parameterType="SysLiveSchedulFanRecord" useGeneratedKeys="true" keyProperty="id"> | ||||||
|  |         insert into sys_live_schedul_fan_record | ||||||
|  |         <trim prefix="(" suffix=")" suffixOverrides=","> | ||||||
|  |             <if test="liveSchedulId != null">live_schedul_id,</if> | ||||||
|  |             <if test="saleWxAccountId != null">sale_wx_account_id,</if> | ||||||
|  |             <if test="fanWxNumber != null">fan_wx_number,</if> | ||||||
|  |             <if test="enterFanTime != null">enter_fan_time,</if> | ||||||
|  |             <if test="createTime != null">create_time,</if> | ||||||
|  |             <if test="createBy != null">create_by,</if> | ||||||
|  |             <if test="updateTime != null">update_time,</if> | ||||||
|  |             <if test="updateBy != null">update_by,</if> | ||||||
|  |             <if test="delFlag != null">del_flag,</if> | ||||||
|  |         </trim> | ||||||
|  |         <trim prefix="values (" suffix=")" suffixOverrides=","> | ||||||
|  |             <if test="liveSchedulId != null">#{liveSchedulId},</if> | ||||||
|  |             <if test="saleWxAccountId != null">#{saleWxAccountId},</if> | ||||||
|  |             <if test="fanWxNumber != null">#{fanWxNumber},</if> | ||||||
|  |             <if test="enterFanTime != null">#{enterFanTime},</if> | ||||||
|  |             <if test="createTime != null">#{createTime},</if> | ||||||
|  |             <if test="createBy != null">#{createBy},</if> | ||||||
|  |             <if test="updateTime != null">#{updateTime},</if> | ||||||
|  |             <if test="updateBy != null">#{updateBy},</if> | ||||||
|  |             <if test="delFlag != null">#{delFlag},</if> | ||||||
|  |         </trim> | ||||||
|  |     </insert> | ||||||
|  |  | ||||||
|  |     <update id="updateSysLiveSchedulFanRecord" parameterType="SysLiveSchedulFanRecord"> | ||||||
|  |         update sys_live_schedul_fan_record | ||||||
|  |         <trim prefix="SET" suffixOverrides=","> | ||||||
|  |             <if test="liveSchedulId != null">live_schedul_id = #{liveSchedulId},</if> | ||||||
|  |             <if test="saleWxAccountId != null">sale_wx_account_id = #{saleWxAccountId},</if> | ||||||
|  |             <if test="fanWxNumber != null">fan_wx_number = #{fanWxNumber},</if> | ||||||
|  |             <if test="enterFanTime != null">enter_fan_time = #{enterFanTime},</if> | ||||||
|  |             <if test="createTime != null">create_time = #{createTime},</if> | ||||||
|  |             <if test="createBy != null">create_by = #{createBy},</if> | ||||||
|  |             <if test="updateTime != null">update_time = #{updateTime},</if> | ||||||
|  |             <if test="updateBy != null">update_by = #{updateBy},</if> | ||||||
|  |             <if test="delFlag != null">del_flag = #{delFlag},</if> | ||||||
|  |         </trim> | ||||||
|  |         where id = #{id} | ||||||
|  |     </update> | ||||||
|  |  | ||||||
|  |     <update id="deleteSysLiveSchedulFanRecordById" parameterType="Long"> | ||||||
|  |         update sys_live_schedul_fan_record set del_flag = 1  where id = #{id} | ||||||
|  |     </update> | ||||||
|  |  | ||||||
|  |     <update id="deleteSysLiveSchedulFanRecordByIds" parameterType="String"> | ||||||
|  |         update sys_live_schedul_fan_record set del_flag = 1 where id in | ||||||
|  |         <foreach item="id" collection="array" open="(" separator="," close=")"> | ||||||
|  |             #{id} | ||||||
|  |         </foreach> | ||||||
|  |     </update> | ||||||
|  | </mapper> | ||||||
| @@ -29,6 +29,8 @@ | |||||||
|  |  | ||||||
|         <!-- 根据渠道查询对应微信号(微信账号分配表中) --> |         <!-- 根据渠道查询对应微信号(微信账号分配表中) --> | ||||||
|         <association property="wxAccountList" column="id" select="getWxAccountListByLiveId"/> |         <association property="wxAccountList" column="id" select="getWxAccountListByLiveId"/> | ||||||
|  |         <!-- 查询该场直播真实进粉情况 --> | ||||||
|  |         <association property="addFanList" column="id" select="getAddFanRecordByLiveSchedulId"></association> | ||||||
|     </resultMap> |     </resultMap> | ||||||
|  |  | ||||||
|     <resultMap type="SysLiveSchedul" id="SysLiveSchedulResultSigle"> |     <resultMap type="SysLiveSchedul" id="SysLiveSchedulResultSigle"> | ||||||
| @@ -220,5 +222,16 @@ | |||||||
|         and  #{liveStartTime} >= live_start_time order by live_start_time desc limit 1 |         and  #{liveStartTime} >= live_start_time order by live_start_time desc limit 1 | ||||||
|     </select> |     </select> | ||||||
|  |  | ||||||
|  |     <!-- 根据直播记录ID查询对应进粉情况 --> | ||||||
|  |     <select id="getAddFanRecordByLiveSchedulId" parameterType="Long" resultType="Map"> | ||||||
|  |         select | ||||||
|  |         fr.id, fr.live_schedul_id liveSchedulId, fr.sale_wx_account_id saleWxAccountId, fr.fan_wx_number as fanWxNumber, DATE_FORMAT(fr.enter_fan_time,'%Y-%m-%d %H:%i') as enterFanTime, | ||||||
|  |         w.wx_account as saleWxAccount, u.nick_name as saleName | ||||||
|  |         from sys_live_schedul_fan_record as fr | ||||||
|  |         left join sys_wx_sale_account as w on w.id = fr.sale_wx_account_id and w.del_flag = 0 | ||||||
|  |         left join sys_wx_distribution as swd on swd.wechat_account = w.id and swd.del_flag = 0 | ||||||
|  |         left join sys_user u on u.user_id = swd.user_id | ||||||
|  |         where fr.del_flag = 0 and fr.live_schedul_id = #{id} order by fr.create_time desc | ||||||
|  |     </select> | ||||||
|  |  | ||||||
| </mapper> | </mapper> | ||||||
| @@ -89,5 +89,23 @@ export function getLiveSchedulByTime(data) { | |||||||
|   }) |   }) | ||||||
| } | } | ||||||
|  |  | ||||||
|  | //添加、编辑进粉记录 | ||||||
|  | export function addOrEditSysLiveSchedulFanRecord(data){ | ||||||
|  |   return request({ | ||||||
|  |     url: '/custom/liveSchedul/addOrEditSysLiveSchedulFanRecord', | ||||||
|  |     method: 'post', | ||||||
|  |     data: data | ||||||
|  |   }) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | //删除进粉记录 | ||||||
|  | export function delSysLiveSchedulFanRecord(query){ | ||||||
|  |   return request({ | ||||||
|  |     url: '/custom/liveSchedul/delSysLiveSchedulFanRecord', | ||||||
|  |     method: 'get', | ||||||
|  |     params: query | ||||||
|  |   }) | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -51,3 +51,12 @@ export function exportWxAccount(query) { | |||||||
|     params: query |     params: query | ||||||
|   }) |   }) | ||||||
| } | } | ||||||
|  |  | ||||||
|  | // 查询所有微信账号 | ||||||
|  | export function getAllWxAccount() { | ||||||
|  |   return request({ | ||||||
|  |     url: '/custom/wxAccount/getAllWxAccount', | ||||||
|  |     method: 'get' | ||||||
|  |   }) | ||||||
|  | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -137,16 +137,18 @@ | |||||||
|         </template> |         </template> | ||||||
|       </el-table-column> |       </el-table-column> | ||||||
|       <el-table-column label="直播营养师" align="center" prop="liveNutritionistName" /> |       <el-table-column label="直播营养师" align="center" prop="liveNutritionistName" /> | ||||||
|       <el-table-column label="直播运营" align="center" prop="liveOperatorName" /> |       <!--<el-table-column label="直播运营" align="center" prop="liveOperatorName" /> | ||||||
|       <el-table-column label="直播策划" align="center" prop="livePlannerName" /> |       <el-table-column label="直播策划" align="center" prop="livePlannerName" />--> | ||||||
|       <el-table-column label="所属账号" align="center" prop="fanChannelName" /> |       <el-table-column label="所属账号" align="center" prop="fanChannelName" /> | ||||||
|       <el-table-column label="接粉微信号" align="center" prop="wxAccountList"> |       <el-table-column label="导粉情况" align="center" prop="wxAccountList"> | ||||||
|         <template slot-scope="scope"> |         <template slot-scope="scope"> | ||||||
|  |           <span style="margin-right:10px">{{scope.row.wxAccountList.length}}</span> | ||||||
|           <el-popover |           <el-popover | ||||||
|           placement="left" |           placement="left" | ||||||
|           width="370" |           width="370" | ||||||
|           trigger="click"> |           trigger="click"> | ||||||
|           <el-table :data="scope.row.wxAccountList" style="width:360;height: 300px;overflow: auto;"> |            | ||||||
|  |           <el-table :data="scope.row.wxAccountList" height="300" style="width: 100%"> | ||||||
|             <el-table-column width="80" property="saleName" label="销售"></el-table-column> |             <el-table-column width="80" property="saleName" label="销售"></el-table-column> | ||||||
|             <el-table-column width="180" property="wxAccount" label="微信号" align="center"></el-table-column> |             <el-table-column width="180" property="wxAccount" label="微信号" align="center"></el-table-column> | ||||||
|             <el-table-column width="80" property="fanNum" label="导粉量" align="center"></el-table-column> |             <el-table-column width="80" property="fanNum" label="导粉量" align="center"></el-table-column> | ||||||
| @@ -155,6 +157,55 @@ | |||||||
|           </el-popover> |           </el-popover> | ||||||
|         </template> |         </template> | ||||||
|       </el-table-column> |       </el-table-column> | ||||||
|  |       <el-table-column label="进粉情况" align="center" prop="addFanList"> | ||||||
|  |         <template slot-scope="scope"> | ||||||
|  |           <span style="margin-right:10px">{{scope.row.addFanList.length}}</span> | ||||||
|  |           <el-popover | ||||||
|  |           :title="scope.row.liveRoomName + '-'  + scope.row.fanChannelName + '-' + scope.row.liveNutritionistName + '-' + parseTime(scope.row.liveStartTime, '{h}:{i}') + '至' + parseTime(scope.row.liveEndTime, '{h}:{i}') + '直播进粉记录'" | ||||||
|  |           placement="left" | ||||||
|  |           width="680" | ||||||
|  |           trigger="click"> | ||||||
|  |           <el-row :gutter="10" class="mb8"> | ||||||
|  |             <el-col :span="1.5"> | ||||||
|  |               <el-button | ||||||
|  |                 type="primary" | ||||||
|  |                 icon="el-icon-plus" | ||||||
|  |                 size="mini" | ||||||
|  |                 @click="addFanRecord(scope.row)" | ||||||
|  |               >新增</el-button> | ||||||
|  |               <span style="margin-left:5px;color:red">总数:{{scope.row.addFanList.length}}</span> | ||||||
|  |             </el-col> | ||||||
|  |           </el-row> | ||||||
|  |           <el-table :data="scope.row.addFanList" height="250" style="width: 100%"><!-- 620;height: 300px;overflow: auto; --> | ||||||
|  |             <el-table-column width="70" property="saleName" label="销售"></el-table-column> | ||||||
|  |             <el-table-column width="140" property="saleWxAccount" label="销售微信号" align="center"></el-table-column> | ||||||
|  |             <el-table-column width="140" property="fanWxNumber" label="客户微信号" align="center"></el-table-column> | ||||||
|  |             <el-table-column width="140" property="enterFanTime" label="进粉时间" align="center"></el-table-column> | ||||||
|  |             <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="140"> | ||||||
|  |                 <template slot-scope="scope"> | ||||||
|  |                       <el-button | ||||||
|  |                         style="margin-left:16px" | ||||||
|  |                           size="normal" | ||||||
|  |                           type="text" | ||||||
|  |                           icon="el-icon-edit" | ||||||
|  |                           @click="updateFanRecord(scope.row)" | ||||||
|  |                       >修改</el-button> | ||||||
|  |                       <el-popconfirm title="确定要删除吗?" @onConfirm="delFanRecord(scope.row)"> | ||||||
|  |                           <el-button | ||||||
|  |                              slot="reference" | ||||||
|  |                             size="normal" | ||||||
|  |                             type="text" | ||||||
|  |                             icon="el-icon-delete" | ||||||
|  |                           >删除</el-button>  | ||||||
|  |                       </el-popconfirm> | ||||||
|  |                      | ||||||
|  |                 </template> | ||||||
|  |             </el-table-column> | ||||||
|  |           </el-table> | ||||||
|  |           <el-button slot="reference">详情</el-button> | ||||||
|  |           </el-popover> | ||||||
|  |         </template> | ||||||
|  |       </el-table-column> | ||||||
|       <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="300"> |       <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="300"> | ||||||
|         <template slot-scope="scope"><!-- scope.row.statusTrueName,scope.row.statusFalseName --> |         <template slot-scope="scope"><!-- scope.row.statusTrueName,scope.row.statusFalseName --> | ||||||
|           <el-switch |           <el-switch | ||||||
| @@ -344,12 +395,58 @@ | |||||||
|         <el-button @click="cancel">取 消</el-button> |         <el-button @click="cancel">取 消</el-button> | ||||||
|       </div> |       </div> | ||||||
|     </el-dialog> |     </el-dialog> | ||||||
|  |  | ||||||
|  |      <el-dialog :title="addEditFanRecordTitle" :visible.sync="addEditFanRecordOpen" width="600px" append-to-body :close-on-click-modal="false"> | ||||||
|  |         <el-form ref="addEditFanRecordForm" :model="addEditFanRecordForm" :rules="addEditFanRecordRules" label-width="120px"> | ||||||
|  |             <el-form-item label="销售微信号" prop="saleWxAccountId"> | ||||||
|  |             <el-select | ||||||
|  |                 v-model="addEditFanRecordForm.saleWxAccountId" | ||||||
|  |                 placeholder="请选择销售微信号" | ||||||
|  |                 clearable | ||||||
|  |                 filterable | ||||||
|  |                 size="small" | ||||||
|  |                 style="width:300px" | ||||||
|  |               > | ||||||
|  |               <el-option | ||||||
|  |                 v-for="dict in wxAccountList" | ||||||
|  |                 :key="dict.id" | ||||||
|  |                 :label="dict.wxAccount" | ||||||
|  |                 :value="parseInt(dict.id)" | ||||||
|  |               /> | ||||||
|  |             </el-select> | ||||||
|  |             </el-form-item> | ||||||
|  |             <el-form-item label="粉丝微信号" prop="fanWxNumber"> | ||||||
|  |                 <el-input | ||||||
|  |                   v-model="addEditFanRecordForm.fanWxNumber" | ||||||
|  |                   placeholder="请输入微信号" | ||||||
|  |                   clearable | ||||||
|  |                   size="small" | ||||||
|  |                   maxlength="50" | ||||||
|  |                   style="width:300px" | ||||||
|  |                 /> | ||||||
|  |             </el-form-item> | ||||||
|  |             <el-form-item label="进粉时间" prop="enterFanTime"> | ||||||
|  |                 <el-date-picker | ||||||
|  |                 v-model="addEditFanRecordForm.enterFanTime" | ||||||
|  |                 format="yyyy-MM-dd HH:mm" | ||||||
|  |                 value-format="yyyy-MM-dd HH:mm" | ||||||
|  |                 type="datetime" | ||||||
|  |                 style="width:300px" | ||||||
|  |                 placeholder="进粉时间"> | ||||||
|  |             </el-date-picker> | ||||||
|  |           </el-form-item> | ||||||
|  |         </el-form> | ||||||
|  |         <div slot="footer" class="dialog-footer"> | ||||||
|  |           <el-button type="primary" @click="submitAddEditFanRecordForm">确 定</el-button> | ||||||
|  |           <el-button @click="cancelAddEditFanRecordForm">取 消</el-button> | ||||||
|  |         </div> | ||||||
|  |     </el-dialog> | ||||||
|   </div> |   </div> | ||||||
| </template> | </template> | ||||||
|  |  | ||||||
| <script> | <script> | ||||||
| import { listLiveSchedul, getLiveSchedul, delLiveSchedul, addLiveSchedul, updateLiveSchedul, exportLiveSchedul,updateLiveStatus,copyLastTimeLiveSchedul } from "@/api/custom/liveSchedul"; | import { listLiveSchedul, getLiveSchedul, delLiveSchedul, addLiveSchedul, updateLiveSchedul, exportLiveSchedul,updateLiveStatus,copyLastTimeLiveSchedul,addOrEditSysLiveSchedulFanRecord,delSysLiveSchedulFanRecord } from "@/api/custom/liveSchedul"; | ||||||
| import { listWxAccount } from "@/api/custom/wxAccount"; | import { getAllWxAccount } from "@/api/custom/wxAccount"; | ||||||
| import AutoHideInfo from "@/components/AutoHideInfo"; | import AutoHideInfo from "@/components/AutoHideInfo"; | ||||||
| import dayjs from "dayjs"; | import dayjs from "dayjs"; | ||||||
| const nowDate = dayjs().format("YYYY-MM-DD"); | const nowDate = dayjs().format("YYYY-MM-DD"); | ||||||
| @@ -414,7 +511,19 @@ export default { | |||||||
|       //接粉渠道 |       //接粉渠道 | ||||||
|       fanChanneloptions: [], |       fanChanneloptions: [], | ||||||
|       //所有微信号 |       //所有微信号 | ||||||
|       wxAccountList:[] |       wxAccountList:[], | ||||||
|  |  | ||||||
|  |       addEditFanRecordTitle: "", | ||||||
|  |       addEditFanRecordOpen: false, | ||||||
|  |       addEditFanRecordForm: {}, | ||||||
|  |       addEditFanRecordRules: { | ||||||
|  |         saleWxAccountId: [{ required: true, trigger: "blur", message: "请选择销售微信号" }], | ||||||
|  |         fanWxNumber:[{ required: true, trigger: "blur", message: "请填写粉丝微信号" }], | ||||||
|  |         enterFanTime:[{ required: true, trigger: "blur", message: "请选择进粉时间" }], | ||||||
|  |       }, | ||||||
|  |       //记录当前添加或编辑进粉记录对应直播记录的ID | ||||||
|  |       addOrEditSchedulId: null, | ||||||
|  |  | ||||||
|     }; |     }; | ||||||
|   }, |   }, | ||||||
|   components:{ |   components:{ | ||||||
| @@ -454,16 +563,18 @@ export default { | |||||||
|                 item.status = (item.liveStatus == 0 || item.liveStatus == 2) ? false : true;  |                 item.status = (item.liveStatus == 0 || item.liveStatus == 2) ? false : true;  | ||||||
|                 item.statusFalseName = item.liveStatus == 0 ? '未开播' : '已下播'; |                 item.statusFalseName = item.liveStatus == 0 ? '未开播' : '已下播'; | ||||||
|                 item.statusTrueName = '已开播'; |                 item.statusTrueName = '已开播'; | ||||||
|  |                 item.addFanVisible = this.addOrEditSchedulId == item.id;   | ||||||
|             }); |             }); | ||||||
|         } |         } | ||||||
|         this.total = response.total; |         this.total = response.total; | ||||||
|         this.loading = false; |         this.loading = false; | ||||||
|  |         this.addOrEditSchedulId = null; | ||||||
|       }); |       }); | ||||||
|     }, |     }, | ||||||
|     //获取所有微信号 |     //获取所有微信号 | ||||||
|     getListWxAccount() { |     getListWxAccount() { | ||||||
|       listWxAccount(this.queryParams).then((response) => { |       getAllWxAccount().then((response) => { | ||||||
|         this.wxAccountList = response.rows; |         this.wxAccountList = response.data; | ||||||
|       }); |       }); | ||||||
|     }, |     }, | ||||||
|     // 取消按钮 |     // 取消按钮 | ||||||
| @@ -620,6 +731,79 @@ export default { | |||||||
|           } |           } | ||||||
|       }); |       }); | ||||||
|        |        | ||||||
|  |     }, | ||||||
|  |     addEditFanRecordFormRest(){ | ||||||
|  |         this.addEditFanRecordForm = { | ||||||
|  |           id: null, | ||||||
|  |           liveSchedulId: null, | ||||||
|  |           saleWxAccountId: null, | ||||||
|  |           fanWxNumber: null, | ||||||
|  |           enterFanTime: nowTime | ||||||
|  |         }, | ||||||
|  |         this.addOrEditSchedulId = null; | ||||||
|  |     },  | ||||||
|  |     addFanRecord(item){ | ||||||
|  |         this.addEditFanRecordFormRest(); | ||||||
|  |         this.addEditFanRecordForm.liveSchedulId = item.id; | ||||||
|  |         this.addEditFanRecordTitle = item.liveRoomName + "-" + item.fanChannelName + "-" + item.liveNutritionistName + "-" + this.parseTime(item.liveStartTime, '{h}:{i}') +"至" + this.parseTime(item.liveEndTime, '{h}:{i}') + "直播-添加进粉记录"; | ||||||
|  |         this.addEditFanRecordOpen = true; | ||||||
|  |     }, | ||||||
|  |     updateFanRecord(item){ | ||||||
|  |         this.addEditFanRecordFormRest(); | ||||||
|  |         if(item.id == null){ | ||||||
|  |             return; | ||||||
|  |         } | ||||||
|  |         this.addEditFanRecordForm = { | ||||||
|  |           id: item.id, | ||||||
|  |           liveSchedulId: item.liveSchedulId, | ||||||
|  |           saleWxAccountId: item.saleWxAccountId, | ||||||
|  |           fanWxNumber: item.fanWxNumber, | ||||||
|  |           enterFanTime: item.enterFanTime | ||||||
|  |         }; | ||||||
|  |         let liveSchedul = this.getLiveSchedulById(item.liveSchedulId); | ||||||
|  |         this.addEditFanRecordTitle = liveSchedul.liveRoomName + "-" + liveSchedul.fanChannelName + "-" + liveSchedul.liveNutritionistName + "-" + this.parseTime(liveSchedul.liveStartTime, '{h}:{i}') +"至" + this.parseTime(liveSchedul.liveEndTime, '{h}:{i}') + "直播-编辑进粉记录"; | ||||||
|  |         this.addEditFanRecordOpen = true; | ||||||
|  |     }, | ||||||
|  |     delFanRecord(item){ | ||||||
|  |         if(item == null || item.id == null){ | ||||||
|  |           return; | ||||||
|  |         } | ||||||
|  |         delSysLiveSchedulFanRecord({'id': item.id}).then((reponse) => { | ||||||
|  |             if(reponse.code == 200){ | ||||||
|  |               this.msgSuccess("删除成功"); | ||||||
|  |               this.addEditFanRecordOpen = false; | ||||||
|  |                this.getList(); | ||||||
|  |             }else{ | ||||||
|  |               this.msgSuccess("删除失败"); | ||||||
|  |             } | ||||||
|  |         }); | ||||||
|  |     }, | ||||||
|  |     submitAddEditFanRecordForm(){ | ||||||
|  |          this.$refs["addEditFanRecordForm"].validate(valid => { | ||||||
|  |             if (valid) { | ||||||
|  |                   addOrEditSysLiveSchedulFanRecord(this.addEditFanRecordForm).then((response) => { | ||||||
|  |                       if(response.code == 200){ | ||||||
|  |                             this.msgSuccess(this.addEditFanRecordForm.id == null ? "添加成功" : "编辑成功"); | ||||||
|  |                             this.addEditFanRecordOpen = false; | ||||||
|  |                             this.addOrEditSchedulId = this.addEditFanRecordForm.liveSchedulId; | ||||||
|  |                             this.getList(); | ||||||
|  |                       }else{ | ||||||
|  |                          this.msgError(this.addEditFanRecordForm.id == null ? "添加失败" : "编辑失败"); | ||||||
|  |                       } | ||||||
|  |  | ||||||
|  |                   }); | ||||||
|  |             }else{ | ||||||
|  |               this.msgError("数据未填写完整"); | ||||||
|  |             } | ||||||
|  |          }); | ||||||
|  |     }, | ||||||
|  |     cancelAddEditFanRecordForm(){ | ||||||
|  |         this.addEditFanRecordOpen = false; | ||||||
|  |     }, | ||||||
|  |     getLiveSchedulById(id){ | ||||||
|  |       if(this.liveSchedulList != null && this.liveSchedulList.length > 0 && id != null){ | ||||||
|  |          return this.liveSchedulList.find((opt) => opt.id === id); | ||||||
|  |       } | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| }; | }; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user