From 293eb5045df36215f224f705a4adbb3e09570f51 Mon Sep 17 00:00:00 2001 From: xiaoyong931011 <15274802129@163.com> Date: Tue, 06 Apr 2021 09:44:02 +0800 Subject: [PATCH] 20210406 签到活动1 --- zq-erp/src/main/java/com/matrix/system/activity/dto/SignReceiveListDto.java | 29 zq-erp/src/main/java/com/matrix/system/activity/dao/ActivitySignReceiveRecordDao.java | 18 zq-erp/src/main/java/com/matrix/system/activity/vo/SignSetBasicJsonVo.java | 29 zq-erp/src/main/java/com/matrix/system/activity/dto/GoodsDto.java | 19 zq-erp/src/main/java/com/matrix/system/activity/service/ActivitySignAwardSetService.java | 131 +++ zq-erp/src/main/java/com/matrix/system/activity/action/ActivitySignAwardSetAction.java | 94 ++ zq-erp/src/main/resources/config/db/increment/签到活动.sql | 11 zq-erp/src/main/resources/templates/views/admin/activity/activity-sign.html | 385 +++++++++- zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopActivitiesDao.xml | 2 zq-erp/src/main/java/com/matrix/system/activity/dto/CouponDto.java | 19 zq-erp/src/main/java/com/matrix/system/activity/entity/ActivitySignAwardSet.java | 24 zq-erp/src/main/java/com/matrix/system/activity/vo/AddSignAwardSetVo.java | 33 zq-erp/src/main/resources/templates/views/admin/activity/activity-sign-receive.html | 263 +++++++ zq-erp/src/main/java/com/matrix/system/activity/vo/GoodsVo.java | 29 zq-erp/src/main/resources/templates/views/admin/activity/activity-list.html | 40 zq-erp/src/main/java/com/matrix/system/activity/vo/SignReceiveListVo.java | 30 zq-erp/src/main/resources/mybatis/mapper/activity/ActivitySignReceiveRecordDao.xml | 71 ++ zq-erp/src/main/java/com/matrix/system/activity/dto/UpdateSignAwardSetDto.java | 33 zq-erp/src/main/resources/templates/views/admin/activity/activity-sign-update.html | 748 +++++++++++++++++++++ zq-erp/src/main/java/com/matrix/system/activity/vo/CouponVo.java | 29 zq-erp/src/main/java/com/matrix/system/activity/dto/SignForUpdateDto.java | 17 21 files changed, 1,980 insertions(+), 74 deletions(-) diff --git a/zq-erp/src/main/java/com/matrix/system/activity/action/ActivitySignAwardSetAction.java b/zq-erp/src/main/java/com/matrix/system/activity/action/ActivitySignAwardSetAction.java index 1703c16..997821c 100644 --- a/zq-erp/src/main/java/com/matrix/system/activity/action/ActivitySignAwardSetAction.java +++ b/zq-erp/src/main/java/com/matrix/system/activity/action/ActivitySignAwardSetAction.java @@ -8,9 +8,17 @@ import com.matrix.system.activity.dto.AddSignAwardSetDto; import com.matrix.system.activity.dto.BeCloseDto; import com.matrix.system.activity.dto.BeReadyDto; +import com.matrix.system.activity.dto.CouponDto; import com.matrix.system.activity.dto.DelRowDto; +import com.matrix.system.activity.dto.GoodsDto; +import com.matrix.system.activity.dto.SignForUpdateDto; +import com.matrix.system.activity.dto.SignReceiveListDto; +import com.matrix.system.activity.dto.UpdateSignAwardSetDto; import com.matrix.system.activity.service.ActivitySignAwardSetService; import com.matrix.system.activity.vo.ActivitiesListVo; +import com.matrix.system.activity.vo.CouponVo; +import com.matrix.system.activity.vo.GoodsVo; +import com.matrix.system.activity.vo.SignReceiveListVo; import com.matrix.system.hive.action.util.QueryUtil; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiResponse; @@ -37,6 +45,52 @@ public @ResponseBody AjaxResult addSignAwardSet(@RequestBody AddSignAwardSetDto addSignAwardSetDto) { return activitySignAwardSetService.activitySignAwardSetService(addSignAwardSetDto); + } + + /** + * 查询优惠券 + */ + @ApiOperation(value = "查询优惠券") + @ApiResponses({ + @ApiResponse(code = 200, message = "OK", response = CouponVo.class) + }) + @PostMapping(value = "/selectCouponList") + public @ResponseBody + AjaxResult selectCouponList(@RequestBody CouponDto couponDto) { + //设置用户公司ID + QueryUtil.setQueryLimitCom(couponDto); + //排序 + if(StringUtils.isBlank(couponDto.getSort())){ + couponDto.setSort("create_time"); + couponDto.setOrder("desc"); + } + Page<CouponVo> page = new Page(couponDto.getPageNum(), couponDto.getPageSize()); + IPage<CouponVo> rows = activitySignAwardSetService.selectCouponList(page,couponDto); + AjaxResult result = AjaxResult.buildSuccessInstance(rows.getRecords(),rows.getTotal()); + return result; + } + + /** + * 查询商品 + */ + @ApiOperation(value = "查询商品") + @ApiResponses({ + @ApiResponse(code = 200, message = "OK", response = GoodsVo.class) + }) + @PostMapping(value = "/selectGoodsList") + public @ResponseBody + AjaxResult selectGoodsList(@RequestBody GoodsDto goodsDto) { + //设置用户公司ID + QueryUtil.setQueryLimitCom(goodsDto); + //排序 + if(StringUtils.isBlank(goodsDto.getSort())){ + goodsDto.setSort("create_time"); + goodsDto.setOrder("desc"); + } + Page<GoodsVo> page = new Page(goodsDto.getPageNum(), goodsDto.getPageSize()); + IPage<GoodsVo> rows = activitySignAwardSetService.selectGoodsList(page,goodsDto); + AjaxResult result = AjaxResult.buildSuccessInstance(rows.getRecords(),rows.getTotal()); + return result; } /** @@ -91,8 +145,48 @@ AjaxResult beClose(@RequestBody BeCloseDto beCloseDto) { return activitySignAwardSetService.beClose(beCloseDto); } + + /** + * 活动统计 + */ + @ApiOperation(value = "活动统计") + @ApiResponses({ + @ApiResponse(code = 200, message = "OK", response = SignReceiveListVo.class) + }) + @PostMapping(value = "/findSignReceiveList") + public @ResponseBody + AjaxResult findSignReceiveList(@RequestBody SignReceiveListDto signReceiveListDto) { + //设置用户公司ID + QueryUtil.setQueryLimitCom(signReceiveListDto); + //排序 + if(StringUtils.isBlank(signReceiveListDto.getSort())){ + signReceiveListDto.setSort("create_time"); + signReceiveListDto.setOrder("desc"); + } + Page<SignReceiveListVo> page = new Page(signReceiveListDto.getPageNum(), signReceiveListDto.getPageSize()); + IPage<SignReceiveListVo> rows = activitySignAwardSetService.findSignReceiveList(page,signReceiveListDto); + AjaxResult result = AjaxResult.buildSuccessInstance(rows.getRecords(),rows.getTotal()); + return result; + } + /** + *进入修改 + */ + @ApiOperation(value = "进入修改") + @PostMapping(value = "/findSignForUpdate") + public @ResponseBody + AjaxResult findSignForUpdate(@RequestBody SignForUpdateDto signForUpdateDto) { + return activitySignAwardSetService.findSignForUpdate(signForUpdateDto); + } + /** + * 保存 + */ + @PostMapping(value = "/updateSignAwardSet") + public @ResponseBody + AjaxResult updateSignAwardSet(@RequestBody UpdateSignAwardSetDto updateSignAwardSetDto) { + return activitySignAwardSetService.updateSignAwardSet(updateSignAwardSetDto); + } diff --git a/zq-erp/src/main/java/com/matrix/system/activity/dao/ActivitySignReceiveRecordDao.java b/zq-erp/src/main/java/com/matrix/system/activity/dao/ActivitySignReceiveRecordDao.java index 727435b..4256ea8 100644 --- a/zq-erp/src/main/java/com/matrix/system/activity/dao/ActivitySignReceiveRecordDao.java +++ b/zq-erp/src/main/java/com/matrix/system/activity/dao/ActivitySignReceiveRecordDao.java @@ -1,14 +1,30 @@ package com.matrix.system.activity.dao; +import org.apache.ibatis.annotations.Param; + import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.matrix.system.activity.dto.CouponDto; +import com.matrix.system.activity.dto.GoodsDto; +import com.matrix.system.activity.dto.SignReceiveListDto; import com.matrix.system.activity.entity.ActivitySignReceiveRecord; +import com.matrix.system.activity.vo.CouponVo; +import com.matrix.system.activity.vo.GoodsVo; +import com.matrix.system.activity.vo.SignReceiveListVo; /** - * @description 领 * @author yourName * @date 2021-03-31 16:57 */ public interface ActivitySignReceiveRecordDao extends BaseMapper<ActivitySignReceiveRecord>{ + IPage<SignReceiveListVo> findSignReceiveList(Page<SignReceiveListVo> page, + @Param("record")SignReceiveListDto signReceiveListDto); + + IPage<CouponVo> selectCouponList(Page<CouponVo> page, @Param("record")CouponDto couponDto); + + IPage<GoodsVo> selectGoodsList(Page<GoodsVo> page, @Param("record")GoodsDto goodsDto); + } \ No newline at end of file diff --git a/zq-erp/src/main/java/com/matrix/system/activity/dto/CouponDto.java b/zq-erp/src/main/java/com/matrix/system/activity/dto/CouponDto.java new file mode 100644 index 0000000..b6a9a40 --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/activity/dto/CouponDto.java @@ -0,0 +1,19 @@ +package com.matrix.system.activity.dto; + +import com.matrix.core.pojo.BasePageQueryDto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel(value = "CouponDto", description = "查询参数") +public class CouponDto extends BasePageQueryDto { + + @ApiModelProperty(value ="活动名称") + private String yhjmc; + + @ApiModelProperty(hidden = true) + private Long companyId; + +} diff --git a/zq-erp/src/main/java/com/matrix/system/activity/dto/GoodsDto.java b/zq-erp/src/main/java/com/matrix/system/activity/dto/GoodsDto.java new file mode 100644 index 0000000..dc72283 --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/activity/dto/GoodsDto.java @@ -0,0 +1,19 @@ +package com.matrix.system.activity.dto; + +import com.matrix.core.pojo.BasePageQueryDto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel(value = "GoodsDto", description = "查询参数") +public class GoodsDto extends BasePageQueryDto { + + @ApiModelProperty(value ="商品名称") + private String cpmc; + + @ApiModelProperty(hidden = true) + private Long companyId; + +} diff --git a/zq-erp/src/main/java/com/matrix/system/activity/dto/SignForUpdateDto.java b/zq-erp/src/main/java/com/matrix/system/activity/dto/SignForUpdateDto.java new file mode 100644 index 0000000..ac9680d --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/activity/dto/SignForUpdateDto.java @@ -0,0 +1,17 @@ +package com.matrix.system.activity.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel(value = "SignForUpdateDto", description = "参数") +public class SignForUpdateDto { + + @ApiModelProperty(value ="活动主表ID") + private Long actId; + + @ApiModelProperty(hidden = true) + private Long companyId; + +} diff --git a/zq-erp/src/main/java/com/matrix/system/activity/dto/SignReceiveListDto.java b/zq-erp/src/main/java/com/matrix/system/activity/dto/SignReceiveListDto.java new file mode 100644 index 0000000..af58abd --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/activity/dto/SignReceiveListDto.java @@ -0,0 +1,29 @@ +package com.matrix.system.activity.dto; + +import com.matrix.core.pojo.BasePageQueryDto; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +@Data +@ApiModel(value = "SignReceiveListDto", description = "参数") +public class SignReceiveListDto extends BasePageQueryDto { + + @ApiModelProperty(value ="活动编码") + private String yhmc; + + @ApiModelProperty(value ="签到开始时间") + private Date startTime; + + @ApiModelProperty(value ="签到结束时间") + private Date endTime; + + @ApiModelProperty(value ="活动主表ID") + private Long actId; + + @ApiModelProperty(hidden = true) + private Long companyId; + +} diff --git a/zq-erp/src/main/java/com/matrix/system/activity/dto/UpdateSignAwardSetDto.java b/zq-erp/src/main/java/com/matrix/system/activity/dto/UpdateSignAwardSetDto.java new file mode 100644 index 0000000..186ffd8 --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/activity/dto/UpdateSignAwardSetDto.java @@ -0,0 +1,33 @@ +package com.matrix.system.activity.dto; + +import java.util.Date; +import java.util.List; +import com.matrix.system.activity.entity.ActivitySignAwardSet; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel(value = "UpdateSignAwardSetDto", description = "查询参数") +public class UpdateSignAwardSetDto { + + @ApiModelProperty(value ="活动名称") + private String actName; + @ApiModelProperty(value ="活动编码") + private String actCode; + @ApiModelProperty(value ="活动开始时间") + private Date beginTime; + @ApiModelProperty(value ="活动结束时间") + private Date endTime; + + private SignSetBasicJsonDto signSetBasicJsonDto; + + private List<ActivitySignAwardSet> activitySignAwardSets; + + @ApiModelProperty(value ="活动主表ID") + private Long actId; + + @ApiModelProperty(hidden = true) + private Long companyId; + +} diff --git a/zq-erp/src/main/java/com/matrix/system/activity/entity/ActivitySignAwardSet.java b/zq-erp/src/main/java/com/matrix/system/activity/entity/ActivitySignAwardSet.java index 7c153df..a1c7bf9 100644 --- a/zq-erp/src/main/java/com/matrix/system/activity/entity/ActivitySignAwardSet.java +++ b/zq-erp/src/main/java/com/matrix/system/activity/entity/ActivitySignAwardSet.java @@ -27,21 +27,21 @@ */ - private Integer awardType; + private int awardType; /** * 奖项规则(1:每日奖励(默认)2:累计签到天数) */ - private Integer awardRule; + private int awardRule; /** * 签到累计天数 */ - private Integer cumulativeDay; + private int cumulativeDay; /** * 奖项名称 @@ -69,21 +69,28 @@ */ - private Integer awardInventoryCnt; + private int awardInventoryCnt; /** * 已派发数量 */ - private Integer awardDistributeCnt; + private int awardDistributeCnt; /** * 兑奖方式(1:线下兑换2:物流配送3:客服兑换) */ - private Integer awardWay; + private int awardWay; + + /** + * 奖品是否有效(1:有效 2:无效) + */ + private int awardState; + public static final int AWARDSTATE_WORK = 1; + public static final int AWARDSTATE_UNWORK = 2; /** * 操作提示 @@ -125,12 +132,14 @@ */ - private Integer scoreCnt; + private int scoreCnt; /** * 优惠券ID */ + + private String couponName; private String couponId; @@ -138,6 +147,7 @@ * 商品ID */ + private String goodsName; private String goodsId; diff --git a/zq-erp/src/main/java/com/matrix/system/activity/service/ActivitySignAwardSetService.java b/zq-erp/src/main/java/com/matrix/system/activity/service/ActivitySignAwardSetService.java index 5817eb8..8839bcd 100644 --- a/zq-erp/src/main/java/com/matrix/system/activity/service/ActivitySignAwardSetService.java +++ b/zq-erp/src/main/java/com/matrix/system/activity/service/ActivitySignAwardSetService.java @@ -2,7 +2,6 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; - import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -11,14 +10,15 @@ import com.matrix.core.pojo.AjaxResult; import com.matrix.core.tools.WebUtil; import com.matrix.system.activity.dao.ActivitySignAwardSetDao; -import com.matrix.system.activity.dto.ActivitiesListDto; -import com.matrix.system.activity.dto.AddSignAwardSetDto; -import com.matrix.system.activity.dto.BeCloseDto; -import com.matrix.system.activity.dto.BeReadyDto; -import com.matrix.system.activity.dto.DelRowDto; -import com.matrix.system.activity.dto.SignSetBasicJsonDto; +import com.matrix.system.activity.dao.ActivitySignReceiveRecordDao; +import com.matrix.system.activity.dto.*; import com.matrix.system.activity.entity.ActivitySignAwardSet; import com.matrix.system.activity.vo.ActivitiesListVo; +import com.matrix.system.activity.vo.AddSignAwardSetVo; +import com.matrix.system.activity.vo.CouponVo; +import com.matrix.system.activity.vo.GoodsVo; +import com.matrix.system.activity.vo.SignReceiveListVo; +import com.matrix.system.activity.vo.SignSetBasicJsonVo; import com.matrix.system.common.bean.SysUsers; import com.matrix.system.hive.action.util.QueryUtil; import com.matrix.system.shopXcx.bean.ShopActivities; @@ -27,8 +27,11 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.Date; +import java.util.HashMap; import java.util.List; +import java.util.Map; /** * @description 奖品设置表 @@ -42,6 +45,8 @@ private ShopActivitiesDao shopActivitiesDao; @Autowired private ActivitySignAwardSetDao activitySignAwardSetDao; + @Autowired + private ActivitySignReceiveRecordDao activitySignReceiveRecordDao; @Transactional public AjaxResult activitySignAwardSetService(AddSignAwardSetDto addSignAwardSetDto) { @@ -77,6 +82,7 @@ activitySignAwardSet.setUpdateBy(user.getSuName()); activitySignAwardSet.setCompanyId(companyId); activitySignAwardSet.setActivityId(shopActivities.getId()); + activitySignAwardSet.setAwardState(ActivitySignAwardSet.AWARDSTATE_WORK); activitySignAwardSetDao.insert(activitySignAwardSet); } } @@ -144,6 +150,117 @@ return AjaxResult.buildSuccessInstance("操作成功"); } + public IPage<SignReceiveListVo> findSignReceiveList(Page<SignReceiveListVo> page, + SignReceiveListDto signReceiveListDto) { + return activitySignReceiveRecordDao.findSignReceiveList(page,signReceiveListDto); + } + + public AjaxResult findSignForUpdate(SignForUpdateDto signForUpdateDto) { + //设置用户公司ID + QueryUtil.setQueryLimitCom(signForUpdateDto); + Long actId = signForUpdateDto.getActId(); + AjaxResult result= AjaxResult.buildSuccessInstance("查询成功"); + //获取对应的活动主表信息和对应的奖品设置信息 + AddSignAwardSetVo addSignAwardSetVo = new AddSignAwardSetVo(); + ShopActivities shopActivity = shopActivitiesDao.selectById(actId); + if(ObjectUtil.isNotEmpty(shopActivity)) { + addSignAwardSetVo.setId(actId); + addSignAwardSetVo.setActName(shopActivity.getActName()); + addSignAwardSetVo.setActCode(shopActivity.getActCode()); + addSignAwardSetVo.setBeginTime(shopActivity.getActBeginTime()); + addSignAwardSetVo.setEndTime(shopActivity.getActEndTime()); + + String actContent = shopActivity.getActContent(); + SignSetBasicJsonVo signSetBasicJsonVo = JSON.parseObject(actContent, SignSetBasicJsonVo.class); + addSignAwardSetVo.setSignSetBasicJsonDto(signSetBasicJsonVo); + + Map<String, Object> columnMap = new HashMap<String, Object>(); + columnMap.put("activity_id", actId); + columnMap.put("company_id", signForUpdateDto.getCompanyId()); + List<ActivitySignAwardSet> activitySignAwardSets = activitySignAwardSetDao.selectByMap(columnMap); + addSignAwardSetVo.setActivitySignAwardSets(activitySignAwardSets); + } + result.putInMap("addSignAwardSetVo", addSignAwardSetVo); + return result; + } + + @Transactional + public AjaxResult updateSignAwardSet(UpdateSignAwardSetDto updateSignAwardSetDto) { + //获取当前登录人员信息 + QueryUtil.setQueryLimitCom(updateSignAwardSetDto); + SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY); + Long actId = updateSignAwardSetDto.getActId(); + Long companyId = user.getCompanyId(); + ShopActivities shopActivity = shopActivitiesDao.selectById(actId); + //更新活动主表信息 + shopActivity.setActName(updateSignAwardSetDto.getActName()); + shopActivity.setActCode(updateSignAwardSetDto.getActCode()); + shopActivity.setActBeginTime(updateSignAwardSetDto.getBeginTime()); + shopActivity.setActEndTime(updateSignAwardSetDto.getEndTime()); + shopActivity.setCompanyId(companyId); + shopActivity.setCreateBy(user.getSuName()); + shopActivity.setUpdateBy(user.getSuName()); + //将基本信息转换成JSON字符串存储到活动主表的act_content字段 + SignSetBasicJsonDto signSetBasicJsonDto = updateSignAwardSetDto.getSignSetBasicJsonDto(); + String json=JSON.toJSONString(signSetBasicJsonDto); + shopActivity.setActContent(json); + shopActivitiesDao.updateByModel(shopActivity); + /** + * 比较两个奖品名单,多的新增,减少的更新为已失效,不变的更新 + */ + //原有的奖品 + ArrayList<Long> arrayListOld = new ArrayList<>(); + Map<String, Object> columnMap = new HashMap<String, Object>(); + columnMap.put("activity_id", actId); + columnMap.put("company_id", updateSignAwardSetDto.getCompanyId()); + List<ActivitySignAwardSet> activitySignAwardSetOld = activitySignAwardSetDao.selectByMap(columnMap); + if(CollUtil.isNotEmpty(activitySignAwardSetOld)) { + for(ActivitySignAwardSet activitySignAwardSetUpdate : activitySignAwardSetOld) { + Long actSubid = activitySignAwardSetUpdate.getId(); + arrayListOld.add(actSubid); + } + } + //修改后的奖品 + List<ActivitySignAwardSet> activitySignAwardSetsUpdate = updateSignAwardSetDto.getActivitySignAwardSets(); + ArrayList<Long> arrayListUpdate = new ArrayList<>(); + if(CollUtil.isNotEmpty(activitySignAwardSetsUpdate)) { + for(ActivitySignAwardSet activitySignAwardSetUpdate : activitySignAwardSetsUpdate) { + Long actSubid = activitySignAwardSetUpdate.getId(); + //如果ID为空则新增,不为空则修改 + if(ObjectUtil.isEmpty(actSubid)) { + activitySignAwardSetUpdate.setCreateBy(user.getSuName()); + activitySignAwardSetUpdate.setCreateTime(new Date()); + activitySignAwardSetUpdate.setUpdateTime(new Date()); + activitySignAwardSetUpdate.setUpdateBy(user.getSuName()); + activitySignAwardSetUpdate.setCompanyId(companyId); + activitySignAwardSetUpdate.setActivityId(actId); + activitySignAwardSetDao.insert(activitySignAwardSetUpdate); + }else { + activitySignAwardSetDao.updateById(activitySignAwardSetUpdate); + arrayListUpdate.add(actSubid); + } + } + } + //比较获取原来的比现在多出来的奖品,修改状态为失效 + boolean removeAll = arrayListOld.removeAll(arrayListUpdate); + if(removeAll && CollUtil.isNotEmpty(arrayListOld)) { + for(long id : arrayListOld) { + ActivitySignAwardSet activitySignAwardSetDel = activitySignAwardSetDao.selectById(id); + activitySignAwardSetDel.setAwardState(ActivitySignAwardSet.AWARDSTATE_UNWORK); + activitySignAwardSetDao.updateById(activitySignAwardSetDel); + } + } + return new AjaxResult(AjaxResult.STATUS_SUCCESS, "保存成功"); + } + + public IPage<CouponVo> selectCouponList(Page<CouponVo> page, CouponDto couponDto) { + return activitySignReceiveRecordDao.selectCouponList(page,couponDto); + } + + public IPage<GoodsVo> selectGoodsList(Page<GoodsVo> page, GoodsDto goodsDto) { + return activitySignReceiveRecordDao.selectGoodsList(page,goodsDto); + } + diff --git a/zq-erp/src/main/java/com/matrix/system/activity/vo/AddSignAwardSetVo.java b/zq-erp/src/main/java/com/matrix/system/activity/vo/AddSignAwardSetVo.java new file mode 100644 index 0000000..6dc0d02 --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/activity/vo/AddSignAwardSetVo.java @@ -0,0 +1,33 @@ +package com.matrix.system.activity.vo; + +import java.util.Date; +import java.util.List; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.matrix.system.activity.entity.ActivitySignAwardSet; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AddSignAwardSetVo { + /** + * 主键 + */ + private Long id; + + @ApiModelProperty(value ="活动名称") + private String actName; + @ApiModelProperty(value ="活动编码") + private String actCode; + @ApiModelProperty(value ="活动开始时间") + private Date beginTime; + @ApiModelProperty(value ="活动结束时间") + private Date endTime; + + private SignSetBasicJsonVo signSetBasicJsonDto; + + private List<ActivitySignAwardSet> activitySignAwardSets; + + +} diff --git a/zq-erp/src/main/java/com/matrix/system/activity/vo/CouponVo.java b/zq-erp/src/main/java/com/matrix/system/activity/vo/CouponVo.java new file mode 100644 index 0000000..47ee4c1 --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/activity/vo/CouponVo.java @@ -0,0 +1,29 @@ +package com.matrix.system.activity.vo; + +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class CouponVo { + /** + * 主键 + */ + private Integer id; + + + /** + * 优惠券名称 + */ + @ApiModelProperty(value = "优惠券名称") + private String cName; + + /** + * 结束时间 + */ + @ApiModelProperty(value = "结束时间") + @JsonFormat(pattern = "yyyy-MM-dd", timezone="GMT+8") + private Date endTime; + +} diff --git a/zq-erp/src/main/java/com/matrix/system/activity/vo/GoodsVo.java b/zq-erp/src/main/java/com/matrix/system/activity/vo/GoodsVo.java new file mode 100644 index 0000000..41793ea --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/activity/vo/GoodsVo.java @@ -0,0 +1,29 @@ +package com.matrix.system.activity.vo; + +import lombok.Data; + +@Data +public class GoodsVo { + + private Long id; + /** + * 产品名称 + */ + private String name; + + /** + * 商品分类 组合商品/家居产品/项目/充值卡/综合卡 + */ + private String goodType; + + /** + * 产品编码 + */ + private String code; + + /** + * 售价/本金 + */ + private Double sealPice; + +} diff --git a/zq-erp/src/main/java/com/matrix/system/activity/vo/SignReceiveListVo.java b/zq-erp/src/main/java/com/matrix/system/activity/vo/SignReceiveListVo.java new file mode 100644 index 0000000..dfc5c00 --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/activity/vo/SignReceiveListVo.java @@ -0,0 +1,30 @@ +package com.matrix.system.activity.vo; + +import java.util.Date; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class SignReceiveListVo { + /** + * 主键 + */ + private Long id; + + @ApiModelProperty(value = "用户") + private String nickName; + + @ApiModelProperty(value = "签到时间") + private Date reciveTime; + + @ApiModelProperty(value = "连续签到天数") + private Integer cumulativeDay; + + @ApiModelProperty(value = "奖励类型") + private String awardType; + + @ApiModelProperty(value = "获得奖励") + private String awardName; + +} diff --git a/zq-erp/src/main/java/com/matrix/system/activity/vo/SignSetBasicJsonVo.java b/zq-erp/src/main/java/com/matrix/system/activity/vo/SignSetBasicJsonVo.java new file mode 100644 index 0000000..c2d0983 --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/activity/vo/SignSetBasicJsonVo.java @@ -0,0 +1,29 @@ +package com.matrix.system.activity.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class SignSetBasicJsonVo { + + @ApiModelProperty(value ="标题图片") + private String imageUrlTitle; + @ApiModelProperty(value ="头部图片") + private String imageUrlHead; + @ApiModelProperty(value ="按钮图片") + private String imageUrlButton; + @ApiModelProperty(value ="状态图片") + private String imageUrlState; + + @ApiModelProperty(value ="规则内容") + private String ruleExplain; + @ApiModelProperty(value ="字体颜色") + private String typographyColor; + @ApiModelProperty(value ="背景颜色") + private String backgroundColor; + @ApiModelProperty(value ="字体大小") + private Integer typographyNum; + @ApiModelProperty(value ="字体透明度") + private Integer typographyLight; + +} diff --git "a/zq-erp/src/main/resources/config/db/increment/\347\255\276\345\210\260\346\264\273\345\212\250.sql" "b/zq-erp/src/main/resources/config/db/increment/\347\255\276\345\210\260\346\264\273\345\212\250.sql" index 56f55ba..33e3533 100644 --- "a/zq-erp/src/main/resources/config/db/increment/\347\255\276\345\210\260\346\264\273\345\212\250.sql" +++ "b/zq-erp/src/main/resources/config/db/increment/\347\255\276\345\210\260\346\264\273\345\212\250.sql" @@ -116,6 +116,17 @@ ALTER TABLE `shop_activities` ADD COLUMN `act_code` varchar(200) NULL COMMENT '活动编码' AFTER `id`; +ALTER TABLE `activity_sign_award_set` + ADD COLUMN `award_state` int(4) NULL COMMENT '奖品是否有效(1:有效 2:无效)' AFTER `company_id`; + +ALTER TABLE `activity_sign_award_set` + ADD COLUMN `goods_name` varchar(200) NULL COMMENT '产品名称' AFTER `coupon_id`; + +ALTER TABLE `activity_sign_award_set` + ADD COLUMN `coupon_name` varchar(200) NULL COMMENT '优惠券名' AFTER `score_cnt`; + + + diff --git a/zq-erp/src/main/resources/mybatis/mapper/activity/ActivitySignReceiveRecordDao.xml b/zq-erp/src/main/resources/mybatis/mapper/activity/ActivitySignReceiveRecordDao.xml index 10b0853..53ca3c5 100644 --- a/zq-erp/src/main/resources/mybatis/mapper/activity/ActivitySignReceiveRecordDao.xml +++ b/zq-erp/src/main/resources/mybatis/mapper/activity/ActivitySignReceiveRecordDao.xml @@ -38,4 +38,75 @@ <result property="companyId" column="company_id" /> </resultMap> + <select id="findSignReceiveList" resultType="com.matrix.system.activity.vo.SignReceiveListVo"> + SELECT + a.id id, + b.nick_name nickName, + a.receive_time reciveTime, + c.cumulative_day cumulativeDay, + c.award_type awardType, + c.award_name awardName + FROM + activity_sign_receive_record a + LEFT JOIN biz_user b ON a.open_id = b.open_id + LEFT JOIN activity_sign_award_set c ON a.award_id = c.id + <where> + a.company_id = #{record.companyId} + and a.activity_id = #{record.actId} + <if test="record.yhmc != null and record.yhmc != ''"> + and b.nick_name like concat('%',#{record.yhmc},'%') + </if> + <if test="record.startTime != null "> + and a.receive_time >= #{record.startTime} + </if> + <if test="record.endTime != null"> + and #{record.endTime} >= a.receive_time + </if> + </where> + <if test="record.sort !=null"> + order by + a.${record.sort} ${record.order} + </if> + </select> + + <select id="selectCouponList" resultType="com.matrix.system.activity.vo.CouponVo"> + SELECT + a.id id, + a.c_name cName, + a.end_time endTime + FROM + shop_coupon a + <where> + a.company_id = #{record.companyId} + <if test="record.yhjmc != null and record.yhjmc != ''"> + and a.c_name like concat('%',#{record.yhjmc},'%') + </if> + </where> + <if test="record.sort !=null"> + order by + a.${record.sort} ${record.order} + </if> + </select> + + <select id="selectGoodsList" resultType="com.matrix.system.activity.vo.GoodsVo"> + SELECT + a.id id, + a.name name, + a.good_type goodType, + a.code code, + a.seal_pice sealPice + FROM + shopping_goods a + <where> + a.company_id = #{record.companyId} + <if test="record.cpmc != null and record.cpmc != ''"> + and a.name like concat('%',#{record.cpmc},'%') + </if> + </where> + <if test="record.sort !=null"> + order by + a.${record.sort} ${record.order} + </if> + </select> + </mapper> \ No newline at end of file diff --git a/zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopActivitiesDao.xml b/zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopActivitiesDao.xml index d6f7f20..716911e 100644 --- a/zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopActivitiesDao.xml +++ b/zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopActivitiesDao.xml @@ -67,6 +67,7 @@ update_time, id, act_name, + act_code, act_type, act_begin_time, act_end_time, @@ -87,6 +88,7 @@ now(), #{item.id}, #{item.actName}, + #{item.actCode}, #{item.actType}, #{item.actBeginTime}, #{item.actEndTime}, diff --git a/zq-erp/src/main/resources/templates/views/admin/activity/activity-list.html b/zq-erp/src/main/resources/templates/views/admin/activity/activity-list.html index 8487de0..697105b 100644 --- a/zq-erp/src/main/resources/templates/views/admin/activity/activity-list.html +++ b/zq-erp/src/main/resources/templates/views/admin/activity/activity-list.html @@ -32,20 +32,6 @@ margin: 0px 0px 10px 0px; text-align: right; } - - .box-card { - width: 240px; - border-radius: 5px; - color: #ffffff; - padding: 2px 0px; - margin-right: 20px; - cursor: pointer; - float: left; - text-align: center; - } - .el-card__body { - padding: 0px; - } </style> </head> @@ -136,11 +122,11 @@ </el-table-column> <el-table-column label="操作" width="400"> <template slot-scope="scope"> - <el-row style="display:flex;"> + <el-row style="display:flex;" v-if="scope.row.actType == 4"> <el-button type="primary" v-if="scope.row.actStatus == 1" size="mini" @click="beReady(scope.row)">发布</el-button> - <el-button type="primary" v-if="[1,2,3].includes(scope.row.actStatus)" size="mini">修改</el-button> + <el-button type="primary" v-if="[1,2,3].includes(scope.row.actStatus)" @click="beUpdate(scope.row)" size="mini">修改</el-button> <el-button type="primary" v-if="scope.row.actStatus == 3" size="mini">推广</el-button> - <el-button type="primary" v-if="[3,4,5].includes(scope.row.actStatus)" size="mini">活动统计</el-button> + <el-button type="primary" v-if="[3,4,5].includes(scope.row.actStatus)" @click="openSignReceive(scope.row)" size="mini">活动统计</el-button> <el-button type="primary" v-if="scope.row.actStatus == 3" @click="beClose(scope.row)" size="mini">关闭</el-button> <el-button type="danger" v-if="scope.row.actStatus != 5" size="mini" @click="delRow(scope.row)">删除</el-button> </el-row> @@ -211,6 +197,26 @@ let _this = this; _this.loadActivitysList(); }, + //修改 + beUpdate(row){ + layer.full(layer.open({ + type: 2, + title: "修改", + maxmin: true, + area: [MUI.SIZE_L, '500px'], + content : [ basePath + '/admin/redirect/activity/activity-sign-update?actId=' + row.id] + })); + }, + //活动统计 + openSignReceive(row){ + layer.full(layer.open({ + type: 2, + title: "活动统计", + maxmin: true, + area: [MUI.SIZE_L, '500px'], + content : [ basePath + '/admin/redirect/activity/activity-sign-receive?actId=' + row.id] + })); + }, //发布 beReady(row){ let _this = this; diff --git a/zq-erp/src/main/resources/templates/views/admin/activity/activity-sign-receive.html b/zq-erp/src/main/resources/templates/views/admin/activity/activity-sign-receive.html new file mode 100644 index 0000000..31062c8 --- /dev/null +++ b/zq-erp/src/main/resources/templates/views/admin/activity/activity-sign-receive.html @@ -0,0 +1,263 @@ +<!DOCTYPE HTML> +<html xmlns:th="http://www.thymeleaf.org" xmlns:matrix="http://www.w3.org/1999/xhtml"> +<head> + <meta charset="utf-8"> + <META HTTP-EQUIV="Pragma" CONTENT="no-cache"> + <meta name="renderer" content="webkit|ie-comp|ie-stand"> + <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> + <meta name="viewport" + content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"/> + <meta http-equiv="Cache-Control" content="no-siteapp"/> + <!-- 本框架基本脚本和样式 --> + <script type="text/javascript" th:src="@{/js/systools/MBaseVue.js}"></script> + <link rel="stylesheet" th:href="@{/plugin/element-ui/index.css}"> + <link rel="stylesheet" th:href="@{/plugin/bootstrap-3.3.5/css/bootstrap.min.css}"> + <link th:href="@{/css/styleOne/style.min.css}" rel="stylesheet" type="text/css"/> + + <!-- 富文本编辑器 --> + <script type="text/javascript" charset="utf-8" + th:src="@{/plugin/beditor/ueditor.config.js}"></script> + <script type="text/javascript" charset="utf-8" + th:src="@{/plugin/beditor/ueditor.all.js}"> + </script> + <script type="text/javascript" charset="utf-8" + th:src="@{/plugin/beditor/lang/zh-cn/zh-cn.js}"></script> + <style> + .panel-body{ + overflow: hidden; + } + .paginationStyle{ + background: #ffffff; + padding: 10px 10px; + margin: 0px 0px 10px 0px; + text-align: right; + } + </style> +</head> + +<body> +<div class="panel-body" id="app" v-cloak> + <el-row> + <el-row justify="space-between" type="flex"> + <el-col> + <el-form ref="form" :model="form" inline > + <el-form-item label="用户名称" prop="yhmc" > + <el-input v-model="form.yhmc" placeholder="用户名称"></el-input> + </el-form-item> + <el-form-item prop="qdsj" label="签到时间"> + <el-date-picker + v-model="form.qdsj" + type="datetimerange" + :picker-options="pickerOptions" + range-separator="至" + start-placeholder="开始日期" + end-placeholder="结束日期" + align="right"> + </el-date-picker> + </el-form-item> + <el-button type="primary" @click="searchFormSignReceive" >搜索</el-button> + <el-button @click="resetFormSignReceive('form')">重置</el-button> + </el-form> + </el-col> + </el-row> + + <el-row class="table-style" > + <el-table ref="multipleTable" + :data="signReceiveList.rows" + :height="height" + stripe:true + @sort-change="sortChange" + @selection-change="handleSelectionChange"> + <el-table-column + type="selection"> + </el-table-column> + <el-table-column + prop="nickName" + label="用户" + show-overflow-tooltip> + </el-table-column> + <el-table-column + prop="reciveTime" + label="签到时间" + show-overflow-tooltip> + </el-table-column> + <el-table-column + prop="cumulativeDay" + label="连续签到天数" + show-overflow-tooltip> + </el-table-column> + <el-table-column + label="奖励类型"> + <template slot-scope="scope"> + <span v-if="scope.row.awardType == 1">自定义礼品</span> + <span v-if="scope.row.awardType == 2">积分</span> + <span v-if="scope.row.awardType == 3">优惠券</span> + <span v-if="scope.row.awardType == 4">店铺商品</span> + </template> + </el-table-column> + <el-table-column + prop="awardName" + label="获得奖励" + show-overflow-tooltip> + </el-table-column> + </el-table> + </el-row> + <el-row class="paginationStyle" > + <el-pagination background + @size-change="changePageSignReceive" + @current-change="changeCurrentPageSignReceive" + :current-page="signReceiveList.currentPage" + :page-sizes="[10, 20, 30, 50]" + :page-size="signReceiveList.pageSize" + layout="total, sizes, prev, pager, next, jumper" + :total="signReceiveList.total"> + </el-pagination> + </el-row> + </el-row> +</div> +</body> +<script type="text/javascript" th:src="@{/js/plugin/jquery-2.1.4.min.js}"></script> +<script type="text/javascript" th:src="@{/js/plugin/jquery.query.js}"></script> +<script type="text/javascript" th:src="@{/plugin/bootstrap-3.3.5/js/bootstrap.min.js}"></script> +<script type="text/javascript" th:src="@{/js/systools/AjaxProxyVue.js}"></script> +<script type="text/javascript" th:src="@{/js/plugin/vue.js}"></script> +<script type="text/javascript" th:src="@{/plugin/element-ui/index.js}"></script> +<script type="text/javascript" th:src="@{/js/systools/MJsBase.js}"></script> +<script type="text/javascript" th:src="@{/plugin/layer/layer.js}"></script> +<script type="text/javascript" th:src="@{/plugin/moment.min.js}"></script> + +<script> + //获取传输的活动对象 + var actId = $.query.get("actId"); + + var app = new Vue({ + el: '#app', + data: { + height:'calc(100vh - 200px)', + //--时间选择 + pickerOptions: { + shortcuts: [{ + text: '最近一周', + onClick(picker) { + const end = new Date(); + const start = new Date(); + start.setTime(start.getTime() - 3600 * 1000 * 24 * 7); + picker.$emit('pick', [start, end]); + } + }, { + text: '最近一个月', + onClick(picker) { + const end = new Date(); + const start = new Date(); + start.setTime(start.getTime() - 3600 * 1000 * 24 * 30); + picker.$emit('pick', [start, end]); + } + }, { + text: '最近三个月', + onClick(picker) { + const end = new Date(); + const start = new Date(); + start.setTime(start.getTime() - 3600 * 1000 * 24 * 90); + picker.$emit('pick', [start, end]); + } + }] + }, + // 条件查询 + form:{ + yhmc:'', + qdsj:'', + order:'', + sort:'' + }, + //活动列表 + signReceiveList:{ + rows:[], + total:0, + pageSize:10, + currentPage:1, + }, + }, + created: function () { + this.loadInfo(); + }, + mounted: function () { + }, + methods: { + //加载分类 + loadInfo() { + let _this = this; + _this.loadSignReceiveList(); + }, + //--列表 + loadSignReceiveList() { + let _this = this; + let data=_this.getRequestParamSignReceive(); + data.pageSize=_this.signReceiveList.pageSize; + data.pageNum=_this.signReceiveList.currentPage; + AjaxProxy.requst({ + app: _this, + data:data, + url: basePath + '/admin/activitySignAwardSet/findSignReceiveList', + callback: function (data) { + _this.signReceiveList.rows = data.rows; + _this.signReceiveList.total = data.total; + } + }); + },//查询参数 + getRequestParamSignReceive(){ + let _this = this; + let startTime = ''; + let endTime = ''; + if(_this.form.qdsj.length > 0){ + startTime = _this.form.qdsj[0]; + endTime = _this.form.qdsj[1]; + } + return { + yhmc:_this.form.yhmc, + startTime:startTime, + endTime:endTime, + actId:actId, + order:_this.form.order, + sort:_this.form.sort, + } + }, + //查询 + searchFormSignReceive:function(){ + this.signReceiveList.currentPage=1; + this.loadSignReceiveList(); + }, + //重置 + resetFormSignReceive(formName) { + this.$refs[formName].resetFields(); + }, + changePageSignReceive(val) { + this.signReceiveList.pageSize = val; + this.loadSignReceiveList(); + }, + changeCurrentPageSignReceive(val) { + this.signReceiveList.currentPage = val; + this.loadSignReceiveList(); + }, + //排序 + sortChange:function (column){ + if(column.order){ + if(column.order.indexOf("desc")){ + this.form.order="desc"; + }else{ + this.form.order="asc"; + } + this.form.sort=column.prop; + this.loadInfo(); + } + }, + //选择 + handleSelectionChange(val) { + let _this = this; + _this.multipleSelection = val; + }, + } + }) +</script> + +</body> +</html> \ No newline at end of file diff --git a/zq-erp/src/main/resources/templates/views/admin/activity/activity-sign-update.html b/zq-erp/src/main/resources/templates/views/admin/activity/activity-sign-update.html new file mode 100644 index 0000000..627bf29 --- /dev/null +++ b/zq-erp/src/main/resources/templates/views/admin/activity/activity-sign-update.html @@ -0,0 +1,748 @@ +<!DOCTYPE HTML> +<html xmlns:th="http://www.thymeleaf.org" xmlns:matrix="http://www.w3.org/1999/xhtml"> +<head> + <meta charset="utf-8"> + <META HTTP-EQUIV="Pragma" CONTENT="no-cache"> + <meta name="renderer" content="webkit|ie-comp|ie-stand"> + <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> + <meta name="viewport" + content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"/> + <meta http-equiv="Cache-Control" content="no-siteapp"/> + <!-- 本框架基本脚本和样式 --> + <script type="text/javascript" th:src="@{/js/systools/MBaseVue.js}"></script> + <link rel="stylesheet" th:href="@{/plugin/element-ui/index.css}"> + <link rel="stylesheet" th:href="@{/plugin/bootstrap-3.3.5/css/bootstrap.min.css}"> + <link th:href="@{/css/styleOne/style.min.css}" rel="stylesheet" type="text/css"/> + + <!-- 富文本编辑器 --> + <script type="text/javascript" charset="utf-8" + th:src="@{/plugin/beditor/ueditor.config.js}"></script> + <script type="text/javascript" charset="utf-8" + th:src="@{/plugin/beditor/ueditor.all.js}"> + </script> + <script type="text/javascript" charset="utf-8" + th:src="@{/plugin/beditor/lang/zh-cn/zh-cn.js}"></script> + <style> + + .el-aside { + background-color: #D3DCE6; + color: #333; + text-align: center; + } + .el-main { + background-color: #E9EEF3; + color: #333; + } + body > .el-container { + margin-bottom: 1000px; + } + .button { + padding: 5px; + text-align: center; + } + + .imageOne { + display: block; + height: 50px; + padding: 5px 5px; + text-align: center; + } + .imageTwo { + display: block; + height: 50px; + padding: 5px 5px; + text-align: center; + } + .imageThree { + display: block; + height: 50px; + padding: 5px 5px; + text-align: center; + } + + .box-card { + padding: 5px 5px; + } + + </style> +</head> + +<body> +<div class="panel-body" id="app" v-cloak> + <el-form :model="ruleForm" :rules="rules" class="form-horizontal" id="dataform" ref="ruleForm" label-width="120px"> + + <el-container> + <el-aside width="30%"> + <el-card class="box-card" :body-style="{ padding: '10px 10px'}"> + <div @click="uploadImg()" class="imageOne"> + <img v-if="imageUrlTitle" :src="imageUrlTitle" style="width: 100%;"> + <el-button type="primary" v-show="imageUrlTitle == ''" round><span style="font-size: 20px;">标题</span><span style="padding:5px;font-size: 15px;color: red;">(上传图片)</span></span></el-button> + </div> + <div @click="uploadImg()" class="imageTwo" > + <img v-if="imageUrlHead" :src="imageUrlHead" style="width: 100%;"> + <el-button type="primary" v-show="imageUrlHead == ''" round><span style="font-size: 20px;">头部</span><span style="padding:5px;font-size: 15px;color: red;">(上传图片)</span></span></el-button> + </div> + <el-row style="display:flex;"> + <el-col> + <div style="padding:5px;font-size: 15px;text-align: left;"><span>您已累计签到<span style="color: red;">3</span>天</span></div> + </el-col> + <el-col> + <div style="padding:5px;font-size: 15px;text-align: right;"><span>签到提醒</span></div> + </el-col> + </el-row> + <div @click="uploadImg()"> + <el-calendar :range="['2019-03-04', '2019-03-24']"></el-calendar> + <img v-if="imageUrlState" :src="imageUrlState" style="width: 100%;"> + <el-button type="primary" v-show="imageUrlState == ''" round><span style="font-size: 20px;">日历签到背景</span><span style="padding:5px;font-size: 15px;color: red;">(上传图片)</span></span></el-button> + </div> + <div @click="uploadImg()" class="imageThree" > + <el-button type="primary" v-show="imageUrlButton == ''" round><span style="font-size: 20px;">签到按钮</span><span style="padding:5px;font-size: 15px;color: red;">(上传图片)</span></span></el-button> + <img v-if="imageUrlButton" :src="imageUrlButton" style="width: 100%;"> + </div> + + <div style="text-align: center;padding: 5px;" @click="gzsmSet()"> + <div class="col-sm-8 col-sm-offset-2" style="text-align: left;"> + <span style="padding:5px;font-size: 30px;">-- 规则说明--</span> + </div> + <div class="el-col-sm-24" style="text-align: center;"> + <span style="padding:5px;font-size: 15px;color: red;">(点击,编辑规则内容,背景颜色,字体颜色、大小、透明度)</span> + </div> + <div class="col-sm-8 col-sm-offset-2" style="text-align: left;"> + <span style="padding:5px;font-size: 15px;">1、每天参与签到可获得积分</span> + </div> + <div class="col-sm-8 col-sm-offset-2" style="text-align: left;"> + <span style="padding:5px;font-size: 15px;">2、连续签到7天将获得赠送大礼包</span> + </div> + <div class="col-sm-8 col-sm-offset-2" style="text-align: left;"> + <span style="padding:5px;font-size: 15px;">3、每7天重新开始计算</span> + </div> + </div> + </el-card> + </el-aside> + + <el-main width="70%"> + <div> + <el-tabs v-model="activeName" > + <el-tab-pane label="活动设置" name="first"> + <div class="col-sm-8 col-sm-offset-1" style="padding: 10px"> + <el-form-item label="活动名称" prop="actName"> + <el-input v-model="ruleForm.actName" placeholder="请输入活动名称"></el-input> + </el-form-item> + </div> + <div class="col-sm-8 col-sm-offset-1" style="padding: 10px"> + <el-form-item label="活动编码" prop="actCode"> + <el-input v-model.number="ruleForm.actCode" placeholder="请输入最大开团数量"></el-input> + </el-form-item> + </div> + <div class="col-sm-4 col-sm-offset-1" style="padding: 10px"> + <el-form-item label="活动时间" prop="actTime"> + <div class="block"> + <el-date-picker + v-model="ruleForm.actTime" + type="daterange" + range-separator="至" + start-placeholder="开始日期" + end-placeholder="结束日期"> + </el-date-picker> + </div> + </el-form-item> + </div> + </el-tab-pane> + + <el-tab-pane label="奖品设置" name="second"> + <el-row style="display:flex;"> + <el-col :span="20"> + <el-tabs v-model="editableTabsValue" type="card" closable @tab-remove="removeTab"> + <el-tab-pane v-for="(item, index) in editableTabs" :key="item.name" :label="item.title" :name="item.name"> + <el-row v-show="editableTabsValue !== '1'"> + <el-form-item label="签到累计天数"> + <el-input v-model.number="item.content.cumulativeDay" oninput ="value=value.replace(/[^0-9.]/g,'')"></el-input> + </el-form-item> + </el-row> + <el-row> + <el-form-item label="奖项类型"> + <el-col> + <el-radio-group v-model="item.content.awardType" @change="jxlxChange"> + <el-radio :label="1">自定义奖品</el-radio> + <el-radio :label="2">积分</el-radio> + <el-radio :label="3">优惠券</el-radio> + <el-radio :label="4">商品</el-radio> + </el-radio-group> + </el-col> + </el-form-item > + </el-row> + <el-row > + <el-col> + <el-form-item label="奖项名称"> + <el-input v-model="item.content.awardName" placeholder="奖项名称"></el-input> + </el-form-item> + </el-col> + </el-row> + <el-row > + <el-col> + <el-form-item label="图片介绍"> + <el-upload + action="/admin/multipleUploadFile/doUpload" + :show-file-list="false" + :on-success="introduceImgSuccess"> + <img v-if="item.content.introduceImg" :src="item.content.introduceImg" style="max-width: 200px;"> + </el-upload> + </el-form-item> + </el-col> + </el-row> + + <div v-show="item.content.awardType !== 2"> + <el-row style="display:flex;"> + <el-col> + <el-form-item label="奖项库存"> + <el-input v-model="item.content.awardInventoryCnt" oninput ="value=value.replace(/[^0-9.]/g,'')"></el-input> + </el-form-item> + </el-col> + <el-col> + <el-form-item label="已派发"> + <el-input v-model="item.content.awardDistributeCnt"></el-input> + </el-form-item> + </el-col> + </el-row> + </div> + <div v-show="item.content.awardType === 1"> + <el-row > + <el-col> + <el-form-item label="文字介绍"> + <el-input type="textarea" v-model="item.content.introduceTip"></el-input> + </el-form-item> + </el-col> + </el-row> + <el-row > + <el-col> + <el-form-item label="兑奖方式"> + <el-col> + <el-radio-group v-model="item.content.awardWay" @change="awardWayChange"> + <el-radio :label="1">线下兑换</el-radio> + <el-radio :label="2">物流配送</el-radio> + <el-radio :label="3">客服兑换</el-radio> + </el-radio-group> + </el-col> + </el-form-item > + </el-col> + </el-row> + <el-row > + <el-col> + <el-form-item label="操作提示"> + <el-input v-model="item.content.operationTip"></el-input> + </el-form-item> + </el-col> + </el-row> + <div v-show="item.content.awardWay === 1"> + <el-row > + <el-col> + <el-form-item label="兑奖地址"> + <el-input v-model="item.content.prizeAddress"></el-input> + </el-form-item> + </el-col> + </el-row> + + </div> + <div v-show="item.content.awardWay === 3"> + <el-row > + <el-col> + <el-form-item label="客服微信"> + <el-upload + action="/admin/multipleUploadFile/doUpload" + :show-file-list="false" + :on-success="wechatImgSuccess"> + <img v-if="item.content.wechatImg" :src="item.content.wechatImg" style="max-width: 200px;"> + </el-upload> + </el-form-item> + </el-col> + </el-row> + </div> + <div v-show="item.content.awardWay !== 2"> + <el-row > + <el-col> + <el-form-item label="兑奖期限"> + <div class="block"> + <el-date-picker + v-model="item.content.prizeTime" + type="daterange" + range-separator="至" + start-placeholder="开始日期" + end-placeholder="结束日期"> + </el-date-picker> + </div> + </el-form-item> + </el-col> + </el-row> + </div> + </div> + <div v-show="item.content.awardType === 2"> + <el-row > + <el-col> + <el-form-item label="积分数量"> + <el-input v-model="item.content.scoreCnt" oninput ="value=value.replace(/[^0-9.]/g,'')"></el-input> + </el-form-item> + </el-col> + </el-row> + </div> + <div v-show="item.content.awardType === 3"> + <el-row style="display:flex;"> + <el-col> + <el-form-item label="优惠券名称"> + <el-input v-model="item.content.couponName"></el-input> + </el-form-item> + </el-col> + <el-col> + <el-form-item label="优惠券"> + <el-input v-model="item.content.couponId"></el-input> + </el-form-item> + </el-col> + <el-col> + <el-button type="primary"> + 选择优惠券 + </el-button> + </el-col> + </el-row> + </div> + <div v-show="item.content.awardType === 4"> + <el-row style="display:flex;"> + <el-col> + <el-form-item label="品项名称"> + <el-input v-model="item.content.goodsName"></el-input> + </el-form-item> + </el-col> + <el-col> + <el-form-item label="品项"> + <el-input v-model="item.content.goodsId"></el-input> + </el-form-item> + </el-col> + <el-col> + <el-button type="primary"> + 选择品项 + </el-button> + </el-col> + </el-row> + </div> + </el-tab-pane> + </el-tabs> + </el-col> + <el-col :span="4"> + <el-button type="primary" @click="addTab(editableTabsValue)"> + 新增奖品 + </el-button> + </el-col> + </el-row> + </el-tab-pane> + + <el-tab-pane label="背景图片上传" name="third"> + <div class="col-sm-8 col-sm-offset-1" style="padding: 10px"> + <el-form-item label="标题"> + <el-upload + action="/admin/multipleUploadFile/doUpload" + :show-file-list="false" + :on-success="imageUrlTitleSuccess"> + <img v-if="imageUrlTitle" :src="imageUrlTitle" style="max-width: 300px;"> + </el-upload> + </el-form-item> + </div> + <div class="col-sm-8 col-sm-offset-1" style="padding: 10px"> + <el-form-item label="头部"> + <el-upload + action="/admin/multipleUploadFile/doUpload" + :show-file-list="false" + :on-success="imageUrlHeadSuccess"> + <img v-if="imageUrlHead" :src="imageUrlHead" style="max-width: 300px;"> + </el-upload> + </el-form-item> + </div> + <div class="col-sm-8 col-sm-offset-1" style="padding: 10px"> + <el-form-item label="日历签到背景"> + <el-upload + action="/admin/multipleUploadFile/doUpload" + :show-file-list="false" + :on-success="imageUrlStateSuccess"> + <img v-if="imageUrlState" :src="imageUrlState" style="max-width: 300px;"> + </el-upload> + </el-form-item> + </div> + <div class="col-sm-8 col-sm-offset-1" style="padding: 10px"> + <el-form-item label="签到按钮"> + <el-upload + action="/admin/multipleUploadFile/doUpload" + :show-file-list="false" + :on-success="imageUrlButtonSuccess"> + <img v-if="imageUrlButton" :src="imageUrlButton" style="max-width: 300px;"> + <i v-else></i> + </el-upload> + </el-form-item> + </div> + </el-tab-pane> + + <el-tab-pane label="规则说明" name="fourth"> + <div class="col-sm-8 col-sm-offset-1"> + <el-form-item label="规则内容" prop="ruleExplain" style="padding: 10px"> + <el-input type="textarea" v-model="ruleForm.ruleExplain"></el-input> + </el-form-item> + <el-form-item label="背景颜色" style="padding: 10px"> + <el-color-picker v-model="backgroundColor"></el-color-picker> + </el-form-item> + <el-form-item label="字体颜色" style="padding: 10px"> + <el-color-picker v-model="typographyColor"></el-color-picker> + </el-form-item> + <el-form-item label="字体大小" style="padding: 10px"> + <el-input-number v-model="typographyNum" :min="10" :max="20" label="描述文字"></el-input-number> + </el-form-item> + <el-form-item label="字体透明度" style="padding: 10px"> + <el-input-number v-model="typographyLight" :min="1" :max="100" label="描述文字">%</el-input-number> + </el-form-item> + </div> + </el-tab-pane> + </el-tabs> + </div> + + <div class="form-group "> + <div class="col-sm-12 text-center"> + <el-button type="primary" @click="updateSignAwardSet('ruleForm')">保存</el-button> + <el-button type="danger" @click="cancelSubmit">关闭</el-button> + </div> + </div> + </el-main> + + </el-container> + + </el-form> +</div> +</body> +<script type="text/javascript" th:src="@{/js/plugin/jquery-2.1.4.min.js}"></script> +<script type="text/javascript" th:src="@{/js/plugin/jquery.query.js}"></script> +<script type="text/javascript" th:src="@{/plugin/bootstrap-3.3.5/js/bootstrap.min.js}"></script> +<script type="text/javascript" th:src="@{/js/systools/AjaxProxyVue.js}"></script> +<script type="text/javascript" th:src="@{/js/plugin/vue.js}"></script> +<script type="text/javascript" th:src="@{/plugin/element-ui/index.js}"></script> +<script type="text/javascript" th:src="@{/js/systools/MJsBase.js}"></script> +<script type="text/javascript" th:src="@{/plugin/layer/layer.js}"></script> +<script type="text/javascript" th:src="@{/plugin/moment.min.js}"></script> + +<script> + //获取传输的活动对象 + var actId = $.query.get("actId"); + const prize = { + //奖品基本信息 + id:'', + cumulativeDay:'', + awardType:1, + awardName:'', + introduceImg:'', + introduceTip:'', + awardInventoryCnt:'', + awardDistributeCnt:'', + awardWay:1, + operationTip:'', + prizeAddress:'', + prizeTime: '', + wechatImg:'', + scoreCnt:'', + couponId:'', + goodsId:'', + couponName:'', + goodsName:'', + } + var app = new Vue({ + el: '#app', + data: { + activeName: 'first', + formLabelWidth: '120px', + //标题图片 + imageUrlTitle: '', + imageUrlHead: '', + imageUrlButton: '', + imageUrlState: '', + + //字体颜色 + typographyColor: '#409EFF', + //背景颜色 + backgroundColor: '#409EFF', + //字体大小 + typographyNum: '5', + //字体透明度 + typographyLight: '50', + //奖品设置 + prize:JSON.parse(JSON.stringify(prize)), + editableTabsValue: '1', + editableTabs: [{ + title: '签到日常奖励', + name: '1', + content: JSON.parse(JSON.stringify(prize)) + }], + tabIndex: 1, + + ruleForm : { + //商品基本信息 + actName : '', + actCode : '', + actTime : '', + //规则说明 + ruleExplain : '', + }, + rules : { + //商品基本信息 + actName : [ + { required: true, message: '请输入活动名称', trigger: 'blur' } + ], + actCode : [ + { required: true, message: '请输入活动编码', trigger: 'blur' } + ], + actTime : [ + { required: true, message: '请选择日期', trigger: 'change' } + ], + ruleExplain : [ + { required: true, message: '请输入规则内容', trigger: 'blur' } + ] + }, + }, + created: function () { + this.loadInfo(); + }, + methods: { + //加载活动详情 + loadInfo() { + let _this = this; + _this.loadSign(); + }, + loadSign() { + let _this = this; + let data={ + actId:actId, + }; + AjaxProxy.requst({ + app: _this, + data:data, + url: basePath + '/admin/activitySignAwardSet/findSignForUpdate', + callback: function (data) { + _this.ruleForm.actName = data.mapInfo.addSignAwardSetVo.actName; + _this.ruleForm.actCode = data.mapInfo.addSignAwardSetVo.actCode; + let arrayObj = new Array(); + arrayObj.push(new Date(data.mapInfo.addSignAwardSetVo.beginTime)); + arrayObj.push(new Date(data.mapInfo.addSignAwardSetVo.endTime)); + _this.ruleForm.actTime = arrayObj; + //字体颜色 + _this.ruleForm.ruleExplain = data.mapInfo.addSignAwardSetVo.signSetBasicJsonDto.ruleExplain; + _this.typographyColor = data.mapInfo.addSignAwardSetVo.signSetBasicJsonDto.typographyColor; + _this.backgroundColor = data.mapInfo.addSignAwardSetVo.signSetBasicJsonDto.backgroundColor; + _this.typographyNum = data.mapInfo.addSignAwardSetVo.signSetBasicJsonDto.typographyNum; + _this.typographyLight = data.mapInfo.addSignAwardSetVo.signSetBasicJsonDto.typographyLight; + _this.imageUrlTitle = data.mapInfo.addSignAwardSetVo.signSetBasicJsonDto.imageUrlTitle; + _this.imageUrlHead = data.mapInfo.addSignAwardSetVo.signSetBasicJsonDto.imageUrlHead; + _this.imageUrlButton = data.mapInfo.addSignAwardSetVo.signSetBasicJsonDto.imageUrlButton; + _this.imageUrlState = data.mapInfo.addSignAwardSetVo.signSetBasicJsonDto.imageUrlState; + + for (let i = 0; i < data.mapInfo.addSignAwardSetVo.activitySignAwardSets.length; i++) { + _this.tabIndex = data.mapInfo.addSignAwardSetVo.activitySignAwardSets.length; + let prizeVo = data.mapInfo.addSignAwardSetVo.activitySignAwardSets[i]; + let arrayObjs = new Array(); + arrayObjs.push(new Date(prizeVo.prizeStartTime)); + arrayObjs.push(new Date(prizeVo.prizeEndTime)); + let content = JSON.parse(JSON.stringify(prize)); + content = { + id: prizeVo.id, + cumulativeDay: prizeVo.cumulativeDay, + awardType: parseInt(prizeVo.awardType), + awardName: prizeVo.awardName, + introduceImg: prizeVo.introduceImg, + introduceTip: prizeVo.introduceTip, + awardInventoryCnt: prizeVo.awardInventoryCnt, + awardDistributeCnt: prizeVo.awardDistributeCnt, + awardWay: parseInt(prizeVo.awardWay), + operationTip: prizeVo.operationTip, + prizeAddress: prizeVo.prizeAddress, + wechatImg: prizeVo.wechatImg, + scoreCnt: prizeVo.scoreCnt, + couponId: prizeVo.couponId, + goodsId: prizeVo.goodsId, + couponName: prizeVo.couponName, + goodsName: prizeVo.goodsName, + prizeTime: arrayObjs, + } + if(i === 0){ + _this.editableTabs[0].content = content; + }else{ + let newTabName = i+1 +''; + _this.editableTabs.push({ + title: "商品奖励"+"("+newTabName+")", + name: newTabName, + content: content, + }); + this.editableTabsValue = newTabName; + } + } + } + }); + }, + //保存 + updateSignAwardSet : function(formName) { + const _this = this; + let flag = false; + _this.$refs[formName].validate((valid) => { + if (!valid) { + _this.$notify({ + title: '提示', + message: '请完善签到活动信息', + type: 'warning' + }); + flag = true; + return; + } + }); + if (flag) { + return; + } + //活动基本信息 + let signSetBasicJsonDto = { + ruleExplain: _this.ruleForm.ruleExplain, + //字体颜色 + typographyColor: _this.typographyColor, + //背景颜色 + backgroundColor: _this.backgroundColor, + //字体大小 + typographyNum: _this.typographyNum, + //字体透明度 + typographyLight: _this.typographyNum, + //标题图片 + imageUrlTitle: _this.imageUrlTitle, + imageUrlHead: _this.imageUrlHead, + imageUrlButton: _this.imageUrlButton, + imageUrlState: _this.imageUrlState, + } + //奖品信息 + let activitySignAwardSets = []; + for (let i = 0; i < _this.editableTabs.length; i++) { + let prize = _this.editableTabs[i].content; + let activitySignAwardSet = { + id: prize.id, + cumulativeDay: prize.cumulativeDay, + awardType: prize.awardType, + awardName: prize.awardName, + introduceImg: prize.introduceImg, + introduceTip: prize.introduceTip, + awardInventoryCnt: prize.awardInventoryCnt, + awardDistributeCnt: prize.awardDistributeCnt, + awardWay: prize.awardWay, + operationTip: prize.operationTip, + prizeAddress: prize.prizeAddress, + wechatImg: prize.wechatImg, + scoreCnt: prize.scoreCnt, + couponId: prize.couponId, + goodsId: prize.goodsId, + couponName: prize.couponName, + goodsName: prize.goodsName, + prizeStartTime: prize.prizeTime[0], + prizeEndTime: prize.prizeTime[1], + } + activitySignAwardSets.push(activitySignAwardSet); + } + let resultData = { + actMainId: actId, + actName: _this.ruleForm.actName, + actCode: _this.ruleForm.actCode, + beginTime : _this.ruleForm.actTime[0], + endTime : _this.ruleForm.actTime[1], + signSetBasicJsonDto, + activitySignAwardSets, + } + AjaxProxy.requst({ + app: _this, + data: resultData, + url: basePath + '/admin/activitySignAwardSet/updateSignAwardSet', + callback: function (data) { + _this.$message({ + message: data.info, + type: 'success', + }); + } + }); + }, + //奖品设置 + addTab(targetName) { + let newTabName = ++this.tabIndex + ''; + this.editableTabs.push({ + title: "商品奖励"+"("+newTabName+")", + name: newTabName, + content: JSON.parse(JSON.stringify(prize)), + }); + this.editableTabsValue = newTabName; + }, + removeTab(targetName) { + let tabs = this.editableTabs; + let activeName = this.editableTabsValue; + if(activeName === '1' || targetName === '1'){ + this.$notify({ + title: '提示', + message: '【签到日常奖励】不能删除', + type: 'warning' + }); + }else{ + if (activeName === targetName) { + tabs.forEach((tab, index) => { + if (tab.name === targetName && tab.title !== "签到日常奖励") { + let nextTab = tabs[index + 1] || tabs[index - 1]; + if (nextTab) { + activeName = nextTab.name; + } + } + }); + } + this.editableTabsValue = activeName; + this.editableTabs = tabs.filter(tab => tab.name !== targetName); + this.tabIndex = this.editableTabs.length; + } + }, + //切换奖项类型,显示不同内容 + jxlxChange(val){ + let _this = this; + _this.isShow=val; + }, + //切换兑奖方式,显示不同内容 + awardWayChange(val){ + let _this = this; + _this.isShow=val; + }, + //跳转到图片上传 + uploadImg(){ + this.activeName = 'third'; + }, + //跳转到规则说明 + gzsmSet(){ + this.activeName = 'fourth'; + }, + //标题图片 + imageUrlTitleSuccess(res, file) { + this.imageUrlTitle = res.path; + }, + imageUrlHeadSuccess(res, file) { + this.imageUrlHead = res.path; + }, + imageUrlButtonSuccess(res, file) { + this.imageUrlButton = res.path; + }, + imageUrlStateSuccess(res, file) { + this.imageUrlState = res.path; + }, + //奖品设置的图片介绍 + introduceImgSuccess(res, file) { + this.editableTabs[this.tabIndex-1].content.introduceImg = res.path; + }, + //奖品设置的客服微信 + wechatImgSuccess(res, file) { + this.editableTabs[this.tabIndex-1].content.wechatImg = res.path; + }, + cancelSubmit() { + this.closeFrame(); + }, + closeFrame() { + parent.layer.close(parent.layer.getFrameIndex(window.name)); + }, + } + }) +</script> + +</body> +</html> \ No newline at end of file diff --git a/zq-erp/src/main/resources/templates/views/admin/activity/activity-sign.html b/zq-erp/src/main/resources/templates/views/admin/activity/activity-sign.html index cdf3c95..cb5a821 100644 --- a/zq-erp/src/main/resources/templates/views/admin/activity/activity-sign.html +++ b/zq-erp/src/main/resources/templates/views/admin/activity/activity-sign.html @@ -24,45 +24,52 @@ th:src="@{/plugin/beditor/lang/zh-cn/zh-cn.js}"></script> <style> - .el-aside { - background-color: #D3DCE6; - color: #333; - text-align: center; - } - .el-main { - background-color: #E9EEF3; - color: #333; - } - body > .el-container { - margin-bottom: 1000px; - } - .button { - padding: 5px; - text-align: center; - } + .paginationStyle{ + background: #ffffff; + padding: 10px 10px; + margin: 0px 0px 10px 0px; + text-align: right; + } - .imageOne { - display: block; - height: 50px; - padding: 5px 5px; - text-align: center; - } - .imageTwo { - display: block; - height: 50px; - padding: 5px 5px; - text-align: center; - } - .imageThree { - display: block; - height: 50px; - padding: 5px 5px; - text-align: center; - } + .el-aside { + background-color: #D3DCE6; + color: #333; + text-align: center; + } + .el-main { + background-color: #E9EEF3; + color: #333; + } + body > .el-container { + margin-bottom: 1000px; + } + .button { + padding: 5px; + text-align: center; + } - .box-card { - padding: 5px 5px; - } + .imageOne { + display: block; + height: 50px; + padding: 5px 5px; + text-align: center; + } + .imageTwo { + display: block; + height: 50px; + padding: 5px 5px; + text-align: center; + } + .imageThree { + display: block; + height: 50px; + padding: 5px 5px; + text-align: center; + } + + .box-card { + padding: 5px 5px; + } </style> </head> @@ -287,30 +294,161 @@ <div v-show="item.content.awardType === '3'"> <el-row style="display:flex;"> <el-col> + <el-form-item label="优惠券名称"> + <el-input v-model="item.content.couponName"></el-input> + </el-form-item> + </el-col> + <el-col> <el-form-item label="优惠券"> <el-input v-model="item.content.couponId"></el-input> </el-form-item> </el-col> <el-col> - <el-button type="primary"> + <el-button type="primary" @click="chooseCoupon(item.content.couponName)"> 选择优惠券 </el-button> </el-col> </el-row> + + <el-drawer + title="选择商城优惠券" + :visible.sync="drawerCoupon" + :direction="directionCoupon" + size="90%"> + <el-row style="margin-left: 50px;"> + <el-col :span="24"> + <el-row> + <el-form ref="formCoupon" :model="formCoupon" inline > + <el-form-item prop="yhjmc"> + <el-input v-model="formCoupon.yhjmc" placeholder="请输入优惠券名称"></el-input> + </el-form-item> + <el-button type="primary" @click="searchFormCoupon" >搜索</el-button> + <el-button @click="resetFormCoupon('formCoupon')">重置</el-button> + </el-form> + </el-row> + + <el-row class="table-style" > + <el-table ref="multipleTable" + :data="couponList.rows" + :height="tableHeightCoupon" + stripe:true + style="width: 100%"> + <el-table-column + prop="cname" + label="优惠券名称" + show-overflow-tooltip> + </el-table-column> + <el-table-column + prop="endTime" + label="截止日期" + show-overflow-tooltip> + </el-table-column> + <el-table-column + prop="address" + label="操作"> + <template slot-scope="scope"> + <el-button type="primary" + size="mini" + @click="chooseOneCoupon(scope.row)">选择 + </el-button> + </template> + </el-table-column> + </el-table> + </el-row> + <el-row class="paginationStyle" > + <el-pagination background + @size-change="changePageSizeCoupon" + @current-change="changeCurrentPageCoupon" + :current-page="couponList.currentPage" + :page-sizes="[10, 20, 30, 50]" + :page-size="couponList.pageSize" + layout="total, sizes, prev, pager, next, jumper" + :total="couponList.total"> + </el-pagination> + </el-row> + </el-col> + </el-row> + </el-drawer> </div> <div v-show="item.content.awardType === '4'"> <el-row style="display:flex;"> + <el-col> + <el-form-item label="品项名称"> + <el-input v-model="item.content.goodsName"></el-input> + </el-form-item> + </el-col> <el-col> <el-form-item label="品项"> <el-input v-model="item.content.goodsId"></el-input> </el-form-item> </el-col> <el-col> - <el-button type="primary"> + <el-button type="primary" @click="chooseGoods(item.content.goodsName)"> 选择品项 </el-button> </el-col> </el-row> + + <el-drawer + title="选择ERP产品" + :visible.sync="drawerGoods" + :direction="directionGoods" + size="90%"> + <el-row style="margin-left: 50px;"> + <el-col :span="24"> + <el-row> + <el-form ref="formGoods" :model="formGoods" inline > + <el-form-item prop="cpmc"> + <el-input v-model="formGoods.cpmc" placeholder="请输入产品名称"></el-input> + </el-form-item> + <el-button type="primary" @click="searchFormGoods" >搜索</el-button> + <el-button @click="resetFormGoods('formGoods')">重置</el-button> + </el-form> + </el-row> + + <el-row class="table-style" > + <el-table ref="multipleTable" + :data="goodsList.rows" + :height="tableHeightGoods" + stripe:true + style="width: 100%"> + <el-table-column + prop="cname" + label="优惠券名称" + show-overflow-tooltip> + </el-table-column> + <el-table-column + prop="endTime" + label="截止日期" + show-overflow-tooltip> + </el-table-column> + <el-table-column + prop="address" + label="操作"> + <template slot-scope="scope"> + <el-button type="primary" + size="mini" + @click="chooseOneGoods(scope.row)">选择 + </el-button> + </template> + </el-table-column> + </el-table> + </el-row> + <el-row class="paginationStyle" > + <el-pagination background + @size-change="changePageSizeGoods" + @current-change="changeCurrentPageGoods" + :current-page="goodsList.currentPage" + :page-sizes="[10, 20, 30, 50]" + :page-size="goodsList.pageSize" + layout="total, sizes, prev, pager, next, jumper" + :total="goodsList.total"> + </el-pagination> + </el-row> + </el-col> + </el-row> + </el-drawer> + </div> </el-tab-pane> </el-tabs> @@ -392,7 +530,7 @@ <div class="form-group "> <div class="col-sm-12 text-center"> <el-button type="primary" @click="dataSubmit('ruleForm')">保存</el-button> - <el-button type="danger" >关闭</el-button> + <el-button type="danger" @click="cancelSubmit">关闭</el-button> </div> </div> </el-main> @@ -413,6 +551,8 @@ <script type="text/javascript" th:src="@{/plugin/moment.min.js}"></script> <script> + //获取传输的活动对象 + var actId = $.query.get("actId"); const prize = { //奖品基本信息 cumulativeDay:'', @@ -423,19 +563,55 @@ awardInventoryCnt:'', awardDistributeCnt:'', awardWay:'1', - awardWayoperationTip:'', + operationTip:'', prizeAddress:'', prizeTime: '', wechatImg:'', scoreCnt:'', couponId:'', goodsId:'', + couponName:'', + goodsName:'', } var app = new Vue({ el: '#app', data: { activeName: 'first', formLabelWidth: '120px', + //优惠券搜索弹出 + drawerCoupon: false, + directionCoupon: 'rtl', + tableHeightCoupon: 500, + //--优惠券 + formCoupon:{ + yhjmc:'', + order:'', + sort:'' + }, + couponList:{ + rows:[], + total:0, + pageSize:10, + currentPage:1, + }, + + //品项搜索弹出 + drawerGoods: false, + directionGoods: 'rtl', + tableHeightGoods: 500, + //--品项 + formGoods:{ + cpmc:'', + order:'', + sort:'' + }, + goodsList:{ + rows:[], + total:0, + pageSize:10, + currentPage:1, + }, + //标题图片 imageUrlTitle: '', imageUrlHead: '', @@ -487,6 +663,123 @@ created: function () { }, methods: { + //选择优惠券 + chooseCoupon(val){ + let _this = this; + _this.drawerCoupon = true; + _this.formCoupon.yhjmc = val; + _this.loadCouponList(); + }, + //--优惠券 + loadCouponList() { + let _this = this; + let data=_this.getRequestParamCoupon(); + data.pageSize=_this.couponList.pageSize; + data.pageNum=_this.couponList.currentPage; + AjaxProxy.requst({ + app: _this, + data:data, + url: basePath + '/admin/activitySignAwardSet/selectCouponList', + callback: function (data) { + _this.couponList.rows = data.rows; + _this.couponList.total = data.total; + } + }); + }, + //查询参数 + getRequestParamCoupon(){ + let _this = this; + return { + yhjmc:_this.formCoupon.yhjmc, + order:_this.formCoupon.order, + sort:_this.formCoupon.sort, + } + }, + //查询 + searchFormCoupon:function(){ + this.couponList.currentPage=1; + this.loadCouponList(); + }, + //重置 + resetFormCoupon(formName) { + // this.formCoupon.yhjmc = '' + // console.log(this.$refs[formName].resetFields) + (this.$refs[formName])[0].resetFields(); + }, + changePageSizeCoupon(val) { + this.couponList.pageSize = val; + this.loadCouponList(); + }, + changeCurrentPageCoupon(val) { + this.couponList.currentPage = val; + this.loadCouponList(); + }, + //选择 + chooseOneCoupon(row) { + let _this = this; + _this.editableTabs[_this.tabIndex-1].content.couponId = row.id; + _this.editableTabs[_this.tabIndex-1].content.couponName = row.cname; + _this.drawerCoupon = false; + }, + + //选择品项 + chooseGoods(val){ + let _this = this; + _this.drawerGoods = true; + _this.formGoods.cpmc = val; + _this.loadGoodsList(); + }, + //--品项 + loadGoodsList() { + let _this = this; + let data=_this.getRequestParamGoods(); + data.pageSize=_this.goodsList.pageSize; + data.pageNum=_this.goodsList.currentPage; + AjaxProxy.requst({ + app: _this, + data:data, + url: basePath + '/admin/activitySignAwardSet/selectGoodsList', + callback: function (data) { + _this.goodsList.rows = data.rows; + _this.goodsList.total = data.total; + } + }); + }, + //查询参数 + getRequestParamGoods(){ + let _this = this; + return { + cpmc:_this.formCoupon.cpmc, + order:_this.formCoupon.order, + sort:_this.formCoupon.sort, + } + }, + //查询 + searchFormGoods:function(){ + this.goodsList.currentPage=1; + this.loadGoodsList(); + }, + //重置 + resetFormGoods(formName) { + (this.$refs[formName])[0].resetFields(); + }, + changePageSizeGoods(val) { + this.goodsList.pageSize = val; + this.loadGoodsList(); + }, + changeCurrentPageGoods(val) { + this.goodsList.currentPage = val; + this.loadGoodsList(); + }, + //选择 + chooseOneGoods(row) { + let _this = this; + _this.editableTabs[_this.tabIndex-1].content.goodsId = row.id; + _this.editableTabs[_this.tabIndex-1].content.goodsName = row.name; + _this.drawerCoupon = false; + }, + + //保存 dataSubmit : function(formName) { const _this = this; let flag = false; @@ -534,12 +827,14 @@ awardInventoryCnt: prize.awardInventoryCnt, awardDistributeCnt: prize.awardDistributeCnt, awardWay: prize.awardWay, - awardWayoperationTip: prize.awardWayoperationTip, + operationTip: prize.operationTip, prizeAddress: prize.prizeAddress, wechatImg: prize.wechatImg, scoreCnt: prize.scoreCnt, couponId: prize.couponId, goodsId: prize.goodsId, + couponName: prize.couponName, + goodsName: prize.goodsName, prizeStartTime: prize.prizeTime[0], prizeEndTime: prize.prizeTime[1], } @@ -640,6 +935,12 @@ wechatImgSuccess(res, file) { this.editableTabs[this.tabIndex-1].content.wechatImg = res.path; }, + cancelSubmit() { + this.closeFrame(); + }, + closeFrame() { + parent.layer.close(parent.layer.getFrameIndex(window.name)); + }, } }) </script> -- Gitblit v1.9.1