食谱计划页面、逻辑优化
This commit is contained in:
		| @@ -7,18 +7,13 @@ import com.stdiet.common.utils.StringUtils; | ||||
| import com.stdiet.custom.domain.SysPhysicalSigns; | ||||
|  | ||||
| import com.stdiet.common.utils.bean.ObjectUtils; | ||||
| import com.stdiet.custom.domain.SysRecipesPlan; | ||||
| import com.stdiet.custom.dto.request.CustomerInvestigateRequest; | ||||
| import com.stdiet.custom.dto.response.CustomerListResponse; | ||||
| import org.omg.PortableInterceptor.SYSTEM_EXCEPTION; | ||||
| import org.springframework.security.access.prepost.PreAuthorize; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.web.bind.annotation.GetMapping; | ||||
| 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 org.springframework.web.bind.annotation.*; | ||||
| import com.stdiet.common.annotation.Log; | ||||
| import com.stdiet.common.core.controller.BaseController; | ||||
| import com.stdiet.common.core.domain.AjaxResult; | ||||
| @@ -146,4 +141,19 @@ public class SysCustomerController extends BaseController | ||||
|     { | ||||
|         return toAjax(sysCustomerService.delCustomerAndSignById(ids)); | ||||
|     } | ||||
|  | ||||
|  | ||||
|     /** | ||||
|      * 根据手机号查看用户体征 | ||||
|      */ | ||||
|     @GetMapping("/getCustomerAndSignByPhone") | ||||
|     @PreAuthorize("@ss.hasPermi('custom:customer:query')") | ||||
|     public AjaxResult getCustomerAndSignByPhone(@RequestParam("phone")String phone) | ||||
|     { | ||||
|         SysCustomer sysCustomer = null; | ||||
|         if(StringUtils.isNotEmpty(phone)){ | ||||
|            sysCustomer = sysCustomerService.selectSysCustomerAndSignByPhone(phone); | ||||
|         } | ||||
|         return AjaxResult.success(sysCustomer); | ||||
|     } | ||||
| } | ||||
| @@ -137,6 +137,45 @@ public class SysOrderController extends OrderBaseController { | ||||
|         return AjaxResult.success(sysOrderService.selectSysOrderById(orderId)); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 获取销售订单详细信息(列出所有营养师、助理等名称) | ||||
|      */ | ||||
|     @PreAuthorize("@ss.hasPermi('custom:order:query')") | ||||
|     @GetMapping(value = "/getInfoDetail") | ||||
|     public AjaxResult getInfoDetail(@RequestParam("orderId") Long orderId) { | ||||
|         SysOrder order = sysOrderService.selectSysOrderById(orderId); | ||||
|         if(order != null){ | ||||
|             List<SysUser> userList = userService.selectAllUser(); | ||||
|             for(SysUser user : userList){ | ||||
|                 if (user.getUserId().equals(order.getPreSaleId())) { | ||||
|                     order.setPreSale(user.getNickName()); | ||||
|                 } | ||||
|                 if (user.getUserId().equals(order.getAfterSaleId())) { | ||||
|                     order.setAfterSale(user.getNickName()); | ||||
|                 } | ||||
|                 if (user.getUserId().equals(order.getNutritionistId())) { | ||||
|                     order.setNutritionist(user.getNickName()); | ||||
|                 } | ||||
|                 if (user.getUserId().equals(order.getNutriAssisId())) { | ||||
|                     order.setNutriAssis(user.getNickName()); | ||||
|                 } | ||||
|                 if (user.getUserId().equals(order.getOperatorId())) { | ||||
|                     order.setOperator(user.getNickName()); | ||||
|                 } | ||||
|                 if (user.getUserId().equals(order.getPlannerId())) { | ||||
|                     order.setPlanner(user.getNickName()); | ||||
|                 } | ||||
|                 if (user.getUserId().equals(order.getPlannerAssisId())) { | ||||
|                     order.setPlannerAssis(user.getNickName()); | ||||
|                 } | ||||
|                 if (user.getUserId().equals(order.getOperatorAssisId())) { | ||||
|                     order.setOperatorAssis(user.getNickName()); | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|         return AjaxResult.success(order); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 新增销售订单 | ||||
|      */ | ||||
|   | ||||
| @@ -3,14 +3,7 @@ package com.stdiet.web.controller.custom; | ||||
| import java.util.List; | ||||
| import org.springframework.security.access.prepost.PreAuthorize; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.web.bind.annotation.GetMapping; | ||||
| 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 org.springframework.web.bind.annotation.*; | ||||
| import com.stdiet.common.annotation.Log; | ||||
| import com.stdiet.common.core.controller.BaseController; | ||||
| import com.stdiet.common.core.domain.AjaxResult; | ||||
| @@ -41,10 +34,31 @@ public class SysRecipesPlanController extends BaseController | ||||
|     public TableDataInfo list(SysRecipesPlan sysRecipesPlan) | ||||
|     { | ||||
|         startPage(); | ||||
|         List<SysRecipesPlan> list = sysRecipesPlanService.selectSysRecipesPlanList(sysRecipesPlan); | ||||
|         List<SysRecipesPlan> list = sysRecipesPlanService.selectPlanListByCondition(sysRecipesPlan); | ||||
|         return getDataTable(list); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 获取食谱计划详细信息 | ||||
|      */ | ||||
|     @PreAuthorize("@ss.hasPermi('recipes:recipesPlan:query')") | ||||
|     @GetMapping(value = "/{id}") | ||||
|     public AjaxResult getInfo(@PathVariable("id") Long id) | ||||
|     { | ||||
|         return AjaxResult.success(sysRecipesPlanService.selectSysRecipesPlanById(id)); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 修改食谱计划 | ||||
|      */ | ||||
|     @PreAuthorize("@ss.hasPermi('recipes:recipesPlan:edit')") | ||||
|     @Log(title = "食谱计划", businessType = BusinessType.UPDATE) | ||||
|     @PutMapping | ||||
|     public AjaxResult edit(@RequestBody SysRecipesPlan sysRecipesPlan) | ||||
|     { | ||||
|         return toAjax(sysRecipesPlanService.updateSysRecipesPlan(sysRecipesPlan)); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 导出食谱计划列表 | ||||
|      */ | ||||
| @@ -53,7 +67,7 @@ public class SysRecipesPlanController extends BaseController | ||||
|     @GetMapping("/export") | ||||
|     public AjaxResult export(SysRecipesPlan sysRecipesPlan) | ||||
|     { | ||||
|         List<SysRecipesPlan> list = sysRecipesPlanService.selectSysRecipesPlanList(sysRecipesPlan); | ||||
|         List<SysRecipesPlan> list = sysRecipesPlanService.selectPlanListByCondition(sysRecipesPlan); | ||||
|         ExcelUtil<SysRecipesPlan> util = new ExcelUtil<SysRecipesPlan>(SysRecipesPlan.class); | ||||
|         return util.exportExcel(list, "recipesPlan"); | ||||
|     } | ||||
|   | ||||
| @@ -21,9 +21,16 @@ public class SysRecipesPlan extends BaseEntity | ||||
|     private Long id; | ||||
|  | ||||
|     /** 订单ID */ | ||||
|     @Excel(name = "订单ID") | ||||
|     //@Excel(name = "订单ID") | ||||
|     private Long orderId; | ||||
|  | ||||
|     //非持久化字段,客户姓名 | ||||
|     @Excel(name = "客户姓名") | ||||
|     private String customer; | ||||
|  | ||||
|     //非持久化字段,客户手机号 | ||||
|     private String phone; | ||||
|  | ||||
|     /** 食谱开始日期 */ | ||||
|     @JsonFormat(pattern = "yyyy-MM-dd") | ||||
|     @Excel(name = "食谱开始日期", width = 30, dateFormat = "yyyy-MM-dd") | ||||
| @@ -34,12 +41,34 @@ public class SysRecipesPlan extends BaseEntity | ||||
|     @Excel(name = "食谱结束日期", width = 30, dateFormat = "yyyy-MM-dd") | ||||
|     private Date endDate; | ||||
|  | ||||
|     //非持久化字段,服务开始时间 | ||||
|     //@Excel(name = "服务开始时间", dateFormat = "yyyy-MM-dd") | ||||
|     private Date orderStartDate; | ||||
|  | ||||
|     //非持久化字段,服务结束时间 | ||||
|     //@Excel(name = "服务结束时间", dateFormat = "yyyy-MM-dd") | ||||
|     private Date orderEndDate; | ||||
|  | ||||
|     //非持久化字段,营养师ID | ||||
|     private Long nutritionistId; | ||||
|  | ||||
|     //非持久化字段,营养师姓名 | ||||
|     @Excel(name = "营养师") | ||||
|     private String nutritionist; | ||||
|  | ||||
|     //非持久化字段,营养师助理ID | ||||
|     private Long nutritionistAssisId; | ||||
|  | ||||
|     //非持久化字段,营养师助理姓名 | ||||
|     @Excel(name = "营养师助理") | ||||
|     private String nutritionistAssis; | ||||
|  | ||||
|     /** 食谱ID */ | ||||
|     @Excel(name = "食谱ID") | ||||
|     //@Excel(name = "食谱ID") | ||||
|     private Long recipesId; | ||||
|  | ||||
|     /** 食谱是否发送,0未发送 1已发送 */ | ||||
|     @Excel(name = "食谱是否发送,0未发送 1已发送") | ||||
|     @Excel(name = "食谱是否发送", readConverterExp="0=未发送,1=已发送") | ||||
|     private Integer sendFlag; | ||||
|  | ||||
|     /** 食谱发送时间 */ | ||||
| @@ -123,6 +152,70 @@ public class SysRecipesPlan extends BaseEntity | ||||
|         return delFlag; | ||||
|     } | ||||
|  | ||||
|     public String getCustomer() { | ||||
|         return customer; | ||||
|     } | ||||
|  | ||||
|     public void setCustomer(String customer) { | ||||
|         this.customer = customer; | ||||
|     } | ||||
|  | ||||
|     public Long getNutritionistId() { | ||||
|         return nutritionistId; | ||||
|     } | ||||
|  | ||||
|     public void setNutritionistId(Long nutritionistId) { | ||||
|         this.nutritionistId = nutritionistId; | ||||
|     } | ||||
|  | ||||
|     public String getNutritionist() { | ||||
|         return nutritionist; | ||||
|     } | ||||
|  | ||||
|     public void setNutritionist(String nutritionist) { | ||||
|         this.nutritionist = nutritionist; | ||||
|     } | ||||
|  | ||||
|     public Long getNutritionistAssisId() { | ||||
|         return nutritionistAssisId; | ||||
|     } | ||||
|  | ||||
|     public void setNutritionistAssisId(Long nutritionistAssisId) { | ||||
|         this.nutritionistAssisId = nutritionistAssisId; | ||||
|     } | ||||
|  | ||||
|     public String getNutritionistAssis() { | ||||
|         return nutritionistAssis; | ||||
|     } | ||||
|  | ||||
|     public void setNutritionistAssis(String nutritionistAssis) { | ||||
|         this.nutritionistAssis = nutritionistAssis; | ||||
|     } | ||||
|  | ||||
|     public Date getOrderStartDate() { | ||||
|         return orderStartDate; | ||||
|     } | ||||
|  | ||||
|     public void setOrderStartDate(Date orderStartDate) { | ||||
|         this.orderStartDate = orderStartDate; | ||||
|     } | ||||
|  | ||||
|     public Date getOrderEndDate() { | ||||
|         return orderEndDate; | ||||
|     } | ||||
|  | ||||
|     public void setOrderEndDate(Date orderEndDate) { | ||||
|         this.orderEndDate = orderEndDate; | ||||
|     } | ||||
|  | ||||
|     public String getPhone() { | ||||
|         return phone; | ||||
|     } | ||||
|  | ||||
|     public void setPhone(String phone) { | ||||
|         this.phone = phone; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public String toString() { | ||||
|         return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) | ||||
|   | ||||
| @@ -70,4 +70,11 @@ public interface SysCustomerMapper | ||||
|  | ||||
|     //查询客户基础信息以及体征信息 | ||||
|     List<SysCustomer> selectSysCustomerAndSignList(SysCustomer sysCustomer); | ||||
|  | ||||
|     /** | ||||
|      * 根据手机号查询客户以及体征 | ||||
|      * @param phone | ||||
|      * @return | ||||
|      */ | ||||
|     SysCustomer selectSysCustomerAndSignByPhone(String phone); | ||||
| } | ||||
| @@ -66,4 +66,11 @@ public interface SysOrderPauseMapper | ||||
|      * @return | ||||
|      */ | ||||
|     int getCountByOrderIdAndPauseDate(SysOrderPause sysOrderPause); | ||||
|  | ||||
|     /** | ||||
|      * 根据订单ID删除暂停记录 | ||||
|      * @param orderIds | ||||
|      * @return | ||||
|      */ | ||||
|     int deletePauseByOrderId(Long[] orderIds); | ||||
| } | ||||
| @@ -68,8 +68,15 @@ public interface SysRecipesPlanMapper | ||||
|  | ||||
|     /** | ||||
|      * 根据订单ID删除对应食谱计划 | ||||
|      * @param orderId | ||||
|      * @param orderIds | ||||
|      * @return | ||||
|      */ | ||||
|     int delRecipesPlanByOrderId(Long orderId); | ||||
|     int delRecipesPlanByOrderId(Long[] orderIds); | ||||
|  | ||||
|     /** | ||||
|      * 多条件查询食谱计划列表 | ||||
|      * @param sysRecipesPlan | ||||
|      * @return | ||||
|      */ | ||||
|     List<SysRecipesPlan> selectPlanListByCondition(SysRecipesPlan sysRecipesPlan); | ||||
| } | ||||
| @@ -93,4 +93,11 @@ public interface ISysCustomerService | ||||
|     SysCustomer getCustomerAndSignById(Long id); | ||||
|  | ||||
|     int delCustomerAndSignById(Long[] ids); | ||||
|  | ||||
|     /** | ||||
|      * 根据手机号查询客户以及体征 | ||||
|      * @param phone | ||||
|      * @return | ||||
|      */ | ||||
|     SysCustomer selectSysCustomerAndSignByPhone(String phone); | ||||
| } | ||||
| @@ -65,4 +65,11 @@ public interface ISysOrderPauseService | ||||
|      * @return | ||||
|      */ | ||||
|     int getCountByOrderIdAndPauseDate(SysOrderPause sysOrderPause); | ||||
|  | ||||
|     /** | ||||
|      * 根据订单ID删除暂停记录 | ||||
|      * @param orderIds | ||||
|      * @return | ||||
|      */ | ||||
|     int deletePauseByOrderId(Long[] orderIds); | ||||
| } | ||||
| @@ -69,9 +69,10 @@ public interface ISysOrderService | ||||
|     public BigDecimal selectAllOrderAmount(SysOrder sysOrder); | ||||
|  | ||||
|     /** | ||||
|      * 根据订单ID更新该订单的服务到期时间 | ||||
|      * @param orderId | ||||
|      * 根据订单ID更新该订单的服务到期时间,异步更新食谱计划 | ||||
|      * @param orderId  订单ID | ||||
|      * @param updatePlan 是否更新食谱 | ||||
|      * @return | ||||
|      */ | ||||
|     int updateOrderServerEndDate(Long orderId); | ||||
|     int updateOrderServerEndDate(Long orderId, boolean updatePlan); | ||||
| } | ||||
| @@ -61,10 +61,23 @@ public interface ISysRecipesPlanService | ||||
|     public int deleteSysRecipesPlanById(Long id); | ||||
|  | ||||
|     /** | ||||
|      * 根据订单ID生成对应的食谱计划 | ||||
|      * | ||||
|      * 订单发生更新时(开始时间、服务时长、赠送时长),重新生成食谱计划 | ||||
|      * @param orderId 订单ID | ||||
|      * @return 结果 | ||||
|      */ | ||||
|     public void autoGenerateRecipesPlanByOrderId(Long orderId); | ||||
|     public void regenerateRecipesPlan(Long orderId); | ||||
|  | ||||
|     /** | ||||
|      * 根据订单ID删除所有食谱安排计划 | ||||
|      * @param orderIds 订单ID | ||||
|      * @return | ||||
|      */ | ||||
|     int delRecipesPlanByOrderId(Long[] orderIds); | ||||
|  | ||||
|     /** | ||||
|      * 多条件查询食谱计划列表 | ||||
|      * @param sysRecipesPlan | ||||
|      * @return | ||||
|      */ | ||||
|     List<SysRecipesPlan> selectPlanListByCondition(SysRecipesPlan sysRecipesPlan); | ||||
| } | ||||
| @@ -178,4 +178,14 @@ public class SysCustomerServiceImpl implements ISysCustomerService | ||||
|         } | ||||
|         return 0; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 根据手机号查询客户以及体征 | ||||
|      * @param phone | ||||
|      * @return | ||||
|      */ | ||||
|     @Override | ||||
|     public SysCustomer selectSysCustomerAndSignByPhone(String phone){ | ||||
|         return sysCustomerMapper.selectSysCustomerAndSignByPhone(phone); | ||||
|     } | ||||
| } | ||||
| @@ -7,6 +7,7 @@ import com.stdiet.common.utils.DateUtils; | ||||
| import com.stdiet.custom.domain.SysOrder; | ||||
| import com.stdiet.custom.service.ISysCommissionDayService; | ||||
| import com.stdiet.custom.service.ISysOrderService; | ||||
| import com.stdiet.custom.service.ISysRecipesPlanService; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.stereotype.Service; | ||||
| import com.stdiet.custom.mapper.SysOrderPauseMapper; | ||||
| @@ -27,9 +28,6 @@ public class SysOrderPauseServiceImpl implements ISysOrderPauseService | ||||
|     @Autowired | ||||
|     private SysOrderPauseMapper sysOrderPauseMapper; | ||||
|  | ||||
|     @Autowired | ||||
|     private ISysCommissionDayService sysCommissionDayService; | ||||
|  | ||||
|     @Autowired | ||||
|     private ISysOrderService sysOrderService; | ||||
|  | ||||
| @@ -69,7 +67,7 @@ public class SysOrderPauseServiceImpl implements ISysOrderPauseService | ||||
|         sysOrderPause.setCreateTime(DateUtils.getNowDate()); | ||||
|         if(sysOrderPauseMapper.insertSysOrderPause(sysOrderPause) > 0){ | ||||
|             //修改订单服务到期时间 | ||||
|             return sysOrderService.updateOrderServerEndDate(sysOrderPause.getOrderId()); | ||||
|             return sysOrderService.updateOrderServerEndDate(sysOrderPause.getOrderId(), true); | ||||
|         } | ||||
|         return 0; | ||||
|     } | ||||
| @@ -85,7 +83,7 @@ public class SysOrderPauseServiceImpl implements ISysOrderPauseService | ||||
|     { | ||||
|         sysOrderPause.setUpdateTime(DateUtils.getNowDate()); | ||||
|         if(sysOrderPauseMapper.updateSysOrderPause(sysOrderPause) > 0){ | ||||
|             return sysOrderService.updateOrderServerEndDate(sysOrderPause.getOrderId()); | ||||
|             return sysOrderService.updateOrderServerEndDate(sysOrderPause.getOrderId(), true); | ||||
|         } | ||||
|         return 0; | ||||
|     } | ||||
| @@ -101,7 +99,7 @@ public class SysOrderPauseServiceImpl implements ISysOrderPauseService | ||||
|     { | ||||
|         SysOrderPause sysOrderPause = selectSysOrderPauseById(ids[0]); | ||||
|         if(sysOrderPause != null && sysOrderPauseMapper.deleteSysOrderPauseByIds(ids) > 0){ | ||||
|             return sysOrderService.updateOrderServerEndDate(sysOrderPause.getOrderId()); | ||||
|             return sysOrderService.updateOrderServerEndDate(sysOrderPause.getOrderId(), true); | ||||
|         } | ||||
|         return 0; | ||||
|     } | ||||
| @@ -117,7 +115,7 @@ public class SysOrderPauseServiceImpl implements ISysOrderPauseService | ||||
|     { | ||||
|         SysOrderPause sysOrderPause = selectSysOrderPauseById(id); | ||||
|         if(sysOrderPause != null && sysOrderPauseMapper.deleteSysOrderPauseById(id) > 0){ | ||||
|             return sysOrderService.updateOrderServerEndDate(sysOrderPause.getOrderId()); | ||||
|             return sysOrderService.updateOrderServerEndDate(sysOrderPause.getOrderId(), true); | ||||
|         } | ||||
|         return 0; | ||||
|     } | ||||
| @@ -127,7 +125,18 @@ public class SysOrderPauseServiceImpl implements ISysOrderPauseService | ||||
|      * @param sysOrderPause | ||||
|      * @return | ||||
|      */ | ||||
|     @Override | ||||
|     public int getCountByOrderIdAndPauseDate(SysOrderPause sysOrderPause){ | ||||
|         return sysOrderPauseMapper.getCountByOrderIdAndPauseDate(sysOrderPause); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 根据订单ID删除暂停记录 | ||||
|      * @param orderIds | ||||
|      * @return | ||||
|      */ | ||||
|     @Override | ||||
|     public int deletePauseByOrderId(Long[] orderIds){ | ||||
|         return sysOrderPauseMapper.deletePauseByOrderId(orderIds); | ||||
|     } | ||||
| } | ||||
| @@ -1,16 +1,14 @@ | ||||
| package com.stdiet.custom.service.impl; | ||||
|  | ||||
| import java.math.BigDecimal; | ||||
| import java.time.LocalDate; | ||||
| import java.time.temporal.ChronoUnit; | ||||
| import java.util.Date; | ||||
| import java.util.List; | ||||
| import java.util.Map; | ||||
|  | ||||
| import com.stdiet.common.utils.DateUtils; | ||||
| import com.stdiet.custom.domain.SysOrderCommisionDayDetail; | ||||
| import com.stdiet.custom.domain.SysOrderPause; | ||||
| import com.stdiet.custom.service.ISysCommissionDayService; | ||||
| import com.stdiet.custom.service.ISysOrderPauseService; | ||||
| import com.stdiet.custom.service.ISysRecipesPlanService; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.stereotype.Service; | ||||
| import com.stdiet.custom.mapper.SysOrderMapper; | ||||
| @@ -33,6 +31,12 @@ public class SysOrderServiceImpl implements ISysOrderService { | ||||
|     @Autowired | ||||
|     private ISysCommissionDayService sysCommissionDayService; | ||||
|  | ||||
|     @Autowired | ||||
|     private ISysRecipesPlanService sysRecipesPlanService; | ||||
|  | ||||
|     @Autowired | ||||
|     private ISysOrderPauseService sysOrderPauseService; | ||||
|  | ||||
|     /** | ||||
|      * 查询销售订单 | ||||
|      * | ||||
| @@ -65,11 +69,16 @@ public class SysOrderServiceImpl implements ISysOrderService { | ||||
|     public int insertSysOrder(SysOrder sysOrder) { | ||||
|         Date orderTime = DateUtils.getNowDate(); | ||||
|         sysOrder.setCreateTime(orderTime); | ||||
| //        sysOrder.setOrderTime(orderTime); | ||||
|         //sysOrder.setOrderTime(orderTime); | ||||
|         //计算服务到期时间 | ||||
|         setOrderServerEndDate(sysOrder); | ||||
|         sysOrder.setOrderId(Long.parseLong(DateUtils.parseDateToStr(DateUtils.YYYYMMDDHHMMSS, orderTime))); | ||||
|         return sysOrderMapper.insertSysOrder(sysOrder); | ||||
|         int row = sysOrderMapper.insertSysOrder(sysOrder); | ||||
|         if(row > 0){ | ||||
|             //异步生成食谱计划 | ||||
|             sysRecipesPlanService.regenerateRecipesPlan(sysOrder.getOrderId()); | ||||
|         } | ||||
|         return row; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -80,10 +89,40 @@ public class SysOrderServiceImpl implements ISysOrderService { | ||||
|      */ | ||||
|     @Override | ||||
|     public int updateSysOrder(SysOrder sysOrder) { | ||||
|         sysOrder.setUpdateTime(DateUtils.getNowDate()); | ||||
|         //获取旧订单对象 | ||||
|         SysOrder oldSysOrder = sysOrderMapper.selectSysOrderById(sysOrder.getOrderId()); | ||||
|         //计算服务到期时间 | ||||
|         setOrderServerEndDate(sysOrder); | ||||
|         return sysOrderMapper.updateSysOrder(sysOrder); | ||||
|         sysOrder.setUpdateTime(DateUtils.getNowDate()); | ||||
|         //更新订单 | ||||
|         int row = sysOrderMapper.updateSysOrder(sysOrder); | ||||
|         if(row > 0){ | ||||
|             //异步更新食谱计划 | ||||
|             if(isNeedRegenerateRecipesPlan(oldSysOrder, sysOrder)){ | ||||
|                 sysRecipesPlanService.regenerateRecipesPlan(sysOrder.getOrderId()); | ||||
|             } | ||||
|         } | ||||
|         return row; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 判断是否需要重新生成食谱计划 | ||||
|      * @param oldSysOrder | ||||
|      * @param newSysOrder | ||||
|      * @return | ||||
|      */ | ||||
|     private boolean isNeedRegenerateRecipesPlan(SysOrder oldSysOrder, SysOrder newSysOrder){ | ||||
|         if(oldSysOrder.getServeTimeId() != null && newSysOrder.getServeTimeId() != null && oldSysOrder.getServeTimeId().intValue() != newSysOrder.getServeTimeId().intValue()){ | ||||
|             return true; | ||||
|         } | ||||
|         if(newSysOrder.getGiveServeDay() != null && oldSysOrder.getGiveServeDay() != null && oldSysOrder.getGiveServeDay().intValue() != newSysOrder.getGiveServeDay().intValue()){ | ||||
|             return true; | ||||
|         } | ||||
|         if(oldSysOrder.getStartTime() != null && newSysOrder.getStartTime() != null | ||||
|                 && ChronoUnit.DAYS.between(DateUtils.dateToLocalDate(oldSysOrder.getStartTime()), DateUtils.dateToLocalDate(newSysOrder.getStartTime())) != 0){ | ||||
|             return true; | ||||
|         } | ||||
|         return false; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -94,7 +133,11 @@ public class SysOrderServiceImpl implements ISysOrderService { | ||||
|      */ | ||||
|     @Override | ||||
|     public int deleteSysOrderByIds(Long[] orderIds) { | ||||
|         return sysOrderMapper.deleteSysOrderByIds(orderIds); | ||||
|         int row = sysOrderMapper.deleteSysOrderByIds(orderIds); | ||||
|         if(row > 0){ | ||||
|             deletePauseAndPlan(orderIds); | ||||
|         } | ||||
|         return row; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -105,7 +148,13 @@ public class SysOrderServiceImpl implements ISysOrderService { | ||||
|      */ | ||||
|     @Override | ||||
|     public int deleteSysOrderById(Long orderId) { | ||||
|         return sysOrderMapper.deleteSysOrderById(orderId); | ||||
|         int row = sysOrderMapper.deleteSysOrderById(orderId); | ||||
|         if(row > 0){ | ||||
|             Long[] orderIdArray = new Long[1]; | ||||
|             orderIdArray[0] = orderId; | ||||
|             deletePauseAndPlan(orderIdArray); | ||||
|         } | ||||
|         return row; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -119,21 +168,27 @@ public class SysOrderServiceImpl implements ISysOrderService { | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 根据订单ID更新该订单的服务到期时间 | ||||
|      * @param orderId | ||||
|      * 根据订单ID更新该订单的服务到期时间,异步更新食谱计划 | ||||
|      * @param orderId  订单ID | ||||
|      * @param updatePlan 是否更新食谱 | ||||
|      * @return | ||||
|      */ | ||||
|     @Override | ||||
|     public int updateOrderServerEndDate(Long orderId){ | ||||
|     public int updateOrderServerEndDate(Long orderId, boolean updatePlan){ | ||||
|         int row = 0; | ||||
|         //更新订单服务到期时间 | ||||
|         SysOrder sysOrder = selectSysOrderById(orderId); | ||||
|         if(sysOrder != null){ | ||||
|             //设置服务到期时间 | ||||
|             setOrderServerEndDate(sysOrder); | ||||
|             sysOrder.setUpdateTime(new Date()); | ||||
|             return updateSysOrder(sysOrder); | ||||
|             row = updateSysOrder(sysOrder); | ||||
|             if(row > 0){ | ||||
|                 //异步更新食谱计划 | ||||
|                 sysRecipesPlanService.regenerateRecipesPlan(sysOrder.getOrderId()); | ||||
|             } | ||||
|         return 0; | ||||
|         } | ||||
|         return row; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -143,4 +198,15 @@ public class SysOrderServiceImpl implements ISysOrderService { | ||||
|     private void setOrderServerEndDate(SysOrder sysOrder){ | ||||
|         sysOrder.setServerEndTime(DateUtils.localDateToDate(sysCommissionDayService.getServerEndDate(sysOrder))); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 删除订单的同时删除暂停记录、食谱计划安排 | ||||
|      * @param orderIds 订单ID集合 | ||||
|      */ | ||||
|     private void deletePauseAndPlan(Long[] orderIds){ | ||||
|         //删除暂停记录 | ||||
|         sysOrderPauseService.deletePauseByOrderId(orderIds); | ||||
|         //删除食谱计划 | ||||
|         sysRecipesPlanService.delRecipesPlanByOrderId(orderIds); | ||||
|     } | ||||
| } | ||||
| @@ -91,6 +91,8 @@ public class SysRecipesPlanServiceImpl implements ISysRecipesPlanService | ||||
|     public int updateSysRecipesPlan(SysRecipesPlan sysRecipesPlan) | ||||
|     { | ||||
|         sysRecipesPlan.setUpdateTime(DateUtils.getNowDate()); | ||||
|         //目前只能修改发送状态,所以修改时加上发送时间 | ||||
|         sysRecipesPlan.setSendTime(DateUtils.getNowDate()); | ||||
|         return sysRecipesPlanMapper.updateSysRecipesPlan(sysRecipesPlan); | ||||
|     } | ||||
|  | ||||
| @@ -119,40 +121,50 @@ public class SysRecipesPlanServiceImpl implements ISysRecipesPlanService | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 根据订单ID生成对应的食谱计划 | ||||
|      * 异步方法,根据订单ID生成对应的食谱计划,退款订单不生成食谱计划 | ||||
|      * | ||||
|      * @param orderId 订单ID | ||||
|      * @return 结果 | ||||
|      */ | ||||
|     @Override | ||||
|     @Async("generateRecipesPlan") | ||||
|     public void autoGenerateRecipesPlanByOrderId(Long orderId){ | ||||
|     @Async | ||||
|     public void regenerateRecipesPlan(Long orderId){ | ||||
|         if(orderId == null || orderId <= 0){ | ||||
|             return; | ||||
|         } | ||||
|         SysOrder sysOrder = sysOrderService.selectSysOrderById(orderId); | ||||
|         //订单为空、金额小于0不进行食谱生成、更新 | ||||
|         if(sysOrder == null){ | ||||
|             return; | ||||
|         } | ||||
|         try{ | ||||
|             //获取redis中该订单对应的锁 | ||||
|             if(synchrolockUtil.lock(String.format(generateRecipesPlanLockKey, orderId))){ | ||||
|                 SysRecipesPlan queryParam = new SysRecipesPlan(); | ||||
|                 queryParam.setOrderId(orderId); | ||||
|                 List<SysRecipesPlan> oldRecipesPlanList = sysRecipesPlanMapper.selectSysRecipesPlanList(queryParam); | ||||
|                 //判断是否已存在食谱 | ||||
|                 if(oldRecipesPlanList != null && oldRecipesPlanList.size() > 0){ | ||||
|                     Long[] orderIdArray = new Long[1]; | ||||
|                     orderIdArray[0] = orderId; | ||||
|                     //删除该订单对于食谱 | ||||
|                 sysRecipesPlanMapper.delRecipesPlanByOrderId(orderId); | ||||
|                 //订单服务开始时间、结束时间不能为空 | ||||
|                 if(sysOrder.getStartTime() != null && sysOrder.getServerEndTime() != null){ | ||||
|                     delRecipesPlanByOrderId(orderIdArray); | ||||
|                 } | ||||
|                 //判断订单金额、开始时间、结束时间,为空则直接返回,不重新生成食谱计划 | ||||
|                 if(sysOrder.getAmount().floatValue() <= 0 || sysOrder.getStartTime() == null || sysOrder.getServerEndTime() == null){ | ||||
|                     return; | ||||
|                 } | ||||
|                 SysOrderPause pauseParam = new SysOrderPause(); | ||||
|                 pauseParam.setOrderId(sysOrder.getOrderId()); | ||||
|                 //暂停记录列表 | ||||
|                 List<SysOrderPause> pauseList = sysOrderPauseService.selectSysOrderPauseList(pauseParam); | ||||
|                     List<SysRecipesPlan> planList = generatePlan(orderId, DateUtils.dateToLocalDate(sysOrder.getStartTime()), DateUtils.dateToLocalDate(sysOrder.getServerEndTime()), pauseList); | ||||
|                 List<SysRecipesPlan> planList = generatePlan(orderId, oldRecipesPlanList, DateUtils.dateToLocalDate(sysOrder.getStartTime()), DateUtils.dateToLocalDate(sysOrder.getServerEndTime()), pauseList); | ||||
|                 if(planList != null && planList.size() > 0){ | ||||
|                     sysRecipesPlanMapper.insertBatch(planList); | ||||
|                 } | ||||
|                     for (SysRecipesPlan sysRecipesPlan : planList) { | ||||
|                 /*for (SysRecipesPlan sysRecipesPlan : planList) { | ||||
|                      getTestDate(sysRecipesPlan.getStartDate(), sysRecipesPlan.getEndDate()); | ||||
|                     } | ||||
|                 } | ||||
|                  }*/ | ||||
|             } | ||||
|         } | ||||
|         catch (Exception e) { | ||||
| @@ -174,23 +186,21 @@ public class SysRecipesPlanServiceImpl implements ISysRecipesPlanService | ||||
|     /** | ||||
|      * 根据订单ID、订单开始服务时间、结束时间、暂停列表生成食谱计划列表 | ||||
|      * @param orderId 订单ID | ||||
|      * @param oldRecipesPlanList 旧的食谱计划 | ||||
|      * @param serverStartDate 服务开始时间 | ||||
|      * @param serverEndDate 服务结束时间 | ||||
|      * @param pauseList 暂停列表 | ||||
|      * @return | ||||
|      */ | ||||
|     public List<SysRecipesPlan> generatePlan(Long orderId, LocalDate serverStartDate, LocalDate serverEndDate, List<SysOrderPause> pauseList){ | ||||
|     public List<SysRecipesPlan> generatePlan(Long orderId, List<SysRecipesPlan> oldRecipesPlanList, LocalDate serverStartDate, LocalDate serverEndDate, List<SysOrderPause> pauseList){ | ||||
|         List<SysRecipesPlan> planList = new ArrayList<>(); | ||||
|         boolean breakFlag = false; | ||||
|         LocalDate planStartDate = serverStartDate; | ||||
|         LocalDate planEndDate = planStartDate.plusDays(6); | ||||
|         while (true){ | ||||
|  | ||||
|             SysRecipesPlan sysRecipesPlan = new SysRecipesPlan(); | ||||
|             //判断是否大于服务到期时间 | ||||
|             if(ChronoUnit.DAYS.between(planEndDate, serverEndDate) > 0){ | ||||
|  | ||||
|             }else{ | ||||
|             if(ChronoUnit.DAYS.between(planEndDate, serverEndDate) <= 0){ | ||||
|                 planEndDate = serverEndDate; | ||||
|                 breakFlag = true; | ||||
|             } | ||||
| @@ -200,6 +210,17 @@ public class SysRecipesPlanServiceImpl implements ISysRecipesPlanService | ||||
|             sysRecipesPlan.setStartDate(DateUtils.localDateToDate(planStartDate)); | ||||
|             sysRecipesPlan.setEndDate(DateUtils.localDateToDate(planEndDate)); | ||||
|             sysRecipesPlan.setOrderId(orderId); | ||||
|             /*//当开始时间小于等于当前时间,默认为已发送,发送时间为前一天 | ||||
|             if(ChronoUnit.DAYS.between(planStartDate, LocalDate.now()) >= 0){ | ||||
|                 sysRecipesPlan.setSendFlag(1); | ||||
|                 sysRecipesPlan.setSendTime(DateUtils.localDateToDate(LocalDate.now().minusDays(1))); | ||||
|             }*/ | ||||
|             //将旧食谱计划中的发送状态、发送时间、食谱复制到新食谱计划中 | ||||
|             boolean existFlag =oldRecipesPlanList.size() >= planList.size()+1; | ||||
|             sysRecipesPlan.setSendFlag(existFlag ? oldRecipesPlanList.get(planList.size()).getSendFlag() : 0); | ||||
|             sysRecipesPlan.setSendTime(existFlag ? oldRecipesPlanList.get(planList.size()).getSendTime() : null); | ||||
|             sysRecipesPlan.setRecipesId(existFlag ? oldRecipesPlanList.get(planList.size()).getRecipesId() : null); | ||||
|  | ||||
|             planList.add(sysRecipesPlan); | ||||
|  | ||||
|             planStartDate = planEndDate.plusDays(1); | ||||
| @@ -240,4 +261,24 @@ public class SysRecipesPlanServiceImpl implements ISysRecipesPlanService | ||||
|         } | ||||
|         return pauseDay; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 根据订单ID删除所有食谱安排计划 | ||||
|      * @param orderIds 订单ID | ||||
|      * @return | ||||
|      */ | ||||
|     @Override | ||||
|     public int delRecipesPlanByOrderId(Long[] orderIds){ | ||||
|         return sysRecipesPlanMapper.delRecipesPlanByOrderId(orderIds); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 多条件查询食谱计划列表 | ||||
|      * @param sysRecipesPlan | ||||
|      * @return | ||||
|      */ | ||||
|     @Override | ||||
|     public List<SysRecipesPlan> selectPlanListByCondition(SysRecipesPlan sysRecipesPlan){ | ||||
|         return sysRecipesPlanMapper.selectPlanListByCondition(sysRecipesPlan); | ||||
|     } | ||||
| } | ||||
| @@ -213,4 +213,9 @@ | ||||
|         select * from sys_physical_signs sps where FIND_IN_SET(id, #{physical_signs_id}) | ||||
|     </select> | ||||
|  | ||||
|     <!-- 根据手机号查询体征 --> | ||||
|     <select id="selectSysCustomerAndSignByPhone" parameterType="String" resultMap="SysCustomerSignResult"> | ||||
|         <include refid="selectSysCustomerAndSign"/> where sc.del_flag = 0 and sc.phone = #{phone} limit 1 | ||||
|     </select> | ||||
|  | ||||
| </mapper> | ||||
| @@ -112,4 +112,12 @@ | ||||
|         order by id desc | ||||
|     </select> | ||||
|  | ||||
|     <!-- 根据订单ID删除暂停记录 --> | ||||
|     <update id="deletePauseByOrderId" parameterType="String"> | ||||
|         update sys_order_pause set del_flag = 1 where order_id in | ||||
|         <foreach item="orderId" collection="array" open="(" separator="," close=")"> | ||||
|             #{orderId} | ||||
|         </foreach> | ||||
|     </update> | ||||
|  | ||||
| </mapper> | ||||
| @@ -17,6 +17,15 @@ | ||||
|         <result property="updateTime"    column="update_time"    /> | ||||
|         <result property="updateBy"    column="update_by"    /> | ||||
|         <result property="delFlag"    column="del_flag"    /> | ||||
|         <!-- 非持久化字段 --> | ||||
|         <result property="customer"    column="customer"    /> | ||||
|         <result property="phone" column="phone"     /> | ||||
|         <result property="orderStartDate"    column="order_start_date"    /> | ||||
|         <result property="orderEndDate"    column="order_end_date"    /> | ||||
|         <result property="nutritionistId"    column="nutritionist_id"    /> | ||||
|         <result property="nutritionist"    column="nutritionist"    /> | ||||
|         <result property="nutritionistAssisId"    column="nutritionist_assis_id"    /> | ||||
|         <result property="nutritionistAssis"    column="nutritionist_assis"    /> | ||||
|     </resultMap> | ||||
|  | ||||
|     <sql id="selectSysRecipesPlanVo"> | ||||
| @@ -87,11 +96,11 @@ | ||||
|     </update> | ||||
|  | ||||
|     <delete id="deleteSysRecipesPlanById" parameterType="Long"> | ||||
|         update sys_recipes_plan set del_flag = 0 where id = #{id} | ||||
|         update sys_recipes_plan set del_flag = 1 where id = #{id} | ||||
|     </delete> | ||||
|  | ||||
|     <delete id="deleteSysRecipesPlanByIds" parameterType="String"> | ||||
|         update sys_recipes_plan set del_flag = 0 where id in | ||||
|         update sys_recipes_plan set del_flag = 1 where id in | ||||
|         <foreach item="id" collection="array" open="(" separator="," close=")"> | ||||
|             #{id} | ||||
|         </foreach> | ||||
| @@ -100,16 +109,34 @@ | ||||
|     <!-- 批量插入食谱计划 --> | ||||
|     <insert id="insertBatch"> | ||||
|         INSERT INTO sys_recipes_plan | ||||
|         (order_id, start_date, end_date) | ||||
|         (order_id, start_date, end_date, send_flag, send_time, recipes_id) | ||||
|         VALUES | ||||
|         <foreach collection ="list" item="plan" separator =","> | ||||
|             (#{plan.orderId}, #{plan.startDate}, #{plan.end_date}) | ||||
|             (#{plan.orderId}, #{plan.startDate}, #{plan.endDate}, #{plan.sendFlag}, #{plan.sendTime}, #{plan.recipesId}) | ||||
|         </foreach > | ||||
|     </insert> | ||||
|  | ||||
|     <!-- 根据订单ID删除对应食谱计划 --> | ||||
|     <update id="delRecipesPlanByOrderId" parameterType="Long"> | ||||
|       update sys_recipes_plan set del_flag = 0 and order_id = #{orderId} | ||||
|     <update id="delRecipesPlanByOrderId" parameterType="String"> | ||||
|       update sys_recipes_plan set del_flag = 1 where order_id in | ||||
|       <foreach item="orderId" collection="array" open="(" separator="," close=")"> | ||||
|             #{orderId} | ||||
|       </foreach> | ||||
|     </update> | ||||
|  | ||||
|     <!-- 食谱计划、订单表联查 --> | ||||
|     <select id="selectPlanListByCondition" parameterType="SysRecipesPlan" resultMap="SysRecipesPlanResult"> | ||||
|       SELECT srp.id,srp.order_id,sr.customer,sr.phone,su_nutritionist.nick_name nutritionist,su_nutritionist_assis.nick_name AS nutritionist_assis,sr.start_time,sr.server_end_time, srp.start_date,srp.end_date,srp.send_flag,srp.send_time | ||||
|       FROM sys_recipes_plan srp | ||||
|       LEFT JOIN sys_order sr ON sr.order_id = srp.order_id | ||||
|       LEFT JOIN sys_user su_nutritionist ON su_nutritionist.user_id = sr.nutritionist_id AND su_nutritionist.del_flag = 0 | ||||
|       LEFT JOIN sys_user su_nutritionist_assis ON su_nutritionist_assis.user_id = sr.nutri_assis_id AND su_nutritionist_assis.del_flag = 0 | ||||
|       WHERE srp.del_flag = 0 | ||||
|       <if test="orderId != null">AND srp.order_id = #{orderId}</if> | ||||
|       <if test="customer != null and customer != ''">AND sr.customer like concat('%',#{customer},'%')</if> | ||||
|       <if test="nutritionistId != null">AND su_nutritionist.user_id = #{nutritionistId}</if> | ||||
|       <if test="nutritionistAssisId != null">AND su_nutritionist_assis.user_id = #{nutritionistAssisId}</if> | ||||
|       <if test="startDate != null and endDate != null ">AND srp.start_date BETWEEN date_format(#{startDate},'%y%m%d') AND date_format(#{endDate},'%y%m%d') </if> | ||||
|       ORDER BY srp.order_id DESC,srp.id ASC | ||||
|     </select> | ||||
| </mapper> | ||||
| @@ -51,3 +51,13 @@ export function exportCustomer(query) { | ||||
|     params: query | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 查询客户信息详细 | ||||
| export function getCustomerAndSignByPhone(query) { | ||||
|   return request({ | ||||
|     url: '/custom/customer/getCustomerAndSignByPhone', | ||||
|     method: 'get', | ||||
|     params: query | ||||
|   }) | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -58,3 +58,12 @@ export function getOptions() { | ||||
|     method: 'get' | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 查询销售订单详细 | ||||
| export function getInfoDetail(query) { | ||||
|   return request({ | ||||
|     url: '/custom/order/getInfoDetail', | ||||
|     method: 'get', | ||||
|     params: query | ||||
|   }) | ||||
| } | ||||
|   | ||||
							
								
								
									
										36
									
								
								stdiet-ui/src/api/custom/recipesPlan.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								stdiet-ui/src/api/custom/recipesPlan.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,36 @@ | ||||
| import request from '@/utils/request' | ||||
|  | ||||
| // 查询食谱计划列表 | ||||
| export function listRecipesPlan(query) { | ||||
|   return request({ | ||||
|     url: '/recipes/recipesPlan/list', | ||||
|     method: 'get', | ||||
|     params: query | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 查询食谱计划详细 | ||||
| export function getRecipesPlan(id) { | ||||
|   return request({ | ||||
|     url: '/recipes/recipesPlan/' + id, | ||||
|     method: 'get' | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 修改食谱计划 | ||||
| export function updateRecipesPlan(data) { | ||||
|   return request({ | ||||
|     url: '/recipes/recipesPlan', | ||||
|     method: 'put', | ||||
|     data: data | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 导出食谱计划 | ||||
| export function exportRecipesPlan(query) { | ||||
|   return request({ | ||||
|     url: '/recipes/recipesPlan/export', | ||||
|     method: 'get', | ||||
|     params: query | ||||
|   }) | ||||
| } | ||||
							
								
								
									
										616
									
								
								stdiet-ui/src/views/custom/recipesPlan/index.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										616
									
								
								stdiet-ui/src/views/custom/recipesPlan/index.vue
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,616 @@ | ||||
| <template> | ||||
|   <div class="app-container"> | ||||
|     <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" > | ||||
|       <el-form-item label="客户姓名" prop="customer"> | ||||
|         <el-input | ||||
|           v-model="queryParams.customer" | ||||
|           placeholder="请输入客户姓名" | ||||
|           clearable | ||||
|           size="small" | ||||
|         /> | ||||
|       </el-form-item> | ||||
|       <el-form-item label="食谱开始日期范围" prop="planStartDateScope" label-width="150px"> | ||||
|         <el-date-picker | ||||
|           v-model="planStartDateScope" | ||||
|           type="daterange" | ||||
|           range-separator="至" | ||||
|           start-placeholder="开始日期" | ||||
|           end-placeholder="结束日期"> | ||||
|         </el-date-picker> | ||||
|  | ||||
|       </el-form-item> | ||||
|  | ||||
|       <el-form-item> | ||||
|         <el-button type="cyan" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button> | ||||
|         <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button> | ||||
|       </el-form-item> | ||||
|     </el-form> | ||||
|  | ||||
|     <el-row :gutter="10" class="mb8"> | ||||
|       <el-col :span="1.5"> | ||||
|         <el-button | ||||
|           type="success" | ||||
|           icon="el-icon-edit" | ||||
|           size="mini" | ||||
|           :disabled="single" | ||||
|           @click="handleUpdate" | ||||
|           v-hasPermi="['recipes:recipesPlan:edit']" | ||||
|         >修改</el-button> | ||||
|       </el-col> | ||||
|       <el-col :span="1.5"> | ||||
|         <el-button | ||||
|           type="warning" | ||||
|           icon="el-icon-download" | ||||
|           size="mini" | ||||
|           @click="handleExport" | ||||
|           v-hasPermi="['recipes:recipesPlan:export']" | ||||
|         >导出</el-button> | ||||
|       </el-col> | ||||
|       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> | ||||
|     </el-row> | ||||
|  | ||||
|     <el-table v-loading="loading" :data="recipesPlanList" @selection-change="handleSelectionChange"> | ||||
|       <el-table-column type="selection" width="55" align="center" /> | ||||
|       <el-table-column label="客户姓名" align="center" prop="customer" /> | ||||
|       <el-table-column label="食谱日期范围" align="center" prop="scopeDate" width="200"/> | ||||
|       <el-table-column label="营养师" align="center" prop="nutritionist" /> | ||||
|       <el-table-column label="营养师助理" align="center" prop="nutritionistAssis" /> | ||||
|       <el-table-column label="食谱是否发送" align="center" prop="sendFlag"> | ||||
|         <!--<template slot-scope="scope"> | ||||
|           <span>{{ scope.row.sendFlag == 1 ? "已发送" : "未发送"}}</span> | ||||
|         </template>(.sendFlag == 1) ? 'success' : 'warning'--> | ||||
|         <template slot-scope="scope"> | ||||
|           <el-tag | ||||
|             :type="getTagType(scope.row)" | ||||
|             disable-transitions> | ||||
|             {{scope.row.sendFlag == 1 ? "已发送" : "未发送"}} | ||||
|           </el-tag> | ||||
|         </template> | ||||
|  | ||||
|       </el-table-column> | ||||
|       <el-table-column label="食谱发送时间" align="center" prop="sendTime" width="180"> | ||||
|         <template slot-scope="scope"> | ||||
|           <span>{{ parseTime(scope.row.sendTime, '{y}-{m}-{d}') }}</span> | ||||
|         </template> | ||||
|       </el-table-column> | ||||
|       <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="300"> | ||||
|         <template slot-scope="scope"> | ||||
|           <el-button | ||||
|             size="mini" | ||||
|             type="text" | ||||
|             icon="el-icon-edit" | ||||
|             @click="handleUpdate(scope.row)" | ||||
|             v-hasPermi="['recipes:recipesPlan:edit']" | ||||
|           >修改</el-button> | ||||
|           <el-button | ||||
|             size="mini" | ||||
|             type="text" | ||||
|             icon="el-icon-edit" | ||||
|             @click="allRecipesPlanQueryParam.orderId = scope.row.orderId; getAllPlanByOrderId()" | ||||
|           >查看完整计划</el-button> | ||||
|           <el-button | ||||
|             size="mini" | ||||
|             type="text" | ||||
|             icon="el-icon-edit" | ||||
|             @click="getOrderDetail(scope.row)" | ||||
|             v-hasPermi="['custom:order:query']" | ||||
|           >查看订单</el-button> | ||||
|           <el-button | ||||
|             size="mini" | ||||
|             type="text" | ||||
|             icon="el-icon-edit" | ||||
|             @click="getCustomerSign(scope.row)" | ||||
|             v-hasPermi="['custom:customer:query']" | ||||
|           >查看体征</el-button> | ||||
|           <!--<el-button | ||||
|             size="mini" | ||||
|             type="text" | ||||
|             icon="el-icon-delete" | ||||
|             @click="handleDelete(scope.row)" | ||||
|             v-hasPermi="['recipes:recipesPlan:remove']" | ||||
|           >删除</el-button>--> | ||||
|         </template> | ||||
|       </el-table-column> | ||||
|     </el-table> | ||||
|  | ||||
|     <pagination | ||||
|       v-show="total>0" | ||||
|       :total="total" | ||||
|       :page.sync="queryParams.pageNum" | ||||
|       :limit.sync="queryParams.pageSize" | ||||
|       @pagination="getList" | ||||
|     /> | ||||
|  | ||||
|     <!-- 添加或修改食谱计划对话框 --> | ||||
|     <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body> | ||||
|       <el-form ref="form" :model="form" :rules="rules" label-width="80px"> | ||||
|         <el-form-item label="食谱是否已发送" prop="sendFlag" label-width="120px"> | ||||
|           <el-select v-model="form.sendFlag" placeholder="请选择"> | ||||
|             <el-option label="否" :value="parseInt('0')" /> | ||||
|             <el-option label="是" :value="parseInt('1')" /> | ||||
|           </el-select> | ||||
|         </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 title="食谱计划表" v-if="allRecipesPlanOpen" :visible.sync="allRecipesPlanOpen" width="800px" append-to-body> | ||||
|       <el-table v-loading="loading" :data="allRecipesPlanList" width="700px"> | ||||
|         <el-table-column label="客户姓名" align="center" prop="customer" /> | ||||
|         <!--<el-table-column label="营养师名称" align="center" prop="nutritionist" /> | ||||
|         <el-table-column label="营养师助理名称" align="center" prop="nutritionistAssis" />--> | ||||
|  | ||||
|         <el-table-column label="食谱时间范围" align="center" prop="scopeDate" width="200"/> | ||||
|         <el-table-column label="食谱是否发送" align="center" prop="sendFlag"> | ||||
|           <!--<template slot-scope="scope"> | ||||
|             <span>{{ scope.row.sendFlag == 1 ? "已发送" : "未发送"}}</span> | ||||
|           </template>(.sendFlag == 1) ? 'success' : 'warning'--> | ||||
|           <template slot-scope="scope"> | ||||
|             <el-tag | ||||
|               :type="getTagType(scope.row)" | ||||
|               disable-transitions> | ||||
|               {{scope.row.sendFlag == 1 ? "已发送" : "未发送"}} | ||||
|             </el-tag> | ||||
|           </template> | ||||
|  | ||||
|         </el-table-column> | ||||
|         <el-table-column label="食谱发送时间" align="center" prop="sendTime" width="180"> | ||||
|           <template slot-scope="scope"> | ||||
|             <span>{{ parseTime(scope.row.sendTime, '{y}-{m}-{d}') }}</span> | ||||
|           </template> | ||||
|         </el-table-column> | ||||
|       </el-table> | ||||
|       <pagination | ||||
|         v-show="allRecipesPlanTotal>0" | ||||
|         :total="allRecipesPlanTotal" | ||||
|         :page.sync="allRecipesPlanQueryParam.pageNum" | ||||
|         :limit.sync="allRecipesPlanQueryParam.pageSize" | ||||
|         @pagination="getAllPlanByOrderId" | ||||
|       /> | ||||
|       <div slot="footer" class="dialog-footer"> | ||||
|         <el-button @click="allRecipesPlanOpen = false">取 消</el-button> | ||||
|       </div> | ||||
|     </el-dialog> | ||||
|  | ||||
|  | ||||
|     <!-- 查看体征 --> | ||||
|     <el-dialog title="客户体征" v-if="customerOpen" :visible.sync="customerOpen" width="1000px" append-to-body> | ||||
|       <el-table v-loading="loading" :data="customerSign" width="900px"> | ||||
|         <el-table-column label="姓名" align="center" prop="name" /> | ||||
|         <!--<el-table-column label="手机号" align="center" prop="phone" width="120" fixed="left"/>--> | ||||
|         <el-table-column label="性别" align="center" prop="sign.sex" > | ||||
|           <template slot-scope="scope"> | ||||
|             {{scope.row.sign.sex == 0 ? `男` : '女'}} | ||||
|           </template> | ||||
|         </el-table-column> | ||||
|         <el-table-column label="年龄(岁)" align="center" prop="sign.age" /> | ||||
|         <el-table-column label="身高(厘米)" align="center" prop="sign.tall" /> | ||||
|         <el-table-column label="体重(斤)" align="center" prop="sign.weight"/> | ||||
|         <el-table-column label="北方、南方" align="center" prop="sign.position"> | ||||
|           <template slot-scope="scope"> | ||||
|             {{scope.row.sign.position == 0 ? `南方` : '北方'}} | ||||
|           </template> | ||||
|         </el-table-column> | ||||
|         <el-table-column label="病史" align="center" prop="sign.signList"> | ||||
|           <template slot-scope="scope"> | ||||
|             <span>{{getSignString(scope.row.sign.signList)}}</span> | ||||
|           </template> | ||||
|         </el-table-column> | ||||
|       </el-table> | ||||
|       <el-table v-loading="loading" :data="customerSign" width="900px"> | ||||
|         <el-table-column label="忌口或过敏源" align="center" prop="sign.dishesIngredientId" width="120"></el-table-column> | ||||
|         <el-table-column label="是否便秘" align="center" prop="sign.constipation"> | ||||
|           <template slot-scope="scope"> | ||||
|             {{scope.row.sign.constipation == 0 ? `是` : '否'}} | ||||
|           </template> | ||||
|         </el-table-column> | ||||
|         <el-table-column label="是否熬夜失眠" align="center" prop="sign.staylate"> | ||||
|           <template slot-scope="scope"> | ||||
|             {{scope.row.sign.staylate == 0 ? `是` : '否'}} | ||||
|           </template> | ||||
|         </el-table-column> | ||||
|         <el-table-column label="是否经常运动" align="center" prop="sign.motion"> | ||||
|           <template slot-scope="scope"> | ||||
|             {{scope.row.sign.motion == 0 ? `是` : '否'}} | ||||
|           </template> | ||||
|         </el-table-column> | ||||
|         <el-table-column label="饮食方式" align="center" prop="sign.makeFoodType" > | ||||
|           <template slot-scope="scope"> | ||||
|             {{scope.row.sign.makeFoodType == 0 ? `自己做` : '外面吃'}} | ||||
|           </template> | ||||
|         </el-table-column> | ||||
|         <el-table-column label="饮食备注" align="center" prop="sign.remarks"></el-table-column> | ||||
|         <el-table-column label="饮食特点" align="center" prop="sign.makeFoodTaste"> | ||||
|           <template slot-scope="scope"> | ||||
|             {{scope.row.sign.makeFoodTaste == 0 ? `清淡` : '重口味'}} | ||||
|           </template> | ||||
|         </el-table-column> | ||||
|        </el-table> | ||||
|       <el-table v-loading="loading" :data="customerSign" width="900px"> | ||||
|         <el-table-column label="工作职业" align="center" prop="sign.vocation"> | ||||
|           <template slot-scope="scope"> | ||||
|             {{scope.row.sign.vocation}} | ||||
|           </template> | ||||
|         </el-table-column> | ||||
|         <el-table-column label="是否上夜班" align="center" prop="sign.night"> | ||||
|           <template slot-scope="scope"> | ||||
|             {{scope.row.sign.night == 0 ? `是` : '否'}} | ||||
|           </template> | ||||
|         </el-table-column> | ||||
|         <el-table-column label="久坐多还是运动多" align="center" prop="sign.walk"> | ||||
|           <template slot-scope="scope"> | ||||
|             {{scope.row.sign.walk == 0 ? `久坐多` : '走动多'}} | ||||
|           </template> | ||||
|         </el-table-column> | ||||
|         <el-table-column label="是否浑身乏力" align="center" prop="sign.weakness"> | ||||
|           <template slot-scope="scope"> | ||||
|             {{scope.row.sign.weakness == 0 ? `是` : '否'}} | ||||
|           </template> | ||||
|         </el-table-column> | ||||
|         <el-table-column label="是否减脂反弹" align="center" prop="sign.rebound"> | ||||
|           <template slot-scope="scope"> | ||||
|             {{scope.row.sign.rebound == 0 ? `是` : '否'}} | ||||
|           </template> | ||||
|         </el-table-column> | ||||
|         <el-table-column label="意识到生活习惯是减脂关键" align="center" prop="sign.crux"> | ||||
|           <template slot-scope="scope"> | ||||
|             {{scope.row.sign.crux == 0 ? `是` : '否'}} | ||||
|           </template> | ||||
|         </el-table-column> | ||||
|         <el-table-column label="睡觉时间" align="center" prop="sign.sleepTime"> | ||||
|           <template slot-scope="scope"> | ||||
|             {{scope.row.sign.sleepTime}}点 | ||||
|           </template> | ||||
|         </el-table-column> | ||||
|       </el-table> | ||||
|       <el-table v-loading="loading" :data="customerSign" width="900px"> | ||||
|         <el-table-column label="起床时间" align="center" prop="sign.getupTime" > | ||||
|           <template slot-scope="scope"> | ||||
|             {{scope.row.sign.getupTime}}点 | ||||
|           </template> | ||||
|         </el-table-column> | ||||
|         <el-table-column label="方便沟通时间" align="center" prop="sign.connectTime"> | ||||
|           <template slot-scope="scope"> | ||||
|             {{scope.row.sign.connectTime}}点 | ||||
|           </template> | ||||
|         </el-table-column> | ||||
|         <el-table-column label="湿气数据" align="center" prop="sign.bloodData"> | ||||
|           <template slot-scope="scope"> | ||||
|             {{scope.row.sign.bloodData}} | ||||
|           </template> | ||||
|         </el-table-column> | ||||
|         <el-table-column label="气血数据" align="center" prop="sign.moistureDate" > | ||||
|           <template slot-scope="scope"> | ||||
|             {{scope.row.sign.moistureDate}} | ||||
|           </template> | ||||
|         </el-table-column> | ||||
|         <el-table-column label="减脂经历" align="center" prop="sign.experience" ></el-table-column> | ||||
|         <el-table-column label="减脂遇到的困难" align="center" prop="sign.difficulty" ></el-table-column> | ||||
|         <el-table-column label="备注" align="center" prop="sign.comments"></el-table-column> | ||||
|       </el-table> | ||||
|       <div slot="footer" class="dialog-footer"> | ||||
|         <el-button @click="customerOpen = false">取 消</el-button> | ||||
|       </div> | ||||
|     </el-dialog> | ||||
|  | ||||
|     <!-- 查看订单 --> | ||||
|     <el-dialog title="订单详情" v-if="orderDetailOpen" :visible.sync="orderDetailOpen" width="1000px" append-to-body> | ||||
|       <el-table v-loading="loading" :data="orderDetailList" > | ||||
|         <el-table-column label="订单状态" align="center" prop="orderId"> | ||||
|           <template slot-scope="scope"> | ||||
|             <el-tag | ||||
|               :type="scope.row.reviewStatus === '2' ? 'success' : scope.row.status ==='0'? '': 'danger'" | ||||
|               disable-transitions> | ||||
|               {{scope.row.reviewStatus === '2' ? '已完成': scope.row.status ==='0'? '进行中': '已暂停'}} | ||||
|             </el-tag> | ||||
|           </template> | ||||
|         </el-table-column> | ||||
|         <el-table-column label="审核状态" align="center" prop="reviewStatus"> | ||||
|           <template slot-scope="scope"> | ||||
|             <el-tag | ||||
|               :type="scope.row.reviewStatus === 'yes' ? 'success' : 'danger'" | ||||
|               disable-transitions> | ||||
|               {{scope.row.reviewStatus === 'yes' ? '已审核':'未审核'}} | ||||
|             </el-tag> | ||||
|           </template> | ||||
|         </el-table-column> | ||||
|         <el-table-column label="成交时间" align="center" prop="orderTime"> | ||||
|           <template slot-scope="scope"> | ||||
|             <span>{{ parseTime(scope.row.orderTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span> | ||||
|           </template> | ||||
|         </el-table-column> | ||||
|         <el-table-column label="客户姓名" align="center" prop="customer"/> | ||||
|         <el-table-column label="金额" align="center" prop="amount"> | ||||
|           <template slot-scope="scope"> | ||||
|             {{toThousands(scope.row.amount)}} | ||||
|           </template> | ||||
|         </el-table-column> | ||||
|         <el-table-column label="体重" align="center" prop="weight"> | ||||
|           <template slot-scope="scope"> | ||||
|             {{scope.row.weight ? `${scope.row.weight}斤` : ''}} | ||||
|           </template> | ||||
|         </el-table-column> | ||||
|       </el-table> | ||||
|       <el-table v-loading="loading" :data="orderDetailList" > | ||||
|         <el-table-column label="手机号" align="center" prop="phone"/> | ||||
|         <el-table-column label="服务时长" align="center" prop="serveTime"/> | ||||
|         <el-table-column label="赠送时长" align="center" prop="giveServeDay"> | ||||
|           <template slot-scope="scope"> | ||||
|             {{scope.row.giveServeDay ? `${scope.row.giveServeDay}天` : '0天'}} | ||||
|           </template> | ||||
|         </el-table-column> | ||||
|         <el-table-column label="调理项目" align="center" prop="conditioningProject"/> | ||||
|         <el-table-column label="收款方式" align="center" prop="payType"/> | ||||
|         <el-table-column label="售前" align="center" prop="preSale"/> | ||||
|       </el-table> | ||||
|       <el-table v-loading="loading" :data="orderDetailList" > | ||||
|         <el-table-column label="售后" align="center" prop="afterSale"/> | ||||
|         <el-table-column label="主营养师" align="center" prop="nutritionist"/> | ||||
|         <el-table-column label="助理营养师" align="center" prop="nutriAssis" /> | ||||
|         <el-table-column label="账号" align="center" prop="account"/> | ||||
|         <el-table-column label="策划" align="center" prop="planner"/> | ||||
|         <el-table-column label="策划助理" align="center" prop="plannerAssis"/> | ||||
|       </el-table> | ||||
|       <el-table v-loading="loading" :data="orderDetailList" > | ||||
|         <el-table-column label="运营" align="center" prop="operator"/> | ||||
|         <el-table-column label="运营助理" align="center" prop="operatorAssis"/> | ||||
|         <!--<el-table-column label="推荐人" align="center" prop="recommender"/>--> | ||||
|         <el-table-column label="进粉时间" align="center" prop="becomeFanTime"> | ||||
|           <template slot-scope="scope"> | ||||
|             <span>{{ parseTime(scope.row.becomeFanTime, '{y}-{m}-{d}') }}</span> | ||||
|           </template> | ||||
|         </el-table-column> | ||||
|         <el-table-column label="开始时间" align="center" prop="startTime"> | ||||
|           <template slot-scope="scope"> | ||||
|             <span>{{ parseTime(scope.row.startTime, '{y}-{m}-{d}') }}</span> | ||||
|           </template> | ||||
|         </el-table-column> | ||||
|         <el-table-column label="结束时间" align="center" prop="serverEndTime"> | ||||
|           <template slot-scope="scope"> | ||||
|             <span>{{ parseTime(scope.row.serverEndTime, '{y}-{m}-{d}') }}</span> | ||||
|           </template> | ||||
|         </el-table-column> | ||||
|         <el-table-column label="备注" align="center" prop="remark"/> | ||||
|       </el-table> | ||||
|       <div slot="footer" class="dialog-footer"> | ||||
|         <el-button @click="orderDetailOpen = false">取 消</el-button> | ||||
|       </div> | ||||
|     </el-dialog> | ||||
|   </div> | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
|   import { listRecipesPlan, getRecipesPlan, updateRecipesPlan,exportRecipesPlan } from "@/api/custom/recipesPlan"; | ||||
|   import { getCustomerAndSignByPhone } from "@/api/custom/customer"; | ||||
|   import {getInfoDetail} from "@/api/custom/order"; | ||||
|   import dayjs from 'dayjs'; | ||||
|   const nextDate = dayjs().add(1, 'day').format("YYYY-MM-DD"); | ||||
|   const weekDate = dayjs().add(6, 'day').format("YYYY-MM-DD"); | ||||
|   export default { | ||||
|     name: "recipesPlan", | ||||
|     data() { | ||||
|       return { | ||||
|         // 遮罩层 | ||||
|         loading: true, | ||||
|         // 选中数组 | ||||
|         ids: [], | ||||
|         // 非单个禁用 | ||||
|         single: true, | ||||
|         // 非多个禁用 | ||||
|         multiple: true, | ||||
|         // 显示搜索条件 | ||||
|         showSearch: true, | ||||
|         // 总条数 | ||||
|         total: 0, | ||||
|         // 食谱计划表格数据 | ||||
|         recipesPlanList: [], | ||||
|         // 弹出层标题 | ||||
|         title: "", | ||||
|         // 是否显示弹出层 | ||||
|         open: false, | ||||
|         // 查询参数 | ||||
|         queryParams: { | ||||
|           pageNum: 1, | ||||
|           pageSize: 10, | ||||
|           customer: null, | ||||
|           startDate: null, | ||||
|           endDate: null | ||||
|         }, | ||||
|         // 表单参数 | ||||
|         form: {}, | ||||
|         // 表单校验 | ||||
|         rules: { | ||||
|         }, | ||||
|         //食谱开始时间范围 | ||||
|         planStartDateScope:[nextDate, nextDate], | ||||
|         //用户体征数据 | ||||
|         customerSignList: [], | ||||
|         //用户体征弹窗状态 | ||||
|         customerOpen: false, | ||||
|         //订单对于所有计划安排数据 | ||||
|         allRecipesPlanList:[], | ||||
|         //订单弹窗状态 | ||||
|         allRecipesPlanOpen: false, | ||||
|         //订单弹窗中查询参数 | ||||
|         allRecipesPlanQueryParam: { | ||||
|           pageNum: 1, | ||||
|           pageSize: 10, | ||||
|           orderId: null | ||||
|         }, | ||||
|         //订单弹窗中列表数据的总条数 | ||||
|         allRecipesPlanTotal: 0, | ||||
|         //订单详情数据 | ||||
|         orderDetailList:[], | ||||
|         //订单详情弹窗 | ||||
|         orderDetailOpen:false | ||||
|       }; | ||||
|     }, | ||||
|     created() { | ||||
|       this.getList(); | ||||
|     }, | ||||
|     methods: { | ||||
|       /** 查询食谱计划列表 */ | ||||
|       getList() { | ||||
|         this.loading = true; | ||||
|         if(this.planStartDateScope != null && this.planStartDateScope.length > 0){ | ||||
|           this.queryParams.startDate = dayjs(this.planStartDateScope[0]).format('YYYY-MM-DD'); | ||||
|           this.queryParams.endDate =  dayjs(this.planStartDateScope[1]).format('YYYY-MM-DD'); | ||||
|         }else{ | ||||
|           this.queryParams.startDate = null; | ||||
|           this.queryParams.endDate = null; | ||||
|         } | ||||
|         listRecipesPlan(this.queryParams).then(response => { | ||||
|           this.recipesPlanList = response.rows; | ||||
|           this.recipesPlanList.forEach(function(item, index){ | ||||
|             item.scopeDate = dayjs(item.startDate).format("YYYY-MM-DD")+" 到 "+dayjs(item.endDate).format("YYYY-MM-DD") | ||||
|           }); | ||||
|           this.total = response.total; | ||||
|           this.loading = false; | ||||
|         }); | ||||
|       }, | ||||
|       /** 查询客户体征 */ | ||||
|       getCustomerSign(row) { | ||||
|         this.customerSign = []; | ||||
|         let message = "未找到该客户,请检查订单手机号与客户体征手机号是否一致"; | ||||
|         if(row.phone == null || row.phone == ""){ | ||||
|           this.alert(message); | ||||
|           return; | ||||
|         } | ||||
|         getCustomerAndSignByPhone({"phone": row.phone}).then(response => { | ||||
|           this.customerSign[0] = response.data; | ||||
|           if(this.customerSign[0] == null){ | ||||
|             this.alert(message); | ||||
|           }else{ | ||||
|             this.customerOpen = true; | ||||
|           } | ||||
|         }); | ||||
|       }, | ||||
|       getAllPlanByOrderId(){ | ||||
|         listRecipesPlan(this.allRecipesPlanQueryParam).then(response => { | ||||
|             this.allRecipesPlanList = response.rows; | ||||
|             this.allRecipesPlanList.forEach(function(item, index){ | ||||
|               item.scopeDate = dayjs(item.startDate).format("YYYY-MM-DD")+" 到 "+dayjs(item.endDate).format("YYYY-MM-DD") | ||||
|             }); | ||||
|             this.allRecipesPlanOpen = true; | ||||
|             this.allRecipesPlanTotal = response.total; | ||||
|         }); | ||||
|       }, | ||||
|       getOrderDetail(row){ | ||||
|         this.orderDetailList = []; | ||||
|         getInfoDetail({'orderId': row.orderId}).then(response => { | ||||
|           this.orderDetailList[0] = response.data; | ||||
|           this.orderDetailOpen = true; | ||||
|         }); | ||||
|       }, | ||||
|       alert(value){ | ||||
|         this.$alert(value, '提示', {confirmButtonText: '确定'}); | ||||
|       }, | ||||
|       getSignString(signList){ | ||||
|         if(signList == null){ | ||||
|           return ""; | ||||
|         } | ||||
|         let signStr = ""; | ||||
|         for(let i in signList){ | ||||
|           signStr += ","+signList[i].name; | ||||
|         } | ||||
|         return signList.length > 0 ? signStr.substring(1) : signStr; | ||||
|       }, | ||||
|       // 取消按钮 | ||||
|       cancel() { | ||||
|         this.open = false; | ||||
|         this.reset(); | ||||
|       }, | ||||
|       // 表单重置 | ||||
|       reset() { | ||||
|         this.form = { | ||||
|           id: null, | ||||
|           orderId: null, | ||||
|           startDate: null, | ||||
|           endDate: null, | ||||
|           recipesId: null, | ||||
|           sendFlag: null, | ||||
|           sendTime: null, | ||||
|           createTime: null, | ||||
|           createBy: null, | ||||
|           updateTime: null, | ||||
|           updateBy: null, | ||||
|           delFlag: null | ||||
|         }; | ||||
|         this.resetForm("form"); | ||||
|       }, | ||||
|       /** 搜索按钮操作 */ | ||||
|       handleQuery() { | ||||
|         this.queryParams.pageNum = 1; | ||||
|         this.getList(); | ||||
|       }, | ||||
|       /** 重置按钮操作 */ | ||||
|       resetQuery() { | ||||
|         this.resetForm("queryForm"); | ||||
|         this.planStartDateScope = [nextDate,nextDate]; | ||||
|         this.handleQuery(); | ||||
|       }, | ||||
|       // 多选框选中数据 | ||||
|       handleSelectionChange(selection) { | ||||
|         this.ids = selection.map(item => item.id) | ||||
|         this.single = selection.length!==1 | ||||
|         this.multiple = !selection.length | ||||
|       }, | ||||
|       /** 修改按钮操作 */ | ||||
|       handleUpdate(row) { | ||||
|         this.reset(); | ||||
|         const id = row.id || this.ids | ||||
|         getRecipesPlan(id).then(response => { | ||||
|           this.form.id = response.data.id; | ||||
|           this.form.sendFlag = response.data.sendFlag; | ||||
|           this.open = true; | ||||
|           this.title = "修改食谱计划"; | ||||
|       }); | ||||
|       }, | ||||
|       /** 提交按钮 */ | ||||
|       submitForm() { | ||||
|         this.$refs["form"].validate(valid => { | ||||
|           if (valid) { | ||||
|             if (this.form.id != null) { | ||||
|               updateRecipesPlan(this.form).then(response => { | ||||
|                 if (response.code === 200) { | ||||
|                 this.msgSuccess("修改成功"); | ||||
|                 this.open = false; | ||||
|                 this.getList(); | ||||
|               } | ||||
|               }); | ||||
|             } | ||||
|           } | ||||
|         }); | ||||
|       }, | ||||
|       /** 导出按钮操作 */ | ||||
|       handleExport() { | ||||
|         const queryParams = this.queryParams; | ||||
|         this.$confirm('是否确认导出所有食谱计划数据项?', "警告", { | ||||
|           confirmButtonText: "确定", | ||||
|           cancelButtonText: "取消", | ||||
|           type: "warning" | ||||
|         }).then(function() { | ||||
|           return exportRecipesPlan(queryParams); | ||||
|         }).then(response => { | ||||
|           this.download(response.msg); | ||||
|       }).catch(function() {}); | ||||
|       }, | ||||
|       getTagType(row){ | ||||
|          if(row.sendFlag == 1) { | ||||
|            return "success"; | ||||
|          } | ||||
|          if(dayjs(row.startDate+"").diff(dayjs(),'day') <= 1){ | ||||
|               return "danger"; | ||||
|          } | ||||
|          return ''; | ||||
|       } | ||||
|     } | ||||
|   }; | ||||
| </script> | ||||
|  | ||||
|  | ||||
|  | ||||
		Reference in New Issue
	
	Block a user