xiaoyong931011
2021-04-01 1c13ae0c6d500cf5ec3c3a5f7d4b6e7a617e36ba
20210401 签到活动1
27 files added
3 files modified
2418 ■■■■■ changed files
zq-erp/src/main/java/com/matrix/system/activity/action/ActivitySignAwardSetAction.java 113 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/activity/action/ActivitySignReceiveRecordAction.java 21 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/activity/action/ActivitySignRecordAction.java 22 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/activity/constant/ActivitySignConstant.java 5 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/activity/dao/ActivitySignAwardSetDao.java 14 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/activity/dao/ActivitySignReceiveRecordDao.java 14 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/activity/dao/ActivitySignRecordDao.java 14 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/activity/dto/ActivitiesListDto.java 22 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/activity/dto/AddSignAwardSetDto.java 28 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/activity/dto/BeCloseDto.java 17 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/activity/dto/BeReadyDto.java 17 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/activity/dto/DelRowDto.java 17 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/activity/dto/SignSetBasicJsonDto.java 33 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/activity/entity/ActivitySignAwardSet.java 161 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/activity/entity/ActivitySignReceiveRecord.java 87 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/activity/entity/ActivitySignRecord.java 66 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/activity/service/ActivitySignAwardSetService.java 151 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/activity/service/ActivitySignReceiveRecordService.java 22 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/activity/service/ActivitySignRecordService.java 22 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/activity/vo/ActivitiesListVo.java 107 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/shopXcx/bean/ShopActivities.java 27 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/shopXcx/dao/ShopActivitiesDao.java 11 ●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/config/db/increment/签到活动.sql 127 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/mybatis/mapper/activity/ActivitySignAwardSetDao.xml 63 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/mybatis/mapper/activity/ActivitySignReceiveRecordDao.xml 41 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/mybatis/mapper/activity/ActivitySignRecordDao.xml 35 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopActivitiesDao.xml 22 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/templates/views/admin/activity/activity-list.html 386 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/templates/views/admin/activity/activity-market.html 104 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/templates/views/admin/activity/activity-sign.html 649 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/activity/action/ActivitySignAwardSetAction.java
New file
@@ -0,0 +1,113 @@
package com.matrix.system.activity.action;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.matrix.core.pojo.AjaxResult;
import com.matrix.core.tools.StringUtils;
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.service.ActivitySignAwardSetService;
import com.matrix.system.activity.vo.ActivitiesListVo;
import com.matrix.system.hive.action.util.QueryUtil;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
/**
 * @description 奖品设置表
 * @author yourName
 * @date 2021-03-31 16:57
 */
@RestController
@RequestMapping(value = "admin/activitySignAwardSet")
public class ActivitySignAwardSetAction {
    @Autowired
    private ActivitySignAwardSetService activitySignAwardSetService;
    /**
     * 新增签到活动
     */
    @PostMapping(value = "/addSignAwardSet")
    public @ResponseBody
    AjaxResult addSignAwardSet(@RequestBody AddSignAwardSetDto addSignAwardSetDto) {
        return activitySignAwardSetService.activitySignAwardSetService(addSignAwardSetDto);
    }
    /**
     * 查询活动列表
     */
    @ApiOperation(value = "查询活动列表")
    @ApiResponses({
            @ApiResponse(code = 200, message = "OK",  response = ActivitiesListVo.class)
    })
    @PostMapping(value = "/findActivitiesList")
    public @ResponseBody
    AjaxResult findActivitiesList(@RequestBody ActivitiesListDto activitiesListDto) {
        //设置用户公司ID
        QueryUtil.setQueryLimitCom(activitiesListDto);
        //排序
        if(StringUtils.isBlank(activitiesListDto.getSort())){
            activitiesListDto.setSort("create_time");
            activitiesListDto.setOrder("desc");
        }
        Page<ActivitiesListVo> page = new Page(activitiesListDto.getPageNum(), activitiesListDto.getPageSize());
        IPage<ActivitiesListVo> rows = activitySignAwardSetService.findActivitiesList(page,activitiesListDto);
        AjaxResult result = AjaxResult.buildSuccessInstance(rows.getRecords(),rows.getTotal());
        return result;
    }
    /**
     *发布
     */
    @ApiOperation(value = "发布")
    @PostMapping(value = "/beReady")
    public @ResponseBody
    AjaxResult beReady(@RequestBody BeReadyDto beReadyDto) {
        return activitySignAwardSetService.beReady(beReadyDto);
    }
    /**
     *删除
     */
    @ApiOperation(value = "删除")
    @PostMapping(value = "/delRow")
    public @ResponseBody
    AjaxResult delRow(@RequestBody DelRowDto delRowDto) {
        return activitySignAwardSetService.delRow(delRowDto);
    }
    /**
     *关闭
     */
    @ApiOperation(value = "关闭")
    @PostMapping(value = "/beClose")
    public @ResponseBody
    AjaxResult beClose(@RequestBody BeCloseDto beCloseDto) {
        return activitySignAwardSetService.beClose(beCloseDto);
    }
}
zq-erp/src/main/java/com/matrix/system/activity/action/ActivitySignReceiveRecordAction.java
New file
@@ -0,0 +1,21 @@
package com.matrix.system.activity.action;
import com.matrix.system.activity.service.ActivitySignReceiveRecordService;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.beans.factory.annotation.Autowired;
/**
 * @description 领取记录表
 * @author yourName
 * @date 2021-03-31 16:57
 */
@RestController
@RequestMapping(value = "admin/activitySignReceiveRecord")
public class ActivitySignReceiveRecordAction {
    @Autowired
    private ActivitySignReceiveRecordService activitySignReceiveRecordService;
}
zq-erp/src/main/java/com/matrix/system/activity/action/ActivitySignRecordAction.java
New file
@@ -0,0 +1,22 @@
package com.matrix.system.activity.action;
import com.matrix.system.activity.service.ActivitySignRecordService;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.beans.factory.annotation.Autowired;
/**
 * @description 签到记录表
 * @author yourName
 * @date 2021-03-31 16:57
 */
@RestController
@RequestMapping(value = "admin/activitySignRecord")
public class ActivitySignRecordAction {
    @Autowired
    private ActivitySignRecordService activitySignRecordService;
}
zq-erp/src/main/java/com/matrix/system/activity/constant/ActivitySignConstant.java
New file
@@ -0,0 +1,5 @@
package com.matrix.system.activity.constant;
public class ActivitySignConstant {
}
zq-erp/src/main/java/com/matrix/system/activity/dao/ActivitySignAwardSetDao.java
New file
@@ -0,0 +1,14 @@
package com.matrix.system.activity.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.matrix.system.activity.entity.ActivitySignAwardSet;
/**
 * @description 奖品设置表
 * @author yourName
 * @date 2021-03-31 16:57
 */
public interface ActivitySignAwardSetDao extends BaseMapper<ActivitySignAwardSet>{
}
zq-erp/src/main/java/com/matrix/system/activity/dao/ActivitySignReceiveRecordDao.java
New file
@@ -0,0 +1,14 @@
package com.matrix.system.activity.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.matrix.system.activity.entity.ActivitySignReceiveRecord;
/**
 * @description 领
 * @author yourName
 * @date 2021-03-31 16:57
 */
public interface ActivitySignReceiveRecordDao extends BaseMapper<ActivitySignReceiveRecord>{
}
zq-erp/src/main/java/com/matrix/system/activity/dao/ActivitySignRecordDao.java
New file
@@ -0,0 +1,14 @@
package com.matrix.system.activity.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.matrix.system.activity.entity.ActivitySignRecord;
/**
 * @description 签到记录表
 * @author yourName
 * @date 2021-03-31 16:57
 */
public interface ActivitySignRecordDao extends BaseMapper<ActivitySignRecord>{
}
zq-erp/src/main/java/com/matrix/system/activity/dto/ActivitiesListDto.java
New file
@@ -0,0 +1,22 @@
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 = "ActivitiesListDto", description = "查询参数")
public class ActivitiesListDto extends BasePageQueryDto {
    @ApiModelProperty(value ="活动名称")
    private String hdmc;
    @ApiModelProperty(value ="活动状态")
    private Integer hdzt;
    @ApiModelProperty(hidden = true)
    private Long companyId;
}
zq-erp/src/main/java/com/matrix/system/activity/dto/AddSignAwardSetDto.java
New file
@@ -0,0 +1,28 @@
package com.matrix.system.activity.dto;
import com.matrix.system.activity.entity.ActivitySignAwardSet;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
import java.util.List;
@Data
@ApiModel(value = "AddSignAwardSetDto", description = "查询参数")
public class AddSignAwardSetDto {
    @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;
}
zq-erp/src/main/java/com/matrix/system/activity/dto/BeCloseDto.java
New file
@@ -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 = "BeCloseDto", description = "参数")
public class BeCloseDto {
    @ApiModelProperty(value ="活动主表ID")
    private Long actId;
    @ApiModelProperty(hidden = true)
    private Long companyId;
}
zq-erp/src/main/java/com/matrix/system/activity/dto/BeReadyDto.java
New file
@@ -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 = "BeReadyDto", description = "参数")
public class BeReadyDto {
    @ApiModelProperty(value ="活动主表ID")
    private Long actId;
    @ApiModelProperty(hidden = true)
    private Long companyId;
}
zq-erp/src/main/java/com/matrix/system/activity/dto/DelRowDto.java
New file
@@ -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 = "DelRowDto", description = "参数")
public class DelRowDto {
    @ApiModelProperty(value ="活动主表ID")
    private Long actId;
    @ApiModelProperty(hidden = true)
    private Long companyId;
}
zq-erp/src/main/java/com/matrix/system/activity/dto/SignSetBasicJsonDto.java
New file
@@ -0,0 +1,33 @@
package com.matrix.system.activity.dto;
import java.util.Date;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "SignSetBasicJsonDto", description = "查询参数")
public class SignSetBasicJsonDto {
    @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;
}
zq-erp/src/main/java/com/matrix/system/activity/entity/ActivitySignAwardSet.java
New file
@@ -0,0 +1,161 @@
package com.matrix.system.activity.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.matrix.core.anotations.Extend;
import com.matrix.system.score.entity.BaseEntity;
import lombok.Data;
import java.util.Date;
/**
 * @description 奖品设置表
 * @author yourName
 * @date 2021-03-31 16:57
 */
@Data
@TableName("activity_sign_award_set")
public class ActivitySignAwardSet  extends BaseEntity{
    @Extend
    private static final long serialVersionUID = 1L;
    /**
     * 奖项类型(1:自定义产品2:积分3:优惠券4:店铺商品)
     */
    private Integer  awardType;
    /**
     * 奖项规则(1:每日奖励(默认)2:累计签到天数)
     */
    private Integer  awardRule;
    /**
     * 签到累计天数
     */
    private Integer  cumulativeDay;
    /**
     * 奖项名称
     */
    private String  awardName;
    /**
     * 图片介绍
     */
    private String  introduceImg;
    /**
     * 文字介绍
     */
    private String  introduceTip;
    /**
     * 奖项库存数量
     */
    private Integer  awardInventoryCnt;
    /**
     * 已派发数量
     */
    private Integer  awardDistributeCnt;
    /**
     * 兑奖方式(1:线下兑换2:物流配送3:客服兑换)
     */
    private Integer  awardWay;
    /**
     * 操作提示
     */
    private String  operationTip;
    /**
     * 兑奖地址
     */
    private String  prizeAddress;
    /**
     * 兑奖期限开始日期
     */
    private Date  prizeStartTime;
    /**
     * 兑奖期限结束日期
     */
    private Date  prizeEndTime;
    /**
     * 客服微信
     */
    private String  wechatImg;
    /**
     * 积分数量
     */
    private Integer  scoreCnt;
    /**
     * 优惠券ID
     */
    private String  couponId;
    /**
     * 商品ID
     */
    private String  goodsId;
    /**
     * 活动主表ID
     */
    private Long  activityId;
    /**
     * 公司ID
     */
    private Long  companyId;
}
zq-erp/src/main/java/com/matrix/system/activity/entity/ActivitySignReceiveRecord.java
New file
@@ -0,0 +1,87 @@
package com.matrix.system.activity.entity;
import com.matrix.core.pojo.EntityDTO;
import com.matrix.system.score.entity.BaseEntity;
import com.matrix.core.anotations.Extend;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
/**
 * @description 领
 * @author yourName
 * @date 2021-03-31 16:57
 */
@Data
@TableName("activity_sign_receive_record")
public class ActivitySignReceiveRecord  extends BaseEntity{
    @Extend
    private static final long serialVersionUID = 1L;
    /**
     * openID
     */
    private String  openId;
    /**
     * 领取时间
     */
    private Date  receiveTime;
    /**
     * 备注
     */
    private String  remark;
    /**
     * 奖品设置表ID
     */
    private Long  awardId;
    /**
     * 是否已领取(1:待领取2:已领取)
     */
    private Integer  state;
    /**
     * 核销码
     */
    private String  writeOffCode;
    /**
     * 活动主表ID
     */
    private Long  activityId;
    /**
     * 公司ID
     */
    private Long  companyId;
}
zq-erp/src/main/java/com/matrix/system/activity/entity/ActivitySignRecord.java
New file
@@ -0,0 +1,66 @@
package com.matrix.system.activity.entity;
import com.matrix.core.pojo.EntityDTO;
import com.matrix.system.score.entity.BaseEntity;
import com.matrix.core.anotations.Extend;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
/**
 * @description 签到记录表
 * @author yourName
 * @date 2021-03-31 16:57
 */
@Data
@TableName("activity_sign_record")
public class ActivitySignRecord  extends BaseEntity{
    @Extend
    private static final long serialVersionUID = 1L;
    /**
     * openID
     */
    private String  openId;
    /**
     * 签到时间
     */
    private Date  signTime;
    /**
     * 累计签到天数
     */
    private Integer  cumulativeDay;
    /**
     * 活动主表ID
     */
    private Long  activityId;
    /**
     * 公司ID
     */
    private Long  companyId;
}
zq-erp/src/main/java/com/matrix/system/activity/service/ActivitySignAwardSetService.java
New file
@@ -0,0 +1,151 @@
package com.matrix.system.activity.service;
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;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.matrix.core.constance.MatrixConstance;
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.entity.ActivitySignAwardSet;
import com.matrix.system.activity.vo.ActivitiesListVo;
import com.matrix.system.common.bean.SysUsers;
import com.matrix.system.hive.action.util.QueryUtil;
import com.matrix.system.shopXcx.bean.ShopActivities;
import com.matrix.system.shopXcx.dao.ShopActivitiesDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.List;
/**
 * @description 奖品设置表
 * @author yourName
 * @date 2021-03-31 16:57
 */
@Service
public class ActivitySignAwardSetService  extends ServiceImpl<ActivitySignAwardSetDao, ActivitySignAwardSet>{
    @Autowired
    private ShopActivitiesDao shopActivitiesDao;
    @Autowired
    private ActivitySignAwardSetDao activitySignAwardSetDao;
    @Transactional
    public AjaxResult activitySignAwardSetService(AddSignAwardSetDto addSignAwardSetDto) {
        //获取当前登录人员信息
        SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
        Long companyId = user.getCompanyId();
        //新增活动主表信息
        ShopActivities shopActivities = new ShopActivities();
        shopActivities.setActName(addSignAwardSetDto.getActName());
        shopActivities.setActCode(addSignAwardSetDto.getActCode());
        shopActivities.setIsStart(ShopActivities.ACTIVITIES_STATUS_CLOSE);
        shopActivities.setActType(ShopActivities.ACTIVITIES_TYPE_SIGN);
        shopActivities.setActStatus(ShopActivities.ACTSTATUS_STATUS_RELEASE);
        shopActivities.setActBeginTime(addSignAwardSetDto.getBeginTime());
        shopActivities.setActEndTime(addSignAwardSetDto.getEndTime());
        shopActivities.setCompanyId(companyId);
        shopActivities.setCreateBy(user.getSuName());
        shopActivities.setUpdateBy(user.getSuName());
        //将基本信息转换成JSON字符串存储到活动主表的act_content字段
        SignSetBasicJsonDto signSetBasicJsonDto = addSignAwardSetDto.getSignSetBasicJsonDto();
        String json=JSON.toJSONString(signSetBasicJsonDto);
        shopActivities.setActContent(json);
        int insert = shopActivitiesDao.insert(shopActivities);
        if(insert > 0){
            //新增活动奖品信息
            List<ActivitySignAwardSet> activitySignAwardSets = addSignAwardSetDto.getActivitySignAwardSets();
            if(CollUtil.isNotEmpty(activitySignAwardSets)) {
                for(ActivitySignAwardSet activitySignAwardSet : activitySignAwardSets) {
                    activitySignAwardSet.setCreateBy(user.getSuName());
                    activitySignAwardSet.setCreateTime(new Date());
                    activitySignAwardSet.setUpdateTime(new Date());
                    activitySignAwardSet.setUpdateBy(user.getSuName());
                    activitySignAwardSet.setCompanyId(companyId);
                    activitySignAwardSet.setActivityId(shopActivities.getId());
                    activitySignAwardSetDao.insert(activitySignAwardSet);
                }
            }
        }else{
            return new AjaxResult(AjaxResult.STATUS_FAIL, "保存失败");
        }
        return new AjaxResult(AjaxResult.STATUS_SUCCESS, "保存成功");
    }
    public IPage<ActivitiesListVo> findActivitiesList(Page<ActivitiesListVo> page,
            ActivitiesListDto activitiesListDto) {
        return shopActivitiesDao.findActivitiesList(page,activitiesListDto);
    }
    @Transactional
    public AjaxResult beReady(BeReadyDto beReadyDto) {
        //设置用户公司ID
        QueryUtil.setQueryLimitCom(beReadyDto);
        Long actId = beReadyDto.getActId();
        ShopActivities shopActivity = shopActivitiesDao.selectById(actId);
        if(ObjectUtil.isEmpty(shopActivity)) {
            return AjaxResult.buildFailInstance("网络不通畅,请刷新页面");
        }
        /**
         * 未发布状态即使达到活动时间也不进入进行中状态
         */
        //未发布状态点击发布,状态变成未开始,且是开启状态
        shopActivity.setActStatus(ShopActivities.ACTSTATUS_STATUS_READY);
        shopActivity.setIsStart(ShopActivities.ACTIVITIES_STATUS_OPEN);
        shopActivitiesDao.updateByModel(shopActivity);
        return AjaxResult.buildSuccessInstance("操作成功");
    }
    public AjaxResult delRow(DelRowDto delRowDto) {
        //设置用户公司ID
        QueryUtil.setQueryLimitCom(delRowDto);
        Long actId = delRowDto.getActId();
        ShopActivities shopActivity = shopActivitiesDao.selectById(actId);
        if(ObjectUtil.isEmpty(shopActivity)) {
            return AjaxResult.buildFailInstance("网络不通畅,请刷新页面");
        }
        /**
         * 删除状态更新状态为已删除,只能查看活动统计
         */
        shopActivity.setActStatus(ShopActivities.ACTSTATUS_STATUS_DEL);
        shopActivity.setIsStart(ShopActivities.ACTIVITIES_STATUS_CLOSE);
        shopActivitiesDao.updateByModel(shopActivity);
        return AjaxResult.buildSuccessInstance("操作成功");
    }
    public AjaxResult beClose(BeCloseDto beCloseDto) {
        //设置用户公司ID
        QueryUtil.setQueryLimitCom(beCloseDto);
        Long actId = beCloseDto.getActId();
        ShopActivities shopActivity = shopActivitiesDao.selectById(actId);
        if(ObjectUtil.isEmpty(shopActivity)) {
            return AjaxResult.buildFailInstance("网络不通畅,请刷新页面");
        }
        /**
         * 关闭状态
         */
        shopActivity.setActStatus(ShopActivities.ACTSTATUS_STATUS_END);
        shopActivity.setIsStart(ShopActivities.ACTIVITIES_STATUS_CLOSE);
        shopActivitiesDao.updateByModel(shopActivity);
        return AjaxResult.buildSuccessInstance("操作成功");
    }
}
zq-erp/src/main/java/com/matrix/system/activity/service/ActivitySignReceiveRecordService.java
New file
@@ -0,0 +1,22 @@
package com.matrix.system.activity.service;
import org.springframework.stereotype.Service;
import com.matrix.system.activity.dao.ActivitySignReceiveRecordDao;
import com.matrix.system.activity.entity.ActivitySignReceiveRecord;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
/**
 * @description 领
 * @author yourName
 * @date 2021-03-31 16:57
 */
@Service
public class ActivitySignReceiveRecordService  extends ServiceImpl<ActivitySignReceiveRecordDao, ActivitySignReceiveRecord>{
}
zq-erp/src/main/java/com/matrix/system/activity/service/ActivitySignRecordService.java
New file
@@ -0,0 +1,22 @@
package com.matrix.system.activity.service;
import org.springframework.stereotype.Service;
import com.matrix.system.activity.dao.ActivitySignRecordDao;
import com.matrix.system.activity.entity.ActivitySignRecord;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
/**
 * @description 签到记录表
 * @author yourName
 * @date 2021-03-31 16:57
 */
@Service
public class ActivitySignRecordService  extends ServiceImpl<ActivitySignRecordDao, ActivitySignRecord>{
}
zq-erp/src/main/java/com/matrix/system/activity/vo/ActivitiesListVo.java
New file
@@ -0,0 +1,107 @@
package com.matrix.system.activity.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
@Data
public class ActivitiesListVo {
    /**
     * 活动类型 团购
     */
    public static final int ACTIVITIES_TYPE_GROUP = 1;
    /**
     * 活动类型 秒杀
     */
    public static final int ACTIVITIES_TYPE_SECKILL = 2;
    /**
     * 活动类型 沙龙
     */
    public static final int ACTIVITIES_TYPE_SALON = 3;
    /**
     * 活动类型 签到
     */
    public static final int ACTIVITIES_TYPE_SIGN = 4;
    /**
     * 活动状态 开启
     */
    public static final int ACTIVITIES_STATUS_OPEN = 1;
    /**
     * 活动状态 关闭
     */
    public static final int ACTIVITIES_STATUS_CLOSE = 2;
    /**
     * 主键
     */
    private Long  id;
    /**
     * 活动名称
     */
    @ApiModelProperty(value = "活动名称")
    private String  actName;
    /**
     * 活动编码
     */
    @ApiModelProperty(value = "活动编码")
    private String  actCode;
    /**
     * 活动类型
     */
    @ApiModelProperty(value = "活动类型")
    private Integer  actType;
    /**
     * 开始时间
     */
    @ApiModelProperty(value = "开始时间")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone="GMT+8")
    private Date actBeginTime;
    /**
     * 结束时间
     */
    @ApiModelProperty(value = "结束时间")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone="GMT+8")
    private Date  actEndTime;
    /**
     * 活动状态
     */
    @ApiModelProperty(value = "活动状态")
    private Integer  actStatus;
    //未发布
    public static final int ACTSTATUS_STATUS_RELEASE = 1;
    //未开始
    public static final int ACTSTATUS_STATUS_READY = 2;
    //进行中
    public static final int ACTSTATUS_STATUS_ING = 3;
    //已结束
    public static final int ACTSTATUS_STATUS_END = 4;
    @ApiModelProperty(value = "创建人")
    private String  createBy;
    /**
     * 活动说明
     */
    @ApiModelProperty(value = "活动说明")
    private String  actRemark;
    /**
     * 公司ID
     */
    @ApiModelProperty(hidden = true)
    private Long  companyId;
}
zq-erp/src/main/java/com/matrix/system/shopXcx/bean/ShopActivities.java
@@ -30,6 +30,10 @@
     * 活动类型 沙龙
     */
    public static final int ACTIVITIES_TYPE_SALON = 3;
    /**
     * 活动类型 签到
     */
    public static final int ACTIVITIES_TYPE_SIGN = 4;
    /**
     * 活动状态 开启
@@ -50,6 +54,10 @@
     * 活动名称
     */
    private String  actName;
    /**
     * 活动编码
     */
    private String  actCode;
            
    
    /**
@@ -76,6 +84,17 @@
     * 活动状态
     */
    private Integer  actStatus;
    //未发布
    public static final int ACTSTATUS_STATUS_RELEASE = 2;
    //未开始
    public static final int ACTSTATUS_STATUS_READY = 2;
    //进行中
    public static final int ACTSTATUS_STATUS_ING = 3;
    //已结束
    public static final int ACTSTATUS_STATUS_END = 4;
    //已删除
    public static final int ACTSTATUS_STATUS_DEL = 5;
            
    
    /**
@@ -285,4 +304,12 @@
    public void setSalonRecord(ShopActivitiesSalonRecord salonRecord) {
        this.salonRecord = salonRecord;
    }
    public String getActCode() {
        return actCode;
    }
    public void setActCode(String actCode) {
        this.actCode = actCode;
    }
}
zq-erp/src/main/java/com/matrix/system/shopXcx/dao/ShopActivitiesDao.java
@@ -1,11 +1,16 @@
package com.matrix.system.shopXcx.dao;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.matrix.core.pojo.PaginationVO;
import com.matrix.system.activity.dto.ActivitiesListDto;
import com.matrix.system.activity.vo.ActivitiesListVo;
import com.matrix.system.shopXcx.api.vo.SalonVO;
import com.matrix.system.shopXcx.bean.ShopActivities;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
import com.matrix.core.pojo.PaginationVO;
import com.matrix.system.shopXcx.bean.ShopActivities;
/**
 * @description 活动主表
@@ -49,4 +54,6 @@
    public ShopActivities selectSalonActivityById(@Param("id") Long id);
    public List<ShopActivities> selectSalonActivityByUser(@Param("record") SalonVO salonVO);
    public IPage<ActivitiesListVo> findActivitiesList(Page<ActivitiesListVo> page, @Param("record")ActivitiesListDto activitiesListDto);
}
zq-erp/src/main/resources/config/db/increment/签到活动.sql
New file
@@ -0,0 +1,127 @@
/**
 * 奖品设置表
 * @author yourName
 * @date 2021-03-31 16:57
 */
 CREATE TABLE activity_sign_award_set(
  create_by varchar(100) NOT NULL COMMENT '创建人',
  create_time datetime NOT NULL COMMENT '创建时间',
  update_by varchar(100) NOT NULL COMMENT '更新人',
  update_time datetime NOT NULL COMMENT '更新时间',
 id bigint(20)   NOT NULL  AUTO_INCREMENT  COMMENT '主键',
 award_type int(4)    COMMENT '奖项类型(1:自定义产品2:积分3:优惠券4:店铺商品)',
 award_rule int(4)    COMMENT '奖项规则(1:每日奖励(默认)2:累计签到天数)',
 cumulative_day int(4)    COMMENT '签到累计天数',
 award_name varchar(100)    COMMENT '奖项名称',
 introduce_img varchar(500)    COMMENT '图片介绍',
 introduce_tip varchar(500)    COMMENT '文字介绍',
 award_inventory_cnt int(4)    COMMENT '奖项库存数量',
 award_distribute_cnt int(4)    COMMENT '已派发数量',
 award_way int(4)    COMMENT '兑奖方式(1:线下兑换2:物流配送3:客服兑换)',
 operation_tip varchar(500)    COMMENT '操作提示',
 prize_address varchar(500)    COMMENT '兑奖地址',
 prize_start_time datetime    COMMENT '兑奖期限开始日期',
 prize_end_time datetime    COMMENT '兑奖期限结束日期',
 wechat_img varchar(500)    COMMENT '客服微信',
 score_cnt int(4)    COMMENT '积分数量',
 coupon_id varchar(100)    COMMENT '优惠券ID',
 goods_id varchar(100)    COMMENT '商品ID',
 activity_id bigint(20)    COMMENT '活动主表ID',
 company_id bigint(20)    COMMENT '公司ID',
PRIMARY KEY(id)
)ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='奖品设置表';
/**
 * 领
 * @author yourName
 * @date 2021-03-31 16:57
 */
 CREATE TABLE activity_sign_receive_record(
  create_by varchar(100) NOT NULL COMMENT '创建人',
  create_time datetime NOT NULL COMMENT '创建时间',
  update_by varchar(100) NOT NULL COMMENT '更新人',
  update_time datetime NOT NULL COMMENT '更新时间',
 id bigint(20)   NOT NULL  AUTO_INCREMENT  COMMENT '主键',
 open_id varchar(100)    COMMENT 'openID',
 receive_time datetime    COMMENT '领取时间',
 remark varchar(500)    COMMENT '备注',
 award_id bigint(20)    COMMENT '奖品设置表ID',
 state int(4)    COMMENT '是否已领取(1:待领取2:已领取)',
 write_off_code varchar(100)    COMMENT '核销码',
 activity_id bigint(20)    COMMENT '活动主表ID',
 company_id bigint(20)    COMMENT '公司ID',
PRIMARY KEY(id)
)ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='领取记录表';
/**
 * 签到记录表
 * @author yourName
 * @date 2021-03-31 16:57
 */
 CREATE TABLE activity_sign_record(
  create_by varchar(100) NOT NULL COMMENT '创建人',
  create_time datetime NOT NULL COMMENT '创建时间',
  update_by varchar(100) NOT NULL COMMENT '更新人',
  update_time datetime NOT NULL COMMENT '更新时间',
 id bigint(20)   NOT NULL  AUTO_INCREMENT  COMMENT '主键',
 open_id varchar(100)    COMMENT 'openID',
 sign_time datetime    COMMENT '签到时间',
 cumulative_day int(4)    COMMENT '累计签到天数',
 activity_id bigint(20)    COMMENT '活动主表ID',
 company_id bigint(20)    COMMENT '公司ID',
PRIMARY KEY(id)
)ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='签到记录表';
ALTER TABLE `shop_activities`
    ADD COLUMN `act_code`  varchar(200) NULL COMMENT '活动编码' AFTER `id`;
zq-erp/src/main/resources/mybatis/mapper/activity/ActivitySignAwardSetDao.xml
New file
@@ -0,0 +1,63 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.matrix.system.activity.dao.ActivitySignAwardSetDao">
    <!-- 定义ActivitySignAwardSet 的复杂关联map -->
    <resultMap type="com.matrix.system.activity.entity.ActivitySignAwardSet" id="ActivitySignAwardSetMap">
        <id property="id" column="id" />
        <result property="createBy" column="create_by" />
        <result property="createTime" column="create_time" />
        <result property="updateBy" column="update_by" />
        <result property="updateTime" column="update_time" />
            <result property="awardType" column="award_type" />
            <result property="awardRule" column="award_rule" />
            <result property="cumulativeDay" column="cumulative_day" />
            <result property="awardName" column="award_name" />
            <result property="introduceImg" column="introduce_img" />
            <result property="introduceTip" column="introduce_tip" />
            <result property="awardInventoryCnt" column="award_inventory_cnt" />
            <result property="awardDistributeCnt" column="award_distribute_cnt" />
            <result property="awardWay" column="award_way" />
            <result property="operationTip" column="operation_tip" />
            <result property="prizeAddress" column="prize_address" />
            <result property="prizeStartTime" column="prize_start_time" />
            <result property="prizeEndTime" column="prize_end_time" />
            <result property="wechatImg" column="wechat_img" />
            <result property="scoreCnt" column="score_cnt" />
            <result property="couponId" column="coupon_id" />
            <result property="goodsId" column="goods_id" />
            <result property="activityId" column="activity_id" />
            <result property="companyId" column="company_id" />
    </resultMap>
    <!-- 定义ActivitySignAwardSet 的简单map  ,本map不添加其他的关联属性 -->
    <resultMap type="com.matrix.system.activity.entity.ActivitySignAwardSet" id="ActivitySignAwardSetSimpleMap">
        <id property="id" column="id" />
        <result property="createBy" column="create_by" />
        <result property="createTime" column="create_time" />
        <result property="updateBy" column="update_by" />
        <result property="updateTime" column="update_time" />
            <result property="awardType" column="award_type" />
            <result property="awardRule" column="award_rule" />
            <result property="cumulativeDay" column="cumulative_day" />
            <result property="awardName" column="award_name" />
            <result property="introduceImg" column="introduce_img" />
            <result property="introduceTip" column="introduce_tip" />
            <result property="awardInventoryCnt" column="award_inventory_cnt" />
            <result property="awardDistributeCnt" column="award_distribute_cnt" />
            <result property="awardType" column="award_type" />
            <result property="operationTip" column="operation_tip" />
            <result property="prizeAddress" column="prize_address" />
            <result property="prizeStartTime" column="prize_start_time" />
            <result property="prizeEndTime" column="prize_end_time" />
            <result property="wechatImg" column="wechat_img" />
            <result property="scoreCnt" column="score_cnt" />
            <result property="couponId" column="coupon_id" />
            <result property="goodsId" column="goods_id" />
            <result property="activityId" column="activity_id" />
            <result property="companyId" column="company_id" />
    </resultMap>
</mapper>
zq-erp/src/main/resources/mybatis/mapper/activity/ActivitySignReceiveRecordDao.xml
New file
@@ -0,0 +1,41 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.matrix.system.activity.dao.ActivitySignReceiveRecordDao">
    <!-- 定义ActivitySignReceiveRecord 的复杂关联map -->
    <resultMap type="com.matrix.system.activity.entity.ActivitySignReceiveRecord" id="ActivitySignReceiveRecordMap">
        <id property="id" column="id" />
        <result property="createBy" column="create_by" />
        <result property="createTime" column="create_time" />
        <result property="updateBy" column="update_by" />
        <result property="updateTime" column="update_time" />
            <result property="openId" column="open_id" />
            <result property="receiveTime" column="receive_time" />
            <result property="remark" column="remark" />
            <result property="awardId" column="award_id" />
            <result property="state" column="state" />
            <result property="writeOffCode" column="write_off_code" />
            <result property="activityId" column="activity_id" />
            <result property="companyId" column="company_id" />
    </resultMap>
    <!-- 定义ActivitySignReceiveRecord 的简单map  ,本map不添加其他的关联属性 -->
    <resultMap type="com.matrix.system.activity.entity.ActivitySignReceiveRecord" id="ActivitySignReceiveRecordSimpleMap">
        <id property="id" column="id" />
        <result property="createBy" column="create_by" />
        <result property="createTime" column="create_time" />
        <result property="updateBy" column="update_by" />
        <result property="updateTime" column="update_time" />
            <result property="openId" column="open_id" />
            <result property="receiveTime" column="receive_time" />
            <result property="remark" column="remark" />
            <result property="awardId" column="award_id" />
            <result property="state" column="state" />
            <result property="writeOffCode" column="write_off_code" />
            <result property="activityId" column="activity_id" />
            <result property="companyId" column="company_id" />
    </resultMap>
</mapper>
zq-erp/src/main/resources/mybatis/mapper/activity/ActivitySignRecordDao.xml
New file
@@ -0,0 +1,35 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.matrix.system.activity.dao.ActivitySignRecordDao">
    <!-- 定义ActivitySignRecord 的复杂关联map -->
    <resultMap type="com.matrix.system.activity.entity.ActivitySignRecord" id="ActivitySignRecordMap">
        <id property="id" column="id" />
        <result property="createBy" column="create_by" />
        <result property="createTime" column="create_time" />
        <result property="updateBy" column="update_by" />
        <result property="updateTime" column="update_time" />
            <result property="openId" column="open_id" />
            <result property="signTime" column="sign_time" />
            <result property="cumulativeDay" column="cumulative_day" />
            <result property="activityId" column="activity_id" />
            <result property="companyId" column="company_id" />
    </resultMap>
    <!-- 定义ActivitySignRecord 的简单map  ,本map不添加其他的关联属性 -->
    <resultMap type="com.matrix.system.activity.entity.ActivitySignRecord" id="ActivitySignRecordSimpleMap">
        <id property="id" column="id" />
        <result property="createBy" column="create_by" />
        <result property="createTime" column="create_time" />
        <result property="updateBy" column="update_by" />
        <result property="updateTime" column="update_time" />
            <result property="openId" column="open_id" />
            <result property="signTime" column="sign_time" />
            <result property="cumulativeDay" column="cumulative_day" />
            <result property="activityId" column="activity_id" />
            <result property="companyId" column="company_id" />
    </resultMap>
</mapper>
zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopActivitiesDao.xml
@@ -7,6 +7,7 @@
    <resultMap type="com.matrix.system.shopXcx.bean.ShopActivities" id="ShopActivitiesMap">
        <id property="id" column="id" />
            <result property="actName" column="act_name" />
            <result property="actCode" column="act_code" />
            <result property="actType" column="act_type" />
            <result property="actBeginTime" column="act_begin_time" />
            <result property="actEndTime" column="act_end_time" />
@@ -47,6 +48,7 @@
    <resultMap type="com.matrix.system.shopXcx.bean.ShopActivities" id="ShopActivitiesSimpleMap">
        <id property="id" column="id" />
            <result property="actName" column="act_name" />
            <result property="actCode" column="act_code" />
            <result property="actType" column="act_type" />
            <result property="actBeginTime" column="act_begin_time" />
            <result property="actEndTime" column="act_end_time" />
@@ -386,4 +388,24 @@
            </if>
        </if>
    </select>
    <select id="findActivitiesList" resultType="com.matrix.system.activity.vo.ActivitiesListVo">
        SELECT
            *
        FROM
        shop_activities a
        <where>
            a.company_id=#{record.companyId}
            <if test="record.hdzt != null and record.hdzt != ''">
                and a.act_status=#{record.hdzt}
            </if>
            <if test="record.hdmc != null and record.hdmc != ''">
                and a.act_name like concat('%',#{record.hdmc},'%')
            </if>
        </where>
        <if test="record.sort !=null">
            order by
            a.${record.sort} ${record.order}
        </if>
    </select>
</mapper>
zq-erp/src/main/resources/templates/views/admin/activity/activity-list.html
New file
@@ -0,0 +1,386 @@
<!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;
        }
        .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>
<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 prop="hdmc" >
                                <el-input v-model="form.hdmc" placeholder="活动名称"></el-input>
                            </el-form-item>
                            <el-form-item label="活动状态" prop="hdzt">
                                <el-select v-model="form.hdzt" placeholder="活动状态">
                                    <el-option
                                            v-for="item in hdztList"
                                            :key="item.value"
                                            :label="item.label"
                                            :value="item.value"
                                    >
                                    </el-option>
                                </el-select>
                            </el-form-item>
                            <el-button type="primary" @click="searchFormActivitys" >搜索</el-button>
                            <el-button @click="resetFormActivitys('form')">重置</el-button>
                        </el-form>
                    </el-col>
                </el-row>
                <el-row class="table-style" >
                    <el-table ref="multipleTable"
                              :data="activitysList.rows"
                              :height="height"
                              stripe:true
                              @sort-change="sortChange"
                              @selection-change="handleSelectionChange">
                        <el-table-column
                                type="selection">
                        </el-table-column>
                        <el-table-column
                                prop="actName"
                                label="活动名称"
                                show-overflow-tooltip>
                        </el-table-column>
                        <el-table-column
                                prop="actCode"
                                label="活动编号"
                                show-overflow-tooltip>
                        </el-table-column>
                        <el-table-column
                                label="活动类型">
                            <template slot-scope="scope">
                                <span v-if="scope.row.actType == 1">团购</span>
                                <span v-if="scope.row.actType == 2">秒杀</span>
                                <span v-if="scope.row.actType == 3">沙龙</span>
                                <span v-if="scope.row.actType == 4">每日签到</span>
                            </template>
                        </el-table-column>
                        <el-table-column
                                label="状态">
                            <template slot-scope="scope">
                                <span v-if="scope.row.actStatus == 1">未发布</span>
                                <span v-if="scope.row.actStatus == 2">未开始</span>
                                <span v-if="scope.row.actStatus == 3">进行中</span>
                                <span v-if="scope.row.actStatus == 4">已结束</span>
                                <span v-if="scope.row.actStatus == 5">已删除</span>
                            </template>
                        </el-table-column>
                        <el-table-column
                                prop="actBeginTime"
                                label="开始时间"
                                show-overflow-tooltip>
                        </el-table-column>
                        <el-table-column
                                prop="actEndTime"
                                label="结束时间"
                                show-overflow-tooltip>
                        </el-table-column>
                        <el-table-column
                                prop="createBy"
                                label="创建人"
                                show-overflow-tooltip>
                        </el-table-column>
                        <el-table-column
                                prop="actRemark"
                                label="备注"
                                show-overflow-tooltip>
                        </el-table-column>
                        <el-table-column label="操作" width="400">
                            <template slot-scope="scope">
                                <el-row style="display:flex;">
                                    <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="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="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>
                            </template>
                        </el-table-column>
                    </el-table>
                </el-row>
                <el-row class="paginationStyle"  >
                    <el-pagination background
                                   @size-change="changePageSizeActivitys"
                                   @current-change="changeCurrentPageActivitys"
                                   :current-page="activitysList.currentPage"
                                   :page-sizes="[10, 20, 30, 50]"
                                   :page-size="activitysList.pageSize"
                                   layout="total, sizes, prev, pager, next, jumper"
                                   :total="activitysList.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 app = new Vue({
        el: '#app',
        data: {
            height:'calc(100vh - 200px)',
            // 条件查询
            hdztList:[
                {value:'',label:'全部'},
                {value:1,label:'未发布'},
                {value:2,label:'未开始'},
                {value:3,label:'进行中'},
                {value:4,label:'已结束'},
                {value:5,label:'已删除'},
            ],
            form:{
                hdmc:'',
                hdzt:'',
                order:'',
                sort:''
            },
            //活动列表
            activitysList:{
                rows:[],
                total:0,
                pageSize:10,
                currentPage:1,
            },
        },
        created: function () {
            this.loadInfo();
        },
        mounted: function () {
        },
        methods: {
            //加载分类
            loadInfo() {
                let _this = this;
                _this.loadActivitysList();
            },
            //发布
            beReady(row){
                let _this = this;
                let actState = row.actStatus;
                if(actState !== 1){
                    this.$notify({
                        title: '提示',
                        message: '状态为【未发布】才能发布',
                        type: 'warning'
                    });
                }
                _this.$confirm('确认发布活动吗?', '发布', {
                    distinguishCancelAndClose: true,//设置关闭按钮和不通过按钮的区别
                    confirmButtonText: '确认',
                    cancelButtonText: '取消',
                    type: 'info'
                }).then(() => {
                    //通过
                    let id = row.id;
                    let obj = {
                        actId: id,
                    }
                    AjaxProxy.requst({
                        app: _this,
                        data:obj,
                        url: basePath + '/admin/activitySignAwardSet/beReady',
                        callback: function (data) {
                            _this.$message.success(data.info);
                            _this.loadActivitysList();
                        }
                    });
                }).catch(action => {
                    //不通过
                    if(action === 'cancel'){
                        console.log("cancel");
                    }else{
                        //关闭按钮
                        console.log("close");
                    }
                });
            },
            //关闭
            beClose(row){
                let _this = this;
                _this.$confirm('确认关闭活动吗?', '关闭', {
                    distinguishCancelAndClose: true,//设置关闭按钮和不通过按钮的区别
                    confirmButtonText: '确认',
                    cancelButtonText: '取消',
                    type: 'info'
                }).then(() => {
                    //通过
                    let id = row.id;
                    let obj = {
                        actId: id,
                    }
                    AjaxProxy.requst({
                        app: _this,
                        data:obj,
                        url: basePath + '/admin/activitySignAwardSet/beClose',
                        callback: function (data) {
                            _this.$message.success(data.info);
                            _this.loadActivitysList();
                        }
                    });
                }).catch(action => {
                    //不通过
                    if(action === 'cancel'){
                        console.log("cancel");
                    }else{
                        //关闭按钮
                        console.log("close");
                    }
                });
            },
            //删除
            delRow(row){
                let _this = this;
                _this.$confirm('确认删除活动吗?', '删除', {
                    distinguishCancelAndClose: true,//设置关闭按钮和不通过按钮的区别
                    confirmButtonText: '确认',
                    cancelButtonText: '取消',
                    type: 'warning'
                }).then(() => {
                    //通过
                    let id = row.id;
                    let obj = {
                        actId: id,
                    }
                    AjaxProxy.requst({
                        app: _this,
                        data:obj,
                        url: basePath + '/admin/activitySignAwardSet/delRow',
                        callback: function (data) {
                            _this.$message.success(data.info);
                            _this.loadActivitysList();
                        }
                    });
                }).catch(action => {
                    //不通过
                    if(action === 'cancel'){
                        console.log("cancel");
                    }else{
                        //关闭按钮
                        console.log("close");
                    }
                });
            },
            //--活动列表
            loadActivitysList() {
                let _this = this;
                let data=_this.getRequestParamActivitys();
                data.pageSize=_this.activitysList.pageSize;
                data.pageNum=_this.activitysList.currentPage;
                AjaxProxy.requst({
                    app: _this,
                    data:data,
                    url: basePath + '/admin/activitySignAwardSet/findActivitiesList',
                    callback: function (data) {
                        _this.activitysList.rows = data.rows;
                        _this.activitysList.total = data.total;
                    }
                });
            },//查询参数
            getRequestParamActivitys(){
                let _this = this;
                return   {
                    hdmc:_this.form.hdmc,
                    hdzt:_this.form.hdzt,
                    order:_this.form.order,
                    sort:_this.form.sort,
                }
            },
            //查询
            searchFormActivitys:function(){
                this.activitysList.currentPage=1;
                this.loadActivitysList();
            },
            //重置
            resetFormActivitys(formName) {
                this.$refs[formName].resetFields();
            },
            changePageSizeActivitys(val) {
                this.activitysList.pageSize = val;
                this.loadActivitysList();
            },
            changeCurrentPageActivitys(val) {
                this.activitysList.currentPage = val;
                this.loadActivitysList();
            },
            //排序
            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>
zq-erp/src/main/resources/templates/views/admin/activity/activity-market.html
New file
@@ -0,0 +1,104 @@
<!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>
        .button {
            padding: 0;
            float: right;
        }
        .image {
            width: 100%;
            display: block;
        }
        .clearfix:before,
        .clearfix:after {
            display: table;
            content: "";
        }
        .clearfix:after {
            clear: both
        }
        .box-card {
            padding: 5px 5px;
            margin-right: 40px;
        }
    </style>
</head>
<body>
<div class="panel-body" id="app" v-cloak>
    <el-row>
        <el-col :span="6">
            <el-card class="box-card" :body-style="{ padding: '10px 10px'}">
                <img src="https://shadow.elemecdn.com/app/element/hamburger.9cf7b091-55e9-11e9-a976-7f4d0b07eef6.png" class="image">
                <div style="padding: 5px;">
                    <span style="padding:5px;font-size: 30px;">每日签到</span>
                    <div class="bottom clearfix">
                        <el-button type="primary" class="button" @click="createSign()" round>马上创建</el-button>
                    </div>
                </div>
            </el-card>
        </el-col>
    </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 app = new Vue({
        el: '#app',
        data: {},
        created: function () {
        },
        methods: {
            //跳转到设置签到活动
            createSign(){
                layer.full(layer.open({
                    type: 2,
                    title: "签到管理",
                    maxmin: true,
                    area: [MUI.SIZE_L, '500px'],
                    content : [ basePath + '/admin/redirect/activity/activity-sign']
                }));
            },
        }
    })
</script>
</body>
</html>
zq-erp/src/main/resources/templates/views/admin/activity/activity-sign.html
New file
@@ -0,0 +1,649 @@
<!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="奖项名称">
                                                            {{item.content}}
                                                            <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.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.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="dataSubmit('ruleForm')">保存</el-button>
                        <el-button type="danger" >关闭</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>
    const prize = {
        //奖品基本信息
        cumulativeDay:'',
        awardType:'1',
        awardName:'',
        introduceImg:'',
        introduceTip:'',
        awardInventoryCnt:'',
        awardDistributeCnt:'',
        awardWay:'1',
        awardWayoperationTip:'',
        prizeAddress:'',
        prizeTime: '',
        wechatImg:'',
        scoreCnt:'',
        couponId:'',
        goodsId:'',
    }
    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 () {
        },
        methods: {
            dataSubmit : 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 = {
                        cumulativeDay: prize.cumulativeDay,
                        awardType: prize.awardType,
                        awardName: prize.awardName,
                        introduceImg: prize.introduceImg,
                        introduceTip: prize.introduceTip,
                        awardInventoryCnt: prize.awardInventoryCnt,
                        awardDistributeCnt: prize.awardDistributeCnt,
                        awardWay: prize.awardWay,
                        awardWayoperationTip: prize.awardWayoperationTip,
                        prizeAddress: prize.prizeAddress,
                        wechatImg: prize.wechatImg,
                        scoreCnt: prize.scoreCnt,
                        couponId: prize.couponId,
                        goodsId: prize.goodsId,
                        prizeStartTime: prize.prizeTime[0],
                        prizeEndTime: prize.prizeTime[1],
                    }
                    activitySignAwardSets.push(activitySignAwardSet);
                }
                let resultData = {
                    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/addSignAwardSet',
                    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;
                // this.prize.introduceImg = URL.createObjectURL(file.raw);
            },
            //奖品设置的客服微信
            wechatImgSuccess(res, file) {
                this.editableTabs[this.tabIndex-1].content.wechatImg = res.path;
            },
        }
    })
</script>
</body>
</html>