e店邦O2O平台项目

养修服务单项

养修服务单项查询列表

请添加图片描述

页面主要代码:

<script th:inline="javascript">
   var editFlag = '';
   var saleOnFlag = '';
   var saleOffFlag = '';

   var prefix = ctx + "/business/serviceItem";
   var carDatas = [[${
   @dict.getType('si_car_package')}]];
   var catalogDatas = [[${
   @dict.getType('si_service_catalog')}]];
   var auditDatas = [[${
   @dict.getType('si_audit_status')}]];
   var saleDatas = [[${
   @dict.getType('si_sale_status')}]];
   $(function() {
   
       var options = {
   
           url: prefix + "/query",
           createUrl: prefix + "/addPage",
           updateUrl: prefix + "/editPage?id={id}",
           removeUrl: prefix + "/remove",
           modalName: "服务单项",
           columns: [{
   
               checkbox: true
           },
         {
   
            field: 'id',
            title: '',
            visible: false
         },
           {
   
               field: 'name',
               title: '服务项名称',
           },
         {
   
            field: 'carPackage',
            title: '是否套餐',
            align: 'center',
            formatter: function(value, row, index) {
   
               console.log(value, carDatas);//索引:数据自典明细对象
               return $.table.selectDictLabel(carDatas, value);
            }
         },
         {
   
            field: 'info',
            title: '备注信息',
         },
         {
   
            field: 'auditStatus',
            title: '审核状态',
            align: 'center',
            formatter: function(value, row, index) {
   
               console.log(value, auditDatas);//索引:数据自典明细对象
               return $.table.selectDictLabel(auditDatas, value);
            }
         },
         {
   
            field: 'saleStatus',
            title: '上架状态',
            align: 'center',
            formatter: function(value, row, index) {
   
               console.log(value, saleDatas);//索引:数据自典明细对象
               return $.table.selectDictLabel(saleDatas, value);
            }
         },
           {
   
               title: '操作',
               align: 'center',
               formatter: function(value, row, index) {
   
                  //把全局变量赋值给局部变量,使用局部变量进行相关操作
                  var editFlagTemp = editFlag;
                  var saleOnFlagTemp = saleOnFlag;
               var saleOffFlagTemp = saleOffFlag;
                   var actions = [];
                   if(row.saleStatus == 1){
   
                      //如果是上架状态,是不能进行编辑的
                  editFlagTemp += " disabled";
               }else {
   
                      //如果是套餐,且处于审核状态中是不能进行编辑的
                      if(row.carPackage == 1 && row.auditStatus == 1){
   
                     editFlagTemp += " disabled";
                  }
               }
                   actions.push('<a class="btn btn-success btn-xs ' + editFlagTemp + '" href="javascript:void(0)" ' +
                     'οnclick="$.operate.edit(\'' + row.id + '\')"><i class="fa fa-edit"></i>编辑</a> ');
               //销售状态为上架的情况显示下架按钮
                   if(row.saleStatus == 1){
   
                  actions.push('<a class="btn btn-danger btn-xs ' + saleOffFlagTemp + '" href="javascript:void(0)" ' +
                        'οnclick="saleOffOp(\'' + row.id + '\')"><i class="fa fa-edit"></i>下架</a> ');
               }else{
   
                  //销售状态为下架的情况显示上架按钮,如果是套餐而且还没有审核通过还需要把按钮置为不可点击
                      if(row.carPackage == 1 && row.auditStatus != 2){
   
                     saleOnFlagTemp += " disabled";
                  }
                  actions.push('<a class="btn btn-info btn-xs' + saleOnFlagTemp + '" href="javascript:void(0)" ' +
                        'οnclick="saleOnOp(\'' + row.id + '\')"><i class="fa fa-edit"></i>上架</a> ');
               }
                  return actions.join('');
               }
           }]
       };
       // 用于初始化整个table列表
       $.table.init(options);
      $("#bootstrap-table").on("check.bs.table uncheck.bs.table check-all.bs.table uncheck-all.bs.table load-success.bs.table", function () {
   
         //下架才能进行编辑
         var rows = $.table.selectColumns("carPackage");
         //是套餐
         if(rows.length==1 && rows[0]==1){
   
            //且状态为初始化或者拒绝
            var auditStatus = $.table.selectColumns("auditStatus")[0];
            console.log(auditStatus==0);
            //审核状态是初始化或重新发起才将发起审核的按钮的disabled进行移除
            if(auditStatus==0 || auditStatus==3){
   
               $(".auditBtn").removeClass("disabled");
               return;
            }
         }
         $(".auditBtn").addClass("disabled");
      });
   });
</script>
/**
 * 服务单项
 */
@Setter
@Getter
public class ServiceItem {
   
    private static final long serialVersionUID = 1L;
    public static final Integer CARPACKAGE_NO = 0;//不是套餐
    public static final Integer CARPACKAGE_YES = 1;//是套餐
    public static final Integer AUDITSTATUS_INIT = 0;//初始化
    public static final Integer AUDITSTATUS_AUDITING = 1;//审核中
    public static final Integer AUDITSTATUS_APPROVED = 2;//审核通过
    public static final Integer AUDITSTATUS_REPLY = 3;//重新发起
    public static final Integer AUDITSTATUS_NO_REQUIRED = 4;//无需审核
    public static final Integer SALESTATUS_OFF = 0;//下架
    public static final Integer SALESTATUS_ON = 1;//上架

    private Long id;

    private String name;                //服务项名称

    private BigDecimal originalPrice;    //服务项原价

    private BigDecimal discountPrice;    //服务项折扣价

    private Integer carPackage;          //是否套餐【是/否】

    private String info;                 //备注信息

    private Date createTime;             //创建时间

    private Integer serviceCatalog;      //服务分类【维修/保养/其他】

    private Integer auditStatus = AUDITSTATUS_NO_REQUIRED;       //审核状态【初始化/审核中/审核通过/审核拒绝/无需审核】

    private Integer saleStatus = SALESTATUS_OFF;                 //上架状态【已上架/未上架】
}

业务需求分析:首先服务单项在录入之后默认的状态为未上架,而我们在服务结算单中只能查询到已上架的服务单项,服务单项分成两类 :

  • 单项服务 ----> 录入数据之后,可以直接对其进行上架
  • 套餐服务---->录入数据之后,不能直接上架,需要进行审核,审核通过之后才能进行上架

针对上架和下架按钮:

如果服务单项的销售状态为上架的情况==>按钮需显示下架按钮

如果服务单项的销售状态为下架的情况:

  • 非套餐 ===>直接显示上架按钮
  • 套餐 ====>需要审核通过才能上架,如果不是审核通过状态,可以看到上架按钮,但是按钮是不可点击的
//销售状态为上架的情况显示下架按钮
            if(row.saleStatus == 1){
   actions.push('<a class="btn btn-danger btn-xs ' + saleOffFlagTemp + '" href="javascript:void(0)" ' +
         'onclick="saleOffOp(\'' + row.id + '\')"><i class="fa fa-edit"></i>下架</a> ');
}else{
   //销售状态为下架的情况显示上架按钮,如果是套餐而且还没有审核通过还需要把按钮置为不可点击
               if(row.carPackage == 1 && row.auditStatus != 2){
      saleOnFlagTemp += " disabled";
   }
   actions.push('<a class="btn btn-info btn-xs' + saleOnFlagTemp + '" href="javascript:void(0)" ' +
         'onclick="saleOnOp(\'' + row.id + '\')"><i class="fa fa-edit"></i>上架</a> ');
}

针对编辑按钮:

已上架,不能直接进行编辑,需要下架之后才能进行编辑

未上架,但是是套餐且处于审核状态,这时候也是不能进行编辑的

if(row.saleStatus == 1){
   
               //如果是上架状态,是不能进行编辑的
   editFlagTemp += " disabled";
}else {
   
               //如果是套餐,且处于审核状态中是不能进行编辑的
               if(row.carPackage == 1 && row.auditStatus == 1){
   
      editFlagTemp += " disabled";
   }
}

发起审核按钮:
请添加图片描述
只有是套餐和审核状态是初始化或重新发起时才需要发起审核

$("#bootstrap-table").on("check.bs.table uncheck.bs.table check-all.bs.table uncheck-all.bs.table load-success.bs.table", function () {
   
   //下架才能进行编辑
   var rows = $.table.selectColumns("carPackage");
   //是套餐
   if(rows.length==1 && rows[0]==1){
   
      var auditStatus = $.table.selectColumns("auditStatus")[0];
      console.log(auditStatus==0);
      //审核状态是初始化或重新发起才将发起审核的按钮的disabled进行移除
      if(auditStatus==0 || auditStatus==3){
   
         $(".auditBtn").removeClass("disabled");
         return;
      }
   }
   $(".auditBtn").addClass("disabled");
});
养修服务单项添加请添加图片描述

提交表单,发起add请求

function submitHandler() {
   
   if ($.validate.form()) {
   
      $.operate.save(prefix + "/add", $('#form-serviceItem-add').serialize());
   }
}

在进行保存时 ,由于添加页面没有给时间、销售状态等值进行填写,需要手动进行赋值或给默认值将数据进行补齐

@Override
public void save(ServiceItem serviceItem) {
   
    //在进行添加操作时,先判断是不是套餐
    //是套餐需要进行审核,把状态设置为初始化
    if(ServiceItem.CARPACKAGE_YES.equals(serviceItem.getCarPackage())){
   
        serviceItem.setAuditStatus(ServiceItem.AUDITSTATUS_INIT);
    }else{
   
        //非套餐,把状态设置为默认值:无需审核
        serviceItem.setAuditStatus(ServiceItem.AUDITSTATUS_NO_REQUIRED);
    }
    //添加完成首先需要让该数据为下架状态
    //由于添加页面没有给时间、销售状态、审核状态等值进行填写,需要手动进行赋值或给默认值进行补齐
    serviceItem.setSaleStatus(ServiceItem.SALESTATUS_OFF);
    serviceItem.setCreateTime(new Date());
    serviceItemMapper.insert(serviceItem);
}
养修服务单项编辑

请添加图片描述
提交表单,发起edit请求

function submitHandler() {
   
   if ($.validate.form()) {
   
      $.operate.save(prefix + "/edit", $('#form-serviceItem-edit').serialize());
   }
}

当数据进行更新操作时,如果页面收集的数据只是部分数据,此时更新操作时需要考虑页面数据缺失问题

  1. 如果是上架状态,不允许修改的,抛出异常
  2. 套餐,如果是审核中,不能进行编辑,抛出异常
  3. 如果是下架状态,并且是套餐,且审核通过了,再重新进行编辑,需要把审核状态设为初始状态
@Override
public void update(ServiceItem serviceItem) {
   
    //当数据进行更新操作时,如果页面收集的数据只是部分数据,此时更新操作时需要考虑页面数据缺失问题
    //有3种解决方案
    //1.在sql中将不需要进行更新的字段进行删除(常用):SQL中需要注意,只更新需要修改的字段,不需要进行更新的字段删除即可
    //2.先查,在替换,最后再更新

    //如果是上架状态,不能进行修改
    ServiceItem st = this.get(serviceItem.getId());
    if(ServiceItem.SALESTATUS_ON.equals(st.getSaleStatus())){
   
        throw new BusinessException("该服务项在上架中,不允许修改");
    }
    //如果是套餐,且没有审核通过,不能进行修改
    if(ServiceItem.CARPACKAGE_YES.equals(st.getCarPackage())
       && ServiceItem.AUDITSTATUS_AUDITING.equals(st.getAuditStatus())){
   
        throw new BusinessException("审核中,不能进行修改");
    }
    //如果是下架状态,并且是套餐,且审核通过了,再重新进行编辑,需要把审核状态设为初始状态
    if(ServiceItem.CARPACKAGE_YES.equals(st.getCarPackage())
       && ServiceItem.AUDITSTATUS_APPROVED.equals(st.getAuditStatus())){
   
        st.setAuditStatus(ServiceItem.AUDITSTATUS_INIT);
    }else {
   
        //是什么审核状态就设置为什么审核状态
        serviceItem.setAuditStatus(st.getAuditStatus());
    }
    //把销售状态设置为下架
    serviceItem.setSaleStatus(ServiceItem.SALESTATUS_OFF);
	serviceItem.setCreateTime(serviceItem.getCreateTime());
    //3.通过动态sql实现
    serviceItemMapper.updateByPrimaryKey(serviceItem);
}
养修服务单项上架/下架

点击上架按钮,发送saleOn请求

function saleOnOp(id) {
   
   $.modal.confirm("确认需要上架此服务项吗?", function() {
   
      $.operate.submit(prefix + "/saleOn?id="+id, "post");
   });
}

当数据处于以下状态是不能进行上架的:

  1. 数据处于上架状态
  2. 如果是套餐,并且不是审核通过的状态,是不能上架的,抛出异常
@Override
public void saleOn(Long id) {
   
    ServiceItem serviceItem = this.get(id);
    //数据处于上架状态,再点击上架,抛出异常.
    if(ServiceItem.SALESTATUS_ON.equals(serviceItem.getSaleStatus())){
   
        throw new BusinessException("服务单项已经处于上架状态");
    }
    //如果是套餐,并且不是审核通过的状态,是不能上架的,抛出异常.
    if(ServiceItem.CARPACKAGE_YES.equals(serviceItem.getCarPackage()) &&
       !ServiceItem.AUDITSTATUS_APPROVED.equals(serviceItem.getAuditStatus())){
   
        throw new BusinessException("套餐审核通过才可以进行上架");
    }
    //非套餐,可以直接进行上架
    //通过id把状态修改为上架
    serviceItemMapper.changeSaleStatus(id,ServiceItem.SALESTATUS_ON);
}

点击下架按钮,发送saleOff请求

function saleOffOp(id){
   
   $.modal.confirm("确认需要下架此服务项吗?", function() {
   
      $.operate.submit(prefix + "/saleOff?id="+id, "post");
   });
}
@Override
public void saleOff(Long id) {
   
    //通过id把状态修改为下架
    serviceItemMapper.changeSaleStatus(id,ServiceItem.SALESTATUS_OFF);
}
养修预约记录列表查询

请添加图片描述
按钮显示要求:

当记录状态是预约中, 编辑,到店,取消,删除可用,结算单不可用

当记录状态是已到店, 编辑,到店,取消,删除不可用, 结算单可用,

当记录状态是用户取消,编辑,到店,取消,删除, 结算单不可用

当记录状态是结算单生成,编辑,到店,取消,删除不可用, 结算单可用

<script th:inline="javascript">
		var editFlag = [[${
   @permission.hasPermi('business:appointment:edit')}]];
		var arrivalFlag = [[${
   @permission.hasPermi('business:appointment:arrival')}]</
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值