8 files modified
	
		
		14 files added
	
	
 
	
	
	
	
	
	
	
	
 |  |  | 
 |  |  | import cc.mrbird.febs.common.entity.QueryRequest; | 
 |  |  | import cc.mrbird.febs.common.enumerates.DataDictionaryEnum; | 
 |  |  | import cc.mrbird.febs.common.utils.OssUtils; | 
 |  |  | import cc.mrbird.febs.mall.dto.AddMallGoodsDto; | 
 |  |  | import cc.mrbird.febs.mall.dto.MallGoodsUpdateDto; | 
 |  |  | import cc.mrbird.febs.mall.dto.RankAwardUpdateDto; | 
 |  |  | import cc.mrbird.febs.mall.dto.UpMallGoodsDto; | 
 |  |  | import cc.mrbird.febs.mall.dto.*; | 
 |  |  | import cc.mrbird.febs.mall.entity.DataDictionaryCustom; | 
 |  |  | import cc.mrbird.febs.mall.entity.MallCarriageRule; | 
 |  |  | import cc.mrbird.febs.mall.entity.MallGoods; | 
 |  |  | import cc.mrbird.febs.mall.entity.MallGoodsCategory; | 
 |  |  | import cc.mrbird.febs.mall.mapper.DataDictionaryCustomMapper; | 
 |  |  | 
 |  |  |         return adminMallGoodsService.deliveryHomeUpdate(adminHomeDeliverySettingVo); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 运费模板列表 | 
 |  |  |      */ | 
 |  |  |     @GetMapping("carriageRuleList") | 
 |  |  |     public FebsResponse carriageRuleList(MallCarriageRule mallCarriageRule, QueryRequest request) { | 
 |  |  |         Map<String, Object> data = getDataTable(adminMallGoodsService.getMallCarriageRuleListInPage(mallCarriageRule, request)); | 
 |  |  |         return new FebsResponse().success().data(data); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 运费模板列表-删除 | 
 |  |  |      */ | 
 |  |  |     @GetMapping("carriageRuleDel/{id}") | 
 |  |  |     @ControllerEndpoint(operation = "运费模板列表-删除", exceptionMessage = "操作失败") | 
 |  |  |     public FebsResponse carriageRuleDel(@NotNull(message = "{required}") @PathVariable Long id) { | 
 |  |  |         return adminMallGoodsService.carriageRuleDelById(id); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 运费模板列表-新增 | 
 |  |  |      */ | 
 |  |  |     @PostMapping("carriageRuleAdd") | 
 |  |  |     @ControllerEndpoint(operation = " 商品-新增", exceptionMessage = "操作失败") | 
 |  |  |     public FebsResponse carriageRuleAdd(@RequestBody @Valid AdminCarriageRuleAddDto adminCarriageRuleAddDto) { | 
 |  |  |         return adminMallGoodsService.carriageRuleAdd(adminCarriageRuleAddDto); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 运费模板列表-更新 | 
 |  |  |      */ | 
 |  |  |     @PostMapping("carriageRuleUpdate") | 
 |  |  |     @ControllerEndpoint(operation = "运费模板列表-更新", exceptionMessage = "操作失败") | 
 |  |  |     public FebsResponse carriageRuleUpdate(@RequestBody @Valid AdminCarriageRuleUpdateDto adminCarriageRuleUpdateDto) { | 
 |  |  |         return adminMallGoodsService.carriageRuleUpdate(adminCarriageRuleUpdateDto); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  | } | 
 
 |  |  | 
 |  |  |         model.addAttribute("homeDeliverySetting", adminHomeDeliverySettingVo); | 
 |  |  |         return FebsUtil.view("modules/goods/deliveryHomeUpdate"); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 运费模板列表 | 
 |  |  |      */ | 
 |  |  |     @GetMapping("carriageRuleList") | 
 |  |  |     @RequiresPermissions("carriageRuleList:view") | 
 |  |  |     public String carriageRuleList() { | 
 |  |  |         return FebsUtil.view("modules/goods/carriageRuleList"); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 运费模板-新增 | 
 |  |  |      */ | 
 |  |  |     @GetMapping("carriageRuleAdd") | 
 |  |  |     @RequiresPermissions("carriageRuleAdd:add") | 
 |  |  |     public String carriageRuleAdd() { | 
 |  |  |         return FebsUtil.view("modules/goods/carriageRuleAdd"); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 运费模板-编辑-详情 | 
 |  |  |      */ | 
 |  |  |     @GetMapping("carriageRuleUpdate/{id}") | 
 |  |  |     @RequiresPermissions("carriageRuleUpdate:update") | 
 |  |  |     public String carriageRuleUpdate(@PathVariable long id, Model model) { | 
 |  |  |         AdminMallCarriageRuleVo adminMallCarriageRuleVo = mallGoodsService.selectCarriageRuleByRuleId(id); | 
 |  |  |         model.addAttribute("carriageRule", adminMallCarriageRuleVo); | 
 |  |  |         return FebsUtil.view("modules/goods/carriageRuleUpdate"); | 
 |  |  |     } | 
 |  |  | } | 
 
| New file | 
 |  |  | 
 |  |  | package cc.mrbird.febs.mall.dto; | 
 |  |  |  | 
 |  |  | import io.swagger.annotations.ApiModel; | 
 |  |  | import lombok.Data; | 
 |  |  |  | 
 |  |  | import javax.validation.constraints.NotBlank; | 
 |  |  | import javax.validation.constraints.NotNull; | 
 |  |  | import java.math.BigDecimal; | 
 |  |  | import java.util.List; | 
 |  |  |  | 
 |  |  | @Data | 
 |  |  | @ApiModel(value = "AdminCarriageRuleAddDto", description = "运费模板参数类") | 
 |  |  | public class AdminCarriageRuleAddDto { | 
 |  |  |     //名称 | 
 |  |  |     @NotBlank(message = "标题不能为空") | 
 |  |  |     private String ruleName; | 
 |  |  |  | 
 |  |  |     @NotNull(message = "计价方式不能为空") | 
 |  |  |     private Integer valuationType; | 
 |  |  |     //基本数量 | 
 |  |  |     private BigDecimal basicCntDefault; | 
 |  |  |     //基本价格 | 
 |  |  |     private BigDecimal basicPriceDefault; | 
 |  |  |     //超出的部分的基数数量 | 
 |  |  |     private BigDecimal moreCntDefault; | 
 |  |  |     //超出的部分的基数的价格 | 
 |  |  |     private BigDecimal morePriceDefault; | 
 |  |  |  | 
 |  |  |     private List<AdminCarriageRuleAddInfoDto> adminCarriageRuleAddInfoDtos; | 
 |  |  | } | 
 
| New file | 
 |  |  | 
 |  |  | package cc.mrbird.febs.mall.dto; | 
 |  |  |  | 
 |  |  | import io.swagger.annotations.ApiModel; | 
 |  |  | import lombok.Data; | 
 |  |  |  | 
 |  |  | import java.math.BigDecimal; | 
 |  |  |  | 
 |  |  | @Data | 
 |  |  | @ApiModel(value = "AdminCarriageRuleAddInfoDto", description = "运费模板子表参数类") | 
 |  |  | public class AdminCarriageRuleAddInfoDto { | 
 |  |  |     //模板id | 
 |  |  |     private Long ruleId; | 
 |  |  |     //计价方式(1:按件算 2:按重量算) | 
 |  |  |     private Integer valuationType; | 
 |  |  |     //计价单位(件,KG) | 
 |  |  |     private String valuationUnit; | 
 |  |  |     //指定区域(没有指定区域,则为默认) | 
 |  |  |     private String areaAddress; | 
 |  |  |     //基本数量 | 
 |  |  |     private BigDecimal basicCnt; | 
 |  |  |     //基本价格 | 
 |  |  |     private BigDecimal basicPrice; | 
 |  |  |     //超出的部分的基数数量 | 
 |  |  |     private BigDecimal moreCnt; | 
 |  |  |     //超出的部分的基数的价格 | 
 |  |  |     private BigDecimal morePrice; | 
 |  |  | } | 
 
| New file | 
 |  |  | 
 |  |  | package cc.mrbird.febs.mall.dto; | 
 |  |  |  | 
 |  |  | import io.swagger.annotations.ApiModel; | 
 |  |  | import lombok.Data; | 
 |  |  |  | 
 |  |  | import javax.validation.constraints.NotBlank; | 
 |  |  | import javax.validation.constraints.NotNull; | 
 |  |  | import java.math.BigDecimal; | 
 |  |  | import java.util.List; | 
 |  |  |  | 
 |  |  | @Data | 
 |  |  | @ApiModel(value = "AdminCarriageRuleUpdateDto", description = "运费模板更新参数类") | 
 |  |  | public class AdminCarriageRuleUpdateDto { | 
 |  |  |  | 
 |  |  |     private Long id; | 
 |  |  |     //名称 | 
 |  |  |     @NotBlank(message = "标题不能为空") | 
 |  |  |     private String ruleName; | 
 |  |  |  | 
 |  |  |     @NotNull(message = "计价方式不能为空") | 
 |  |  |     private Integer valuationType; | 
 |  |  |     //基本数量 | 
 |  |  |     private BigDecimal basicCntDefault; | 
 |  |  |     //基本价格 | 
 |  |  |     private BigDecimal basicPriceDefault; | 
 |  |  |     //超出的部分的基数数量 | 
 |  |  |     private BigDecimal moreCntDefault; | 
 |  |  |     //超出的部分的基数的价格 | 
 |  |  |     private BigDecimal morePriceDefault; | 
 |  |  |  | 
 |  |  |     private List<AdminCarriageRuleAddInfoDto> adminCarriageRuleAddInfoDtos; | 
 |  |  |  | 
 |  |  | } | 
 
| New file | 
 |  |  | 
 |  |  | package cc.mrbird.febs.mall.entity; | 
 |  |  |  | 
 |  |  | import cc.mrbird.febs.common.entity.BaseEntity; | 
 |  |  | import com.baomidou.mybatisplus.annotation.TableName; | 
 |  |  | import lombok.Data; | 
 |  |  |  | 
 |  |  | /** | 
 |  |  |  * 运费模板表 | 
 |  |  |  */ | 
 |  |  | @Data | 
 |  |  | @TableName("mall_carriage_rule") | 
 |  |  | public class MallCarriageRule extends BaseEntity { | 
 |  |  |     //名称 | 
 |  |  |     private String name; | 
 |  |  |  | 
 |  |  | } | 
 
| New file | 
 |  |  | 
 |  |  | package cc.mrbird.febs.mall.entity; | 
 |  |  |  | 
 |  |  | import cc.mrbird.febs.common.entity.BaseEntity; | 
 |  |  | import com.baomidou.mybatisplus.annotation.TableName; | 
 |  |  | import lombok.Data; | 
 |  |  |  | 
 |  |  | import java.math.BigDecimal; | 
 |  |  |  | 
 |  |  | /** | 
 |  |  |  * 运费模板子表 | 
 |  |  |  */ | 
 |  |  | @Data | 
 |  |  | @TableName("mall_carriage_rule_info") | 
 |  |  | public class MallCarriageRuleInfo extends BaseEntity { | 
 |  |  |     //模板id | 
 |  |  |     private Long ruleId; | 
 |  |  |     //计价方式(1:按件算 2:按重量算) | 
 |  |  |     private Integer valuationType; | 
 |  |  |     //计价单位(件,KG) | 
 |  |  |     private String valuationUnit; | 
 |  |  |     //指定区域(没有指定区域,则为默认) | 
 |  |  |     private String areaAddress; | 
 |  |  |     //基本数量 | 
 |  |  |     private BigDecimal basicCnt; | 
 |  |  |     //基本价格 | 
 |  |  |     private BigDecimal basicPrice; | 
 |  |  |     //超出的部分的基数数量 | 
 |  |  |     private BigDecimal moreCnt; | 
 |  |  |     //超出的部分的基数的价格 | 
 |  |  |     private BigDecimal morePrice; | 
 |  |  | } | 
 
 |  |  | 
 |  |  |     private BigDecimal carriage; | 
 |  |  |  | 
 |  |  |     private String wxCodeImg; | 
 |  |  |     //运费方式  (1:固定运费 2:运费模板) | 
 |  |  |     private Integer carriageType; | 
 |  |  |     //运费金额 | 
 |  |  |     private BigDecimal carriageAmount; | 
 |  |  |     //运费模板ID | 
 |  |  |     private Long carriageRuleId; | 
 |  |  |  | 
 |  |  | } | 
 
| New file | 
 |  |  | 
 |  |  | package cc.mrbird.febs.mall.mapper; | 
 |  |  |  | 
 |  |  | import cc.mrbird.febs.mall.entity.MallCarriageRuleInfo; | 
 |  |  | import com.baomidou.mybatisplus.core.mapper.BaseMapper; | 
 |  |  | import org.apache.ibatis.annotations.Param; | 
 |  |  |  | 
 |  |  | import java.util.List; | 
 |  |  |  | 
 |  |  | public interface MallCarriageRuleInfoMapper extends BaseMapper<MallCarriageRuleInfo> { | 
 |  |  |  | 
 |  |  |     List<MallCarriageRuleInfo> selectMallCarriageRuleInfoByRuleIdAndAreaAddress(@Param("ruleId")long id, @Param("areaAddress")String areaAddress); | 
 |  |  |  | 
 |  |  | } | 
 
| New file | 
 |  |  | 
 |  |  | package cc.mrbird.febs.mall.mapper; | 
 |  |  |  | 
 |  |  | import cc.mrbird.febs.mall.entity.MallCarriageRule; | 
 |  |  | import com.baomidou.mybatisplus.core.mapper.BaseMapper; | 
 |  |  | import com.baomidou.mybatisplus.core.metadata.IPage; | 
 |  |  | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | 
 |  |  |  | 
 |  |  | public interface MallCarriageRuleMapper extends BaseMapper<MallCarriageRule> { | 
 |  |  |  | 
 |  |  |     IPage<MallCarriageRule> selectMallCarriageRuleListInPage(Page<MallCarriageRule> page, MallCarriageRule mallCarriageRule); | 
 |  |  | } | 
 
 |  |  | 
 |  |  |  | 
 |  |  |     List<MallGoodsListVo> selectMallGoodsListQueryNoPage(@Param("record")MallGoodsQueryDto queryDto); | 
 |  |  |  | 
 |  |  |     List<MallGoods> selectMallGoodsListQueryByRuleId(@Param("id")Long id); | 
 |  |  |  | 
 |  |  |     List<MallGoods> selectMallGoodsListQueryByRuleIdAndIsSale(@Param("id")Long id, @Param("isSale")Integer ishotStateYes); | 
 |  |  | } | 
 
 |  |  | 
 |  |  |  | 
 |  |  | import cc.mrbird.febs.common.entity.FebsResponse; | 
 |  |  | import cc.mrbird.febs.common.entity.QueryRequest; | 
 |  |  | import cc.mrbird.febs.mall.dto.AddMallGoodsDto; | 
 |  |  | import cc.mrbird.febs.mall.dto.MallGoodsUpdateDto; | 
 |  |  | import cc.mrbird.febs.mall.dto.UpMallGoodsDto; | 
 |  |  | import cc.mrbird.febs.mall.dto.*; | 
 |  |  | import cc.mrbird.febs.mall.entity.MallCarriageRule; | 
 |  |  | import cc.mrbird.febs.mall.entity.MallGoods; | 
 |  |  | import cc.mrbird.febs.mall.entity.MallGoodsCategory; | 
 |  |  | import cc.mrbird.febs.mall.vo.*; | 
 |  |  | 
 |  |  |     IPage<AdminHomeDeliverySettingVo> getDeliveryHomeListInPage(AdminHomeDeliverySettingVo adminHomeDeliverySettingVo, QueryRequest request); | 
 |  |  |  | 
 |  |  |     FebsResponse deliveryHomeUpdate(AdminHomeDeliverySettingVo adminHomeDeliverySettingVo); | 
 |  |  |  | 
 |  |  |     IPage<MallCarriageRule> getMallCarriageRuleListInPage(MallCarriageRule mallCarriageRule, QueryRequest request); | 
 |  |  |  | 
 |  |  |     FebsResponse carriageRuleDelById(Long id); | 
 |  |  |  | 
 |  |  |     FebsResponse carriageRuleAdd(AdminCarriageRuleAddDto adminCarriageRuleAddDto); | 
 |  |  |  | 
 |  |  |     AdminMallCarriageRuleVo selectCarriageRuleByRuleId(long id); | 
 |  |  |  | 
 |  |  |     FebsResponse carriageRuleUpdate(AdminCarriageRuleUpdateDto adminCarriageRuleUpdateDto); | 
 |  |  | } | 
 
 |  |  | 
 |  |  | import cn.hutool.core.util.ObjectUtil; | 
 |  |  | import cn.hutool.core.util.StrUtil; | 
 |  |  | import cn.hutool.json.JSONUtil; | 
 |  |  | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | 
 |  |  | import com.baomidou.mybatisplus.core.metadata.IPage; | 
 |  |  | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | 
 |  |  | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | 
 |  |  | 
 |  |  |     private final MallGoodsStyleMapper mallGoodsStyleMapper; | 
 |  |  |     private final MallGoodsImagesMapper mallGoodsImagesMapper; | 
 |  |  |     private final MallShoppingCartMapper mallShoppingCartMapper; | 
 |  |  |     private final MallCarriageRuleMapper mallCarriageRuleMapper; | 
 |  |  |     private final MallCarriageRuleInfoMapper mallCarriageRuleInfoMapper; | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public IPage<AdminMallGoodsVo> getCategoryListInPage(MallGoods mallGoods, QueryRequest request) { | 
 |  |  | 
 |  |  |         dataDictionaryCustomMapper.updateById(dataDictionaryCustom); | 
 |  |  |         return new FebsResponse().success(); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public IPage<MallCarriageRule> getMallCarriageRuleListInPage(MallCarriageRule mallCarriageRule, QueryRequest request) { | 
 |  |  |         Page<MallCarriageRule> page = new Page<>(request.getPageNum(), request.getPageSize()); | 
 |  |  |         IPage<MallCarriageRule> mallCarriageRules = mallCarriageRuleMapper.selectMallCarriageRuleListInPage(page, mallCarriageRule); | 
 |  |  |         return mallCarriageRules; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     @Transactional | 
 |  |  |     public FebsResponse carriageRuleDelById(Long id) { | 
 |  |  |         MallCarriageRule mallCarriageRule = mallCarriageRuleMapper.selectById(id); | 
 |  |  |         if(ObjectUtil.isEmpty(mallCarriageRule)){ | 
 |  |  |             return new FebsResponse().fail().message("操作失败"); | 
 |  |  |         } | 
 |  |  |         List<MallGoods> mallGoods = this.baseMapper.selectMallGoodsListQueryByRuleId(id); | 
 |  |  |         if(CollUtil.isNotEmpty(mallGoods)){ | 
 |  |  |             StringBuffer goodsNameBuffer = new StringBuffer(); | 
 |  |  |             for(MallGoods goods : mallGoods){ | 
 |  |  |                 goodsNameBuffer.append(goods.getGoodsName()); | 
 |  |  |                 goodsNameBuffer.append(","); | 
 |  |  |             } | 
 |  |  |             return new FebsResponse().fail().message(goodsNameBuffer+"正在使用当前模板,请先编辑商品信息"); | 
 |  |  |         } | 
 |  |  |         QueryWrapper<MallCarriageRuleInfo> objectQueryWrapper = new QueryWrapper<>(); | 
 |  |  |         objectQueryWrapper.eq("rule_id",id); | 
 |  |  |         mallCarriageRuleInfoMapper.delete(objectQueryWrapper); | 
 |  |  |  | 
 |  |  |         mallCarriageRuleMapper.deleteById(id); | 
 |  |  |         return new FebsResponse().success(); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     @Transactional | 
 |  |  |     public FebsResponse carriageRuleAdd(AdminCarriageRuleAddDto adminCarriageRuleAddDto) { | 
 |  |  |         String ruleName = adminCarriageRuleAddDto.getRuleName(); | 
 |  |  |         QueryWrapper<MallCarriageRule> objectQueryWrapper = new QueryWrapper<>(); | 
 |  |  |         objectQueryWrapper.eq("name",ruleName); | 
 |  |  |         List<MallCarriageRule> mallCarriageRules = mallCarriageRuleMapper.selectList(objectQueryWrapper); | 
 |  |  |         if(CollUtil.isNotEmpty(mallCarriageRules)){ | 
 |  |  |             return new FebsResponse().fail().message("标题不能重复"); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         MallCarriageRule mallCarriageRule = new MallCarriageRule(); | 
 |  |  |         mallCarriageRule.setName(ruleName); | 
 |  |  |         mallCarriageRuleMapper.insert(mallCarriageRule); | 
 |  |  |  | 
 |  |  |         Long ruleId = mallCarriageRule.getId(); | 
 |  |  |         /** | 
 |  |  |          * 生成默认的运费规则 | 
 |  |  |          */ | 
 |  |  |         MallCarriageRuleInfo mallCarriageRuleInfoDefault = new MallCarriageRuleInfo(); | 
 |  |  |         mallCarriageRuleInfoDefault.setRuleId(ruleId); | 
 |  |  |         //计价方式(1:按件算 2:按重量算) | 
 |  |  |         mallCarriageRuleInfoDefault.setValuationType(adminCarriageRuleAddDto.getValuationType()); | 
 |  |  |         mallCarriageRuleInfoDefault.setValuationUnit( | 
 |  |  |                 adminCarriageRuleAddDto.getValuationType() == 1?"件":"千克" | 
 |  |  |         ); | 
 |  |  |         mallCarriageRuleInfoDefault.setBasicCnt(adminCarriageRuleAddDto.getBasicCntDefault()); | 
 |  |  |         mallCarriageRuleInfoDefault.setBasicPrice(adminCarriageRuleAddDto.getBasicPriceDefault()); | 
 |  |  |         mallCarriageRuleInfoDefault.setMoreCnt(adminCarriageRuleAddDto.getMoreCntDefault()); | 
 |  |  |         mallCarriageRuleInfoDefault.setMorePrice(adminCarriageRuleAddDto.getMorePriceDefault()); | 
 |  |  |         mallCarriageRuleInfoMapper.insert(mallCarriageRuleInfoDefault); | 
 |  |  |  | 
 |  |  |         List<AdminCarriageRuleAddInfoDto> adminCarriageRuleAddInfoDtos = adminCarriageRuleAddDto.getAdminCarriageRuleAddInfoDtos(); | 
 |  |  |         if(CollUtil.isNotEmpty(adminCarriageRuleAddInfoDtos)){ | 
 |  |  |             for(AdminCarriageRuleAddInfoDto adminCarriageRuleAddInfoDto : adminCarriageRuleAddInfoDtos){ | 
 |  |  |                 MallCarriageRuleInfo mallCarriageRuleInfo = new MallCarriageRuleInfo(); | 
 |  |  |                 mallCarriageRuleInfo.setRuleId(ruleId); | 
 |  |  |                 mallCarriageRuleInfo.setAreaAddress(adminCarriageRuleAddInfoDto.getAreaAddress()); | 
 |  |  |                 //计价方式(1:按件算 2:按重量算) | 
 |  |  |                 mallCarriageRuleInfo.setValuationType(adminCarriageRuleAddDto.getValuationType()); | 
 |  |  |                 mallCarriageRuleInfo.setValuationUnit( | 
 |  |  |                         adminCarriageRuleAddDto.getValuationType() == 1?"件":"千克" | 
 |  |  |                 ); | 
 |  |  |                 mallCarriageRuleInfo.setBasicCnt(adminCarriageRuleAddInfoDto.getBasicCnt()); | 
 |  |  |                 mallCarriageRuleInfo.setBasicPrice(adminCarriageRuleAddInfoDto.getBasicPrice()); | 
 |  |  |                 mallCarriageRuleInfo.setMoreCnt(adminCarriageRuleAddInfoDto.getMoreCnt()); | 
 |  |  |                 mallCarriageRuleInfo.setMorePrice(adminCarriageRuleAddInfoDto.getMorePrice()); | 
 |  |  |                 mallCarriageRuleInfoMapper.insert(mallCarriageRuleInfo); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         return new FebsResponse().success().message("操作成功"); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public AdminMallCarriageRuleVo selectCarriageRuleByRuleId(long id) { | 
 |  |  |         AdminMallCarriageRuleVo adminMallCarriageRuleVo = new AdminMallCarriageRuleVo(); | 
 |  |  |  | 
 |  |  |         MallCarriageRule mallCarriageRule = mallCarriageRuleMapper.selectById(id); | 
 |  |  |         adminMallCarriageRuleVo.setId(id); | 
 |  |  |         adminMallCarriageRuleVo.setRuleName(mallCarriageRule.getName()); | 
 |  |  |  | 
 |  |  |         List<MallCarriageRuleInfo> mallCarriageRuleInfos = mallCarriageRuleInfoMapper.selectMallCarriageRuleInfoByRuleIdAndAreaAddress(id,null); | 
 |  |  |         if(CollUtil.isNotEmpty(mallCarriageRuleInfos)){ | 
 |  |  |             List<AdminMallCarriageRuleInfoVo> adminCarriageRuleInfoVos = new ArrayList<>(); | 
 |  |  |             for(MallCarriageRuleInfo mallCarriageRuleInfo : mallCarriageRuleInfos){ | 
 |  |  |                 if(StrUtil.isNotEmpty(mallCarriageRuleInfo.getAreaAddress())){ | 
 |  |  |                     AdminMallCarriageRuleInfoVo adminMallCarriageRuleInfoVo = new AdminMallCarriageRuleInfoVo(); | 
 |  |  |                     adminMallCarriageRuleInfoVo.setId(mallCarriageRuleInfo.getId()); | 
 |  |  |                     adminMallCarriageRuleInfoVo.setAreaAddress(mallCarriageRuleInfo.getAreaAddress()); | 
 |  |  |                     adminMallCarriageRuleInfoVo.setBasicCnt(mallCarriageRuleInfo.getBasicCnt()); | 
 |  |  |                     adminMallCarriageRuleInfoVo.setBasicPrice(mallCarriageRuleInfo.getBasicPrice()); | 
 |  |  |                     adminMallCarriageRuleInfoVo.setMoreCnt(mallCarriageRuleInfo.getMoreCnt()); | 
 |  |  |                     adminMallCarriageRuleInfoVo.setMorePrice(mallCarriageRuleInfo.getMorePrice()); | 
 |  |  |                     adminCarriageRuleInfoVos.add(adminMallCarriageRuleInfoVo); | 
 |  |  |                 }else{ | 
 |  |  |                     //默认规则 | 
 |  |  |                     adminMallCarriageRuleVo.setBasicCntDefault(mallCarriageRuleInfo.getBasicCnt()); | 
 |  |  |                     adminMallCarriageRuleVo.setBasicPriceDefault(mallCarriageRuleInfo.getBasicPrice()); | 
 |  |  |                     adminMallCarriageRuleVo.setMoreCntDefault(mallCarriageRuleInfo.getMoreCnt()); | 
 |  |  |                     adminMallCarriageRuleVo.setMorePriceDefault(mallCarriageRuleInfo.getMorePrice()); | 
 |  |  |                     adminMallCarriageRuleVo.setValuationType(mallCarriageRuleInfo.getValuationType()); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |             adminMallCarriageRuleVo.setAdminCarriageRuleInfoVos(adminCarriageRuleInfoVos); | 
 |  |  |         } | 
 |  |  |         return adminMallCarriageRuleVo; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     @Transactional | 
 |  |  |     public FebsResponse carriageRuleUpdate(AdminCarriageRuleUpdateDto adminCarriageRuleUpdateDto) { | 
 |  |  |         Long id = adminCarriageRuleUpdateDto.getId(); | 
 |  |  |         MallCarriageRule mallCarriageRule = mallCarriageRuleMapper.selectById(id); | 
 |  |  |         if(ObjectUtil.isEmpty(mallCarriageRule)){ | 
 |  |  |             return new FebsResponse().fail().message("运费模板不存在"); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         List<MallGoods> mallGoods = this.baseMapper.selectMallGoodsListQueryByRuleIdAndIsSale(id,MallGoods.ISHOT_STATE_YES); | 
 |  |  |         if(CollUtil.isNotEmpty(mallGoods)){ | 
 |  |  |             StringBuffer goodsNameBuffer = new StringBuffer(); | 
 |  |  |             for(MallGoods goods : mallGoods){ | 
 |  |  |                 goodsNameBuffer.append(goods.getGoodsName()); | 
 |  |  |                 goodsNameBuffer.append(","); | 
 |  |  |             } | 
 |  |  |             return new FebsResponse().fail().message(goodsNameBuffer+"正在使用当前模板,请先下架商品"); | 
 |  |  |         } | 
 |  |  |         //删除现有的所有运费模板子表数据 | 
 |  |  |         List<MallCarriageRuleInfo> mallCarriageRuleInfos = mallCarriageRuleInfoMapper.selectMallCarriageRuleInfoByRuleIdAndAreaAddress(id, null); | 
 |  |  |         if(CollUtil.isNotEmpty(mallCarriageRuleInfos)){ | 
 |  |  |             for(MallCarriageRuleInfo mallCarriageRuleInfo : mallCarriageRuleInfos){ | 
 |  |  |                 mallCarriageRuleInfoMapper.deleteById(mallCarriageRuleInfo.getId()); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         /** | 
 |  |  |          * 生成运费模板子表数据 | 
 |  |  |          */ | 
 |  |  |         MallCarriageRuleInfo mallCarriageRuleInfoDefault = new MallCarriageRuleInfo(); | 
 |  |  |         mallCarriageRuleInfoDefault.setRuleId(id); | 
 |  |  |         //计价方式(1:按件算 2:按重量算) | 
 |  |  |         mallCarriageRuleInfoDefault.setValuationType(adminCarriageRuleUpdateDto.getValuationType()); | 
 |  |  |         mallCarriageRuleInfoDefault.setValuationUnit( | 
 |  |  |                 adminCarriageRuleUpdateDto.getValuationType() == 1?"件":"千克" | 
 |  |  |         ); | 
 |  |  |         mallCarriageRuleInfoDefault.setBasicCnt(adminCarriageRuleUpdateDto.getBasicCntDefault()); | 
 |  |  |         mallCarriageRuleInfoDefault.setBasicPrice(adminCarriageRuleUpdateDto.getBasicPriceDefault()); | 
 |  |  |         mallCarriageRuleInfoDefault.setMoreCnt(adminCarriageRuleUpdateDto.getMoreCntDefault()); | 
 |  |  |         mallCarriageRuleInfoDefault.setMorePrice(adminCarriageRuleUpdateDto.getMorePriceDefault()); | 
 |  |  |         mallCarriageRuleInfoMapper.insert(mallCarriageRuleInfoDefault); | 
 |  |  |  | 
 |  |  |         List<AdminCarriageRuleAddInfoDto> adminCarriageRuleAddInfoDtos = adminCarriageRuleUpdateDto.getAdminCarriageRuleAddInfoDtos(); | 
 |  |  |         if(CollUtil.isNotEmpty(adminCarriageRuleAddInfoDtos)){ | 
 |  |  |             for(AdminCarriageRuleAddInfoDto adminCarriageRuleAddInfoDto : adminCarriageRuleAddInfoDtos){ | 
 |  |  |                 MallCarriageRuleInfo mallCarriageRuleInfo = new MallCarriageRuleInfo(); | 
 |  |  |                 mallCarriageRuleInfo.setRuleId(id); | 
 |  |  |                 mallCarriageRuleInfo.setAreaAddress(adminCarriageRuleAddInfoDto.getAreaAddress()); | 
 |  |  |                 //计价方式(1:按件算 2:按重量算) | 
 |  |  |                 mallCarriageRuleInfo.setValuationType(mallCarriageRuleInfoDefault.getValuationType()); | 
 |  |  |                 mallCarriageRuleInfo.setValuationUnit( | 
 |  |  |                         mallCarriageRuleInfoDefault.getValuationType() == 1?"件":"千克" | 
 |  |  |                 ); | 
 |  |  |                 mallCarriageRuleInfo.setBasicCnt(adminCarriageRuleAddInfoDto.getBasicCnt()); | 
 |  |  |                 mallCarriageRuleInfo.setBasicPrice(adminCarriageRuleAddInfoDto.getBasicPrice()); | 
 |  |  |                 mallCarriageRuleInfo.setMoreCnt(adminCarriageRuleAddInfoDto.getMoreCnt()); | 
 |  |  |                 mallCarriageRuleInfo.setMorePrice(adminCarriageRuleAddInfoDto.getMorePrice()); | 
 |  |  |                 mallCarriageRuleInfoMapper.insert(mallCarriageRuleInfo); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         return new FebsResponse().success().message("操作成功"); | 
 |  |  |     } | 
 |  |  | } | 
 
| New file | 
 |  |  | 
 |  |  | package cc.mrbird.febs.mall.vo; | 
 |  |  |  | 
 |  |  | import io.swagger.annotations.ApiModel; | 
 |  |  | import lombok.Data; | 
 |  |  |  | 
 |  |  | import java.math.BigDecimal; | 
 |  |  |  | 
 |  |  | @Data | 
 |  |  | @ApiModel(value = "AdminMallCarriageRuleInfoVo", description = "运费模板子表返回参数类") | 
 |  |  | public class AdminMallCarriageRuleInfoVo { | 
 |  |  |     private Long id; | 
 |  |  |     //指定区域(没有指定区域,则为默认) | 
 |  |  |     private String areaAddress; | 
 |  |  |     //基本数量 | 
 |  |  |     private BigDecimal basicCnt; | 
 |  |  |     //基本价格 | 
 |  |  |     private BigDecimal basicPrice; | 
 |  |  |     //超出的部分的基数数量 | 
 |  |  |     private BigDecimal moreCnt; | 
 |  |  |     //超出的部分的基数的价格 | 
 |  |  |     private BigDecimal morePrice; | 
 |  |  | } | 
 
| New file | 
 |  |  | 
 |  |  | package cc.mrbird.febs.mall.vo; | 
 |  |  |  | 
 |  |  | import io.swagger.annotations.ApiModel; | 
 |  |  | import lombok.Data; | 
 |  |  |  | 
 |  |  | import java.math.BigDecimal; | 
 |  |  | import java.util.List; | 
 |  |  |  | 
 |  |  | @Data | 
 |  |  | @ApiModel(value = "AdminMallCarriageRuleVo", description = "运费模板返回参数类") | 
 |  |  | public class AdminMallCarriageRuleVo { | 
 |  |  |  | 
 |  |  |     private Long id; | 
 |  |  |     //名称 | 
 |  |  |     private String ruleName; | 
 |  |  |  | 
 |  |  |     private Integer valuationType; | 
 |  |  |     //基本数量 | 
 |  |  |     private BigDecimal basicCntDefault; | 
 |  |  |     //基本价格 | 
 |  |  |     private BigDecimal basicPriceDefault; | 
 |  |  |     //超出的部分的基数数量 | 
 |  |  |     private BigDecimal moreCntDefault; | 
 |  |  |     //超出的部分的基数的价格 | 
 |  |  |     private BigDecimal morePriceDefault; | 
 |  |  |  | 
 |  |  |     private List<AdminMallCarriageRuleInfoVo> adminCarriageRuleInfoVos; | 
 |  |  |  | 
 |  |  | } | 
 
| New file | 
 |  |  | 
 |  |  | <?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="cc.mrbird.febs.mall.mapper.MallCarriageRuleInfoMapper"> | 
 |  |  |  | 
 |  |  | <!--    <select id="selectByMemberIdAndState" resultType="cc.mrbird.febs.mall.entity.MallAgentRecord">--> | 
 |  |  | <!--        select a.* from mall_agent_record a--> | 
 |  |  | <!--        where a.member_id = #{memberId}--> | 
 |  |  | <!--            and a.state = #{state}--> | 
 |  |  | <!--        limit 1--> | 
 |  |  | <!--    </select>--> | 
 |  |  |  | 
 |  |  |     <select id="selectMallCarriageRuleInfoByRuleIdAndAreaAddress" resultType="cc.mrbird.febs.mall.entity.MallCarriageRuleInfo"> | 
 |  |  |         SELECT | 
 |  |  |             a.* | 
 |  |  |         FROM mall_carriage_rule_info a | 
 |  |  |         <where> | 
 |  |  |             a.rule_id = #{ruleId} | 
 |  |  |             <if test="areaAddress != null and areaAddress != ''"> | 
 |  |  |                 and a.area_address like concat('%',  #{areaAddress},'%') | 
 |  |  |             </if> | 
 |  |  |         </where> | 
 |  |  |         GROUP BY a.id order by a.CREATED_TIME desc | 
 |  |  |     </select> | 
 |  |  |  | 
 |  |  | </mapper> | 
 
| New file | 
 |  |  | 
 |  |  | <?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="cc.mrbird.febs.mall.mapper.MallCarriageRuleMapper"> | 
 |  |  |  | 
 |  |  | <!--    <select id="selectByMemberIdAndState" resultType="cc.mrbird.febs.mall.entity.MallAgentRecord">--> | 
 |  |  | <!--        select a.* from mall_agent_record a--> | 
 |  |  | <!--        where a.member_id = #{memberId}--> | 
 |  |  | <!--            and a.state = #{state}--> | 
 |  |  | <!--        limit 1--> | 
 |  |  | <!--    </select>--> | 
 |  |  |  | 
 |  |  |     <select id="selectMallCarriageRuleListInPage" resultType="cc.mrbird.febs.mall.entity.MallCarriageRule"> | 
 |  |  |         SELECT | 
 |  |  |             a.* | 
 |  |  |         FROM mall_carriage_rule a | 
 |  |  |         GROUP BY a.id order by a.CREATED_TIME desc | 
 |  |  |     </select> | 
 |  |  |  | 
 |  |  | </mapper> | 
 
 |  |  | 
 |  |  |         </if> | 
 |  |  |     </select> | 
 |  |  |  | 
 |  |  |     <select id="selectMallGoodsListQueryByRuleId" resultType="cc.mrbird.febs.mall.entity.MallGoods"> | 
 |  |  |         select a.goods_name from mall_goods a where a.carriage_rule_id = #{id} | 
 |  |  |     </select> | 
 |  |  |  | 
 |  |  |     <select id="selectMallGoodsListQueryByRuleIdAndIsSale" resultType="cc.mrbird.febs.mall.entity.MallGoods"> | 
 |  |  |         select a.goods_name | 
 |  |  |         from mall_goods a | 
 |  |  |         where a.carriage_rule_id = #{id} | 
 |  |  |             and a.is_sale = #{isSale} | 
 |  |  |     </select> | 
 |  |  |  | 
 |  |  | </mapper> | 
 
| New file | 
 |  |  | 
 |  |  | <div class="layui-fluid layui-anim febs-anim" id="febs-carriage-rule-add" lay-title="运费模板新增"> | 
 |  |  |     <div class="layui-row febs-container"> | 
 |  |  |         <div class="layui-col-md12"> | 
 |  |  |             <div class="layui-fluid" id="carriage-rule-add"> | 
 |  |  |                 <form class="layui-form" action="" lay-filter="carriage-rule-add-form"> | 
 |  |  |                     <div class="layui-tab layui-tab-brief" lay-filter="docDemoTabBrief"> | 
 |  |  |                         <ul class="layui-tab-title"> | 
 |  |  |                             <li class="layui-this">运费模板</li> | 
 |  |  |                         </ul> | 
 |  |  |                         <div class="layui-tab-content"> | 
 |  |  |                             <div class="layui-tab-item layui-show"> | 
 |  |  |                                 <blockquote class="layui-elem-quote blue-border">基本信息</blockquote> | 
 |  |  |                                 <div class="layui-row layui-col-space10 layui-form-item"> | 
 |  |  |                                     <div class="layui-col-lg6"> | 
 |  |  |                                         <label class="layui-form-label febs-form-item-require">标题:</label> | 
 |  |  |                                         <div class="layui-input-block"> | 
 |  |  |                                             <input type="text" name="ruleName" lay-verify="required" placeholder="" autocomplete="off" class="layui-input"> | 
 |  |  |                                         </div> | 
 |  |  |                                     </div> | 
 |  |  |                                 </div> | 
 |  |  |  | 
 |  |  |                                 <div class="layui-form-item"> | 
 |  |  |                                     <label class="layui-form-label febs-form-item-require">计价方式:</label> | 
 |  |  |                                     <div class="layui-input-block"> | 
 |  |  |                                         <input type="radio" name="valuationType" value="1" title="按件算" checked /> | 
 |  |  |                                         <input type="radio" name="valuationType" value="2" title="按重量算" /> | 
 |  |  |                                     </div> | 
 |  |  |                                 </div> | 
 |  |  |  | 
 |  |  |                                 <blockquote class="layui-elem-quote blue-border">默认规则</blockquote> | 
 |  |  |                                 <div class="layui-form-item"> | 
 |  |  |                                     <label class="layui-form-label febs-form-item-require">默认运费:</label> | 
 |  |  |                                     <div class="layui-input-inline" style="width: 80px"> | 
 |  |  |                                         <input type="text" name="basicCntDefault" lay-verify="required" autocomplete="off" class="layui-input" > | 
 |  |  |                                     </div> | 
 |  |  |                                     <div class="layui-form-mid">件内,</div> | 
 |  |  |                                     <div class="layui-input-inline" style="width: 80px"> | 
 |  |  |                                         <input type="text" name="basicPriceDefault" lay-verify="required" autocomplete="off" class="layui-input" > | 
 |  |  |                                     </div> | 
 |  |  |                                     <div class="layui-form-mid">元,</div> | 
 |  |  |                                     <div class="layui-form-mid">每增加</div> | 
 |  |  |                                     <div class="layui-input-inline" style="width: 80px"> | 
 |  |  |                                         <input type="text" name="moreCntDefault" lay-verify="required" autocomplete="off" class="layui-input" > | 
 |  |  |                                     </div> | 
 |  |  |                                     <div class="layui-form-mid">件,增加运费</div> | 
 |  |  |                                     <div class="layui-input-inline" style="width: 80px"> | 
 |  |  |                                         <input type="text" name="morePriceDefault" lay-verify="required" autocomplete="off" class="layui-input" > | 
 |  |  |                                     </div> | 
 |  |  |                                     <div class="layui-form-mid">元。</div> | 
 |  |  |                                 </div> | 
 |  |  |                                 <div class="layui-form-item multi-rule-table"> | 
 |  |  |                                     <div class="layui-row layui-col-space10 layui-form-item"> | 
 |  |  |                                         <blockquote class="layui-elem-quote blue-border">为指定省份设置运费</blockquote> | 
 |  |  |  | 
 |  |  |                                         <div class="layui-col-lg6"> | 
 |  |  |                                             <label class="layui-form-label febs-form-item-require">指定省份:</label> | 
 |  |  |                                             <div class="layui-input-block"> | 
 |  |  |                                                 <div id="province-set"></div> | 
 |  |  |                                             </div> | 
 |  |  |                                         </div> | 
 |  |  |                                         <div class="layui-col-lg6"> | 
 |  |  |                                             <button type="button" class="layui-btn layui-btn-normal layui-btn" id="test3" >添加</button> | 
 |  |  |                                         </div> | 
 |  |  |                                     </div> | 
 |  |  |  | 
 |  |  |                                     <div class="layui-form-item"> | 
 |  |  |                                         <div class="layui-input-block"> | 
 |  |  |                                             <table id="multiRule" lay-filter="multiRule"></table> | 
 |  |  |                                         </div> | 
 |  |  |                                     </div> | 
 |  |  |                                 </div> | 
 |  |  |                             </div> | 
 |  |  |                         </div> | 
 |  |  |                     </div> | 
 |  |  |                     <div class="layui-form-item febs-hide"> | 
 |  |  |                         <button class="layui-btn" lay-submit="" lay-filter="carriage-rule-add-form-submit" id="submit">保存</button> | 
 |  |  |                     </div> | 
 |  |  |                 </form> | 
 |  |  |             </div> | 
 |  |  |         </div> | 
 |  |  |     </div> | 
 |  |  | </div> | 
 |  |  | <style> | 
 |  |  |     .blue-border { | 
 |  |  |         border-left-color: #2db7f5; | 
 |  |  |         font-size: 18px; | 
 |  |  |     } | 
 |  |  | </style> | 
 |  |  | <script type="text/html" id="toolbar"> | 
 |  |  |     <div class="layui-btn-container"> | 
 |  |  |         <button class="layui-btn layui-btn-danger layui-btn-sm" type="button" lay-event="delSku">删除</button> | 
 |  |  |     </div> | 
 |  |  | </script> | 
 |  |  | <!-- 表格操作栏 end --> | 
 |  |  | <script data-th-inline="javascript"> | 
 |  |  |     layui.use(['febs', 'form', 'formSelects', 'validate', 'treeSelect', 'eleTree','dropdown', 'laydate', 'layedit', 'upload', 'element', 'table', 'xmSelect'], function () { | 
 |  |  |         var $ = layui.jquery, | 
 |  |  |             febs = layui.febs, | 
 |  |  |             layer = layui.layer, | 
 |  |  |             table = layui.table, | 
 |  |  |             formSelects = layui.formSelects, | 
 |  |  |             treeSelect = layui.treeSelect, | 
 |  |  |             form = layui.form, | 
 |  |  |             laydate = layui.laydate, | 
 |  |  |             eleTree = layui.eleTree, | 
 |  |  |             $view = $('#carriage-rule-add'), | 
 |  |  |             layedit = layui.layedit, | 
 |  |  |             upload = layui.upload, | 
 |  |  |             validate = layui.validate, | 
 |  |  |             element = layui.element; | 
 |  |  |  | 
 |  |  |         form.render(); | 
 |  |  |  | 
 |  |  |         formSelects.render(); | 
 |  |  |  | 
 |  |  |         var provinceSet = xmSelect.render({ | 
 |  |  |             el: '#province-set', | 
 |  |  |             toolbar: { | 
 |  |  |                 show: true, | 
 |  |  |                 list: [ 'ALL', 'CLEAR', 'REVERSE' ] | 
 |  |  |             }, | 
 |  |  |             filterable: true, | 
 |  |  |             data: [ | 
 |  |  |                 {name: '北京市',value: 1,selected:false}, | 
 |  |  |                 {name: '天津市',value: 2,selected:false}, | 
 |  |  |                 {name: '河北省',value: 3,selected:false}, | 
 |  |  |                 {name: '山西省',value: 4,selected:false}, | 
 |  |  |                 {name: '辽宁省',value: 5,selected:false}, | 
 |  |  |  | 
 |  |  |                 {name: '吉林省',value: 6,selected:false}, | 
 |  |  |                 {name: '黑龙江省',value: 7,selected:false}, | 
 |  |  |                 {name: '上海市',value: 8,selected:false}, | 
 |  |  |                 {name: '江苏省',value: 9,selected:false}, | 
 |  |  |                 {name: '浙江省',value: 10,selected:false}, | 
 |  |  |  | 
 |  |  |                 {name: '安徽省',value: 11,selected:false}, | 
 |  |  |                 {name: '福建省',value: 12,selected:false}, | 
 |  |  |                 {name: '江西省',value: 13,selected:false}, | 
 |  |  |                 {name: '山东省',value: 14,selected:false}, | 
 |  |  |                 {name: '河南省',value: 15,selected:false}, | 
 |  |  |  | 
 |  |  |                 {name: '湖北省',value: 16,selected:false}, | 
 |  |  |                 {name: '湖南省',value: 17,selected:false}, | 
 |  |  |                 {name: '广东省',value: 18,selected:false}, | 
 |  |  |                 {name: '广西壮族自治区',value: 19,selected:false}, | 
 |  |  |                 {name: '海南省',value: 20,selected:false}, | 
 |  |  |  | 
 |  |  |                 {name: '重庆市',value: 21,selected:false}, | 
 |  |  |                 {name: '四川省',value: 22,selected:false}, | 
 |  |  |                 {name: '贵州省',value: 23,selected:false}, | 
 |  |  |                 {name: '云南省',value: 24,selected:false}, | 
 |  |  |                 {name: '西藏自治区',value: 25,selected:false}, | 
 |  |  |  | 
 |  |  |                 {name: '陕西省',value: 26,selected:false}, | 
 |  |  |                 {name: '甘肃省',value: 27,selected:false}, | 
 |  |  |                 {name: '青海省',value: 28,selected:false}, | 
 |  |  |                 {name: '宁夏回族自治区',value: 29,selected:false}, | 
 |  |  |                 {name: '内蒙古自治区',value: 30,selected:false}, | 
 |  |  |  | 
 |  |  |                 {name: '新疆维吾尔自治区',value: 31,selected:false}, | 
 |  |  |                 {name: '台湾省',value: 32,selected:false}, | 
 |  |  |                 {name: '香港特别行政区',value: 33,selected:false}, | 
 |  |  |                 {name: '澳门特别行政区',value: 34,selected:false}, | 
 |  |  |             ], | 
 |  |  |         }) | 
 |  |  |  | 
 |  |  |         $('#test3').on('click', function (){ | 
 |  |  |             let provinceChoice = provinceSet.getValue('name'); | 
 |  |  |             if(provinceChoice == null || provinceChoice == ""){ | 
 |  |  |                 febs.alert.warn('指定省份不能为空'); | 
 |  |  |                 return false; | 
 |  |  |             } | 
 |  |  |             let provinceChoiceStr = ""; | 
 |  |  |             console.log(provinceChoice); | 
 |  |  |             for (let i = 0; i < provinceChoice.length; i++) { | 
 |  |  |                 provinceChoiceStr = provinceChoiceStr + provinceChoice[i]+","; | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |             console.log(provinceChoiceStr); | 
 |  |  |             let data = {}; | 
 |  |  |             data.areaAddress = provinceChoiceStr; | 
 |  |  |             data.basicCnt = 1; | 
 |  |  |             data.basicPrice = 1; | 
 |  |  |             data.moreCnt = 1; | 
 |  |  |             data.morePrice = 1; | 
 |  |  |             addTableDate(data); | 
 |  |  |         }); | 
 |  |  |  | 
 |  |  |         var ruleData=[]; | 
 |  |  |         var tableIns = table.render({ | 
 |  |  |             elem: '#multiRule' | 
 |  |  |             ,limit:999 | 
 |  |  |             ,toolbar:"#toolbar" | 
 |  |  |             ,defaultToolbar:[] | 
 |  |  |             ,cols: [ | 
 |  |  |                 [ | 
 |  |  |                 ,{align: 'center', title: '请选择', colspan: 2} | 
 |  |  |                 ,{field:'areaAddress', title:'指定省份', width:400, rowspan: 2,align: 'center'} | 
 |  |  |                 ,{align: 'center', title: '规则( 2 件内,2 元,每 1 增加件,增加运费 1 元。)', colspan: 4} | 
 |  |  |                 ], | 
 |  |  |                 [ //表头 | 
 |  |  |                 {type: 'checkbox', rowspan: 2,align: 'center' } | 
 |  |  |                 ,{field: 'index', title: '序号', width:100, rowspan: 2,align: 'center'} | 
 |  |  |                 ,{field: 'basicCnt', title: '件内', width:200,edit:'text'} | 
 |  |  |                 ,{field: 'basicPrice', title: '运费', width:200,edit:'text'} | 
 |  |  |                 ,{field: 'moreCnt', title: '每增加', width:200,edit:'text'} | 
 |  |  |                 ,{field: 'morePrice', title: '增加运费', width:200,edit:'text'} | 
 |  |  |             ]] | 
 |  |  |             ,data: [] | 
 |  |  |         }); | 
 |  |  |  | 
 |  |  |         table.on('toolbar(multiRule)', function(obj){ | 
 |  |  |             var data = obj.data; | 
 |  |  |             var hasData = table.cache['multiRule']; | 
 |  |  |             var checkData = table.checkStatus('multiRule').data; | 
 |  |  |  | 
 |  |  |             if (checkData.length <= 0) { | 
 |  |  |                 febs.alert.warn('请选择删除数据'); | 
 |  |  |                 return; | 
 |  |  |             } | 
 |  |  |             if(obj.event === 'delSku'){ | 
 |  |  |                 for (let i = 0; i < checkData.length; i++) { | 
 |  |  |                     var delData = checkData[i]; | 
 |  |  |                     for (let j = 0; j < hasData.length; j++) { | 
 |  |  |                         if (hasData[j].index == delData.index) { | 
 |  |  |                             hasData.splice(j, 1); | 
 |  |  |                             break; | 
 |  |  |                         } | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  |                 for (let i = 0; i < hasData.length; i++) { | 
 |  |  |                     hasData[i].index = i + 1; | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  |                 ruleData=hasData; | 
 |  |  |                 reloadTable(hasData); | 
 |  |  |             } | 
 |  |  |         }); | 
 |  |  |  | 
 |  |  |         function addTableDate(data) { | 
 |  |  |             var hasData = table.cache['multiRule']; | 
 |  |  |  | 
 |  |  |             data.index = hasData.length + 1; | 
 |  |  |             ruleData.push(data); | 
 |  |  |  | 
 |  |  |             reloadTable(ruleData); | 
 |  |  |             return data.index; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         function reloadTable(data) { | 
 |  |  |             table.reload('multiRule', { | 
 |  |  |                 data : data | 
 |  |  |             }); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         table.on('edit(multiRule)', function(obj){ | 
 |  |  |             var value = obj.value //得到修改后的值 | 
 |  |  |                 ,data = obj.data //得到所在行所有键值 | 
 |  |  |                 ,field = obj.field; //得到字段 | 
 |  |  |  | 
 |  |  |             for (let i = 0; i < ruleData.length; i++) { | 
 |  |  |                 if (ruleData[i].index == data.index) { | 
 |  |  |                     ruleData[i] = data; | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         }); | 
 |  |  |  | 
 |  |  |         form.on('submit(carriage-rule-add-form-submit)', function (data) { | 
 |  |  |             data.field.adminCarriageRuleAddInfoDtos = ruleData; | 
 |  |  |             $.ajax({ | 
 |  |  |                 'url':ctx + 'admin/goods/carriageRuleAdd', | 
 |  |  |                 'type':'post', | 
 |  |  |                 'dataType':'json', | 
 |  |  |                 'headers' : {'Content-Type' : 'application/json;charset=utf-8'}, //接口json格式 | 
 |  |  |                 'traditional': true,//ajax传递数组必须添加属性 | 
 |  |  |                 'data':JSON.stringify(data.field), | 
 |  |  |                 'success':function (data) { | 
 |  |  |                     if(data.code==200){ | 
 |  |  |                         layer.closeAll(); | 
 |  |  |                         febs.alert.success(data.message); | 
 |  |  |                         $('#febs-carriage-rule').find('#reset').click(); | 
 |  |  |                     }else{ | 
 |  |  |                         febs.alert.warn(data.message); | 
 |  |  |                     } | 
 |  |  |                 }, | 
 |  |  |                 'error':function () { | 
 |  |  |                     febs.alert.warn('服务器繁忙'); | 
 |  |  |                 } | 
 |  |  |             }) | 
 |  |  |             return false; | 
 |  |  |         }); | 
 |  |  |     }); | 
 |  |  | </script> | 
 
| New file | 
 |  |  | 
 |  |  | <div class="layui-fluid layui-anim febs-anim" id="febs-carriage-rule" lay-title="运费模板管理"> | 
 |  |  |     <div class="layui-row febs-container"> | 
 |  |  |         <div class="layui-col-md12"> | 
 |  |  |             <div class="layui-card"> | 
 |  |  |                 <div class="layui-card-body febs-table-full"> | 
 |  |  |                     <form class="layui-form layui-table-form" lay-filter="user-table-form"> | 
 |  |  |                         <div class="layui-row"> | 
 |  |  |                             <div class="layui-col-md2 layui-col-sm12 layui-col-xs12 table-action-area"> | 
 |  |  |                                 <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-green-plain table-action" id="add"> | 
 |  |  |                                     新增 | 
 |  |  |                                 </div> | 
 |  |  |                                 <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain table-action" id="query"> | 
 |  |  |                                     <i class="layui-icon"></i> | 
 |  |  |                                 </div> | 
 |  |  |                                 <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-green-plain table-action" id="reset"> | 
 |  |  |                                     <i class="layui-icon"></i> | 
 |  |  |                                 </div> | 
 |  |  |                             </div> | 
 |  |  |                         </div> | 
 |  |  |                     </form> | 
 |  |  |                     <table lay-filter="carriageRuleTable" lay-data="{id: 'carriageRuleTable'}"></table> | 
 |  |  |                     <style type="text/css"> | 
 |  |  |                         .layui-table-cell{ | 
 |  |  |                             text-align:center; | 
 |  |  |                             height: auto; | 
 |  |  |                             white-space: nowrap; /*文本不会换行,在同一行显示*/ | 
 |  |  |                             overflow: hidden; /*超出隐藏*/ | 
 |  |  |                             text-overflow: ellipsis; /*省略号显示*/ | 
 |  |  |                         } | 
 |  |  |                         .layui-table img{ | 
 |  |  |                             max-width:100px | 
 |  |  |                         } | 
 |  |  |                     </style> | 
 |  |  |                 </div> | 
 |  |  |             </div> | 
 |  |  |         </div> | 
 |  |  |     </div> | 
 |  |  | </div> | 
 |  |  | <!-- 表格操作栏 start --> | 
 |  |  | <script type="text/html" id="user-option"> | 
 |  |  |     <span shiro:lacksPermission="user:view,user:update,user:delete"> | 
 |  |  |         <span class="layui-badge-dot febs-bg-orange"></span> 无权限 | 
 |  |  |     </span> | 
 |  |  |     <a lay-event="edit" shiro:hasPermission="user:update"><i | 
 |  |  |             class="layui-icon febs-edit-area febs-blue"></i></a> | 
 |  |  | </script> | 
 |  |  | <style> | 
 |  |  |     .layui-form-onswitch { | 
 |  |  |         background-color: #5FB878 !important; | 
 |  |  |     } | 
 |  |  | </style> | 
 |  |  | <!-- 表格操作栏 end --> | 
 |  |  | <script data-th-inline="none" type="text/javascript"> | 
 |  |  |     // 引入组件并初始化 | 
 |  |  |     layui.use([ 'jquery', 'form', 'table', 'febs'], function () { | 
 |  |  |         var $ = layui.jquery, | 
 |  |  |             febs = layui.febs, | 
 |  |  |             form = layui.form, | 
 |  |  |             table = layui.table, | 
 |  |  |             $view = $('#febs-carriage-rule'), | 
 |  |  |             $query = $view.find('#query'), | 
 |  |  |             $reset = $view.find('#reset'), | 
 |  |  |             $searchForm = $view.find('form'), | 
 |  |  |             $add = $view.find('#add'), | 
 |  |  |             sortObject = {field: 'phone', type: null}, | 
 |  |  |             tableIns; | 
 |  |  |  | 
 |  |  |         form.render(); | 
 |  |  |  | 
 |  |  |         // 表格初始化 | 
 |  |  |         initTable(); | 
 |  |  |  | 
 |  |  |         // 初始化表格操作栏各个按钮功能 | 
 |  |  |         table.on('tool(carriageRuleTable)', function (obj) { | 
 |  |  |             var data = obj.data, | 
 |  |  |                 layEvent = obj.event; | 
 |  |  |             if (layEvent === 'carriageRuleDel') { | 
 |  |  |                 febs.modal.confirm('删除', '确认删除['+data.name+']运费模板?', function () { | 
 |  |  |                     carriageRuleDel(data.id); | 
 |  |  |                 }); | 
 |  |  |             } | 
 |  |  |             if (layEvent === 'carriageRuleUpdate') { | 
 |  |  |                 febs.modal.open('运费模板编辑', 'modules/goods/carriageRuleUpdate/' + data.id, { | 
 |  |  |                     btn: ['提交', '取消'], | 
 |  |  |                     area:['100%','100%'], | 
 |  |  |                     yes: function (index, layero) { | 
 |  |  |                         $('#febs-carriage-rule-update').find('#submit').trigger('click'); | 
 |  |  |                     }, | 
 |  |  |                     btn2: function () { | 
 |  |  |                         layer.closeAll(); | 
 |  |  |                     } | 
 |  |  |                 }); | 
 |  |  |             } | 
 |  |  |         }); | 
 |  |  |         function carriageRuleDel(id) { | 
 |  |  |             febs.get(ctx + 'admin/goods/carriageRuleDel/' + id, null, function () { | 
 |  |  |                 febs.alert.success('操作成功'); | 
 |  |  |                 $query.click(); | 
 |  |  |             }); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         // 查询按钮 | 
 |  |  |         $query.on('click', function () { | 
 |  |  |             var params = $.extend(getQueryParams(), {field: sortObject.field, order: sortObject.type}); | 
 |  |  |             tableIns.reload({where: params, page: {curr: 1}}); | 
 |  |  |         }); | 
 |  |  |  | 
 |  |  |         // 刷新按钮 | 
 |  |  |         $reset.on('click', function () { | 
 |  |  |             $searchForm[0].reset(); | 
 |  |  |             sortObject.type = 'null'; | 
 |  |  |             tableIns.reload({where: getQueryParams(), page: {curr: 1}, initSort: sortObject}); | 
 |  |  |         }); | 
 |  |  |  | 
 |  |  |         $add.on('click', function () { | 
 |  |  |             febs.modal.open('运费模板新增', 'modules/goods/carriageRuleAdd/', { | 
 |  |  |                 btn: ['提交', '取消'], | 
 |  |  |                 area:['100%','100%'], | 
 |  |  |                 yes: function (index, layero) { | 
 |  |  |                     $('#febs-carriage-rule-add').find('#submit').trigger('click'); | 
 |  |  |                 }, | 
 |  |  |                 btn2: function () { | 
 |  |  |                     layer.closeAll(); | 
 |  |  |                 } | 
 |  |  |             }); | 
 |  |  |         }); | 
 |  |  |  | 
 |  |  |         function initTable() { | 
 |  |  |             tableIns = febs.table.init({ | 
 |  |  |                 elem: $view.find('table'), | 
 |  |  |                 id: 'carriageRuleTable', | 
 |  |  |                 url: ctx + 'admin/goods/carriageRuleList', | 
 |  |  |                 cols: [[ | 
 |  |  |                     {field: 'name', title: '标题', minWidth: 100,align:'left'}, | 
 |  |  |                     {field: 'createdTime', title: '创建时间', minWidth: 140,align:'left'}, | 
 |  |  |                     {title: '操作', | 
 |  |  |                         templet: function (d) { | 
 |  |  |                                 return '' | 
 |  |  |                                 + '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="carriageRuleUpdate" shiro:hasPermission="user:update">编辑</button>' | 
 |  |  |                                     + '<button class="layui-btn layui-btn-normal layui-btn-xs febs-bg-red" lay-event="carriageRuleDel" shiro:hasPermission="user:update">删除</button>' | 
 |  |  |  | 
 |  |  |                         },minWidth: 160,align:'center'} | 
 |  |  |                 ]] | 
 |  |  |             }); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         // 获取查询参数 | 
 |  |  |         function getQueryParams() { | 
 |  |  |             return { | 
 |  |  |             }; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |     }) | 
 |  |  | </script> | 
 
| New file | 
 |  |  | 
 |  |  | <div class="layui-fluid layui-anim febs-anim" id="febs-carriage-rule-update" lay-title="运费模板编辑"> | 
 |  |  |     <div class="layui-row febs-container"> | 
 |  |  |         <div class="layui-col-md12"> | 
 |  |  |             <div class="layui-fluid" id="carriage-rule-update"> | 
 |  |  |                 <form class="layui-form" action="" lay-filter="carriage-rule-update-form"> | 
 |  |  |                     <div class="layui-tab layui-tab-brief" lay-filter="docDemoTabBrief"> | 
 |  |  |                         <ul class="layui-tab-title"> | 
 |  |  |                             <li class="layui-this">运费模板</li> | 
 |  |  |                         </ul> | 
 |  |  |                         <div class="layui-tab-content"> | 
 |  |  |                             <div class="layui-tab-item layui-show"> | 
 |  |  |                                 <blockquote class="layui-elem-quote blue-border">基本信息</blockquote> | 
 |  |  |                                 <input type="text" name="id" | 
 |  |  |                                        placeholder="" autoComplete="off" class="layui-input febs-hide"> | 
 |  |  |                                 <div class="layui-row layui-col-space10 layui-form-item"> | 
 |  |  |                                     <div class="layui-col-lg6"> | 
 |  |  |                                         <label class="layui-form-label febs-form-item-require">标题:</label> | 
 |  |  |                                         <div class="layui-input-block"> | 
 |  |  |                                             <input type="text" name="ruleName" lay-verify="required" placeholder="" autocomplete="off" class="layui-input"> | 
 |  |  |                                         </div> | 
 |  |  |                                     </div> | 
 |  |  |                                 </div> | 
 |  |  |  | 
 |  |  |                                 <div class="layui-form-item"> | 
 |  |  |                                     <label class="layui-form-label febs-form-item-require">计价方式:</label> | 
 |  |  |                                     <div class="layui-input-block"> | 
 |  |  |                                         <input type="radio" name="valuationType" value="1" title="按件算" checked /> | 
 |  |  |                                         <input type="radio" name="valuationType" value="2" title="按重量算" /> | 
 |  |  |                                     </div> | 
 |  |  |                                 </div> | 
 |  |  |  | 
 |  |  |                                 <blockquote class="layui-elem-quote blue-border">默认规则</blockquote> | 
 |  |  |                                 <div class="layui-form-item"> | 
 |  |  |                                     <label class="layui-form-label febs-form-item-require">默认运费:</label> | 
 |  |  |                                     <div class="layui-input-inline" style="width: 80px"> | 
 |  |  |                                         <input type="text" name="basicCntDefault" lay-verify="required" autocomplete="off" class="layui-input" > | 
 |  |  |                                     </div> | 
 |  |  |                                     <div class="layui-form-mid">件内,</div> | 
 |  |  |                                     <div class="layui-input-inline" style="width: 80px"> | 
 |  |  |                                         <input type="text" name="basicPriceDefault" lay-verify="required" autocomplete="off" class="layui-input" > | 
 |  |  |                                     </div> | 
 |  |  |                                     <div class="layui-form-mid">元,</div> | 
 |  |  |                                     <div class="layui-form-mid">每增加</div> | 
 |  |  |                                     <div class="layui-input-inline" style="width: 80px"> | 
 |  |  |                                         <input type="text" name="moreCntDefault" lay-verify="required" autocomplete="off" class="layui-input" > | 
 |  |  |                                     </div> | 
 |  |  |                                     <div class="layui-form-mid">件,增加运费</div> | 
 |  |  |                                     <div class="layui-input-inline" style="width: 80px"> | 
 |  |  |                                         <input type="text" name="morePriceDefault" lay-verify="required" autocomplete="off" class="layui-input" > | 
 |  |  |                                     </div> | 
 |  |  |                                     <div class="layui-form-mid">元。</div> | 
 |  |  |                                 </div> | 
 |  |  |                                 <div class="layui-form-item multi-rule-table"> | 
 |  |  |                                     <div class="layui-row layui-col-space10 layui-form-item"> | 
 |  |  |                                         <blockquote class="layui-elem-quote blue-border">为指定省份设置运费</blockquote> | 
 |  |  |  | 
 |  |  |                                         <div class="layui-col-lg6"> | 
 |  |  |                                             <label class="layui-form-label febs-form-item-require">指定省份:</label> | 
 |  |  |                                             <div class="layui-input-block"> | 
 |  |  |                                                 <div id="province-set"></div> | 
 |  |  |                                             </div> | 
 |  |  |                                         </div> | 
 |  |  |                                         <div class="layui-col-lg6"> | 
 |  |  |                                             <button type="button" class="layui-btn layui-btn-normal layui-btn" id="test3" >添加</button> | 
 |  |  |                                         </div> | 
 |  |  |                                     </div> | 
 |  |  |  | 
 |  |  |                                     <div class="layui-form-item"> | 
 |  |  |                                         <div class="layui-input-block"> | 
 |  |  |                                             <table id="multiRule" lay-filter="multiRule"></table> | 
 |  |  |                                         </div> | 
 |  |  |                                     </div> | 
 |  |  |                                 </div> | 
 |  |  |                             </div> | 
 |  |  |                         </div> | 
 |  |  |                     </div> | 
 |  |  |                     <div class="layui-form-item febs-hide"> | 
 |  |  |                         <button class="layui-btn" lay-submit="" lay-filter="carriage-rule-update-form-submit" id="submit">保存</button> | 
 |  |  |                     </div> | 
 |  |  |                 </form> | 
 |  |  |             </div> | 
 |  |  |         </div> | 
 |  |  |     </div> | 
 |  |  | </div> | 
 |  |  | <style> | 
 |  |  |     .blue-border { | 
 |  |  |         border-left-color: #2db7f5; | 
 |  |  |         font-size: 18px; | 
 |  |  |     } | 
 |  |  | </style> | 
 |  |  | <script type="text/html" id="toolbar"> | 
 |  |  |     <div class="layui-btn-container"> | 
 |  |  |         <button class="layui-btn layui-btn-danger layui-btn-sm" type="button" lay-event="delSku">删除</button> | 
 |  |  |     </div> | 
 |  |  | </script> | 
 |  |  | <!-- 表格操作栏 end --> | 
 |  |  | <script data-th-inline="javascript"> | 
 |  |  |     layui.use(['febs', 'form', 'formSelects', 'validate', 'treeSelect', 'eleTree','dropdown', 'laydate', 'layedit', 'upload', 'element', 'table', 'xmSelect'], function () { | 
 |  |  |         var $ = layui.jquery, | 
 |  |  |             febs = layui.febs, | 
 |  |  |             layer = layui.layer, | 
 |  |  |             table = layui.table, | 
 |  |  |             formSelects = layui.formSelects, | 
 |  |  |             treeSelect = layui.treeSelect, | 
 |  |  |             form = layui.form, | 
 |  |  |             laydate = layui.laydate, | 
 |  |  |             eleTree = layui.eleTree, | 
 |  |  |             $view = $('#carriage-rule-update'), | 
 |  |  |             layedit = layui.layedit, | 
 |  |  |             carriageRule = [[${carriageRule}]], | 
 |  |  |             upload = layui.upload, | 
 |  |  |             validate = layui.validate, | 
 |  |  |             element = layui.element; | 
 |  |  |  | 
 |  |  |         form.render(); | 
 |  |  |  | 
 |  |  |         formSelects.render(); | 
 |  |  |  | 
 |  |  |         var provinceSet = xmSelect.render({ | 
 |  |  |             el: '#province-set', | 
 |  |  |             toolbar: { | 
 |  |  |                 show: true, | 
 |  |  |                 list: [ 'ALL', 'CLEAR', 'REVERSE' ] | 
 |  |  |             }, | 
 |  |  |             filterable: true, | 
 |  |  |             data: [ | 
 |  |  |                 {name: '北京市',value: 1,selected:false}, | 
 |  |  |                 {name: '天津市',value: 2,selected:false}, | 
 |  |  |                 {name: '河北省',value: 3,selected:false}, | 
 |  |  |                 {name: '山西省',value: 4,selected:false}, | 
 |  |  |                 {name: '辽宁省',value: 5,selected:false}, | 
 |  |  |  | 
 |  |  |                 {name: '吉林省',value: 6,selected:false}, | 
 |  |  |                 {name: '黑龙江省',value: 7,selected:false}, | 
 |  |  |                 {name: '上海市',value: 8,selected:false}, | 
 |  |  |                 {name: '江苏省',value: 9,selected:false}, | 
 |  |  |                 {name: '浙江省',value: 10,selected:false}, | 
 |  |  |  | 
 |  |  |                 {name: '安徽省',value: 11,selected:false}, | 
 |  |  |                 {name: '福建省',value: 12,selected:false}, | 
 |  |  |                 {name: '江西省',value: 13,selected:false}, | 
 |  |  |                 {name: '山东省',value: 14,selected:false}, | 
 |  |  |                 {name: '河南省',value: 15,selected:false}, | 
 |  |  |  | 
 |  |  |                 {name: '湖北省',value: 16,selected:false}, | 
 |  |  |                 {name: '湖南省',value: 17,selected:false}, | 
 |  |  |                 {name: '广东省',value: 18,selected:false}, | 
 |  |  |                 {name: '广西壮族自治区',value: 19,selected:false}, | 
 |  |  |                 {name: '海南省',value: 20,selected:false}, | 
 |  |  |  | 
 |  |  |                 {name: '重庆市',value: 21,selected:false}, | 
 |  |  |                 {name: '四川省',value: 22,selected:false}, | 
 |  |  |                 {name: '贵州省',value: 23,selected:false}, | 
 |  |  |                 {name: '云南省',value: 24,selected:false}, | 
 |  |  |                 {name: '西藏自治区',value: 25,selected:false}, | 
 |  |  |  | 
 |  |  |                 {name: '陕西省',value: 26,selected:false}, | 
 |  |  |                 {name: '甘肃省',value: 27,selected:false}, | 
 |  |  |                 {name: '青海省',value: 28,selected:false}, | 
 |  |  |                 {name: '宁夏回族自治区',value: 29,selected:false}, | 
 |  |  |                 {name: '内蒙古自治区',value: 30,selected:false}, | 
 |  |  |  | 
 |  |  |                 {name: '新疆维吾尔自治区',value: 31,selected:false}, | 
 |  |  |                 {name: '台湾省',value: 32,selected:false}, | 
 |  |  |                 {name: '香港特别行政区',value: 33,selected:false}, | 
 |  |  |                 {name: '澳门特别行政区',value: 34,selected:false}, | 
 |  |  |             ], | 
 |  |  |         }) | 
 |  |  |  | 
 |  |  |         $('#test3').on('click', function (){ | 
 |  |  |             let provinceChoice = provinceSet.getValue('name'); | 
 |  |  |             if(provinceChoice == null || provinceChoice == ""){ | 
 |  |  |                 febs.alert.warn('指定省份不能为空'); | 
 |  |  |                 return false; | 
 |  |  |             } | 
 |  |  |             let provinceChoiceStr = ""; | 
 |  |  |             console.log(provinceChoice); | 
 |  |  |             for (let i = 0; i < provinceChoice.length; i++) { | 
 |  |  |                 provinceChoiceStr = provinceChoiceStr + provinceChoice[i]+","; | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |             console.log(provinceChoiceStr); | 
 |  |  |             let data = {}; | 
 |  |  |             data.areaAddress = provinceChoiceStr; | 
 |  |  |             data.basicCnt = 1; | 
 |  |  |             data.basicPrice = 1; | 
 |  |  |             data.moreCnt = 1; | 
 |  |  |             data.morePrice = 1; | 
 |  |  |             addTableDate(data); | 
 |  |  |         }); | 
 |  |  |  | 
 |  |  |         let ruleData=[]; | 
 |  |  |         let tableIns = table.render({ | 
 |  |  |             elem: '#multiRule' | 
 |  |  |             ,limit:999 | 
 |  |  |             ,toolbar:"#toolbar" | 
 |  |  |             ,defaultToolbar:[] | 
 |  |  |             ,cols: [ | 
 |  |  |                 [ | 
 |  |  |                 ,{align: 'center', title: '请选择', colspan: 2} | 
 |  |  |                 ,{field:'areaAddress', title:'指定省份', width:400, rowspan: 2,align: 'center'} | 
 |  |  |                 ,{align: 'center', title: '规则( 2 件内,2 元,每 1 增加件,增加运费 1 元。)', colspan: 4} | 
 |  |  |                 ], | 
 |  |  |                 [ //表头 | 
 |  |  |                 {type: 'checkbox', rowspan: 2,align: 'center' } | 
 |  |  |                 ,{field: 'index', title: '序号', width:100, rowspan: 2,align: 'center'} | 
 |  |  |                 ,{field: 'basicCnt', title: '件内', width:200,edit:'text'} | 
 |  |  |                 ,{field: 'basicPrice', title: '运费', width:200,edit:'text'} | 
 |  |  |                 ,{field: 'moreCnt', title: '每增加', width:200,edit:'text'} | 
 |  |  |                 ,{field: 'morePrice', title: '增加运费', width:200,edit:'text'} | 
 |  |  |             ]] | 
 |  |  |             ,data: [] | 
 |  |  |         }); | 
 |  |  |  | 
 |  |  |         initValue(); | 
 |  |  |  | 
 |  |  |         function initValue() { | 
 |  |  |             form.val("carriage-rule-update-form", { | 
 |  |  |                 "id": carriageRule.id, | 
 |  |  |                 "ruleName": carriageRule.ruleName, | 
 |  |  |                 "valuationType": carriageRule.valuationType, | 
 |  |  |                 "basicCntDefault": carriageRule.basicCntDefault, | 
 |  |  |                 "basicPriceDefault": carriageRule.basicPriceDefault, | 
 |  |  |                 "moreCntDefault": carriageRule.moreCntDefault, | 
 |  |  |                 "morePriceDefault": carriageRule.morePriceDefault | 
 |  |  |             }); | 
 |  |  |             let carriageRuleInfos = carriageRule.adminCarriageRuleInfoVos; | 
 |  |  |             if(Array.isArray(carriageRuleInfos) && carriageRuleInfos.length){ | 
 |  |  |                 for (let i = 0; i < carriageRuleInfos.length; i++) { | 
 |  |  |                     carriageRuleInfos[i].index = i+1; | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |             if (carriageRuleInfos) { | 
 |  |  |                 ruleData = carriageRuleInfos; | 
 |  |  |                 reloadTable(carriageRuleInfos); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |         let delCarriageRuleInfo = []; | 
 |  |  |         table.on('toolbar(multiRule)', function(obj){ | 
 |  |  |             var data = obj.data; | 
 |  |  |             var hasData = table.cache['multiRule']; | 
 |  |  |             var checkData = table.checkStatus('multiRule').data; | 
 |  |  |  | 
 |  |  |             if (checkData.length <= 0) { | 
 |  |  |                 febs.alert.warn('请选择删除数据'); | 
 |  |  |                 return; | 
 |  |  |             } | 
 |  |  |             if(obj.event === 'delSku'){ | 
 |  |  |                 for (let i = 0; i < checkData.length; i++) { | 
 |  |  |                     var delData = checkData[i]; | 
 |  |  |                     for (let j = 0; j < hasData.length; j++) { | 
 |  |  |                         if (hasData[j].index == delData.index) { | 
 |  |  |                             if (delData.id) { | 
 |  |  |                                 delCarriageRuleInfo.push(delData.id); | 
 |  |  |                             } | 
 |  |  |                             hasData.splice(j, 1); | 
 |  |  |                             break; | 
 |  |  |                         } | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  |                 for (let i = 0; i < hasData.length; i++) { | 
 |  |  |                     hasData[i].index = i + 1; | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  |                 ruleData=hasData; | 
 |  |  |                 reloadTable(hasData); | 
 |  |  |             } | 
 |  |  |         }); | 
 |  |  |  | 
 |  |  |         function addTableDate(data) { | 
 |  |  |             var hasData = table.cache['multiRule']; | 
 |  |  |  | 
 |  |  |             data.index = hasData.length + 1; | 
 |  |  |             ruleData.push(data); | 
 |  |  |  | 
 |  |  |             reloadTable(ruleData); | 
 |  |  |             return data.index; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         function reloadTable(data) { | 
 |  |  |             table.reload('multiRule', { | 
 |  |  |                 data : data | 
 |  |  |             }); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         table.on('edit(multiRule)', function(obj){ | 
 |  |  |             var value = obj.value //得到修改后的值 | 
 |  |  |                 ,data = obj.data //得到所在行所有键值 | 
 |  |  |                 ,field = obj.field; //得到字段 | 
 |  |  |  | 
 |  |  |             for (let i = 0; i < ruleData.length; i++) { | 
 |  |  |                 if (ruleData[i].index == data.index) { | 
 |  |  |                     ruleData[i] = data; | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         }); | 
 |  |  |  | 
 |  |  |         form.on('submit(carriage-rule-update-form-submit)', function (data) { | 
 |  |  |             data.field.delCarriageRuleInfoIds=delCarriageRuleInfo; | 
 |  |  |             data.field.adminCarriageRuleAddInfoDtos = ruleData; | 
 |  |  |             $.ajax({ | 
 |  |  |                 'url':ctx + 'admin/goods/carriageRuleUpdate', | 
 |  |  |                 'type':'post', | 
 |  |  |                 'dataType':'json', | 
 |  |  |                 'headers' : {'Content-Type' : 'application/json;charset=utf-8'}, //接口json格式 | 
 |  |  |                 'traditional': true,//ajax传递数组必须添加属性 | 
 |  |  |                 'data':JSON.stringify(data.field), | 
 |  |  |                 'success':function (data) { | 
 |  |  |                     if(data.code==200){ | 
 |  |  |                         layer.closeAll(); | 
 |  |  |                         febs.alert.success(data.message); | 
 |  |  |                         $('#febs-carriage-rule').find('#reset').click(); | 
 |  |  |                     }else{ | 
 |  |  |                         febs.alert.warn(data.message); | 
 |  |  |                     } | 
 |  |  |                 }, | 
 |  |  |                 'error':function () { | 
 |  |  |                     febs.alert.warn('服务器繁忙'); | 
 |  |  |                 } | 
 |  |  |             }) | 
 |  |  |             return false; | 
 |  |  |         }); | 
 |  |  |     }); | 
 |  |  | </script> | 
 
 |  |  | 
 |  |  |                                             </select> | 
 |  |  |                                         </div> | 
 |  |  |                                     </div> | 
 |  |  | <!--                                    <div class="layui-inline">--> | 
 |  |  | <!--                                        <label class="layui-form-label layui-form-label-sm">会员类型</label>--> | 
 |  |  | <!--                                        <div class="layui-input-inline">--> | 
 |  |  | <!--                                            <select name="level">--> | 
 |  |  | <!--                                                <option value="">请选择</option>--> | 
 |  |  | <!--                                                <option value="FIRST_LEVEL">普通会员</option>--> | 
 |  |  | <!--                                                <option value="SECOND_LEVEL">一星</option>--> | 
 |  |  | <!--                                                <option value="THIRD_LEVEL">二星</option>--> | 
 |  |  | <!--                                                <option value="FOUR_LEVEL">三星</option>--> | 
 |  |  | <!--                                                <option value="FIFTH_LEVEL">四星</option>--> | 
 |  |  | <!--                                            </select>--> | 
 |  |  | <!--                                        </div>--> | 
 |  |  | <!--                                    </div>--> | 
 |  |  |                                 </div> | 
 |  |  |                             </div> | 
 |  |  |                             <div class="layui-col-md2 layui-col-sm12 layui-col-xs12 table-action-area"> | 
 |  |  | 
 |  |  |                 url: ctx + 'admin/mallMember/getAgentApplyList', | 
 |  |  |                 defaultToolbar:[], | 
 |  |  |                 cols: [[ | 
 |  |  |                     {field: 'memberName', title: '微信昵称', minWidth: 150,align:'left'}, | 
 |  |  |                     {field: 'name', title: '姓名', minWidth: 100,align:'left'}, | 
 |  |  |                     {field: 'phone', title: '电话', minWidth: 100,align:'left'}, | 
 |  |  |                     {field: 'province', title: '省', minWidth: 100,align:'left'}, | 
 |  |  |                     {field: 'city', title: '市', minWidth: 100,align:'left'}, | 
 |  |  |                     {field: 'area', title: '区、县', minWidth: 100,align:'left'}, | 
 |  |  |                     {field: 'storeAddress', title: '详细地址', minWidth: 100,align:'left'}, | 
 |  |  |                     {field: 'storeName', title: '店铺名称', minWidth: 100,align:'left'}, | 
 |  |  |                     {field: 'state', title: '申请状态', | 
 |  |  |                     {field:'memberName', title:'微信昵称', width:100, rowspan: 3,align: 'center'} | 
 |  |  |                     ,{align: 'center', title: '基本信息', colspan: 7} | 
 |  |  |                     ,{field: 'state', title: '申请状态', | 
 |  |  |                         templet: function (d) { | 
 |  |  |                             if (d.state === 1) { | 
 |  |  |                                 return '<span style="color:green;">申请中</span>' | 
 |  |  | 
 |  |  |                             }else{ | 
 |  |  |                                 return '' | 
 |  |  |                             } | 
 |  |  |                         }, minWidth: 100,align:'center'}, | 
 |  |  |                     {field: 'createdTime', title: '申请时间', minWidth: 180,align:'center'}, | 
 |  |  |                         }, minWidth: 100,rowspan: 3,align:'center'}, | 
 |  |  |                     ,{field:'createdTime', title:'申请时间', width:100,rowspan: 3,align: 'center'} | 
 |  |  |                     ],[ | 
 |  |  |                     // {field: 'memberName', title: '微信昵称', minWidth: 150,align:'left'}, | 
 |  |  |                     {field: 'name', title: '姓名', minWidth: 100,align:'left'}, | 
 |  |  |                     {field: 'phone', title: '电话', minWidth: 100,align:'left'}, | 
 |  |  |                     {field: 'province', title: '省', minWidth: 100,align:'left'}, | 
 |  |  |                     {field: 'city', title: '市', minWidth: 100,align:'left'}, | 
 |  |  |                     {field: 'area', title: '区、县', minWidth: 100,align:'left'}, | 
 |  |  |                     {field: 'storeAddress', title: '详细地址', minWidth: 100,align:'left'}, | 
 |  |  |                     {field: 'storeName', title: '店铺名称', minWidth: 100,align:'left'}, | 
 |  |  |                     // {field: 'state', title: '申请状态', | 
 |  |  |                     //     templet: function (d) { | 
 |  |  |                     //         if (d.state === 1) { | 
 |  |  |                     //             return '<span style="color:green;">申请中</span>' | 
 |  |  |                     //         }else if (d.state === 2) { | 
 |  |  |                     //             return '<span style="color:blue;">通过</span>' | 
 |  |  |                     //         }else if (d.state === 3) { | 
 |  |  |                     //             return '<span style="color:red;">拒绝</span>' | 
 |  |  |                     //         }else{ | 
 |  |  |                     //             return '' | 
 |  |  |                     //         } | 
 |  |  |                     //     }, minWidth: 100,align:'center'}, | 
 |  |  |                     // {field: 'createdTime', title: '申请时间', minWidth: 180,align:'center'}, | 
 |  |  |                     {title: '操作', | 
 |  |  |                         templet: function (d) { | 
 |  |  |                             if(d.state === 1 ){ |