Helius
2022-05-23 5011c035b9902637b1cb4d08112e00239ff99381
合并master
2 files renamed
64 files modified
9 files added
1317 ■■■■ changed files
zq-erp/pom.xml 5 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/beauty/followup/dao/SysFollowupDao.java 10 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/beauty/followup/entry/SysFollowup.java 6 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/beauty/followup/service/SysFollowupService.java 89 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/app/action/ApiCommonAction.java 5 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/app/action/ApiFollowupAction.java 62 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/app/action/ApiServiceOrderAction.java 1 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/app/action/AppOccupancyController.java 21 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/app/authority/AppAuthorityManager.java 11 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/app/dto/CreateServiceOrderDto.java 11 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/app/dto/FreeBedDto.java 43 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/common/authority/DefaultAuthorityManager.java 15 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/common/authority/strategy/AccountPasswordLogin.java 1 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/common/bean/SysCacheValue.java 39 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/common/dao/SysCacheValueDao.java 14 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/common/init/LocalCache.java 183 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/common/init/UserCacheManager.java 6 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/common/interceptor/ApiUserLoginInterceptor.java 3 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/common/interceptor/HostInterceptor.java 3 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/common/service/impl/SysUsersServiceImpl.java 3 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/common/tools/LocationUtil.java 9 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hive/action/FollowuController.java 40 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hive/action/OrderController.java 2 ●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hive/action/ProjUseController.java 17 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hive/action/ServiceRecordController.java patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hive/action/VipInfoController.java 11 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hive/dao/MoneyCardUseDao.java 3 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hive/dao/SysShopInfoDao.java 1 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hive/dao/SysVipAlbumDao.java 9 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hive/dao/SysVipInfoDao.java 2 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hive/dto/FollowuListDto.java 36 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hive/service/SysVipInfoService.java 7 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hive/service/imp/ShoppingGoodsServiceImpl.java 27 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysGoodsServiceImpl.java 7 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysProjServicesServiceImpl.java 20 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysVipInfoServiceImpl.java 7 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hiveErp/action/ErpVipInfoController.java 9 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxUserAction.java 6 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/YuyueAction.java 8 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WxShopActivitiesSecKillServiceImpl.java 4 ●●● patch | view | raw | blame | history
zq-erp/src/main/resources/config/application-alpha.properties 45 ●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/config/application-local.properties 9 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/config/application.properties 2 ●●● patch | view | raw | blame | history
zq-erp/src/main/resources/config/prd/system.properties patch | view | raw | blame | history
zq-erp/src/main/resources/mybatis/mapper/activity/ActivitySignReceiveRecordDao.xml 2 ●●● patch | view | raw | blame | history
zq-erp/src/main/resources/mybatis/mapper/activity/ActivitySignWriteoffDao.xml 4 ●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/mybatis/mapper/common/OperstionLogDao.xml 2 ●●● patch | view | raw | blame | history
zq-erp/src/main/resources/mybatis/mapper/fenxiao/ShopSalesmanApplyDao.xml 32 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/mybatis/mapper/hive/AchieveNewDao.xml 12 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/mybatis/mapper/hive/MoneyCardUseDao.xml 13 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/mybatis/mapper/hive/MyBeauticianCountDao.xml 2 ●●● patch | view | raw | blame | history
zq-erp/src/main/resources/mybatis/mapper/hive/ServicesFlowDao.xml 14 ●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/mybatis/mapper/hive/ShoppingGoodsDao.xml 2 ●●● patch | view | raw | blame | history
zq-erp/src/main/resources/mybatis/mapper/hive/SysBeauticianStateDao.xml 3 ●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/mybatis/mapper/hive/SysFollowupDao.xml 30 ●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/mybatis/mapper/hive/SysOrderDao.xml 4 ●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/mybatis/mapper/hive/SysProjServicesDao.xml 17 ●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/mybatis/mapper/hive/SysShopInfoDao.xml 7 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/mybatis/mapper/hive/SysVipInfoDao.xml 67 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopActivitiesGroupJoinDao.xml 8 ●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopActivitiesSeckillRecordDao.xml 4 ●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopProductCommentDao.xml 5 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/static/plugin/vue-treeselect/vue-treeselect.min.css 5 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/static/plugin/vue-treeselect/vue-treeselect.umd.min.js 7 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/templates/views/admin/hive-erp/vip/vipInfo-list.html 2 ●●● patch | view | raw | blame | history
zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/servicceAddForm.html 4 ●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/updateServiceOrderTimeV2.html 4 ●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/yyServiceAddForm.html 4 ●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/templates/views/admin/hive/products/goods-form.html 4 ●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/templates/views/admin/hive/products/shoppinggoods-zb-list.html 20 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/templates/views/admin/hive/vip/followu-list.html 206 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/templates/views/admin/hive/vip/vipInfo-list.html 2 ●●● patch | view | raw | blame | history
zq-erp/src/test/java/com/matrix/BizUserToVipInfoTool.java 2 ●●●●● patch | view | raw | blame | history
zq-erp/src/test/java/com/matrix/JyyTests.java 11 ●●●●● patch | view | raw | blame | history
zq-erp/src/test/java/com/matrix/LocalCacheTest.java 6 ●●●●● patch | view | raw | blame | history
zq-erp/pom.xml
@@ -100,6 +100,11 @@
            <artifactId>spring-boot-starter-websocket</artifactId>
        </dependency>
        <dependency>
            <groupId>com.sun.mail</groupId>
            <artifactId>javax.mail</artifactId>
            <version>1.6.2</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
zq-erp/src/main/java/com/matrix/beauty/followup/dao/SysFollowupDao.java
File was renamed from zq-erp/src/main/java/com/matrix/system/hive/dao/SysFollowupDao.java
@@ -1,11 +1,13 @@
package com.matrix.system.hive.dao;
package com.matrix.beauty.followup.dao;
import com.matrix.beauty.followup.entry.SysFollowup;
import com.matrix.core.pojo.PaginationVO;
import com.matrix.system.app.dto.FollowupListDto;
import com.matrix.system.hive.dto.FollowuListDto;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
import com.matrix.core.pojo.PaginationVO;
import com.matrix.system.hive.bean.SysFollowup;
/**
 * @description 跟进
@@ -41,4 +43,6 @@
    void updateZan(@Param("id")Long id, @Param("zans")String zans);
    List<SysFollowup> selectByAppDto(FollowupListDto followupListDto);
    List<SysFollowup> findVipFollowuByPage(FollowuListDto followuListDto);
}
zq-erp/src/main/java/com/matrix/beauty/followup/entry/SysFollowup.java
File was renamed from zq-erp/src/main/java/com/matrix/system/hive/bean/SysFollowup.java
@@ -1,13 +1,13 @@
package com.matrix.system.hive.bean;
package com.matrix.beauty.followup.entry;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.matrix.core.pojo.EntityDTO;
import com.matrix.core.anotations.Extend;
import com.matrix.core.tools.DateUtil;
import com.matrix.system.common.bean.EntityDTOExt;
import com.matrix.system.common.bean.SysUsers;
import com.matrix.system.hive.bean.SysFollowupComment;
import com.matrix.system.hive.bean.SysVipAlbum;
import io.swagger.annotations.ApiModelProperty;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotNull;
import java.util.Date;
zq-erp/src/main/java/com/matrix/beauty/followup/service/SysFollowupService.java
New file
@@ -0,0 +1,89 @@
package com.matrix.beauty.followup.service;
import com.matrix.beauty.followup.dao.SysFollowupDao;
import com.matrix.beauty.followup.entry.SysFollowup;
import com.matrix.core.constance.MatrixConstance;
import com.matrix.core.tools.StringUtils;
import com.matrix.core.tools.WebUtil;
import com.matrix.system.common.bean.SysUsers;
import com.matrix.system.hive.bean.SysBeauticianState;
import com.matrix.system.hive.bean.SysOrderItem;
import com.matrix.system.hive.bean.SysVipAlbum;
import com.matrix.system.hive.dao.SysBeauticianStateDao;
import com.matrix.system.hive.dao.SysOrderItemDao;
import com.matrix.system.hive.dao.SysVipAlbumDao;
import com.matrix.system.hive.dto.FollowuListDto;
import com.matrix.system.hive.plugin.util.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class SysFollowupService {
    @Autowired
    SysFollowupDao followupDao;
    @Autowired
    SysOrderItemDao orderItemDao;
    @Autowired
    private SysVipAlbumDao vipAlbumDao;
    @Autowired
    private SysBeauticianStateDao beauticianStateDao;
    public void save(SysFollowup followup){
        SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
        followup.setCreateBy(user.getSuName());
        followup.setUpdateBy(user.getSuName());
        followup.setStaffId(user.getSuId());
        followup.setCompanyId(user.getCompanyId());
        followup.setShopId(user.getShopId());
        //处理订单摘要
        if(followup.getOrderId()!=null){
            List<SysOrderItem> sysOrderItems = orderItemDao.selectByOrderId(followup.getOrderId());
            String abs="";
            if(sysOrderItems.size()>1){
                abs= sysOrderItems.get(0).getShoppingGoods().getName()+"等"+sysOrderItems.size()+"件商品";
            }else{
                abs= sysOrderItems.get(0).getShoppingGoods().getName();
            }
            followup.setOrderAbstract(abs);
        }
        //服务单摘要
        if(followup.getServiceId()!=null){
            List<SysBeauticianState> sysBeauticianStates = beauticianStateDao.selectBySerIds(followup.getServiceId());
            String abs="";
            if(sysBeauticianStates.size()>1){
                abs= sysBeauticianStates.get(0).getProjInfo().getName()+"等"+sysBeauticianStates.size()+"项服务";
            }else{
                abs= sysBeauticianStates.get(0).getProjInfo().getName();
            }
            followup.setOrderAbstract(abs);
        }
        followupDao.insert(followup);
        //插入图片
        List<SysVipAlbum> albums=followup.getAlbums();
        if(CollectionUtils.isNotEmpty(albums)){
            for (SysVipAlbum vipAlbum:albums){
                if(StringUtils.isNotBlank(vipAlbum.getImg())){
                    vipAlbum.setCreateBy(user.getSuName());
                    vipAlbum.setUpdateBy(user.getSuName());
                    vipAlbum.setSource(SysVipAlbum.SOURCE_FOLLOW);
                    vipAlbum.setVipId(followup.getVipId());
                    vipAlbum.setSourceId(followup.getId());
                    vipAlbumDao.insert(vipAlbum);
                }
            }
        }
    }
    public List<SysFollowup> findVipFollowuByPage(FollowuListDto followuListDto) {
        //todo 等订单改造版本合并后用验证工具加参数校验
      return   followupDao.findVipFollowuByPage(followuListDto);
    }
}
zq-erp/src/main/java/com/matrix/system/app/action/ApiCommonAction.java
@@ -2,6 +2,7 @@
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.TypeReference;
import com.matrix.component.tools.HttpCurlUtil;
import com.matrix.core.pojo.AjaxResult;
import com.matrix.core.tools.*;
@@ -194,7 +195,7 @@
            return AjaxResult.buildFailInstance("该手机号不存在");
        }
        String codeExist = LocalCache.get(smsCodeDto.getTelphone());
        String codeExist = LocalCache.get(smsCodeDto.getTelphone(),new TypeReference<String>(){});
        if (StringUtils.isNotBlank(codeExist)) {
            return AjaxResult.buildFailInstance("请勿重复发送验证码");
        }
@@ -215,7 +216,7 @@
            return AjaxResult.buildFailInstance("该手机号不存在");
        }
        String code = LocalCache.get(pwdResetDto.getTelphone());
        String code = LocalCache.get(pwdResetDto.getTelphone(),new TypeReference<String>(){});
        if (StringUtils.isBlank(code)) {
            return AjaxResult.buildFailInstance("验证码已失效,请重新发送");
        }
zq-erp/src/main/java/com/matrix/system/app/action/ApiFollowupAction.java
@@ -1,5 +1,8 @@
package com.matrix.system.app.action;
import com.matrix.beauty.followup.dao.SysFollowupDao;
import com.matrix.beauty.followup.entry.SysFollowup;
import com.matrix.beauty.followup.service.SysFollowupService;
import com.matrix.core.constance.MatrixConstance;
import com.matrix.core.pojo.AjaxResult;
import com.matrix.core.tools.StringUtils;
@@ -7,7 +10,6 @@
import com.matrix.system.app.dto.*;
import com.matrix.system.common.bean.SysUsers;
import com.matrix.system.common.tools.DataAuthUtil;
import com.matrix.system.hive.action.util.QueryUtil;
import com.matrix.system.hive.bean.*;
import com.matrix.system.hive.dao.*;
import com.matrix.system.hive.plugin.util.CollectionUtils;
@@ -35,21 +37,11 @@
    private SysFollowupDao followupDao;
    @Autowired
    private SysVipAlbumDao vipAlbumDao;
    @Autowired
    private SysVipInfoDao vipInfoDao;
    @Autowired
    private SysFollowupCommentDao followupCommentDao;
    @Autowired
    private SysOrderItemDao orderItemDao;
    @Autowired
    private SysBeauticianStateDao beauticianStateDao;
    private SysFollowupService followupService;
    @ApiOperation(value = "新增跟进记录", notes = "新增跟进记录")
@@ -58,51 +50,7 @@
    })
    @PostMapping(value = "/addFollowup")
    public AjaxResult addFollowup(@RequestBody @Validated SysFollowup followup) {
        SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
        followup.setCreateBy(user.getSuName());
        followup.setUpdateBy(user.getSuName());
        followup.setStaffId(user.getSuId());
        followup.setCompanyId(user.getCompanyId());
        followup.setShopId(user.getShopId());
        //处理订单摘要
        if(followup.getOrderId()!=null){
            List<SysOrderItem> sysOrderItems = orderItemDao.selectByOrderId(followup.getOrderId());
            String abs="";
            if(sysOrderItems.size()>1){
                abs= sysOrderItems.get(0).getShoppingGoods().getName()+"等"+sysOrderItems.size()+"件商品";
            }else{
                abs= sysOrderItems.get(0).getShoppingGoods().getName();
            }
           followup.setOrderAbstract(abs);
        }
        //服务单摘要
        if(followup.getServiceId()!=null){
            List<SysBeauticianState> sysBeauticianStates = beauticianStateDao.selectBySerIds(followup.getServiceId());
            String abs="";
            if(sysBeauticianStates.size()>1){
                abs= sysBeauticianStates.get(0).getProjInfo().getName()+"等"+sysBeauticianStates.size()+"项服务";
            }else{
                abs= sysBeauticianStates.get(0).getProjInfo().getName();
            }
            followup.setOrderAbstract(abs);
        }
        followupDao.insert(followup);
        //插入图片
        List<SysVipAlbum> albums=followup.getAlbums();
        if(CollectionUtils.isNotEmpty(albums)){
            for (SysVipAlbum vipAlbum:albums){
                if(StringUtils.isNotBlank(vipAlbum.getImg())){
                    vipAlbum.setCreateBy(user.getSuName());
                    vipAlbum.setUpdateBy(user.getSuName());
                    vipAlbum.setSource(SysVipAlbum.SOURCE_FOLLOW);
                    vipAlbum.setVipId(followup.getVipId());
                    vipAlbum.setSourceId(followup.getId());
                    vipAlbumDao.insert(vipAlbum);
                }
            }
        }
        followupService.save(followup);
        return AjaxResult.buildSuccessInstance("保存成功");
    }
zq-erp/src/main/java/com/matrix/system/app/action/ApiServiceOrderAction.java
@@ -165,6 +165,7 @@
        sysProjServices.setVipId(serviceOrderDto.getVipId());
        sysProjServices.setYyTime(serviceOrderDto.getYyTime());
        sysProjServices.setRemark(serviceOrderDto.getRemark());
        sysProjServices.setBedId(serviceOrderDto.getBedId());
        List<SysBeauticianState> sysBeauticianStates = new ArrayList<>();
        serviceOrderDto.getProjItems().forEach(item ->{
zq-erp/src/main/java/com/matrix/system/app/action/AppOccupancyController.java
@@ -4,6 +4,7 @@
import com.matrix.core.pojo.AjaxResult;
import com.matrix.core.tools.DateUtil;
import com.matrix.core.tools.WebUtil;
import com.matrix.system.app.dto.FreeBedDto;
import com.matrix.system.app.vo.StoreListVo;
import com.matrix.system.common.bean.SysUsers;
import com.matrix.system.common.service.SysUsersService;
@@ -11,9 +12,12 @@
import com.matrix.system.hive.action.BaseController;
import com.matrix.system.hive.action.OccupancyController;
import com.matrix.system.hive.bean.SysBeauticianState;
import com.matrix.system.hive.bean.SysBedInfo;
import com.matrix.system.hive.bean.SysProjServices;
import com.matrix.system.hive.bean.SysWorkBeatuistaff;
import com.matrix.system.hive.dao.SysBeauticianStateDao;
import com.matrix.system.hive.plugin.util.CollectionUtils;
import com.matrix.system.hive.service.SysBedInfoService;
import com.matrix.system.hive.service.SysWorkBeatuistaffService;
import com.matrix.system.hive.service.SysWorktimeService;
import io.swagger.annotations.Api;
@@ -22,6 +26,7 @@
import io.swagger.annotations.ApiResponses;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@@ -43,6 +48,9 @@
    @Resource
    private OccupancyController occupancyController;
    @Autowired
    private SysBedInfoService bedInfoService;
    /**
     * 获取员工预约情况
     */
@@ -57,4 +65,17 @@
        return occupancyController.getCwzyList(timeStr,sysUsers.getShopId());
    }
    @ApiOperation(value = "获取床位信息", notes = "获取床位信息")
    @PostMapping(value = "/showFreedBed")
    public AjaxResult showFreedBed(@RequestBody @Validated FreeBedDto freeBedDto) {
        SysProjServices sysProjServices = new SysProjServices();
        sysProjServices.setStartTime(freeBedDto.getStartTime());
        sysProjServices.setTotalTime(freeBedDto.getTotalTime());
        SysUsers sysUsers = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
        sysProjServices.setShopId(sysUsers.getShopId());
        List<SysBedInfo> beds = bedInfoService.findFreeBed(sysProjServices);
        return new AjaxResult(AjaxResult.STATUS_SUCCESS, beds, 0);
    }
}
zq-erp/src/main/java/com/matrix/system/app/authority/AppAuthorityManager.java
@@ -1,6 +1,9 @@
package com.matrix.system.app.authority;
import cn.hutool.crypto.SecureUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.matrix.core.constance.MatrixConstance;
import com.matrix.core.pojo.AjaxResult;
import com.matrix.core.tools.StringUtils;
@@ -98,12 +101,10 @@
        String redisKey = USER_POWER_REDISKEY_APP + SecureUtil.md5(user.getSuId()+"");
        Map<String, Object> cachePowerMap = LocalCache.get(redisKey);
        Map<String, Object> cachePowerMap = LocalCache.get(redisKey,new TypeReference<Map<String,Object>>(){});
        if (Objects.nonNull(cachePowerMap)) {
            userFunction = (Map<String, SysFunction>) cachePowerMap.get(USERFUNCTION);
            userUrlMapping = (List<String>) cachePowerMap.get(USER_URL_MAPPING);
            userFunction = JSONObject.parseObject(JSON.toJSONString( cachePowerMap.get(USERFUNCTION)), new TypeReference<Map<String, SysFunction>>(){});
            userUrlMapping =JSONObject.parseObject(JSON.toJSONString( cachePowerMap.get(USER_URL_MAPPING)) , new TypeReference<List<String>>(){});
        } else {
            // 获取用户所有权限
zq-erp/src/main/java/com/matrix/system/app/dto/CreateServiceOrderDto.java
@@ -25,6 +25,9 @@
    @ApiModelProperty(value = "美疗师ID")
    private Long beautyId;
    @ApiModelProperty(value = "床位ID")
    private Long bedId;
    @NotNull(message = "请选择预约时间")
    @JsonFormat(pattern = DateUtil.DATE_FORMAT_MM, timezone = "GMT+8")
    @ApiModelProperty(value = "预约时间")
@@ -42,6 +45,14 @@
    @ApiModelProperty(value = "资金密码")
    private String password;
    public Long getBedId() {
        return bedId;
    }
    public void setBedId(Long bedId) {
        this.bedId = bedId;
    }
    public String getPassword() {
        return password;
    }
zq-erp/src/main/java/com/matrix/system/app/dto/FreeBedDto.java
New file
@@ -0,0 +1,43 @@
package com.matrix.system.app.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.matrix.core.tools.DateUtil;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.util.Date;
/**
 * @author wzy
 * @date 2022-03-15
 **/
@ApiModel(value = "FreeBedDto", description = "获取床位信息接口接受参数类")
public class FreeBedDto {
    @NotNull(message = "选择预约时间")
    @JsonFormat(pattern = DateUtil.DATE_FORMAT_MM, timezone = "GMT+8")
    @ApiModelProperty(value = "预约开始时间")
    private Date startTime;
    @NotNull(message = "输入服务时长")
    @ApiModelProperty(value = "服务时长")
    private Integer totalTime;
    public Date getStartTime() {
        return startTime;
    }
    public void setStartTime(Date startTime) {
        this.startTime = startTime;
    }
    public Integer getTotalTime() {
        return totalTime;
    }
    public void setTotalTime(Integer totalTime) {
        this.totalTime = totalTime;
    }
}
zq-erp/src/main/java/com/matrix/system/common/authority/DefaultAuthorityManager.java
@@ -1,6 +1,9 @@
package com.matrix.system.common.authority;
import cn.hutool.crypto.SecureUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.matrix.core.constance.MatrixConstance;
import com.matrix.core.pojo.AjaxResult;
import com.matrix.core.tools.StringUtils;
@@ -13,6 +16,7 @@
import com.matrix.system.common.init.LocalCache;
import com.matrix.system.common.service.SysFunctionService;
import org.apache.commons.collections.CollectionUtils;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@@ -151,15 +155,12 @@
        SysUsers sysUser = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
        String redisKey = USER_POWER_REDISKEY_PC + SecureUtil.md5(sysUser.getSuId() + "");
        Map<String, Object> cachePowerMap = LocalCache.get(redisKey);
        Map<String, Object> cachePowerMap = LocalCache.get(redisKey,new TypeReference<Map<String,Object>>(){});
        if (Objects.nonNull(cachePowerMap)) {
            userFunction = (Map<String, SysFunction>) cachePowerMap.get(USERFUNCTION);
            menuFunction = (List<SysFunction>) cachePowerMap.get(MENUSFUNCTION);
            userUrlMapping = (List<String>) cachePowerMap.get(USER_URL_MAPPING);
            userFunction = JSONObject.parseObject(JSON.toJSONString( cachePowerMap.get(USERFUNCTION)), new TypeReference<Map<String, SysFunction>>(){});
            menuFunction = JSONObject.parseObject(JSON.toJSONString( cachePowerMap.get(MENUSFUNCTION)) ,new TypeReference<List<SysFunction>>(){});
            userUrlMapping =JSONObject.parseObject(JSON.toJSONString( cachePowerMap.get(USER_URL_MAPPING)) , new TypeReference<List<String>>(){});
        } else {
            // 获取用户所有权限
zq-erp/src/main/java/com/matrix/system/common/authority/strategy/AccountPasswordLogin.java
@@ -110,6 +110,7 @@
            throw new GlobleException(AppMessageCode.User.ACCOUNT_IS_LOCK);
        } else {
            addErrorLoginRecord(loginUser, AppConstance.LOGIN_FAIL);
            throw new GlobleException(AppMessageCode.User.ACCOUNT_PASSWORD_ERROR, sessionErrorTimes, sessionErrorTimes, 5);
        }
zq-erp/src/main/java/com/matrix/system/common/bean/SysCacheValue.java
New file
@@ -0,0 +1,39 @@
package com.matrix.system.common.bean;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
/**
 * 缓存对象
 */
@Data
public class SysCacheValue {
    @TableId(type= IdType.AUTO)
    private Long id;
    /**
     * 缓存key
     */
    private String cacheKey;
    /**
     * 过期时间,0 表示不过期,单位毫秒
     */
    private Long timeOut ;
    /**
     * 缓存值
     */
    private String cacheValue;
    /**
     * 类型名称
     */
    private String className;
    /**
     * 缓存创建时间
     */
    private Long createTime;
}
zq-erp/src/main/java/com/matrix/system/common/dao/SysCacheValueDao.java
New file
@@ -0,0 +1,14 @@
package com.matrix.system.common.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.matrix.system.common.bean.SysCacheValue;
import com.matrix.system.fenxiao.entity.ShopSalemanSettlement;
/**
 * @description 缓存对象
 * @author jyy
 * @date 2021-03-10 15:22
 */
public interface SysCacheValueDao extends BaseMapper<SysCacheValue> {
}
zq-erp/src/main/java/com/matrix/system/common/init/LocalCache.java
@@ -1,26 +1,64 @@
package com.matrix.system.common.init;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
import com.matrix.core.tools.LogUtil;
import com.matrix.core.tools.StringUtils;
import com.matrix.system.common.bean.SysCacheValue;
import com.matrix.system.common.dao.SysCacheValueDao;
import lombok.Data;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;
import java.util.Iterator;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.lang.reflect.Type;
import java.util.*;
import java.util.concurrent.*;
import java.util.concurrent.atomic.AtomicLong;
import java.util.stream.Collectors;
public class LocalCache {
@Component
public class LocalCache implements ApplicationRunner {
    /*
     * 清理线程运行状态 0 未启动,1 已启动
     */
    private static int CLEAR_THREAD_STATUS = 0;
    private static ConcurrentMap<String, Value> localCache = new ConcurrentHashMap(60);
    private static ConcurrentMap<String, CacheValue> localCache = new ConcurrentHashMap(60);
    private static ConcurrentLinkedQueue<Long> deadCache = new ConcurrentLinkedQueue<>();
    @Autowired
    private SysCacheValueDao sysCacheValueDao;
    @Override
    public void run(ApplicationArguments args) {
        //初始化缓存
        List<SysCacheValue> sysCacheValues = sysCacheValueDao.selectByMap(null);
        if(CollUtil.isNotEmpty(sysCacheValues)){
            LogUtil.debug("初始化缓存");
            localCache.putAll(buildValues(sysCacheValues));
        }
        startClearThread();
        startSaveStoreThread();
    }
    private Map<String,CacheValue> buildValues(List<SysCacheValue> sysCacheValues) {
        Map<String,CacheValue> storeCache=new HashMap<>();
        sysCacheValues.forEach(e->{
            CacheValue cacheValue=new CacheValue();
            BeanUtil.copyProperties(e,cacheValue);
            storeCache.put(cacheValue.getCacheKey(),cacheValue);
        });
        return storeCache;
    }
    /**
     * 根据key匹配多个缓存值
@@ -33,8 +71,8 @@
        return localCache.entrySet().stream()
                .filter(item -> StringUtils.isMatch(key, item.getKey()))
                .map(Map.Entry::getValue)
                .filter(item -> Objects.nonNull(item.value))
                .collect(Collectors.toMap(Value::getKey, item -> (T) item.value));
                .filter(item -> Objects.nonNull(item.cacheValue))
                .collect(Collectors.toMap(CacheValue::getCacheKey, item -> JSONObject.parseObject(item.cacheValue, new TypeReference<T>(){})));
    }
    /**
@@ -43,11 +81,26 @@
     * @param key
     * @param <T>
     * @return
     */
     *//*
    public static <T> T get(String key) {
        Value value = localCache.get(key);
        CacheValue value = localCache.get(key);
        if (Objects.nonNull(value)) {
            return (T) value.value;
            return JSONObject.parseObject(value.cacheValue, new TypeReference<T>(){});
        }
        return null;
    }
*/
    /**
     * 获取本地缓存,如果需要转换为List,Map类型的具体泛型使用本方法
     * @param key
     * @param typeReference
     * @param <T>
     * @return
     */
    public static <T> T get(String key,TypeReference typeReference) {
        CacheValue value = localCache.get(key);
        if (Objects.nonNull(value)) {
            return (T)JSONObject.parseObject(value.cacheValue, typeReference);
        }
        return null;
    }
@@ -60,9 +113,10 @@
     * @return
     */
    public static <T> T remove(String key) {
        Value value = localCache.remove(key);
        CacheValue value = localCache.get(key);
        if (Objects.nonNull(value)) {
            return (T) value.value;
            deadCache.add(value.getId());
            return (T) value.cacheValue;
        }
        return null;
    }
@@ -75,10 +129,10 @@
     */
    public static int batchRemove(String key) {
        int count = 0;
        Set<Map.Entry<String, Value>> entries = localCache.entrySet();
        Iterator<Map.Entry<String, Value>> iterator = entries.iterator();
        Set<Map.Entry<String, CacheValue>> entries = localCache.entrySet();
        Iterator<Map.Entry<String, CacheValue>> iterator = entries.iterator();
        while (iterator.hasNext()) {
            Map.Entry<String, Value> next = iterator.next();
            Map.Entry<String, CacheValue> next = iterator.next();
            if (StringUtils.isMatch(key, next.getKey())) {
                remove(next.getKey());
                count++;
@@ -110,25 +164,26 @@
        if (null != localCache.put(key, buildValue(key, value, timeOut))) {
            LogUtil.debug("覆盖原有缓存{}", key);
        }
        startClearThread();
    }
    /**
     * 重置缓存失效时间
     *
     * @param key
     */
    public static void resetExpire(String key) {
        Objects.requireNonNull(key);
        Value value = localCache.get(key);
        CacheValue value = localCache.get(key);
        if(Objects.nonNull(value)){
            value.getCreateTime().set(System.currentTimeMillis());
            value.setCreateTime(System.currentTimeMillis());
        }
    }
    /**
     * 清理过期对象
     */
    private synchronized static void startClearThread() {
    private synchronized void startClearThread() {
        if (CLEAR_THREAD_STATUS == 0) {
            ThreadFactory namedThreadFactory = new ThreadFactoryBuilder()
                    .setNameFormat("demo-pool-%d").build();
@@ -139,10 +194,10 @@
                CLEAR_THREAD_STATUS = 1;
                while (true) {
                    try {
                        Set<Map.Entry<String, Value>> entries = localCache.entrySet();
                        Iterator<Map.Entry<String, Value>> iterator = entries.iterator();
                        Set<Map.Entry<String, CacheValue>> entries = localCache.entrySet();
                        Iterator<Map.Entry<String, CacheValue>> iterator = entries.iterator();
                        while (iterator.hasNext()) {
                            Map.Entry<String, Value> next = iterator.next();
                            Map.Entry<String, CacheValue> next = iterator.next();
                            if (next.getValue().timeOut == 0) {
                                continue;
@@ -150,9 +205,14 @@
                            boolean isTimeOut = (System.currentTimeMillis() - next.getValue().getCreateTime().longValue()) > next.getValue().timeOut;
                            if (isTimeOut) {
                                Value removed = localCache.remove(next.getKey());
                                LogUtil.debug("清除过期对象:{}", removed.value);
                                CacheValue removed = remove(next.getKey());
                                LogUtil.debug("清除过期对象:{}", removed.cacheValue);
                            }
                        }
                        if(CollUtil.isNotEmpty(deadCache)){
                            LogUtil.debug("删除数据库中的缓存:{}",deadCache);
                            sysCacheValueDao.deleteBatchIds(deadCache);
                            deadCache.clear();
                        }
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
@@ -166,49 +226,94 @@
        }
    }
    /**
     * 缓存对象写入磁盘
     */
    private synchronized void startSaveStoreThread() {
    private static Value buildValue(String key, Object value) {
            ThreadFactory namedThreadFactory = new ThreadFactoryBuilder()
                    .setNameFormat("startSaveStoreThread-pool-%d").build();
            ExecutorService singleThreadPool = new ThreadPoolExecutor(1, 1,
                    0L, TimeUnit.MILLISECONDS,
                    new LinkedBlockingQueue<Runnable>(1), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy());
            singleThreadPool.execute(() -> {
                try {
                    while (true){
                        Collection<CacheValue> values = localCache.values();
                        List<CacheValue> notSavedList = values.stream().filter(v -> !v.saved).collect(Collectors.toList());
                        if(CollUtil.isNotEmpty(notSavedList)){
                            List<String> collect = notSavedList.stream().map(e -> e.getCacheKey()).collect(Collectors.toList());
                            sysCacheValueDao.delete(new LambdaQueryWrapper<SysCacheValue>().in(SysCacheValue::getCacheKey,collect));
                            notSavedList.forEach(e->{
                                e.setSaved(true);
                                SysCacheValue sysCacheValue = buildSysCacheValue(e);
                                sysCacheValueDao.insert(sysCacheValue);
                                e.setId(sysCacheValue.getId());
                                LogUtil.debug("持久化缓存对象:{}",e.getCacheKey());
                            });
                        }
                        Thread.sleep(1000);
                    }
                } catch (Exception e) {
                    LogUtil.error("存储缓存对象线程异常停止", e);
                }
            });
    }
    private SysCacheValue buildSysCacheValue(CacheValue e) {
        SysCacheValue cacheValue=new SysCacheValue();
        BeanUtil.copyProperties(e,cacheValue);
        return  cacheValue;
    }
    private static CacheValue buildValue(String key, Object value) {
        return buildValue(key, value, 0);
    }
    private static Value buildValue(String key, Object value, long timeOut) {
        Value instances = new Value();
        instances.createTime = new AtomicLong(System.currentTimeMillis());
        instances.key = key;
        instances.value = value;
    private static CacheValue buildValue(String key, Object value, long timeOut) {
        CacheValue instances = new CacheValue();
        instances.createTime = System.currentTimeMillis();
        instances.cacheKey = key;
        instances.cacheValue = JSON.toJSONString(value);
        instances.timeOut = timeOut;
        return instances;
    }
    /**
     * 缓存对象
     */
    @Data
    static class Value {
    static class CacheValue {
        private Long id ;
        /**
         * 过期时间,0 表示不过期,单位毫秒
         */
        private long timeOut = 0;
        private Long timeOut = 0L;
        /**
         * 缓存key
         */
        private String key;
        private String cacheKey;
        /**
         * 缓存值
         */
        private Object value;
        private String cacheValue;
        /**
         * 缓存创建时间
         */
        private AtomicLong createTime;
        private Long createTime;
        private boolean saved=false;
        private boolean live=true;
    }
zq-erp/src/main/java/com/matrix/system/common/init/UserCacheManager.java
@@ -7,11 +7,13 @@
 */
package com.matrix.system.common.init;
import com.alibaba.fastjson.TypeReference;
import com.matrix.core.constance.SystemErrorCode;
import com.matrix.core.exception.GlobleException;
import com.matrix.core.tools.StringUtils;
import com.matrix.core.tools.UUIDUtil;
import com.matrix.core.tools.WebUtil;
import com.matrix.system.hive.bean.SysVipInfo;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@@ -44,7 +46,7 @@
    public boolean isUserLogin() {
        String token = getUserToken();
        if (StringUtils.isNotBlank(token)) {
            return LocalCache.get(token) != null;
            return LocalCache.get(token,new TypeReference<String>(){}) != null;
        } else {
            return false;
        }
@@ -92,7 +94,7 @@
    public <T> T getLoginUser() {
        String userToken = getUserToken();
        if (userToken != null) {
            T user = LocalCache.get(userToken);
            T user = LocalCache.get(userToken,new TypeReference<SysVipInfo>(){});
            if (Objects.nonNull(user)) {
                //重新设置key过期时间
                LocalCache.resetExpire(userToken);
zq-erp/src/main/java/com/matrix/system/common/interceptor/ApiUserLoginInterceptor.java
@@ -1,6 +1,7 @@
package com.matrix.system.common.interceptor;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.matrix.core.constance.MatrixConstance;
import com.matrix.core.pojo.AjaxResult;
@@ -61,7 +62,7 @@
            return false;
        }
        SysUsers sysUsers = LocalCache.get(token);
        SysUsers sysUsers = LocalCache.get(token,new TypeReference<SysUsers>(){});
        if (Objects.isNull(sysUsers)) {
            ajaxResult.setInfo("login time out");
            response.getWriter().write(new ObjectMapper().writeValueAsString(ajaxResult));
zq-erp/src/main/java/com/matrix/system/common/interceptor/HostInterceptor.java
@@ -1,5 +1,6 @@
package com.matrix.system.common.interceptor;
import com.alibaba.fastjson.TypeReference;
import com.matrix.core.tools.LogUtil;
import com.matrix.core.tools.StringUtils;
import com.matrix.core.tools.WebUtil;
@@ -47,7 +48,7 @@
            return false;
        }
        Map<String, SysCompany> companyMap = LocalCache.get("companyMap");
        Map<String, SysCompany> companyMap = LocalCache.get("companyMap",new TypeReference<Map<String, SysCompany>>(){});
        SysCompany company=companyMap.get(host);
        if(Objects.nonNull(company)){
            // 查到公司后存到sesssion中
zq-erp/src/main/java/com/matrix/system/common/service/impl/SysUsersServiceImpl.java
@@ -9,6 +9,7 @@
import com.matrix.core.tools.LogUtil;
import com.matrix.core.tools.ModelUtils;
import com.matrix.core.tools.WebUtil;
import com.matrix.system.app.authority.AppAuthorityManager;
import com.matrix.system.common.authority.DefaultAuthorityManager;
import com.matrix.system.common.bean.SysUserLoginRecord;
import com.matrix.system.common.bean.SysUsers;
@@ -134,8 +135,10 @@
        //删除用户权限缓存
        String redisKey=DefaultAuthorityManager.USER_POWER_REDISKEY+ SecureUtil.md5(oldSysUsers.getSuId()+"");
        String redisKeyPc=DefaultAuthorityManager.USER_POWER_REDISKEY_PC+ SecureUtil.md5(oldSysUsers.getSuId()+"");
        String appRedisKey = AppAuthorityManager.USER_POWER_REDISKEY_APP + SecureUtil.md5(oldSysUsers.getSuId()+"");
        LocalCache.remove(redisKey);
        LocalCache.remove(redisKeyPc);
        LocalCache.remove(appRedisKey);
        return MatrixConstance.DML_SUCCESSS;
    }
zq-erp/src/main/java/com/matrix/system/common/tools/LocationUtil.java
@@ -1,5 +1,7 @@
package com.matrix.system.common.tools;
import java.math.BigDecimal;
public class LocationUtil {
    private static final double EARTH_RADIUS = 6378.137;
@@ -17,7 +19,7 @@
     *  shopX 店铺位置经度
     *  shopY  店铺位置纬度
     */
    public static double getDistance(double locX, double locY, double shopX, double shopY) {
    public static BigDecimal getDistance(double locX, double locY, double shopX, double shopY) {
        double a, b, d, sa2, sb2;
        locY = rad(locY);
        shopY = rad(shopY);
@@ -29,12 +31,13 @@
        d = 2   * EARTH_RADIUS
                * Math.asin(Math.sqrt(sa2 * sa2 + Math.cos(locY)
                * Math.cos(shopY) * sb2 * sb2));
        return d;
        return BigDecimal.valueOf(d);
    }
    public static void main(String[] args) {
        // 112.886891,28.222562,114.061937,22.626003  -- 634093.3209722887
        // 113.930692,22.939454 -- 597367.3546527711
        System.out.println(getDistance(112.886891d, 28.222562d, 113.930692, 22.939454));
//        System.out.println(getDistance(112.886891d, 28.222562d, 113.930692, 22.939454));
        System.out.println(BigDecimal.ONE.compareTo(BigDecimal.ZERO)>0);
    }
}
zq-erp/src/main/java/com/matrix/system/hive/action/FollowuController.java
New file
@@ -0,0 +1,40 @@
package com.matrix.system.hive.action;
import com.matrix.beauty.followup.entry.SysFollowup;
import com.matrix.beauty.followup.service.SysFollowupService;
import com.matrix.core.constance.MatrixConstance;
import com.matrix.core.pojo.AjaxResult;
import com.matrix.core.tools.WebUtil;
import com.matrix.system.common.bean.SysUsers;
import com.matrix.system.hive.dto.FollowuListDto;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
/**
 * @description 跟进记录
 */
@RestController
@RequestMapping(value = "admin/followu")
public class FollowuController extends BaseController{
    @Resource
    private SysFollowupService followupService;
    /**
     * 显示所有的会员卡等级信息
     */
    @RequestMapping(value = "/showList")
    public  AjaxResult showList(@RequestBody @Validated FollowuListDto followuListDto) {
        SysUsers users = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
        followuListDto.setCompanyId(users.getCompanyId());
        followuListDto.setSelfStaff(users.getSuId());
        List<SysFollowup> list= followupService.findVipFollowuByPage(followuListDto);
        return  AjaxResult.buildSuccessInstance(list);
    }
}
zq-erp/src/main/java/com/matrix/system/hive/action/OrderController.java
@@ -219,7 +219,7 @@
        if (!DataAuthUtil.hasAllShopAuth()) {
            sysOrder.setShopId(getMe().getShopId());
        }
        QueryUtil.setQueryLimitCom(sysOrder);
        sysOrder.setCompanyId(getMe().getCompanyId());
        return new AjaxResult(AjaxResult.STATUS_SUCCESS, orderService.findInPage(sysOrder, pageVo),
                orderService.findTotal(sysOrder));
    }
zq-erp/src/main/java/com/matrix/system/hive/action/ProjUseController.java
@@ -1,5 +1,6 @@
package com.matrix.system.hive.action;
import cn.hutool.core.util.StrUtil;
import com.matrix.core.constance.MatrixConstance;
import com.matrix.core.exception.GlobleException;
import com.matrix.core.pojo.AjaxResult;
@@ -19,6 +20,7 @@
import com.matrix.system.hive.service.MoneyCardUseService;
import com.matrix.system.hive.service.SysProjUseService;
import com.matrix.system.hive.service.SysProjuseFreezeService;
import jodd.util.StringUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
@@ -248,8 +250,15 @@
//       String dirPath = "E:";
       String dirPath =  fileStoragePath;
        File saveFile = new File(dirPath + "/" + fileName);
        file.transferTo(saveFile);
        File saveFile =new File (new File(dirPath).getAbsolutePath() + File.separator + fileName);
        if (!saveFile.exists())
        {
            if (!saveFile.getParentFile().exists())
            {
                saveFile.getParentFile().mkdirs();
            }
        }
        file.transferTo(saveFile.getAbsoluteFile());
        SysUsers sysUsers = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
@@ -321,7 +330,7 @@
        Object tel = objects.get(1);
        if (tel != null) {
            String telStr = tel.toString();
            SysVipInfo vipInfo = vipInfoDao.selectByPhone(telStr,sysUsers.getCompanyId());
            SysVipInfo vipInfo = vipInfoDao.selectByPhone(StrUtil.trim(telStr),sysUsers.getCompanyId());
            if (vipInfo == null) {
                vipInfo = new SysVipInfo();
                vipInfo.setShopId(sysUsers.getShopId());
@@ -378,7 +387,7 @@
        Object tel = objects.get(1);
        if (tel != null) {
            String telStr = tel.toString();
            SysVipInfo vipInfo = vipInfoDao.selectByPhone(telStr,sysUsers.getCompanyId());
            SysVipInfo vipInfo = vipInfoDao.selectByPhone(StrUtil.trim(telStr),sysUsers.getCompanyId());
            if (vipInfo == null) {
                vipInfo = new SysVipInfo();
                vipInfo.setShopId(sysUsers.getShopId());
zq-erp/src/main/java/com/matrix/system/hive/action/ServiceRecordController.java
zq-erp/src/main/java/com/matrix/system/hive/action/VipInfoController.java
@@ -7,6 +7,7 @@
import com.matrix.core.pojo.PaginationVO;
import com.matrix.core.tools.DateUtil;
import com.matrix.core.tools.LogUtil;
import com.matrix.core.tools.StringUtils;
import com.matrix.core.tools.WebUtil;
import com.matrix.core.tools.excl.ExcelSheetPO;
import com.matrix.core.tools.excl.ExcelUtil;
@@ -336,8 +337,14 @@
    @RequestMapping(value = "/del")
    public @ResponseBody
    AjaxResult del(String keys) {
        return remove(vipInfoService, keys);
            List<Long> ids = StringUtils.strToCollToLong(keys, ",");
            int i = vipInfoService.removeLogic(ids);
            if (i > 0) {
                return new AjaxResult(AjaxResult.STATUS_SUCCESS, "成功删除" + i + "条数据");
            } else {
                return new AjaxResult(AjaxResult.STATUS_FAIL, "删除失败");
            }
//        return remove(vipInfoService, keys);
    }
    /**
zq-erp/src/main/java/com/matrix/system/hive/dao/MoneyCardUseDao.java
@@ -1,5 +1,6 @@
package com.matrix.system.hive.dao;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.matrix.core.pojo.PaginationVO;
import com.matrix.system.hive.bean.MoneyCardUse;
@@ -88,4 +89,6 @@
    int updateInvalidMoneyCardUse();
    void updateId(@Param("id")Long id, @Param("newId")Long i);
    int saveInTimeReceiptWare(@Param("storeReceiptWares") List<JSONObject> storeReceiptWares);
}
zq-erp/src/main/java/com/matrix/system/hive/dao/SysShopInfoDao.java
@@ -31,6 +31,7 @@
    
    public SysShopInfo  selectById(Long id);
    
    public SysShopInfo selectByShopName(@Param("shopName") String shopName);
    public List<SysShopInfo> selectShopInfo(Long companyId);
zq-erp/src/main/java/com/matrix/system/hive/dao/SysVipAlbumDao.java
@@ -1,10 +1,13 @@
package com.matrix.system.hive.dao;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
import com.matrix.beauty.followup.entry.SysFollowup;
import com.matrix.core.pojo.PaginationVO;
import com.matrix.system.hive.bean.SysVipAlbum;
import com.matrix.system.hive.dto.FollowuListDto;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
/**
 * @description 客户相册
zq-erp/src/main/java/com/matrix/system/hive/dao/SysVipInfoDao.java
@@ -27,6 +27,8 @@
    public int deleteByIds(@Param("list") List<Long> list);
    public int deleteLogicByIds(@Param("list") List<Long> list);
    public int deleteById(Long id);
    public List<SysVipInfo> selectInPage(@Param("record") SysVipInfo sysVipInfo, @Param("pageVo") PaginationVO pageVo);
zq-erp/src/main/java/com/matrix/system/hive/dto/FollowuListDto.java
New file
@@ -0,0 +1,36 @@
package com.matrix.system.hive.dto;
import com.matrix.core.pojo.PaginationDto;
import lombok.Data;
import javax.validation.constraints.NotNull;
/** 查询客户跟进记录
 * @author jyy
 * @date 2021-01-27
 **/
@Data
public class FollowuListDto extends PaginationDto {
    /**
     * 客户id
     */
    @NotNull
    private Long vipId;
    /**
     * 员工id
     */
    private Long staffId;
    /**
     * 当前查询人
     */
    private Long selfStaff;
    /**
     * 公司id
     */
    private Long companyId;
}
zq-erp/src/main/java/com/matrix/system/hive/service/SysVipInfoService.java
@@ -49,6 +49,13 @@
     */
    public int remove(List<Long> list);
    /**
     * 批量删除SysVipInfo
     *
     */
    public int removeLogic(List<Long> list);
    /**
     * 根据id删除SysVipInfo
     * 
zq-erp/src/main/java/com/matrix/system/hive/service/imp/ShoppingGoodsServiceImpl.java
@@ -1,5 +1,6 @@
package com.matrix.system.hive.service.imp;
import cn.hutool.core.collection.CollUtil;
import com.matrix.core.constance.MatrixConstance;
import com.matrix.core.exception.GlobleException;
import com.matrix.core.pojo.PaginationVO;
@@ -31,6 +32,8 @@
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
@@ -102,7 +105,6 @@
                Arrays.asList(SysOrderItemDto::getCount, SysOrderItemDto::getGoodsId));
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public int add(ShoppingGoods shoppingGoods) {
@@ -117,10 +119,14 @@
        }
        shoppingGoods.setShopId(sysUsers.getShopId());
        // 校验去重
        if (serviceUtil.addCheckRepeatTowColumn("shopping_goods",
                "code", shoppingGoods.getCode(),
                "company_id", shoppingGoods.getCompanyId())) {
        //去重查询
        ShoppingGoods queryGoods=new ShoppingGoods();
        queryGoods.setCompanyId(shoppingGoods.getCompanyId());
        queryGoods.setCode(shoppingGoods.getCode());
        queryGoods.setIsDel(ShoppingGoods.NORMAL);
        List<ShoppingGoods>  oldGoods=shoppingGoodsDao.selectByModel(queryGoods);
        if(CollUtil.isNotEmpty(oldGoods)){
            throw new GlobleException("编号" + shoppingGoods.getCode() + "重复");
        }
@@ -280,6 +286,17 @@
    @Override
    @Transactional(rollbackFor = Exception.class)
    public int remove(List<Long> list) {
        SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
        SysShopInfo zbShop = shopInfoDao.selectZbShop(user.getCompanyId());
        //非总部员工只能删除自己门店的产品
        if(user.getShopId()!=zbShop.getId()){
            //校验是否可以删除
            List<ShoppingGoods> dataList = shoppingGoodsDao.selectByIds(list);
            List<ShoppingGoods> collect = dataList.stream().filter(goods -> !Objects.equals(user.getShopId(), goods.getShopId())).collect(Collectors.toList());
            if(CollUtil.isNotEmpty(collect)){
                throw new GlobleException("非总部员工只能删除自己门店的产品");
            }
        }
        return shoppingGoodsDao.deleteByIds(list);
    }
zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysGoodsServiceImpl.java
@@ -1,8 +1,5 @@
package com.matrix.system.hive.service.imp;
import java.util.ArrayList;
import java.util.List;
import com.matrix.core.constance.MatrixConstance;
import com.matrix.core.exception.GlobleException;
import com.matrix.core.pojo.PaginationVO;
@@ -10,8 +7,8 @@
import com.matrix.system.common.bean.SysUsers;
import com.matrix.system.common.dao.UtilDao;
import com.matrix.system.common.tools.ServiceUtil;
import com.matrix.system.constance.Dictionary;
import com.matrix.system.constance.TableMapping;
import com.matrix.system.hive.bean.SysGoods;
import com.matrix.system.hive.dao.SysGoodsDao;
import com.matrix.system.hive.service.SysGoodsService;
@@ -19,7 +16,7 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.matrix.system.constance.Dictionary;
import java.util.List;
/**
zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysProjServicesServiceImpl.java
@@ -254,9 +254,13 @@
        sysProjServices.setTotalTime(totalTime);
        sysProjServices.setMoney(new BigDecimal(hkPrice).setScale(2, BigDecimal.ROUND_HALF_DOWN).doubleValue());
        sysProjServicesDao.update(sysProjServices);
        //jyytodo 小程序订单没有操作人
        Long userId=0L;
        if(user!=null){
            userId=  user.getSuId();
        }
        //保存单据日志
        operationLogService.saveOperation(sysProjServices.getCompanyId(), sysProjServices.getShopId(),user.getSuId(),
        operationLogService.saveOperation(sysProjServices.getCompanyId(), sysProjServices.getShopId(),userId,
                OperationFunctionEnum.SERVICE_ORDER,
                OperationButtonEnum.CREATE,
                sysProjServices.getId(),
@@ -794,15 +798,15 @@
        BusParameterSettings principalConsumption = busParameterSettingsDao.selectCompanyParamByCode(ScoreSettingConstant.PRINCIPAL_CONSUMPTION, vipInfo.getCompanyId());
        //本金消耗
        if (principalPrice > 0
                && StringUtils.isNotBlank(principalConsumption.getParamValue())) {
                && StringUtils.isNotBlank(principalConsumption.getParamValue()) && Double.parseDouble(principalConsumption.getParamValue()) > 0 ) {
            principalConsumScore[0] = (int) (principalPrice / Double.parseDouble(principalConsumption.getParamValue()));
            if (StringUtils.isNotBlank(principalConsumption.getParamValue1())) {
            if (StringUtils.isNotBlank(principalConsumption.getParamValue1()) && Double.parseDouble(principalConsumption.getParamValue1()) > 0 ) {
                principalConsumScore[1] = (int) (principalPrice / Double.parseDouble(principalConsumption.getParamValue1()));
            }
            if (StringUtils.isNotBlank(principalConsumption.getParamValue2())) {
            if (StringUtils.isNotBlank(principalConsumption.getParamValue2()) && Double.parseDouble(principalConsumption.getParamValue2()) > 0 ) {
                principalConsumScore[2] = (int) (principalPrice / Double.parseDouble(principalConsumption.getParamValue2()));
            }
        }
@@ -811,15 +815,15 @@
        BusParameterSettings giveConsumption = busParameterSettingsDao.selectCompanyParamByCode(ScoreSettingConstant.GIVE_CONSUMPTION, vipInfo.getCompanyId());
        //本金消耗
        if (giftPrice > 0
                && StringUtils.isNotBlank(giveConsumption.getParamValue())) {
                && StringUtils.isNotBlank(giveConsumption.getParamValue()) &&  Double.parseDouble(giveConsumption.getParamValue())>0) {
            giveConsumScore[0] = (int) (giftPrice / Double.parseDouble(giveConsumption.getParamValue()));
            if (StringUtils.isNotBlank(giveConsumption.getParamValue1())) {
            if (StringUtils.isNotBlank(giveConsumption.getParamValue1()) && Double.parseDouble(giveConsumption.getParamValue1())>0) {
                giveConsumScore[1] = (int) (giftPrice / Double.parseDouble(giveConsumption.getParamValue1()));
            }
            if (StringUtils.isNotBlank(giveConsumption.getParamValue2())) {
            if (StringUtils.isNotBlank(giveConsumption.getParamValue2()) && Double.parseDouble(giveConsumption.getParamValue2())>0 ) {
                giveConsumScore[2] = (int) (giftPrice / Double.parseDouble(giveConsumption.getParamValue2()));
            }
        }
zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysVipInfoServiceImpl.java
@@ -188,6 +188,13 @@
    }
    @Override
    public int removeLogic(List<Long> list) {
        return sysVipInfoDao.deleteLogicByIds(list);
    }
    @Override
    public int removeById(Long id) {
        return sysVipInfoDao.deleteById(id);
zq-erp/src/main/java/com/matrix/system/hiveErp/action/ErpVipInfoController.java
@@ -185,8 +185,15 @@
    @RequestMapping(value = "/del")
    public @ResponseBody
    AjaxResult del(String keys) {
        List<Long> ids = StringUtils.strToCollToLong(keys, ",");
        int i = vipInfoService.removeLogic(ids);
        if (i > 0) {
            return new AjaxResult(AjaxResult.STATUS_SUCCESS, "成功删除" + i + "条数据");
        } else {
            return new AjaxResult(AjaxResult.STATUS_FAIL, "删除失败");
        }
        return remove(vipInfoService, keys);
//        return remove(vipInfoService, keys);
    }
    /**
zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxUserAction.java
@@ -158,6 +158,7 @@
    @RequestMapping(value = "/findUserInfo")
    public @ResponseBody
    AjaxResult findUserInfo() {
        AjaxResult res = new AjaxResult();
        SysVipInfo loginUser = userCacheManager.getLoginUser();
        SysVipInfo sysVipInfo = sysVipInfoService.findById(loginUser.getId());
@@ -169,9 +170,7 @@
                sysVipInfo.setBalance(0D);
                sysVipInfo.setPointAll(0);
            }
        }
        AjaxResult res = new AjaxResult();
        res.putInMap("couponCount", shopCouponRecordDao.countUnuseCouponRecord(loginUser.getId()));
        res.putInMap("prizeCount", activitySignReceiveRecordDao.getSignAwardReceiveCount(loginUser.getId(), loginUser.getCompanyId()));
        res.putInMap("userInfo", sysVipInfo);
@@ -183,6 +182,7 @@
            res.putInMap("vipLevel", sysVipInfo.getVipLevel().getLevelName());
        } else {
            res.putInMap("vipLevel", "初级会员");
            }
        }
        res.setStatus(AjaxResult.STATUS_SUCCESS);
        return res;
@@ -238,7 +238,7 @@
        if ((loginUser.getIsSales() == null || loginUser.getIsSales() == 2)
                && StringUtils.isNotBlank(sysVipInfo.getNickName())) {//目前还不是分销员
            BusParameterSettings fxSwith = busParameterSettingsDao.selectCompanyParamByCode(FenxiaoSettingConstant.FX_SWITCH, HostInterceptor.getCompanyId());
            if (fxSwith!=null && fxSwith.getParamValue().equals("1")) {//开启分销
            if (fxSwith!=null && "1".equals(fxSwith.getParamValue())) {//开启分销
                BusParameterSettings applyWay = busParameterSettingsDao.selectCompanyParamByCode(FenxiaoSettingConstant.FX_APPLY_WAY, loginUser.getCompanyId());
                if (applyWay.getParamValue().equals(FenxiaoSettingConstant.FX_APPLY_WAY_AUTO)) {//自动成为分销员
                    QueryWrapper<ShopSalesmanApply> queryWrapper = new QueryWrapper<>();
zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/YuyueAction.java
@@ -122,7 +122,7 @@
            return new AjaxResult(AjaxResult.STATUS_SUCCESS, shopList);
        }
        Double distance = null;
        BigDecimal distance = null;
        SysShopInfo nearestShop = null;
        AjaxResult ajaxResult = new AjaxResult("200", shopList);
@@ -130,9 +130,9 @@
            for (SysShopInfo shopInfo : shopList) {
                Double shopX = Double.parseDouble(shopInfo.getLongitude());
                Double shopY = Double.parseDouble(shopInfo.getLatitude());
                Double disResult = LocationUtil.getDistance(Double.parseDouble(locX), Double.parseDouble(locY), shopX, shopY);
                shopInfo.setDistance(new BigDecimal(disResult).setScale(1, BigDecimal.ROUND_HALF_UP));
                if (distance == null || distance > disResult) {
                BigDecimal disResult = LocationUtil.getDistance(Double.parseDouble(locX), Double.parseDouble(locY), shopX, shopY);
                shopInfo.setDistance(disResult);
                if (distance == null || distance.compareTo(disResult)>0) {
                    distance = disResult;
                    nearestShop = shopInfo;
                }
zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WxShopActivitiesSecKillServiceImpl.java
@@ -23,6 +23,7 @@
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.util.ArrayList;
@@ -60,6 +61,7 @@
    private ShopActivitiesSeckillRecordDao shopActivitiesSeckillRecordDao;
    @Override
    @Transactional(rollbackFor = Exception.class)
    public AjaxResult createSecKillOrder(CreateSecKillDTO secKillDTO) throws Exception {
        SysVipInfo sysVipInfo = userCacheManager.getLoginUser();
        ShopActivitiesSeckillInfo seckillInfo = shopActivitiesSeckillInfoDao.selectById(secKillDTO.getId());
@@ -173,7 +175,7 @@
        //TODO 更新库存和销量 更新库存和销量[考虑和erp库存联动]
        wxShopOrderUtil.updateProductAndSkuInfo(details);
        shopOrder.setUserId(secKillDTO.getId());
        shopOrder.setUserId(sysVipInfo.getId());
        shopOrder.setCreateBy("微信小程序生成");
        shopOrder.setUpdateBy("微信小程序生成");
        shopOrder.setCommodityPrice(secKillDTO.getPrice());
zq-erp/src/main/resources/config/application-alpha.properties
@@ -3,9 +3,9 @@
#线上测试环境
spring.datasource.username=ct_test
spring.datasource.password=123456
spring.datasource.url=jdbc:mysql://120.27.238.55:3306/hive_test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&allowMultiQueries=true&transformedBitIsBoolean=true&serverTimezone=GMT%2B8
spring.datasource.username=db_alpha
spring.datasource.password=Alpha!qaz@wsx
spring.datasource.url=jdbc:mysql://124.70.222.34/db_alpha?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&allowMultiQueries=true&transformedBitIsBoolean=true&serverTimezone=GMT%2B8
@@ -37,10 +37,11 @@
#rabbitMQ配置
rabbitmq.host=120.27.238.55
rabbitmq.host=47.111.134.136
rabbitmq.port=5672
rabbitmq.username=ct_rabbit
rabbitmq.password=123456
rabbitmq.username=hivequeue
rabbitmq.password=hivequeueadmin
useRabbit=true
server.session.timeout=120
@@ -61,7 +62,7 @@
#是否启用debug模式
debug=false
# 日志文件保存地址
log_path=/home/javaweb/hive/log
log_path=/mnt/hive/log
# 系统语言环境 zh中文,us英文
system_language=zh
@@ -72,9 +73,9 @@
default_password=123
#nginx静态资源访问地址
static_resource_url=http://120.27.238.55:8000/hive/static/uploadeFile/
static_resource_url=https://hive.file.csxuncong.com/uploadeFile/alpha/
#文件保存地址
file_storage_path=/home/javaweb/webresource/hive/static/uploadeFile/
file_storage_path=/mnt/hive/static/uploadeFile/alpha/
#文件上传大小字节为单位  10MB
maxUploadSize=10485760
@@ -119,6 +120,8 @@
wechar_login_url =https://api.weixin.qq.com/sns/jscode2session?appid=%s&secret=%s&js_code=%s&grant_type=authorization_code
xcx_appid =wx3836ab3c1490ff29
xcx_secret =39a3687ec5b2666ed68e7c8b83b26b47
xcx_manager_appid=wx0d5655a6443807d3
xcx_manager_secret=b04e675224437c4f17c3068b6c2377b6
#微信支付调试开关
wx_pay_debug_onoff = false
@@ -165,3 +168,27 @@
gzh_appid=wx57e6335559bdbda6
gzh_secret=ecb408af170e3890e6544290cad33760
#百度编辑器,覆盖默认配置
ueditor.imageUrlPrefix=https://hive.file.csxuncong.com/uploadeFile/alpha
ueditor.imagePathFormat=/image/{yyyy}{mm}{dd}/{time}{rand:6}
ueditor.scrawlPathFormat=/ueditor/jsp/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}
ueditor.scrawlUrlPrefix=https://hive.file.csxuncong.com/uploadeFile/alpha
ueditor.snapscreenPathFormat=/ueditor/jsp/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}
ueditor.snapscreenUrlPrefix=https://hive.file.csxuncong.com/uploadeFile/alpha
ueditor.catcherPathFormat=/ueditor/jsp/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}
ueditor.catcherUrlPrefix=https://hive.file.csxuncong.com/uploadeFile/alpha
ueditor.videoPathFormat=/ueditor/jsp/upload/video/{yyyy}{mm}{dd}/{time}{rand:6}
ueditor.videoUrlPrefix=http://127.0.0.1:1088/uploadeFile/
ueditor.filePathFormat=/ueditor/jsp/upload/file/{yyyy}{mm}{dd}/{time}{rand:6}
ueditor.fileUrlPrefix=http://127.0.0.1:1088/uploadeFile/
ueditor.imageManagerListPath=http://127.0.0.1:1088/uploadeFile/
ueditor.fileManagerListPath=http://127.0.0.1:1088/uploadeFile/
zq-erp/src/main/resources/config/application-local.properties
@@ -1,8 +1,8 @@
#数据库链接
spring.datasource.username=ct_test
spring.datasource.password=123456
spring.datasource.url=jdbc:mysql://120.27.238.55:3306/hive_test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&allowMultiQueries=true&transformedBitIsBoolean=true&serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/md_test_local?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&allowMultiQueries=true&transformedBitIsBoolean=true&serverTimezone=GMT%2B8
#是否启用debug模式
@@ -15,6 +15,9 @@
#文件保存地址
file_storage_path= D:\\webresources\\uploadeFile\\
local.cache.path= D:\\webresources\\uploadeFile\\
#微信支付调试开关
wx_pay_debug_onoff = false
zq-erp/src/main/resources/config/application.properties
@@ -1,5 +1,5 @@
spring.profiles.active=test
spring.profiles.active=alpha
evn=dev
server.port=8080
zq-erp/src/main/resources/config/prd/system.properties
zq-erp/src/main/resources/mybatis/mapper/activity/ActivitySignReceiveRecordDao.xml
@@ -25,7 +25,7 @@
        LEFT JOIN shop_activities d ON a.award_id = d.id
        <where>
            a.company_id = #{record.companyId}
            and a.activity_id = #{record.actId}
            and a.activity_id = #{record.actId} and (b.IS_DELETE is null or b.IS_DELETE = '')
            <if test="record.yhmc != null and record.yhmc != ''">
                and b.nick_name like concat('%',#{record.yhmc},'%')
            </if>
zq-erp/src/main/resources/mybatis/mapper/activity/ActivitySignWriteoffDao.xml
@@ -69,7 +69,7 @@
        left join activity_sign_receive_record e on a.receive_id= e.id
        left join shop_delivery_info f on a.logistics_id= f.id
        <where>
            a.company_id = #{record.companyId}
            a.company_id = #{record.companyId} and (b.IS_DELETE is null or b.IS_DELETE = '')
            <if test="record.zjzxm != null and record.zjzxm != ''">
                and b.nick_name like concat('%',#{record.zjzxm},'%')
            </if>
@@ -90,7 +90,7 @@
        FROM
        activity_sign_receive_record a
        left join sys_vip_info b on a.user_id= b.id
        where a.user_id = #{userId} and a.award_id = #{receiveId}
        where a.user_id = #{userId} and a.award_id = #{receiveId} and  (b.IS_DELETE is null or b.IS_DELETE = '')
    </select>
    <select id="selectShopDeliveryInfoByLogisticsId" resultType="com.matrix.system.shopXcx.bean.ShopDeliveryInfo">
zq-erp/src/main/resources/mybatis/mapper/common/OperstionLogDao.xml
@@ -24,7 +24,7 @@
        LEFT JOIN sys_vip_info c ON a.vip_id = c.id
        LEFT JOIN sys_shop_info d ON a.shop_id = d.id
        <where>
            a.company_id=#{param.companyId}
            a.company_id=#{param.companyId} and  (c.IS_DELETE is null or c.IS_DELETE = '')
            <if test="param.shopId != null and param.shopId != 0  ">
                and  a.shop_id=#{param.shopId}
            </if>
zq-erp/src/main/resources/mybatis/mapper/fenxiao/ShopSalesmanApplyDao.xml
@@ -55,7 +55,7 @@
            sys_vip_info a
        WHERE
            a.recommend_id = #{userId}
          AND a.is_sales = #{isSales}
          AND a.is_sales = #{isSales} and  (a.IS_DELETE is null or a.IS_DELETE = '')
    </select>
    <select id="findShopSalesmanApplyList" resultType="com.matrix.system.fenxiao.vo.ShopSalesmanApplyVo">
@@ -68,9 +68,9 @@
        WHERE s.id = a.parent_user_id ) parentUser,
        c.nick_name parentUserNow,
        ( SELECT COUNT(*) FROM sys_vip_info
        WHERE recommend_id = a.user_id AND is_sales != 1 ) lowerLevelNum,
        WHERE recommend_id = a.user_id AND is_sales != 1 and  (IS_DELETE is null or IS_DELETE = '')) lowerLevelNum,
        ( SELECT COUNT(*) FROM sys_vip_info
        WHERE recommend_id = a.user_id AND is_sales = 1 ) invitedNum,
        WHERE recommend_id = a.user_id AND is_sales = 1 and  (IS_DELETE is null or IS_DELETE = '')) invitedNum,
        ( SELECT IFNULL(sum(IFNULL(amount, 0)), 0) FROM shop_salesman_order
        WHERE  order_status = 2 AND sales_user_id = a.user_id ) totalRevenue,
        ( SELECT IFNULL(sum(IFNULL(amount, 0)), 0) FROM shop_salesman_order
@@ -85,7 +85,7 @@
        LEFT JOIN shop_salesman_grade g ON a.grade_id = g.id
        LEFT JOIN sys_vip_info c ON c.id = b.recommend_id
        <where>
             a.company_id=#{record.companyId}
             a.company_id=#{record.companyId} and  (b.IS_DELETE is null or b.IS_DELETE = '')
            <if test="record.shenheState != null and record.shenheState != ''">
                and a.apply_status=#{record.shenheState}
            </if>
@@ -110,7 +110,7 @@
        LEFT JOIN sys_vip_info b ON a.user_id = b.id
        <where>
            a.company_id = #{record.companyId}
            and a.apply_status = #{record.applyStatus}
            and a.apply_status = #{record.applyStatus} and  (b.IS_DELETE is null or b.IS_DELETE = '')
            <if test="record.nickName != null and record.nickName != ''">
                and b.nick_name like concat('%',#{record.nickName},'%')
            </if>
@@ -132,6 +132,7 @@
        <where>
            a.company_id = #{record.companyId}
            and a.is_sales != 1
            and  (a.IS_DELETE is null or a.IS_DELETE = '')
            <if test="record.nickName != null and record.nickName != ''">
                and a.nick_name like concat('%',#{record.nickName},'%')
            </if>
@@ -185,10 +186,12 @@
    ( SELECT count( * ) FROM shop_salesman_order c WHERE  c.sales_user_id = #{openId} and revenue_type =1 ) AS salesorderCount,
    ( SELECT count( * ) FROM shop_salesman_order c WHERE  c.sales_user_id = #{openId} and revenue_type =2 ) AS invitationOrderCount,
    (select count(*) from sys_vip_info where recommend_id=#{openId} and is_sales=1) as invitationCount,
    (select count(*) from sys_vip_info where recommend_id=#{openId} and is_sales=2) as customerCount
    (select count(*) from sys_vip_info where recommend_id=#{openId} and is_sales=1
                                         and   (IS_DELETE is null or IS_DELETE = '')) as invitationCount,
    (select count(*) from sys_vip_info where recommend_id=#{openId} and is_sales=2
                                         and   (IS_DELETE is null or IS_DELETE = '')) as customerCount
    from sys_vip_info a where
    a.id=#{id}
    a.id=#{id}  and  (a.IS_DELETE is null or a.IS_DELETE = '')
    </select>
@@ -202,9 +205,11 @@
        (SELECT s.nick_name FROM sys_vip_info s
        WHERE s.id = a.parent_user_id ) parentUser,
        ( SELECT COUNT(*) FROM sys_vip_info
        WHERE recommend_id = a.user_id AND is_sales != 1 ) lowerLevelNum,
        WHERE recommend_id = a.user_id AND is_sales != 1
            and  (IS_DELETE is null or IS_DELETE = '')) lowerLevelNum,
        ( SELECT COUNT(*) FROM sys_vip_info
        WHERE recommend_id = a.user_id AND is_sales = 1 ) invitedNum,
        WHERE recommend_id = a.user_id AND is_sales = 1
          and   (IS_DELETE is null or IS_DELETE = '')) invitedNum,
        ( SELECT IFNULL(sum(IFNULL(amount, 0)), 0) FROM shop_salesman_order
        WHERE order_status = 2 AND sales_user_id = a.user_id ) totalRevenue,
        ( SELECT IFNULL(sum(IFNULL(amount, 0)), 0) FROM shop_salesman_order
@@ -216,7 +221,7 @@
        shop_salesman_apply a
        LEFT JOIN sys_vip_info b ON a.user_id = b.id
        LEFT JOIN shop_salesman_grade g ON a.grade_id = g.id
            where a.id = #{applyId}
            where a.id = #{applyId} and  (b.IS_DELETE is null or b.IS_DELETE = '')
    </select>
    <select id="findCustomDetail" resultType="com.matrix.system.fenxiao.vo.ShopCustomDetailVo">
@@ -230,7 +235,7 @@
        <where>
            b.company_id = #{record.companyId}
            AND b.is_sales != 1
            and b.recommend_id = #{record.userId}
            and b.recommend_id = #{record.userId}  and  (b.IS_DELETE is null or b.IS_DELETE = '')
            <if test="record.userName != null and record.userName != ''">
                and b.nick_name like concat('%',#{record.userName},'%')
            </if>
@@ -254,6 +259,7 @@
            a.company_id = #{record.companyId}
            AND b.is_sales = 1
            and b.recommend_id = #{record.userId}
            and  (b.IS_DELETE is null or b.IS_DELETE = '')
            and a.apply_status = 2
            <if test="record.userName != null and record.userName != ''">
                and b.nick_name like concat('%',#{record.userName},'%')
@@ -283,7 +289,7 @@
        left join shop_order c on a.order_id=c.id
        LEFT JOIN sys_shop_info f on f.id = c.store_id
        <where>
            a.sales_user_id = #{record.userId}
            a.sales_user_id = #{record.userId} and  (b.IS_DELETE is null or b.IS_DELETE = '')
            <if test="record.orderType != null and record.orderType != ''">
                and a.order_status = #{record.orderType}
            </if>
zq-erp/src/main/resources/mybatis/mapper/hive/AchieveNewDao.xml
@@ -165,6 +165,7 @@
        LEFT JOIN shopping_goods_category i ON e.cate_id = i.id
        left join sys_proj_services l on a.service_order_id=l.id
        <where>
            and  (c.IS_DELETE is null or c.IS_DELETE = '')
            <if test="record!=null">
                <if
                        test="(record.shopId!=null and record.shopId!='') or  (record.shopId!='' and record.shopId==0)  ">
@@ -266,6 +267,7 @@
        LEFT JOIN shopping_goods_category j ON i.parent_id = j.id
        left join sys_proj_services l on a.service_order_id=l.id
        <where>
            and  (c.IS_DELETE is null or c.IS_DELETE = '')
            <if test="record!=null">
                <if
                        test="(record.shopId!=null and record.shopId!='') or  (record.shopId!='' and record.shopId==0)  ">
@@ -889,7 +891,7 @@
        left join sys_users b on a.BEATUY_ID=b.su_id
        inner join sys_shop_info c on c.id=a.SHOP_ID
        <where>
            and  (a.IS_DELETE is null or a.IS_DELETE = '')
            <if test="record.vipName != null and record.vipName !=''">
                and (a.vip_name like CONCAT(CONCAT('%', #{record.vipName}), '%') or a.vip_no=#{record.vipName} or a.phone = #{record.vipName})
            </if>
@@ -921,7 +923,7 @@
        left join sys_users b on a.BEATUY_ID=b.su_id
        inner join sys_shop_info c on c.id=a.SHOP_ID
        <where>
            and  (a.IS_DELETE is null or a.IS_DELETE = '')
            <if test="record.vipName != null and record.vipName !=''">
                and (a.vip_name like CONCAT(CONCAT('%', #{record.vipName}), '%') or a.vip_no=#{record.vipName} or a.phone = #{record.vipName})
            </if>
@@ -1156,7 +1158,7 @@
        left join sys_order_item j on a.order_item_id=j.ID
        left join achieve_rule u on u.id=e.achieve_rule_id
        <where>
            and a.company_id = #{record.companyId}
            and a.company_id = #{record.companyId} and  (c.IS_DELETE is null or c.IS_DELETE = '')
            <if test="record.shopId != null">
                and a.shop_id = #{record.shopId}
            </if>
@@ -1292,7 +1294,7 @@
        from sys_users a
             left join achieve_new b on a.su_id=b.beault_id
             left join sys_vip_info c on b.vip_id=c.ID
        where 1=1
        where 1=1  and  (c.IS_DELETE is null or c.IS_DELETE = '')
        <if test="record.companyId != null">
         and a.company_id=#{record.companyId}
        </if>
@@ -1338,7 +1340,7 @@
             from sys_users a
                      left join achieve_new b on a.su_id=b.beault_id
                      left join sys_vip_info c on b.vip_id=c.ID
            where 1=1
            where 1=1 and (c.IS_DELETE is null or c.IS_DELETE = '')
            <if test="record.companyId != null">
                and a.company_id=#{record.companyId}
            </if>
zq-erp/src/main/resources/mybatis/mapper/hive/MoneyCardUseDao.xml
@@ -632,4 +632,17 @@
        update money_card_use set STATUS='无效'
        where date_format(now(), '%Y-%m-%d') > date_format(FAIL_TIME, '%Y-%m-%d') and STATUS='有效'
    </update>
    <update id="saveInTimeReceiptWare">
        <foreach collection="storeReceiptWares" item="wares"  separator=";">
        UPDATE money_card_use
        <set>
            <if test="wares.containsKey('createBy')">
                order_item_id = if(#{wares.createBy}='',NULL,#{wares.createBy}),
            </if>
        </set>
            WHERE id = #{wares.id}
        </foreach>
    </update>
</mapper>
zq-erp/src/main/resources/mybatis/mapper/hive/MyBeauticianCountDao.xml
@@ -32,7 +32,7 @@
                LEFT JOIN sys_proj_services b ON a.SERVICES_ID = b.ID
                LEFT JOIN sys_vip_info c ON b.VIP_ID = c.ID
                LEFT JOIN sys_users d on d.su_id=a.STAFF_ID
            WHERE b.state='服务单结束'
            WHERE b.state='服务单结束' and (c.IS_DELETE is null or c.IS_DELETE = '')
            ) t
        GROUP BY
            t.VIP_ID,
zq-erp/src/main/resources/mybatis/mapper/hive/ServicesFlowDao.xml
@@ -108,7 +108,7 @@
        LEFT JOIN sys_proj_services b on a.service_id=b.ID
        LEFT JOIN sys_vip_info c on b.VIP_ID=c.ID
        LEFT JOIN sys_users e on e.su_id=a.operation_id
        where 1=1
        where 1=1 and (c.IS_DELETE is null or c.IS_DELETE = '')
        <if test="record!=null">
            
            <if test="record.beginTime != null  ">
@@ -158,7 +158,7 @@
        LEFT JOIN sys_proj_services b on a.service_id=b.ID
        LEFT JOIN sys_vip_info c on b.VIP_ID=c.ID
        LEFT JOIN sys_users e on e.su_id=a.operation_id
        where 1=1
        where 1=1 and (c.IS_DELETE is null or c.IS_DELETE = '')
        <if test="record!=null">
            
            <if test="record.beginTime != null  ">
@@ -171,7 +171,7 @@
                and a.operation_id  = #{record.operationId} 
            </if>
            <if test="record.shopId != null and record.shopId !='' ">
                AND b.VIP_ID IN (SELECT t.ID FROM sys_vip_info t WHERE t.shop_id = #{record.shopId})
                AND b.VIP_ID IN (SELECT t.ID FROM sys_vip_info t WHERE t.shop_id = #{record.shopId}  and (t.IS_DELETE is null or t.IS_DELETE = ''))
            </if>
            <if test="record.shopId != null and record.shopId !='' ">
                    AND b.shop_id = #{record.shopId}
@@ -202,7 +202,7 @@
        LEFT JOIN sys_proj_services b on a.service_id=b.ID
        LEFT JOIN sys_vip_info c on b.VIP_ID=c.ID
        LEFT JOIN sys_users e on e.su_id=a.operation_id
        where 1=1
        where 1=1 and (c.IS_DELETE is null or c.IS_DELETE = '')
        <if test="record!=null">
            
            <if test="record.beginTime != null  ">
@@ -244,7 +244,7 @@
        LEFT JOIN sys_proj_services b on a.service_id=b.ID
        LEFT JOIN sys_vip_info c on b.VIP_ID=c.ID
        LEFT JOIN sys_users e on e.su_id=a.operation_id
        where 1=1
        where 1=1  and (c.IS_DELETE is null or c.IS_DELETE = '')
        <if test="record!=null">
            
            <if test="record.beginTime != null  ">
@@ -257,7 +257,7 @@
                and a.operation_id  = #{record.operationId} 
            </if>
            <if test="record.shopId != null and record.shopId !='' ">
                AND b.VIP_ID IN (SELECT t.ID FROM sys_vip_info t WHERE t.shop_id = #{record.shopId})
                AND b.VIP_ID IN (SELECT t.ID FROM sys_vip_info t WHERE t.shop_id = #{record.shopId}  and (t.IS_DELETE is null or t.IS_DELETE = ''))
            </if>
            <if test="record.searchShop != null and record.searchShop !=''">
                    AND b.shop_id = #{record.searchShop}
@@ -302,7 +302,7 @@
        LEFT JOIN sys_proj_services b on a.service_id=b.ID
        LEFT JOIN sys_vip_info c on b.VIP_ID=c.ID
        LEFT JOIN sys_users e on e.su_id=a.operation_id
        where 1=1
        where 1=1  and (c.IS_DELETE is null or c.IS_DELETE = '')
        <if test="record!=null">
            
            <if test="record.beginTime != null  ">
zq-erp/src/main/resources/mybatis/mapper/hive/ShoppingGoodsDao.xml
@@ -897,7 +897,7 @@
        t.id=cate_id)
        cate_name
        from shopping_goods a
        where code=#{code}
        where a.code=#{code}  and a.is_del=1
    </select>
    <!-- 根据id查询 -->
zq-erp/src/main/resources/mybatis/mapper/hive/SysBeauticianStateDao.xml
@@ -333,7 +333,8 @@
        and a.STAFF_ID = #{suId} ]]>
        and  a.STATE !='预约取消'
        and  a.STATE !='待确认'
        and  a.STATE !='待预约'
        and  a.STATE !='服务单结束'
        and  a.STATE !='待预约' and (c.IS_DELETE is null or c.IS_DELETE = '')
        order by a.BEGIN_TIME asc
    </select>
zq-erp/src/main/resources/mybatis/mapper/hive/SysFollowupDao.xml
@@ -2,9 +2,9 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.matrix.system.hive.dao.SysFollowupDao" >
<mapper namespace="com.matrix.beauty.followup.dao.SysFollowupDao" >
    <!-- 定义SysFollowup 的复杂关联map -->
    <resultMap type="com.matrix.system.hive.bean.SysFollowup" id="SysFollowupMap">
    <resultMap type="com.matrix.beauty.followup.entry.SysFollowup" id="SysFollowupMap">
        <id property="id" column="id" />
        <result property="createBy" column="create_by" />
        <result property="createTime" column="create_time" />
@@ -40,7 +40,7 @@
    </select>
    
    <!-- 定义SysFollowup 的简单map  ,本map不添加其他的关联属性 -->
    <resultMap type="com.matrix.system.hive.bean.SysFollowup" id="SysFollowupSimpleMap">
    <resultMap type="com.matrix.beauty.followup.entry.SysFollowup" id="SysFollowupSimpleMap">
        <id property="id" column="id" />
        <result property="createBy" column="create_by" />
        <result property="createTime" column="create_time" />
@@ -144,7 +144,7 @@
    </sql>
    
    <!--  插入方法   -->
    <insert id="insert" parameterType="com.matrix.system.hive.bean.SysFollowup"
    <insert id="insert" parameterType="com.matrix.beauty.followup.entry.SysFollowup"
        useGeneratedKeys="true" keyProperty="item.id">
        INSERT INTO sys_followup (
             <include refid="columns"></include>
@@ -275,7 +275,7 @@
    </delete>
    
    <!-- 根据对象删除-->
    <delete id="deleteByModel" parameterType="com.matrix.system.hive.bean.SysFollowup">
    <delete id="deleteByModel" parameterType="com.matrix.beauty.followup.entry.SysFollowup">
        DELETE FROM sys_followup
        <where>
        <include refid="where_sql" ></include>
@@ -354,7 +354,7 @@
         left join  sys_vip_info c on a.vip_id=c.id
        <where>
            and a.company_id=#{companyId}
            and (c.IS_DELETE is null or c.IS_DELETE = '')
            <if test="shopId != null ">
                and a.shop_id=#{shopId}
            </if>
@@ -401,5 +401,23 @@
          limit ${offset},${limit}
    </select>
<select id="findVipFollowuByPage" resultMap="SysFollowupMap">
        select a.*,
         b.su_photo as staffPhoto,
         b.su_name as staffName,
         c.vip_name as vipName
         from sys_followup  a
         left join  sys_users b on a.staff_id= b.su_id
         left join  sys_vip_info c on a.vip_id=c.id
        <where>
            and a.company_id=#{companyId}
            and (visible=1 or ( visible!=1 and a.staff_id=#{selfStaff}))
            <if test="vipId!=null">
                and    a.vip_id = #{vipId}
            </if>
        </where>
        order by a.create_time desc
          limit ${offset},${limit}
    </select>
</mapper>
zq-erp/src/main/resources/mybatis/mapper/hive/SysOrderDao.xml
@@ -187,7 +187,7 @@
        left JOIN sys_users c on c.su_id=a.STAFF_ID
        left JOIN sys_users e on e.su_id=a.cashier_id
        left JOIN sys_shop_info d on d.ID=a.SHOP_ID
        where 1=1
        where 1=1 and (b.IS_DELETE is null or b.IS_DELETE = '')
        <if test="record!=null">
            <if test="record.keyWordVo != null and record.keyWordVo!='' ">
                and (b.PHONE like concat('%',#{record.keyWordVo},'%')
@@ -275,7 +275,7 @@
        LEFT JOIN sys_vip_info b on b.ID=a.VIP_ID
        left JOIN sys_users c on c.su_id=a.STAFF_ID
        left JOIN sys_shop_info d on d.ID=a.SHOP_ID
        where 1=1
        where 1=1 and (b.IS_DELETE is null or b.IS_DELETE = '')
        <if test="record!=null">
            <if test="record.keyWordVo != null and record.keyWordVo!='' ">
                and (b.PHONE like concat('%',#{record.keyWordVo},'%')
zq-erp/src/main/resources/mybatis/mapper/hive/SysProjServicesDao.xml
@@ -311,7 +311,7 @@
        FROM sys_proj_services a
        LEFT JOIN sys_vip_info b on b.ID=a.VIP_ID
        left join sys_beautician_state c on a.id=c.SERVICES_ID
        WHERE 1 = 1
        WHERE 1 = 1 and (b.IS_DELETE is null or b.IS_DELETE = '')
        <if test="record!=null">
            <if test="record.queryKey != null and record.queryKey != ''">
                and (instr(c.vip_name, #{record.queryKey}) or instr(c.phone, #{record.queryKey}) or instr(a.order_no, #{record.queryKey}))
@@ -381,7 +381,7 @@
        FROM sys_proj_services a
        LEFT JOIN sys_vip_info b on b.ID=a.VIP_ID
        left join sys_beautician_state c on a.id=c.SERVICES_ID
        WHERE 1 = 1
        WHERE 1 = 1 and (b.IS_DELETE is null or b.IS_DELETE = '')
        <if test="record!=null">
            <if test="record.queryKey != null and record.queryKey != ''">
                and (instr(c.vip_name, #{record.queryKey}) or instr(c.phone, #{record.queryKey}) or instr(a.order_no, #{record.queryKey}))
@@ -453,7 +453,7 @@
        FROM sys_proj_services a
        LEFT JOIN sys_vip_info b on b.ID=a.VIP_ID
        left join sys_beautician_state c on a.id=c.SERVICES_ID
        where  a.ID=#{id}
        where  a.ID=#{id} and (b.IS_DELETE is null or b.IS_DELETE = '')
    </select>
    <select id="selectNeedNoticeService" resultMap="SysProjServicesMap">
@@ -465,7 +465,7 @@
        LEFT JOIN sys_vip_info b on b.ID=a.VIP_ID
        where   a.YY_TIME > now()
        and DATE_ADD(now(),INTERVAL 1 HOUR) > a.YY_TIME
        and overtime_notice is null
        and overtime_notice is null  and (b.IS_DELETE is null or b.IS_DELETE = '')
    </select>
@@ -486,7 +486,7 @@
        FROM sys_proj_services a
        LEFT JOIN sys_vip_info b on b.ID=a.VIP_ID
        left join sys_beautician_state c on a.id=c.SERVICES_ID
        WHERE 1 = 1
        WHERE 1 = 1 and (b.IS_DELETE is null or b.IS_DELETE = '')
        <if test="record!=null">
            <if test="record.queryStaffId != null and record.queryStaffId !='' ">
                and (a.CREATE_STAFF_ID  = #{record.queryStaffId}  or c.STAFF_ID=#{record.queryStaffId}  )
@@ -580,7 +580,7 @@
        left join sys_proj_use g on b.puse_id=g.ID
        left join sys_shop_info h on a.SHOP_ID=h.ID
        <where>
            and a.company_id=#{record.companyId}
            and a.company_id=#{record.companyId} and (e.IS_DELETE is null or e.IS_DELETE = '')
            <if test="record.queryKey != null and record.queryKey != ''">
                and (instr(a.SERVICE_NO, #{record.queryKey}) or instr(e.phone, #{record.queryKey}) or instr(e.vip_name, #{record.queryKey}) )
            </if>
@@ -617,7 +617,7 @@
        left join sys_users f on f.su_id=b.STAFF_ID
        left join sys_proj_use g on b.puse_id=g.ID
        <where>
            and a.company_id=#{record.companyId}
            and a.company_id=#{record.companyId} and (e.IS_DELETE is null or e.IS_DELETE = '')
            <if test="record.queryKey != null and record.queryKey != ''">
                and (instr(a.SERVICE_NO, #{record.queryKey}) or instr(e.phone, #{record.queryKey}) or instr(e.vip_name, #{record.queryKey}) )
            </if>
@@ -676,6 +676,7 @@
        left join sys_shop_info h on a.SHOP_ID=h.ID
        left join shopping_goods m on g.proj_id=m.id
        <where>
            and (e.IS_DELETE is null or e.IS_DELETE = '')
            <if test="queryKey != null and queryKey != ''">
                and instr(a.SERVICE_NO, #{queryKey})
            </if>
@@ -727,7 +728,7 @@
        left join sys_proj_use g on b.puse_id=g.ID
        left join sys_shop_info h on a.SHOP_ID=h.ID
        left join shopping_goods m on g.proj_id=m.id
        where a.id=#{id}
        where a.id=#{id} and (e.IS_DELETE is null or e.IS_DELETE = '')
    </select>
zq-erp/src/main/resources/mybatis/mapper/hive/SysShopInfoDao.xml
@@ -310,5 +310,12 @@
    <select id="selectZbShop" resultMap="SysShopInfoMap">
        select * from sys_shop_info where shop_type=1 and company_id=#{companyId}
    </select>
    <select id="selectByIds" resultType="com.matrix.system.hive.bean.SysShopInfo">
        select * from sys_shop_info where  ID in
        <foreach collection="list" index="index" item="item" open="("
                 separator="," close=")">
            #{item}
        </foreach>
    </select>
</mapper>
zq-erp/src/main/resources/mybatis/mapper/hive/SysVipInfoDao.xml
@@ -144,7 +144,7 @@
        COMMISSION_ALL,IN_DATE,STAFF_ID,SHOP_ID,IS_DELETE,REMARK,PASSWORD,
        EMAIL,CREATE_TIME,UUID,BALANCE,blood,sfCard,link,marry,vocation,handleTime from
        sys_vip_info
        WHERE company_id=#{companyId}
        WHERE company_id=#{companyId}  and (IS_DELETE is null or IS_DELETE = '')
        and (STAFF_ID = #{staffId} or BEATUY_ID = #{staffId})
        AND datediff(date_add(concat(
        date_format(BIRTHDAY1, "%Y"),
@@ -170,7 +170,7 @@
        select count(*) from
        sys_vip_info
        WHERE
        company_id=#{companyId}
        company_id=#{companyId} and (IS_DELETE is null or IS_DELETE = '')
        AND (STAFF_ID = #{staffId}  or BEATUY_ID = #{staffId})
        AND datediff(date_add(concat(
        date_format(BIRTHDAY1, "%Y"),
@@ -189,7 +189,7 @@
        sys_vip_info a
        LEFT JOIN service_record b ON a.ID
        = b.vip_id
        WHERE company_id=#{companyId}
        WHERE company_id=#{companyId} and (a.IS_DELETE is null or a.IS_DELETE = '')
        and (a.STAFF_ID = #{staffId} or a.BEATUY_ID = #{staffId})
        AND b.follow_time BETWEEN curdate()
        AND
@@ -212,7 +212,7 @@
        LEFT JOIN service_record b ON a.ID
        = b.vip_id
        WHERE
        company_id=#{companyId}
        company_id=#{companyId} and (a.IS_DELETE is null or a.IS_DELETE = '')
        and
        (a.STAFF_ID = #{staffId}  or a.BEATUY_ID = #{staffId})
        AND b.follow_time BETWEEN curdate()
@@ -226,7 +226,7 @@
        sys_vip_info a
        LEFT JOIN sys_proj_services b ON a.ID = b.VIP_ID
        WHERE
        company_id=#{companyId}
        company_id=#{companyId} and (a.IS_DELETE is null or a.IS_DELETE = '')
        and
        (a.STAFF_ID = #{staffId} or a.BEATUY_ID = #{staffId})
        AND b.YY_TIME BETWEEN curdate()
@@ -250,7 +250,7 @@
        LEFT JOIN sys_proj_services b ON a.ID = b.VIP_ID
        WHERE
        company_id=#{companyId}
        company_id=#{companyId} and (a.IS_DELETE is null or a.IS_DELETE = '')
        and
        (a.STAFF_ID = #{staffId}  or a.BEATUY_ID = #{staffId})
        AND b.YY_TIME BETWEEN curdate()
@@ -568,6 +568,14 @@
        </foreach>
    </delete>
    <update id="deleteLogicByIds" parameterType="java.util.List">
        UPDATE sys_vip_info set IS_DELETE = '已删除' where ID in
        <foreach collection="list" index="index" item="item" open="("
                 separator="," close=")">
            #{item}
        </foreach>
    </update>
    <!-- 根据id删除 -->
    <delete id="deleteById">
        DELETE FROM sys_vip_info
@@ -616,7 +624,7 @@
    <select id="findByOpenId" resultMap="SysVipInfoMap">
        select *
        from sys_vip_info where openid=#{openId}
        from sys_vip_info where openid=#{openId} and (IS_DELETE is null or IS_DELETE = '')
    </select>
    <!-- 根据手机和密码查询 -->
@@ -628,7 +636,7 @@
    <!-- 判断是否为唯一 -->
    <select id="selectTotalByField" resultType="java.lang.Integer">
        select count(*) from
        sys_vip_info where ${field} = #{value}
        sys_vip_info where ${field} = #{value} and (IS_DELETE is null or IS_DELETE = '')
    </select>
    <!-- 根据对象查询 -->
@@ -708,7 +716,7 @@
        COMMISSION_ALL,IN_DATE,STAFF_ID,SHOP_ID,IS_DELETE,REMARK,PASSWORD,
        EMAIL,CREATE_TIME,UUID,BALANCE 
         from sys_vip_info where
         company_id=#{companyId}
         company_id=#{companyId} and  (IS_DELETE is null or IS_DELETE = '')
         and PHONE like concat('%',#{keyWord},'%') limit 0,10
    </select>
@@ -721,7 +729,7 @@
        COMMISSION_ALL,IN_DATE,STAFF_ID,SHOP_ID,IS_DELETE,REMARK,PASSWORD,
        EMAIL,CREATE_TIME,UUID,BALANCE,blood,sfCard,link,marry,vocation 
         from sys_vip_info 
         where company_id=#{companyId}
         where company_id=#{companyId} and (IS_DELETE is null or IS_DELETE = '')
       and (instr(PHONE,#{keyWord})
          or instr(VIP_NAME ,#{keyWord})
          or instr(zjm ,#{keyWord})
@@ -762,6 +770,7 @@
    <sql id="whereVo">
       <where>
           and (a.IS_DELETE is null or a.IS_DELETE = '')
        <if test="record!=null">
            <if test="record.keyWord != null and record.keyWord !='' ">
                and (a.VIP_NO like CONCAT('%',#{record.keyWord},'%') or
@@ -792,7 +801,7 @@
    </sql>
    <sql id="where">
        where 1=1
        where 1=1 and (a.IS_DELETE is null or a.IS_DELETE = '')
        <if test="record!=null">
            <if test="record.id != null and record.id !='' ">
                and a.ID = #{record.id}
@@ -1076,7 +1085,7 @@
        (select a.id from sys_vip_info a
        where 1=1
        where 1=1  and (a.IS_DELETE is null or a.IS_DELETE = '')
        <if test="record.parentId != null and record.parentId !='' ">
            and a.parent_id = #{record.parentId}
        </if>
@@ -1089,7 +1098,7 @@
        f.vip_name as name
        from sys_vip_info d
        LEFT JOIN sys_vip_info f on d.parent_id = f.id
        where 1=1
        where 1=1  and (d.IS_DELETE is null or d.IS_DELETE = '')
        <if test="record.parentId != null and record.parentId !='' ">
            and d.parent_id = #{record.parentId}
        </if>
@@ -1117,7 +1126,7 @@
        (select a.id from sys_vip_info a
        where 1=1
        where 1=1 and (a.IS_DELETE is null or a.IS_DELETE = '')
        <if test="record.parentId != null and record.parentId !='' ">
            and a.parent_id = #{record.parentId}
        </if>
@@ -1130,7 +1139,7 @@
        f.vip_name as name
        from sys_vip_info d
        LEFT JOIN sys_vip_info f on d.parent_id = f.id
        where 1=1
        where 1=1 and (d.IS_DELETE is null or d.IS_DELETE = '')
        <if test="record.parentId != null and record.parentId !='' ">
            and d.parent_id = #{record.parentId}
        </if>)k
@@ -1143,7 +1152,7 @@
        f.vip_name as name
        from sys_vip_info d
        LEFT JOIN sys_vip_info f on d.parent_id = f.id
        where 1=1
        where 1=1 and (d.IS_DELETE is null or d.IS_DELETE = '')
        <if test="record.parentId != null and record.parentId !='' ">
            and d.parent_id = #{record.parentId}
        </if>
@@ -1165,7 +1174,7 @@
        count(*)
        from sys_vip_info d
        LEFT JOIN sys_vip_info f on d.parent_id = f.id
        where 1=1
        where 1=1 and (d.IS_DELETE is null or d.IS_DELETE = '')
        <if test="record.parentId != null and record.parentId !='' ">
            and d.parent_id = #{record.parentId}
        </if>
@@ -1181,7 +1190,7 @@
        (select a.id from sys_vip_info a
        where 1=1
        where 1=1  and (a.IS_DELETE is null or a.IS_DELETE = '')
        <if test="record.parentId != null and record.parentId !='' ">
            and a.parent_id = #{record.parentId}
        </if>
@@ -1207,7 +1216,7 @@
        (select a.id from sys_vip_info a
        where 1=1
        where 1=1 and (a.IS_DELETE is null or a.IS_DELETE = '')
        <if test="record.parentId != null and record.parentId !='' ">
            and a.parent_id = #{record.parentId}
        </if>
@@ -1217,13 +1226,13 @@
    <select id="selectByPhone" resultMap="SysVipInfoMapSimple">
        select * from sys_vip_info where  PHONE = #{phone} and company_id=#{companyId}
        select * from sys_vip_info where  PHONE = #{phone} and company_id=#{companyId} and (IS_DELETE is null or IS_DELETE = '')
    </select>
    <select id="selectVipTelphoneByIds" resultType="java.lang.String">
        select phone from sys_vip_info
        where phone is not null and id in
        where phone is not null and (IS_DELETE is null or IS_DELETE = '') and id in
        <foreach collection="list" index="index" item="item" open="("
                 separator="," close=")">
            #{item}
@@ -1233,18 +1242,18 @@
    <select id="selectAllVipPhone" resultType="java.lang.String">
        select phone from sys_vip_info
        where
         company_id=#{companyId}
         company_id=#{companyId} and (IS_DELETE is null or IS_DELETE = '')
         and phone is not null
    </select>
    <select id="selectVipPhoneWithShop" resultType="java.lang.String">
        select phone from sys_vip_info
        where phone is not null and shop_id=#{shopId}
        where phone is not null and shop_id=#{shopId} and (IS_DELETE is null or IS_DELETE = '')
    </select>
    <select id="selectOldUserByTelphone" resultMap="SysVipInfoMap">
        select * from sys_vip_info where  phone=#{telphone} and is_deal=1
        select * from sys_vip_info where  phone=#{telphone} and is_deal=1 and (IS_DELETE is null or IS_DELETE = '')
    </select>
@@ -1363,7 +1372,7 @@
    </insert>
    <select id="selectVipInfoByVipNo" resultMap="SysVipInfoMapSimple">
        select * from sys_vip_info where company_id=#{companyId} and vip_no=#{vipNo}
        select * from sys_vip_info where company_id=#{companyId} and vip_no=#{vipNo} and (IS_DELETE is null or IS_DELETE = '')
    </select>
    <select id="selectVipAddressBookByList" resultType="com.matrix.system.app.vo.VipInfoListVo">
@@ -1420,7 +1429,7 @@
        </if>
        left join sys_shop_info g on a.shop_id = g.id
        left join sys_vip_level h on a.level_id=h.id
        where 1=1
        where 1=1 and (a.IS_DELETE is null or a.IS_DELETE = '')
        <if test="record.queryKey != null and record.queryKey != ''">
            and (instr(PHONE,#{record.queryKey})
                or instr(VIP_NAME ,#{record.queryKey})
@@ -1477,7 +1486,7 @@
        left join money_card_use b on a.ID = b.vip_id and b.status='有效'
        left join sys_vip_level c on  a.LEVEL_ID = c.ID
        left join sys_shop_info e on a.SHOP_ID=e.ID
        where a.ID=#{id}
        where a.ID=#{id} and (a.IS_DELETE is null or a.IS_DELETE = '')
    </select>
@@ -1494,7 +1503,7 @@
         inner join sys_order b on a.ID=b.VIP_ID
         inner join sys_shop_info c on a.SHOP_ID=c.ID
         left join sys_users d on a.STAFF_ID=d.su_id
        where b.STATU='欠款' and b.arrears!=0
        where b.STATU='欠款' and b.arrears!=0 and (a.IS_DELETE is null or a.IS_DELETE = '')
            <if test="record.companyId!=null">
                and a.company_id=#{record.companyId}
            </if>
@@ -1531,7 +1540,7 @@
                inner join sys_order b on a.ID=b.VIP_ID
                inner join sys_shop_info c on a.SHOP_ID=c.ID
                left join sys_users d on a.STAFF_ID=d.su_id
            where b.STATU='欠款' and b.arrears!=0
            where b.STATU='欠款' and b.arrears!=0 and (a.IS_DELETE is null or a.IS_DELETE = '')
                <if test="record.companyId!=null">
                    and a.company_id=#{record.companyId}
                </if>
zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopActivitiesGroupJoinDao.xml
@@ -248,7 +248,7 @@
        from shop_activities_group_join t1
        inner join shop_activities_group_price t2 on t1.gp_id=t2.id
        inner join sys_vip_info t3 on t1.gj_head_id=t3.id
        where t1.act_id  = #{record.actId}
        where t1.act_id  = #{record.actId} and (t3.IS_DELETE is null or t3.IS_DELETE = '')
        <if test="pageVo !=null"><!-- 判断pageVo对象是否为空 -->
            <if test="pageVo.sort !=null  and pageVo.order !=null">
                order by
@@ -311,7 +311,7 @@
        from shop_activities_group_join t1
        inner join shop_activities_group_join_user t2 on t1.id=t2.gj_id and t2.is_has_cancel=2 and t2.is_has_pay=1
        left join sys_vip_info t3 on t2.user_id=t3.id
        where t1.id=#{gjId}
        where t1.id=#{gjId} and (t3.IS_DELETE is null or t3.IS_DELETE = '')
    </select>
    <select id="selectOwnerGroupJoinInfoWithNoPay" resultMap="ShopActivitiesGroupJoinMap">
@@ -328,7 +328,7 @@
        from shop_activities_group_join t1
        inner join shop_activities_group_join_user t2 on t1.id=t2.gj_id and t2.is_has_cancel=2
        left join sys_vip_info t3 on t2.user_id=t3.id
        where t1.id=#{gjId}
        where t1.id=#{gjId} and (t3.IS_DELETE is null or t3.IS_DELETE = '')
    </select>
    <select id="selectIsExistGroupInfoByUserId" resultMap="ShopActivitiesGroupJoinMap">
@@ -351,7 +351,7 @@
        from shop_activities_group_join t1
        inner join shop_activities_group_price t2 on t1.gp_id=t2.id
        left join sys_vip_info t3 on t1.gj_head_id=t3.id
        where t1.act_id=#{actId} and t1.gj_status=3
        where t1.act_id=#{actId} and t1.gj_status=3 and (t3.IS_DELETE is null or t3.IS_DELETE = '')
    </select>
    <select id="selectGroupAndPriceById" resultMap="ShopActivitiesGroupJoinMap">
zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopActivitiesSeckillRecordDao.xml
@@ -188,7 +188,7 @@
        left join sys_shop_info t4 on t3.store_id=t4.id
        left join sys_vip_info t5 on t1.user_id=t5.id
        left join shop_product t6 on t2.goods_id=t6.id
        where t2.act_id=#{record.actId}
        where t2.act_id=#{record.actId} and (t5.IS_DELETE is null or t5.IS_DELETE = '')
        <if test="pageVo !=null"><!-- 判断pageVo对象是否为空 -->
            <if test="pageVo.sort !=null  and pageVo.order !=null">
                order by
@@ -210,7 +210,7 @@
        left join sys_shop_info t4 on t3.store_id=t4.id
        left join sys_vip_info t5 on t1.user_id=t5.id
        left join shop_product t6 on t2.goods_id=t6.id
        where t2.act_id=#{record.actId}
        where t2.act_id=#{record.actId} and (t5.IS_DELETE is null or t5.IS_DELETE = '')
    </select>
    <!-- 根据id查询-->
zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopProductCommentDao.xml
@@ -88,7 +88,6 @@
    
    <!-- where sql -->
    <sql id="where_sql">
         <if test="record!=null">
            <if test="(record.comId!=null and record.comId!='') or  (record.comId!='' and record.comId==0)  ">
                and com_id  = #{record.comId} 
@@ -381,6 +380,8 @@
            LEFT JOIN shop_order o ON c.order_id = o.id
            LEFT JOIN sys_vip_info b ON c.user_id = b.id
        <where>
            and (b.IS_DELETE is null or b.IS_DELETE = '')
            <if test="record!=null">
                <if test="(record.userId!=null and record.userId!='') or  (record.userId!='' and record.userId==0)  ">
                    and c.user_id = #{record.userId}
@@ -431,7 +432,7 @@
            AND p.del_flag = 2
            AND o.del_flag = 2
            AND c.del_flag = 2
            AND c.com_audit_status = 1
            AND c.com_audit_status = 1 and (b.IS_DELETE is null or b.IS_DELETE = '')
        </where>
        order by c.create_time desc
        <if test="record.offset >=0  and record.limit >0">
zq-erp/src/main/resources/static/plugin/vue-treeselect/vue-treeselect.min.css
New file
@@ -0,0 +1,5 @@
/*!
 * vue-treeselect v0.4.0 | (c) 2017-2019 Riophae Lee
 * Released under the MIT License.
 * https://vue-treeselect.js.org/
 */.vue-treeselect-helper-hide{display:none}.vue-treeselect-helper-zoom-effect-off{-ms-transform:none!important;transform:none!important}@keyframes vue-treeselect-animation-fade-in{0%{opacity:0}}@keyframes vue-treeselect-animation-bounce{0%,to{transform:scale(0)}50%{transform:scale(1)}}@keyframes vue-treeselect-animation-rotate{to{transform:rotate(1turn)}}.vue-treeselect__multi-value-item--transition-enter-active,.vue-treeselect__multi-value-item--transition-leave-active{transition-duration:.2s;transition-property:transform,opacity}.vue-treeselect__multi-value-item--transition-enter-active{transition-timing-function:cubic-bezier(.075,.82,.165,1)}.vue-treeselect__multi-value-item--transition-leave-active{transition-timing-function:cubic-bezier(.215,.61,.355,1);position:absolute}.vue-treeselect__multi-value-item--transition-enter,.vue-treeselect__multi-value-item--transition-leave-to{-ms-transform:scale(.7);transform:scale(.7);opacity:0}.vue-treeselect__multi-value-item--transition-move{transition:transform .2s cubic-bezier(.165,.84,.44,1)}.vue-treeselect{position:relative;text-align:left}[dir=rtl] .vue-treeselect{text-align:right}.vue-treeselect div,.vue-treeselect span{box-sizing:border-box}.vue-treeselect svg{fill:currentColor}.vue-treeselect__control{padding-left:5px;padding-right:5px;display:table;table-layout:fixed;width:100%;height:36px;border:1px solid #ddd;border-radius:5px;background:#fff;transition-duration:.2s;transition-property:border-color,box-shadow,width,height,background-color,opacity;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.vue-treeselect:not(.vue-treeselect--disabled):not(.vue-treeselect--focused) .vue-treeselect__control:hover{border-color:#cfcfcf}.vue-treeselect--focused:not(.vue-treeselect--open) .vue-treeselect__control{border-color:#039be5;box-shadow:0 0 0 3px rgba(3,155,229,.1)}.vue-treeselect--disabled .vue-treeselect__control{background-color:#f9f9f9}.vue-treeselect--open .vue-treeselect__control{border-color:#cfcfcf}.vue-treeselect--open.vue-treeselect--open-below .vue-treeselect__control{border-bottom-left-radius:0;border-bottom-right-radius:0}.vue-treeselect--open.vue-treeselect--open-above .vue-treeselect__control{border-top-left-radius:0;border-top-right-radius:0}.vue-treeselect__multi-value,.vue-treeselect__value-container{width:100%;vertical-align:middle}.vue-treeselect__value-container{display:table-cell;position:relative}.vue-treeselect--searchable:not(.vue-treeselect--disabled) .vue-treeselect__value-container{cursor:text}.vue-treeselect__multi-value{display:inline-block}.vue-treeselect--has-value .vue-treeselect__multi-value{margin-bottom:5px}.vue-treeselect__placeholder,.vue-treeselect__single-value{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding-left:5px;padding-right:5px;position:absolute;top:0;right:0;bottom:0;left:0;line-height:34px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;pointer-events:none}.vue-treeselect__placeholder{color:#bdbdbd}.vue-treeselect__single-value{color:#333}.vue-treeselect--focused.vue-treeselect--searchable .vue-treeselect__single-value{color:#bdbdbd}.vue-treeselect--disabled .vue-treeselect__single-value{position:static}.vue-treeselect__multi-value-item-container{display:inline-block;padding-top:5px;padding-right:5px;vertical-align:top}[dir=rtl] .vue-treeselect__multi-value-item-container{padding-right:0;padding-left:5px}.vue-treeselect__multi-value-item{display:inline-table;padding:2px 0;border:1px solid rgba(0,0,0,0);border-radius:2px;font-size:12px;vertical-align:top}.vue-treeselect:not(.vue-treeselect--disabled) .vue-treeselect__multi-value-item:not(.vue-treeselect__multi-value-item-disabled):hover .vue-treeselect__multi-value-item:not(.vue-treeselect__multi-value-item-new) .vue-treeselect__multi-value-item:not(.vue-treeselect__multi-value-item-new):hover,.vue-treeselect__multi-value-item{cursor:pointer;background:#e3f2fd;color:#039be5}.vue-treeselect__multi-value-item.vue-treeselect__multi-value-item-disabled{cursor:default;background:#f5f5f5;color:#757575}.vue-treeselect--disabled .vue-treeselect__multi-value-item{cursor:default;background:#fff;border-color:#e5e5e5;color:#555}.vue-treeselect__multi-value-item.vue-treeselect__multi-value-item-new,.vue-treeselect__multi-value-item.vue-treeselect__multi-value-item-new:hover{background:#e8f5e9}.vue-treeselect__multi-value-label,.vue-treeselect__value-remove{display:table-cell;padding:0 5px;vertical-align:middle}.vue-treeselect__value-remove{color:#039be5;padding-left:5px;border-left:1px solid #fff;line-height:0}[dir=rtl] .vue-treeselect__value-remove{border-left:0;border-right:1px solid #fff}.vue-treeselect__multi-value-item:hover .vue-treeselect__value-remove{color:#e53935}.vue-treeselect--disabled .vue-treeselect__value-remove,.vue-treeselect__multi-value-item-disabled .vue-treeselect__value-remove{display:none}.vue-treeselect__value-remove>svg{width:6px;height:6px}.vue-treeselect__multi-value-label{padding-right:5px;white-space:pre-line;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.vue-treeselect__limit-tip{display:inline-block;padding-top:5px;padding-right:5px;vertical-align:top}[dir=rtl] .vue-treeselect__limit-tip{padding-right:0;padding-left:5px}.vue-treeselect__limit-tip-text{cursor:default;display:block;margin:2px 0;padding:1px 0;color:#bdbdbd;font-size:12px;font-weight:600}.vue-treeselect__input-container{display:block;max-width:100%;outline:none}.vue-treeselect--single .vue-treeselect__input-container{font-size:inherit;height:100%}.vue-treeselect--multi .vue-treeselect__input-container{display:inline-block;font-size:12px;vertical-align:top}.vue-treeselect--searchable .vue-treeselect__input-container{padding-left:5px;padding-right:5px}.vue-treeselect--searchable.vue-treeselect--multi.vue-treeselect--has-value .vue-treeselect__input-container{padding-top:5px;padding-left:0}[dir=rtl] .vue-treeselect--searchable.vue-treeselect--multi.vue-treeselect--has-value .vue-treeselect__input-container{padding-left:5px;padding-right:0}.vue-treeselect--disabled .vue-treeselect__input-container{display:none}.vue-treeselect__input,.vue-treeselect__sizer{margin:0;line-height:inherit;font-family:inherit;font-size:inherit}.vue-treeselect__input{max-width:100%;margin:0;padding:0;border:0;outline:none;box-sizing:content-box;box-shadow:none;background:none rgba(0,0,0,0);line-height:1;vertical-align:middle}.vue-treeselect__input::-ms-clear{display:none}.vue-treeselect--single .vue-treeselect__input{width:100%;height:100%}.vue-treeselect--multi .vue-treeselect__input{padding-top:3px;padding-bottom:3px}.vue-treeselect--has-value .vue-treeselect__input{line-height:inherit;vertical-align:top}.vue-treeselect__sizer{position:absolute;top:0;left:0;visibility:hidden;height:0;overflow:scroll;white-space:pre}.vue-treeselect__x-container{display:table-cell;vertical-align:middle;width:20px;text-align:center;line-height:0;cursor:pointer;color:#ccc;animation:vue-treeselect-animation-fade-in .2s cubic-bezier(.075,.82,.165,1)}.vue-treeselect__x-container:hover{color:#e53935}.vue-treeselect__x{width:8px;height:8px}.vue-treeselect__control-arrow-container{display:table-cell;vertical-align:middle;width:20px;text-align:center;line-height:0;cursor:pointer}.vue-treeselect--disabled .vue-treeselect__control-arrow-container{cursor:default}.vue-treeselect__control-arrow{width:9px;height:9px;color:#ccc}.vue-treeselect:not(.vue-treeselect--disabled) .vue-treeselect__control-arrow-container:hover .vue-treeselect__control-arrow{color:#616161}.vue-treeselect--disabled .vue-treeselect__control-arrow{opacity:.35}.vue-treeselect__control-arrow--rotated{-ms-transform:rotate(180deg);transform:rotate(180deg)}.vue-treeselect__menu-container{position:absolute;left:0;width:100%;overflow:visible;transition:0s}.vue-treeselect--open-below:not(.vue-treeselect--append-to-body) .vue-treeselect__menu-container{top:100%}.vue-treeselect--open-above:not(.vue-treeselect--append-to-body) .vue-treeselect__menu-container{bottom:100%}.vue-treeselect__menu{cursor:default;padding-top:5px;padding-bottom:5px;display:block;position:absolute;overflow-x:hidden;overflow-y:auto;width:auto;border:1px solid #cfcfcf;background:#fff;line-height:180%;-webkit-overflow-scrolling:touch}.vue-treeselect--open-below .vue-treeselect__menu{border-bottom-left-radius:5px;border-bottom-right-radius:5px;top:0;margin-top:-1px;border-top-color:#f2f2f2;box-shadow:0 1px 0 rgba(0,0,0,.06)}.vue-treeselect--open-above .vue-treeselect__menu{border-top-left-radius:5px;border-top-right-radius:5px;bottom:0;margin-bottom:-1px;border-bottom-color:#f2f2f2}.vue-treeselect__indent-level-0 .vue-treeselect__option{padding-left:5px}[dir=rtl] .vue-treeselect__indent-level-0 .vue-treeselect__option{padding-left:5px;padding-right:5px}.vue-treeselect__indent-level-0 .vue-treeselect__tip{padding-left:25px}[dir=rtl] .vue-treeselect__indent-level-0 .vue-treeselect__tip{padding-left:5px;padding-right:25px}.vue-treeselect__indent-level-1 .vue-treeselect__option{padding-left:25px}[dir=rtl] .vue-treeselect__indent-level-1 .vue-treeselect__option{padding-left:5px;padding-right:25px}.vue-treeselect__indent-level-1 .vue-treeselect__tip{padding-left:45px}[dir=rtl] .vue-treeselect__indent-level-1 .vue-treeselect__tip{padding-left:5px;padding-right:45px}.vue-treeselect__indent-level-2 .vue-treeselect__option{padding-left:45px}[dir=rtl] .vue-treeselect__indent-level-2 .vue-treeselect__option{padding-left:5px;padding-right:45px}.vue-treeselect__indent-level-2 .vue-treeselect__tip{padding-left:65px}[dir=rtl] .vue-treeselect__indent-level-2 .vue-treeselect__tip{padding-left:5px;padding-right:65px}.vue-treeselect__indent-level-3 .vue-treeselect__option{padding-left:65px}[dir=rtl] .vue-treeselect__indent-level-3 .vue-treeselect__option{padding-left:5px;padding-right:65px}.vue-treeselect__indent-level-3 .vue-treeselect__tip{padding-left:85px}[dir=rtl] .vue-treeselect__indent-level-3 .vue-treeselect__tip{padding-left:5px;padding-right:85px}.vue-treeselect__indent-level-4 .vue-treeselect__option{padding-left:85px}[dir=rtl] .vue-treeselect__indent-level-4 .vue-treeselect__option{padding-left:5px;padding-right:85px}.vue-treeselect__indent-level-4 .vue-treeselect__tip{padding-left:105px}[dir=rtl] .vue-treeselect__indent-level-4 .vue-treeselect__tip{padding-left:5px;padding-right:105px}.vue-treeselect__indent-level-5 .vue-treeselect__option{padding-left:105px}[dir=rtl] .vue-treeselect__indent-level-5 .vue-treeselect__option{padding-left:5px;padding-right:105px}.vue-treeselect__indent-level-5 .vue-treeselect__tip{padding-left:125px}[dir=rtl] .vue-treeselect__indent-level-5 .vue-treeselect__tip{padding-left:5px;padding-right:125px}.vue-treeselect__indent-level-6 .vue-treeselect__option{padding-left:125px}[dir=rtl] .vue-treeselect__indent-level-6 .vue-treeselect__option{padding-left:5px;padding-right:125px}.vue-treeselect__indent-level-6 .vue-treeselect__tip{padding-left:145px}[dir=rtl] .vue-treeselect__indent-level-6 .vue-treeselect__tip{padding-left:5px;padding-right:145px}.vue-treeselect__indent-level-7 .vue-treeselect__option{padding-left:145px}[dir=rtl] .vue-treeselect__indent-level-7 .vue-treeselect__option{padding-left:5px;padding-right:145px}.vue-treeselect__indent-level-7 .vue-treeselect__tip{padding-left:165px}[dir=rtl] .vue-treeselect__indent-level-7 .vue-treeselect__tip{padding-left:5px;padding-right:165px}.vue-treeselect__indent-level-8 .vue-treeselect__option{padding-left:165px}[dir=rtl] .vue-treeselect__indent-level-8 .vue-treeselect__option{padding-left:5px;padding-right:165px}.vue-treeselect__indent-level-8 .vue-treeselect__tip{padding-left:185px}[dir=rtl] .vue-treeselect__indent-level-8 .vue-treeselect__tip{padding-left:5px;padding-right:185px}.vue-treeselect__option{padding-left:5px;padding-right:5px;display:table;table-layout:fixed;width:100%}.vue-treeselect__option--highlight{background:#f5f5f5}.vue-treeselect--single .vue-treeselect__option--selected{background:#e3f2fd;font-weight:600}.vue-treeselect--single .vue-treeselect__option--selected:hover{background:#e3f2fd}.vue-treeselect__option--hide{display:none}.vue-treeselect__option-arrow-container,.vue-treeselect__option-arrow-placeholder{display:table-cell;vertical-align:middle;width:20px;text-align:center;line-height:0}.vue-treeselect__option-arrow-container{cursor:pointer}.vue-treeselect__option-arrow{display:inline-block;width:9px;height:9px;color:#ccc;vertical-align:middle;transition:transform .2s cubic-bezier(.19,1,.22,1);-ms-transform:rotate(-90deg);transform:rotate(-90deg)}[dir=rtl] .vue-treeselect__option-arrow{-ms-transform:rotate(90deg);transform:rotate(90deg)}.vue-treeselect--branch-nodes-disabled .vue-treeselect__option:hover .vue-treeselect__option-arrow,.vue-treeselect__option-arrow-container:hover .vue-treeselect__option-arrow{color:#616161}.vue-treeselect__option-arrow--rotated,[dir=rtl] .vue-treeselect__option-arrow--rotated{-ms-transform:rotate(0);transform:rotate(0)}.vue-treeselect__option-arrow--rotated.vue-treeselect__option-arrow--prepare-enter{-ms-transform:rotate(-90deg)!important;transform:rotate(-90deg)!important}[dir=rtl] .vue-treeselect__option-arrow--rotated.vue-treeselect__option-arrow--prepare-enter{-ms-transform:rotate(90deg)!important;transform:rotate(90deg)!important}.vue-treeselect__label-container{display:table-cell;vertical-align:middle;cursor:pointer;display:table;width:100%;table-layout:fixed;color:inherit}.vue-treeselect__option--disabled .vue-treeselect__label-container{cursor:not-allowed;color:rgba(0,0,0,.25)}.vue-treeselect__checkbox-container{display:table-cell;width:20px;min-width:20px;height:100%;text-align:center;vertical-align:middle}.vue-treeselect__checkbox{display:block;margin:auto;width:12px;height:12px;border-width:1px;border-style:solid;border-radius:2px;position:relative;transition:all .2s cubic-bezier(.075,.82,.165,1)}.vue-treeselect__check-mark,.vue-treeselect__minus-mark{display:block;position:absolute;left:1px;top:1px;background-repeat:no-repeat;opacity:0;transition:all .2s ease}.vue-treeselect__minus-mark{width:8px;height:8px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAIAgMAAAC5YVYYAAAACVBMVEUAAAD///////9zeKVjAAAAAnRSTlMAuLMp9oYAAAAPSURBVAjXY4CDrJUgBAMAGaECJ9dz3BAAAAAASUVORK5CYII=);background-size:8px 8px}@media (-webkit-min-device-pixel-ratio:1.5),(min-resolution:1.5dppx){.vue-treeselect__minus-mark{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAgMAAABinRfyAAAADFBMVEUAAAD///////////84wDuoAAAAA3RSTlMAyTzPIdReAAAAGUlEQVQI12PAD+b///+Nof7//79gAsLFCwAx/w4blADeeQAAAABJRU5ErkJggg==)}}@media (-webkit-min-device-pixel-ratio:2),(min-resolution:192dpi){.vue-treeselect__minus-mark{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAgMAAABinRfyAAAADFBMVEUAAAD///////////84wDuoAAAAA3RSTlMAyTzPIdReAAAAGUlEQVQI12PAD+b///+Nof7//79gAsLFCwAx/w4blADeeQAAAABJRU5ErkJggg==)}}@media (-webkit-min-device-pixel-ratio:3),(min-resolution:288dpi){.vue-treeselect__minus-mark{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYBAMAAAASWSDLAAAAD1BMVEUAAAD///////////////+PQt5oAAAABHRSTlMAy2EFIuWxUgAAACRJREFUGNNjGBBgJOICBY7KDCoucODEAJSAS6FwUJShGjAQAADBPRGrK2/FhgAAAABJRU5ErkJggg==)}}.vue-treeselect__checkbox--indeterminate>.vue-treeselect__minus-mark{opacity:1}.vue-treeselect__checkbox--disabled .vue-treeselect__minus-mark{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAIAgMAAAC5YVYYAAAACVBMVEUAAADi4uLh4eHOxeSRAAAAAnRSTlMAuLMp9oYAAAAPSURBVAjXY4CDrJUgBAMAGaECJ9dz3BAAAAAASUVORK5CYII=)}@media (-webkit-min-device-pixel-ratio:1.5),(min-resolution:1.5dppx){.vue-treeselect__checkbox--disabled .vue-treeselect__minus-mark{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAgMAAABinRfyAAAADFBMVEUAAADi4uLi4uLh4eE5RQaIAAAAA3RSTlMAyTzPIdReAAAAGUlEQVQI12PAD+b///+Nof7//79gAsLFCwAx/w4blADeeQAAAABJRU5ErkJggg==)}}@media (-webkit-min-device-pixel-ratio:2),(min-resolution:192dpi){.vue-treeselect__checkbox--disabled .vue-treeselect__minus-mark{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAgMAAABinRfyAAAADFBMVEUAAADi4uLi4uLh4eE5RQaIAAAAA3RSTlMAyTzPIdReAAAAGUlEQVQI12PAD+b///+Nof7//79gAsLFCwAx/w4blADeeQAAAABJRU5ErkJggg==)}}@media (-webkit-min-device-pixel-ratio:3),(min-resolution:288dpi){.vue-treeselect__checkbox--disabled .vue-treeselect__minus-mark{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYBAMAAAASWSDLAAAAD1BMVEUAAADh4eHg4ODNzc3h4eEYfw2wAAAABHRSTlMAy2EFIuWxUgAAACRJREFUGNNjGBBgJOICBY7KDCoucODEAJSAS6FwUJShGjAQAADBPRGrK2/FhgAAAABJRU5ErkJggg==)}}.vue-treeselect__check-mark{width:8px;height:8px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAMAAADz0U65AAAAQlBMVEUAAAD///////////////////////////////////////////////////////////////////////////////////8IX9KGAAAAFXRSTlMA8u24NxILB+Tawb6jiH1zRz0xIQIIP3GUAAAAMklEQVQI1y3FtQEAMQDDQD+EGbz/qkEVOpyEOP6PudKjZNSXn4Jm2CKRdBKzSLsFWl8fMG0Bl6Jk1rMAAAAASUVORK5CYII=);background-size:8px 8px;-ms-transform:scaleY(.125);transform:scaleY(.125)}@media (-webkit-min-device-pixel-ratio:1.5),(min-resolution:1.5dppx){.vue-treeselect__check-mark{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAYFBMVEUAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////98JRy6AAAAH3RSTlMAzu4sDenl38fBvo1OMyIdEQrj1cSihX5hYFpHNycIcQOASAAAAF9JREFUGNN9zEcOgDAMRFHTS0LvNfe/JRmHKAIJ/mqeLJn+k9uDtaeUeFnFziGsBucUTirrprfe81RqZ3Bb6hPWeuZwDFOHyf+ig9CCzQ7INBn7bG5kF+QSt13BHNJnF7AaCT4Y+CW7AAAAAElFTkSuQmCC)}}@media (-webkit-min-device-pixel-ratio:2),(min-resolution:192dpi){.vue-treeselect__check-mark{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAYFBMVEUAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////98JRy6AAAAH3RSTlMAzu4sDenl38fBvo1OMyIdEQrj1cSihX5hYFpHNycIcQOASAAAAF9JREFUGNN9zEcOgDAMRFHTS0LvNfe/JRmHKAIJ/mqeLJn+k9uDtaeUeFnFziGsBucUTirrprfe81RqZ3Bb6hPWeuZwDFOHyf+ig9CCzQ7INBn7bG5kF+QSt13BHNJnF7AaCT4Y+CW7AAAAAElFTkSuQmCC)}}@media (-webkit-min-device-pixel-ratio:3),(min-resolution:288dpi){.vue-treeselect__check-mark{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAMAAADXqc3KAAAAWlBMVEUAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////9ZMre9AAAAHXRSTlMA/PiJhGNI9XlEHJB/b2ldV08+Oibk49vPp6QhAYgGBuwAAACCSURBVCjPrdHdDoIwDAXgTWAqCigo/+f9X5OwnoUwtis4V92XNWladUl+rzQPeQJAN2EHxoOnsPn7/oYk8fxBv08Rr/deOH/aZ2Nm8ZJ+s573QGfWKnNuZGzWm3+lv2V3pcU1XQ385/yjmBoM3Z+dXvlbYLLD3ujhTaOM3KaIXvNkFkuSEvYy1LqOAAAAAElFTkSuQmCC)}}.vue-treeselect__checkbox--checked>.vue-treeselect__check-mark{opacity:1;-ms-transform:scaleY(1);transform:scaleY(1)}.vue-treeselect__checkbox--disabled .vue-treeselect__check-mark{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAMAAADz0U65AAAAP1BMVEUAAADj4+Pf39/h4eHh4eHh4eHk5OTh4eHg4ODi4uLh4eHh4eHg4ODh4eHh4eHg4ODh4eHh4eHp6en////h4eFqcyvUAAAAFHRSTlMAOQfy7bgS5NrBvqOIfXNHMSELAgQ/iFsAAAA2SURBVAjXY4AANjYIzcjMAaVFuBkY+RkEWERYmRjYRXjANAOfiIgIFxNIAa8IpxBEi6AwiAQAK2MBd7xY8csAAAAASUVORK5CYII=)}@media (-webkit-min-device-pixel-ratio:1.5),(min-resolution:1.5dppx){.vue-treeselect__checkbox--disabled .vue-treeselect__check-mark{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAXVBMVEUAAADh4eHh4eHh4eHi4uLb29vh4eHh4eHh4eHh4eHh4eHh4eHh4eHi4uLi4uLj4+Pi4uLk5OTo6Ojh4eHh4eHi4uLg4ODg4ODh4eHg4ODh4eHf39/g4OD////h4eEzIk+wAAAAHnRSTlMAzu6/LA3p5eLZx8ONTjYiHRIKooV+YWBaRzEnCANnm5rnAAAAZElEQVQY033P2wqAIAyA4VWaaWrnc/n+j5mbhBjUf7WPoTD47TJb4i5zTr/sRDRHuyFaoWX7uK/RlbctlPEuyI1f4WY9yQINEkf6rzzo8YIzmUFoCs7J1EjeIaa9bXIEmzl8dgOZEAj/+2IvzAAAAABJRU5ErkJggg==)}}@media (-webkit-min-device-pixel-ratio:2),(min-resolution:192dpi){.vue-treeselect__checkbox--disabled .vue-treeselect__check-mark{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAXVBMVEUAAADh4eHh4eHh4eHi4uLb29vh4eHh4eHh4eHh4eHh4eHh4eHh4eHi4uLi4uLj4+Pi4uLk5OTo6Ojh4eHh4eHi4uLg4ODg4ODh4eHg4ODh4eHf39/g4OD////h4eEzIk+wAAAAHnRSTlMAzu6/LA3p5eLZx8ONTjYiHRIKooV+YWBaRzEnCANnm5rnAAAAZElEQVQY033P2wqAIAyA4VWaaWrnc/n+j5mbhBjUf7WPoTD47TJb4i5zTr/sRDRHuyFaoWX7uK/RlbctlPEuyI1f4WY9yQINEkf6rzzo8YIzmUFoCs7J1EjeIaa9bXIEmzl8dgOZEAj/+2IvzAAAAABJRU5ErkJggg==)}}@media (-webkit-min-device-pixel-ratio:3),(min-resolution:288dpi){.vue-treeselect__checkbox--disabled .vue-treeselect__check-mark{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAMAAADXqc3KAAAAUVBMVEUAAADh4eHh4eHh4eHh4eHi4uLi4uLh4eHh4eHh4eHf39/j4+Ph4eHh4eHh4eHg4ODi4uLh4eHh4eHi4uLh4eHh4eHh4eHh4eHh4eH////h4eF3FMFTAAAAGnRSTlMA+/eJhGhfSHE9JBzz5KaQf3pXT0Xbz0I5AYDw8F0AAAB+SURBVCjPrdHbDoMgEEVRKAii1dZe9fz/hxplTiKIT7qfYCWTEEZdUvOwbckNAD2WHeh3brHW5f5EzGQ+iN+b1Gt6KPvtv16Dn6JX9M9ya3/A1yfu5dlyduL6Hec7mXY6ddXLPP2lpABGZ8PWXfYLTJxZekVhhl7eTX24zZPNKXoRC7zQLjUAAAAASUVORK5CYII=)}}.vue-treeselect__checkbox--unchecked{border-color:#e0e0e0;background:#fff}.vue-treeselect__label-container:hover .vue-treeselect__checkbox--unchecked{border-color:#039be5;background:#fff}.vue-treeselect__checkbox--checked,.vue-treeselect__checkbox--indeterminate,.vue-treeselect__label-container:hover .vue-treeselect__checkbox--checked,.vue-treeselect__label-container:hover .vue-treeselect__checkbox--indeterminate{border-color:#039be5;background:#039be5}.vue-treeselect__checkbox--disabled,.vue-treeselect__label-container:hover .vue-treeselect__checkbox--disabled{border-color:#e0e0e0;background-color:#f7f7f7}.vue-treeselect__label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:table-cell;padding-left:5px;max-width:100%;vertical-align:middle;cursor:inherit}[dir=rtl] .vue-treeselect__label{padding-left:0;padding-right:5px}.vue-treeselect__count{margin-left:5px;font-weight:400;opacity:.6}[dir=rtl] .vue-treeselect__count{margin-left:0;margin-right:5px}.vue-treeselect__tip{padding-left:5px;padding-right:5px;display:table;table-layout:fixed;width:100%;color:#757575}.vue-treeselect__tip-text{display:table-cell;vertical-align:middle;padding-left:5px;padding-right:5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%;font-size:12px}.vue-treeselect__error-tip .vue-treeselect__retry{cursor:pointer;margin-left:5px;font-style:normal;font-weight:600;text-decoration:none;color:#039be5}[dir=rtl] .vue-treeselect__error-tip .vue-treeselect__retry{margin-left:0;margin-right:5px}.vue-treeselect__icon-container{display:table-cell;vertical-align:middle;width:20px;text-align:center;line-height:0}.vue-treeselect--single .vue-treeselect__icon-container{padding-left:5px}[dir=rtl] .vue-treeselect--single .vue-treeselect__icon-container{padding-left:0;padding-right:5px}.vue-treeselect__icon-warning{display:block;margin:auto;border-radius:50%;position:relative;width:12px;height:12px;background:#fb8c00}.vue-treeselect__icon-warning:after{display:block;position:absolute;content:"";left:5px;top:2.5px;width:2px;height:1px;border-color:#fff;border-style:solid;border-width:5px 0 1px}.vue-treeselect__icon-error{display:block;margin:auto;border-radius:50%;position:relative;width:12px;height:12px;background:#e53935}.vue-treeselect__icon-error:after,.vue-treeselect__icon-error:before{display:block;position:absolute;content:"";background:#fff;-ms-transform:rotate(45deg);transform:rotate(45deg)}.vue-treeselect__icon-error:before{width:6px;height:2px;left:3px;top:5px}.vue-treeselect__icon-error:after{width:2px;height:6px;left:5px;top:3px}.vue-treeselect__icon-loader{display:block;margin:auto;position:relative;width:12px;height:12px;text-align:center;animation:vue-treeselect-animation-rotate 1.6s linear infinite}.vue-treeselect__icon-loader:after,.vue-treeselect__icon-loader:before{border-radius:50%;position:absolute;content:"";left:0;top:0;display:block;width:100%;height:100%;opacity:.6;animation:vue-treeselect-animation-bounce 1.6s ease-in-out infinite}.vue-treeselect__icon-loader:before{background:#039be5}.vue-treeselect__icon-loader:after{background:#b3e5fc;animation-delay:-.8s}.vue-treeselect__menu-placeholder{display:none}.vue-treeselect__portal-target{position:absolute;display:block;left:0;top:0;height:0;width:0;padding:0;margin:0;border:0;overflow:visible;box-sizing:border-box}
zq-erp/src/main/resources/static/plugin/vue-treeselect/vue-treeselect.umd.min.js
New file
@@ -0,0 +1,7 @@
/*!
 * vue-treeselect v0.4.0 | (c) 2017-2019 Riophae Lee
 * Released under the MIT License.
 * https://vue-treeselect.js.org/
 */
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("Vue")):"function"==typeof define&&define.amd?define(["Vue"],t):"object"==typeof exports?exports.VueTreeselect=t(require("Vue")):e.VueTreeselect=t(e.Vue)}(window,(function(e){return function(e){var t={};function n(i){if(t[i])return t[i].exports;var r=t[i]={i:i,l:!1,exports:{}};return e[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(i,r,function(t){return e[t]}.bind(null,r));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/",n(n.s=36)}([function(e,t){e.exports=function(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}},function(e,t){var n=/^(attrs|props|on|nativeOn|class|style|hook)$/;function i(e,t){return function(){e&&e.apply(this,arguments),t&&t.apply(this,arguments)}}e.exports=function(e){return e.reduce((function(e,t){var r,o,s,a,l;for(s in t)if(r=e[s],o=t[s],r&&n.test(s))if("class"===s&&("string"==typeof r&&(l=r,e[s]=r={},r[l]=!0),"string"==typeof o&&(l=o,t[s]=o={},o[l]=!0)),"on"===s||"nativeOn"===s||"hook"===s)for(a in o)r[a]=i(r[a],o[a]);else if(Array.isArray(r))e[s]=r.concat(o);else if(Array.isArray(o))e[s]=[r].concat(o);else for(a in o)r[a]=o[a];else e[s]=t[s];return e}),{})}},function(e,t,n){var i=n(21),r=n(22),o=n(23);e.exports=function(e){return i(e)||r(e)||o()}},function(e,t){e.exports=function(){}},function(e,t,n){var i=n(5),r=n(24),o=n(7),s="Expected a function",a=Math.max,l=Math.min;e.exports=function(e,t,n){var c,u,d,h,f,p,v=0,m=!1,g=!1,y=!0;if("function"!=typeof e)throw new TypeError(s);function S(t){var n=c,i=u;return c=u=void 0,v=t,h=e.apply(i,n)}function O(e){var n=e-p;return void 0===p||n>=t||n<0||g&&e-v>=d}function b(){var e=r();if(O(e))return _(e);f=setTimeout(b,function(e){var n=t-(e-p);return g?l(n,d-(e-v)):n}(e))}function _(e){return f=void 0,y&&c?S(e):(c=u=void 0,h)}function E(){var e=r(),n=O(e);if(c=arguments,u=this,p=e,n){if(void 0===f)return function(e){return v=e,f=setTimeout(b,t),m?S(e):h}(p);if(g)return clearTimeout(f),f=setTimeout(b,t),S(p)}return void 0===f&&(f=setTimeout(b,t)),h}return t=o(t)||0,i(n)&&(m=!!n.leading,d=(g="maxWait"in n)?a(o(n.maxWait)||0,t):d,y="trailing"in n?!!n.trailing:y),E.cancel=function(){void 0!==f&&clearTimeout(f),v=0,c=p=u=f=void 0},E.flush=function(){return void 0===f?h:_(r())},E}},function(e,t){e.exports=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}},function(e,t,n){var i=n(25),r="object"==typeof self&&self&&self.Object===Object&&self,o=i||r||Function("return this")();e.exports=o},function(e,t,n){var i=n(5),r=n(27),o=NaN,s=/^\s+|\s+$/g,a=/^[-+]0x[0-9a-f]+$/i,l=/^0b[01]+$/i,c=/^0o[0-7]+$/i,u=parseInt;e.exports=function(e){if("number"==typeof e)return e;if(r(e))return o;if(i(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=i(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(s,"");var n=l.test(e);return n||c.test(e)?u(e.slice(2),n?2:8):a.test(e)?o:+e}},function(e,t,n){var i=n(6).Symbol;e.exports=i},function(e,t){e.exports=function(e){return!!e&&("object"==typeof e||"function"==typeof e)&&"function"==typeof e.then}},function(e,t,n){var i=n(32);e.exports=function(e){return i(2,e)}},function(e,t){e.exports=function(e){return e}},function(e,t){e.exports=function(e){return function(){return e}}},function(e,t){e.exports=function(e){var t=null==e?0:e.length;return t?e[t-1]:void 0}},function(e,t,n){var i=n(18),r=n(19),o=n(20);e.exports=function(e,t){return i(e)||r(e,t)||o()}},function(e,t,n){"use strict";e.exports=function(e,t){var n=t.length,i=e.length;if(i>n)return!1;if(i===n)return e===t;e:for(var r=0,o=0;r<i;r++){for(var s=e.charCodeAt(r);o<n;)if(t.charCodeAt(o++)===s)continue e;return!1}return!0}},function(e,t){function n(e){return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function i(t){return"function"==typeof Symbol&&"symbol"===n(Symbol.iterator)?e.exports=i=function(e){return n(e)}:e.exports=i=function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":n(e)},i(t)}e.exports=i},function(t,n){t.exports=e},function(e,t){e.exports=function(e){if(Array.isArray(e))return e}},function(e,t){e.exports=function(e,t){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e)){var n=[],i=!0,r=!1,o=void 0;try{for(var s,a=e[Symbol.iterator]();!(i=(s=a.next()).done)&&(n.push(s.value),!t||n.length!==t);i=!0);}catch(e){r=!0,o=e}finally{try{i||null==a.return||a.return()}finally{if(r)throw o}}return n}}},function(e,t){e.exports=function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}},function(e,t){e.exports=function(e){if(Array.isArray(e)){for(var t=0,n=new Array(e.length);t<e.length;t++)n[t]=e[t];return n}}},function(e,t){e.exports=function(e){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e))return Array.from(e)}},function(e,t){e.exports=function(){throw new TypeError("Invalid attempt to spread non-iterable instance")}},function(e,t,n){var i=n(6);e.exports=function(){return i.Date.now()}},function(e,t,n){(function(t){var n="object"==typeof t&&t&&t.Object===Object&&t;e.exports=n}).call(this,n(26))},function(e,t){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t,n){var i=n(28),r=n(31),o="[object Symbol]";e.exports=function(e){return"symbol"==typeof e||r(e)&&i(e)==o}},function(e,t,n){var i=n(8),r=n(29),o=n(30),s="[object Null]",a="[object Undefined]",l=i?i.toStringTag:void 0;e.exports=function(e){return null==e?void 0===e?a:s:l&&l in Object(e)?r(e):o(e)}},function(e,t,n){var i=n(8),r=Object.prototype,o=r.hasOwnProperty,s=r.toString,a=i?i.toStringTag:void 0;e.exports=function(e){var t=o.call(e,a),n=e[a];try{e[a]=void 0;var i=!0}catch(e){}var r=s.call(e);return i&&(t?e[a]=n:delete e[a]),r}},function(e,t){var n=Object.prototype.toString;e.exports=function(e){return n.call(e)}},function(e,t){e.exports=function(e){return null!=e&&"object"==typeof e}},function(e,t,n){var i=n(33),r="Expected a function";e.exports=function(e,t){var n;if("function"!=typeof t)throw new TypeError(r);return e=i(e),function(){return--e>0&&(n=t.apply(this,arguments)),e<=1&&(t=void 0),n}}},function(e,t,n){var i=n(34);e.exports=function(e){var t=i(e),n=t%1;return t==t?n?t-n:t:0}},function(e,t,n){var i=n(7),r=1/0,o=17976931348623157e292;e.exports=function(e){return e?(e=i(e))===r||e===-r?(e<0?-1:1)*o:e==e?e:0:0===e?e:0}},function(e,t,n){},function(e,t,n){"use strict";n.r(t);var i=n(14),r=n.n(i),o=n(2),s=n.n(o),a=n(0),l=n.n(a),c=n(15),u=n.n(c),d=n(3),h=n.n(d).a;function f(e){return function(t){if("mousedown"===t.type&&0===t.button){for(var n=arguments.length,i=new Array(n>1?n-1:0),r=1;r<n;r++)i[r-1]=arguments[r];e.call.apply(e,[this,t].concat(i))}}}function p(e,t){var n=e.getBoundingClientRect(),i=t.getBoundingClientRect(),r=t.offsetHeight/3;i.bottom+r>n.bottom?e.scrollTop=Math.min(t.offsetTop+t.clientHeight-e.offsetHeight+r,e.scrollHeight):i.top-r<n.top&&(e.scrollTop=Math.max(t.offsetTop-r,0))}var v,m=n(4),g=n.n(m),y=function(e,t){var n=document.createElement("_"),i=n.appendChild(document.createElement("_")),r=n.appendChild(document.createElement("_")),o=i.appendChild(document.createElement("_")),s=void 0,a=void 0;return i.style.cssText=n.style.cssText="height:100%;left:0;opacity:0;overflow:hidden;pointer-events:none;position:absolute;top:0;transition:0s;width:100%;z-index:-1",o.style.cssText=r.style.cssText="display:block;height:100%;transition:0s;width:100%",o.style.width=o.style.height="200%",e.appendChild(n),l(),function(){c(),e.removeChild(n)};function l(){c();var o=e.offsetWidth,u=e.offsetHeight;o===s&&u===a||(s=o,a=u,r.style.width=2*o+"px",r.style.height=2*u+"px",n.scrollLeft=n.scrollWidth,n.scrollTop=n.scrollHeight,i.scrollLeft=i.scrollWidth,i.scrollTop=i.scrollHeight,t({width:o,height:u})),i.addEventListener("scroll",l),n.addEventListener("scroll",l)}function c(){i.removeEventListener("scroll",l),n.removeEventListener("scroll",l)}};function S(e,t){var n=e.indexOf(t);-1!==n&&e.splice(n,1)}var O=[],b=100;function _(e){var t=e.$el,n=e.listener,i=e.lastWidth,r=e.lastHeight,o=t.offsetWidth,s=t.offsetHeight;i===o&&r===s||(e.lastWidth=o,e.lastHeight=s,n({width:o,height:s}))}function E(e,t){var n={$el:e,listener:t,lastWidth:null,lastHeight:null};return O.push(n),_(n),v=setInterval((function(){O.forEach(_)}),b),function(){S(O,n),O.length||(clearInterval(v),v=null)}}function N(e,t){var n=9===document.documentMode,i=!0,r=(n?E:y)(e,(function(){return i||t.apply(void 0,arguments)}));return i=!1,r}function L(e){var t=getComputedStyle(e),n=t.overflow,i=t.overflowX,r=t.overflowY;return/(auto|scroll|overlay)/.test(n+r+i)}function x(e,t){var n=function(e){for(var t=[],n=e.parentNode;n&&"BODY"!==n.nodeName&&n.nodeType===document.ELEMENT_NODE;)L(n)&&t.push(n),n=n.parentNode;return t.push(window),t}(e);return window.addEventListener("resize",t,{passive:!0}),n.forEach((function(e){e.addEventListener("scroll",t,{passive:!0})})),function(){window.removeEventListener("resize",t,{passive:!0}),n.forEach((function(e){e.removeEventListener("scroll",t,{passive:!0})}))}}function w(e){return e!=e}var C=n(9),D=n.n(C),I=n(10),M=n.n(I),A=n(11),T=n.n(A),R=n(12),$=n.n(R),B=function(){return Object.create(null)},z=n(16),V=n.n(z);function k(e){return null!=e&&"object"===V()(e)&&Object.getPrototypeOf(e)===Object.prototype}function F(e,t){if(k(t))for(var n=Object.keys(t),i=0,r=n.length;i<r;i++)o=e,s=n[i],k(a=t[n[i]])?(o[s]||(o[s]={}),F(o[s],a)):o[s]=a;var o,s,a;return e}var j=n(13),P=n.n(j);function H(e,t){return-1!==e.indexOf(t)}function W(e,t,n){for(var i=0,r=e.length;i<r;i++)if(t.call(n,e[i],i,e))return e[i]}function Q(e,t){if(e.length!==t.length)return!0;for(var n=0;n<e.length;n++)if(e[n]!==t[n])return!0;return!1}var Y=8,q=13,K=27,X=35,U=36,J=37,G=38,Z=39,ee=40,te=46;function ne(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function ie(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ne(n,!0).forEach((function(t){l()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ne(n).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function re(e,t){for(var n=0;;){if(e.level<n)return-1;if(t.level<n)return 1;if(e.index[n]!==t.index[n])return e.index[n]-t.index[n];n++}}function oe(e,t,n){return e?u()(t,n):H(n,t)}function se(e){return e.message||String(e)}var ae=0,le={provide:function(){return{instance:this}},props:{allowClearingDisabled:{type:Boolean,default:!1},allowSelectingDisabledDescendants:{type:Boolean,default:!1},alwaysOpen:{type:Boolean,default:!1},appendToBody:{type:Boolean,default:!1},async:{type:Boolean,default:!1},autoFocus:{type:Boolean,default:!1},autoLoadRootOptions:{type:Boolean,default:!0},autoDeselectAncestors:{type:Boolean,default:!1},autoDeselectDescendants:{type:Boolean,default:!1},autoSelectAncestors:{type:Boolean,default:!1},autoSelectDescendants:{type:Boolean,default:!1},backspaceRemoves:{type:Boolean,default:!0},beforeClearAll:{type:Function,default:$()(!0)},branchNodesFirst:{type:Boolean,default:!1},cacheOptions:{type:Boolean,default:!0},clearable:{type:Boolean,default:!0},clearAllText:{type:String,default:"Clear all"},clearOnSelect:{type:Boolean,default:!1},clearValueText:{type:String,default:"Clear value"},closeOnSelect:{type:Boolean,default:!0},defaultExpandLevel:{type:Number,default:0},defaultOptions:{default:!1},deleteRemoves:{type:Boolean,default:!0},delimiter:{type:String,default:","},flattenSearchResults:{type:Boolean,default:!1},disableBranchNodes:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},disableFuzzyMatching:{type:Boolean,default:!1},flat:{type:Boolean,default:!1},instanceId:{default:function(){return"".concat(ae++,"$$")},type:[String,Number]},joinValues:{type:Boolean,default:!1},limit:{type:Number,default:1/0},limitText:{type:Function,default:function(e){return"and ".concat(e," more")}},loadingText:{type:String,default:"Loading..."},loadOptions:{type:Function},matchKeys:{type:Array,default:$()(["label"])},maxHeight:{type:Number,default:300},multiple:{type:Boolean,default:!1},name:{type:String},noChildrenText:{type:String,default:"No sub-options."},noOptionsText:{type:String,default:"No options available."},noResultsText:{type:String,default:"No results found..."},normalizer:{type:Function,default:T.a},openDirection:{type:String,default:"auto",validator:function(e){return H(["auto","top","bottom","above","below"],e)}},openOnClick:{type:Boolean,default:!0},openOnFocus:{type:Boolean,default:!1},options:{type:Array},placeholder:{type:String,default:"Select..."},required:{type:Boolean,default:!1},retryText:{type:String,default:"Retry?"},retryTitle:{type:String,default:"Click to retry"},searchable:{type:Boolean,default:!0},searchNested:{type:Boolean,default:!1},searchPromptText:{type:String,default:"Type to search..."},showCount:{type:Boolean,default:!1},showCountOf:{type:String,default:"ALL_CHILDREN",validator:function(e){return H(["ALL_CHILDREN","ALL_DESCENDANTS","LEAF_CHILDREN","LEAF_DESCENDANTS"],e)}},showCountOnSearch:null,sortValueBy:{type:String,default:"ORDER_SELECTED",validator:function(e){return H(["ORDER_SELECTED","LEVEL","INDEX"],e)}},tabIndex:{type:Number,default:0},value:null,valueConsistsOf:{type:String,default:"BRANCH_PRIORITY",validator:function(e){return H(["ALL","BRANCH_PRIORITY","LEAF_PRIORITY","ALL_WITH_INDETERMINATE"],e)}},valueFormat:{type:String,default:"id"},zIndex:{type:[Number,String],default:999}},data:function(){return{trigger:{isFocused:!1,searchQuery:""},menu:{isOpen:!1,current:null,lastScrollPosition:0,placement:"bottom"},forest:{normalizedOptions:[],nodeMap:B(),checkedStateMap:B(),selectedNodeIds:this.extractCheckedNodeIdsFromValue(),selectedNodeMap:B()},rootOptionsStates:{isLoaded:!1,isLoading:!1,loadingError:""},localSearch:{active:!1,noResults:!0,countMap:B()},remoteSearch:B()}},computed:{selectedNodes:function(){return this.forest.selectedNodeIds.map(this.getNode)},internalValue:function(){var e,t=this;if(this.single||this.flat||this.disableBranchNodes||"ALL"===this.valueConsistsOf)e=this.forest.selectedNodeIds.slice();else if("BRANCH_PRIORITY"===this.valueConsistsOf)e=this.forest.selectedNodeIds.filter((function(e){var n=t.getNode(e);return!!n.isRootNode||!t.isSelected(n.parentNode)}));else if("LEAF_PRIORITY"===this.valueConsistsOf)e=this.forest.selectedNodeIds.filter((function(e){var n=t.getNode(e);return!!n.isLeaf||0===n.children.length}));else if("ALL_WITH_INDETERMINATE"===this.valueConsistsOf){var n,i=[];e=this.forest.selectedNodeIds.slice(),this.selectedNodes.forEach((function(t){t.ancestors.forEach((function(t){H(i,t.id)||H(e,t.id)||i.push(t.id)}))})),(n=e).push.apply(n,i)}return"LEVEL"===this.sortValueBy?e.sort((function(e,n){return function(e,t){return e.level===t.level?re(e,t):e.level-t.level}(t.getNode(e),t.getNode(n))})):"INDEX"===this.sortValueBy&&e.sort((function(e,n){return re(t.getNode(e),t.getNode(n))})),e},hasValue:function(){return this.internalValue.length>0},single:function(){return!this.multiple},visibleOptionIds:function(){var e=this,t=[];return this.traverseAllNodesByIndex((function(n){if(e.localSearch.active&&!e.shouldOptionBeIncludedInSearchResult(n)||t.push(n.id),n.isBranch&&!e.shouldExpand(n))return!1})),t},hasVisibleOptions:function(){return 0!==this.visibleOptionIds.length},showCountOnSearchComputed:function(){return"boolean"==typeof this.showCountOnSearch?this.showCountOnSearch:this.showCount},hasBranchNodes:function(){return this.forest.normalizedOptions.some((function(e){return e.isBranch}))},shouldFlattenOptions:function(){return this.localSearch.active&&this.flattenSearchResults}},watch:{alwaysOpen:function(e){e?this.openMenu():this.closeMenu()},branchNodesFirst:function(){this.initialize()},disabled:function(e){e&&this.menu.isOpen?this.closeMenu():e||this.menu.isOpen||!this.alwaysOpen||this.openMenu()},flat:function(){this.initialize()},internalValue:function(e,t){Q(e,t)&&this.$emit("input",this.getValue(),this.getInstanceId())},matchKeys:function(){this.initialize()},multiple:function(e){e&&this.buildForestState()},options:{handler:function(){this.async||(this.initialize(),this.rootOptionsStates.isLoaded=Array.isArray(this.options))},deep:!0,immediate:!0},"trigger.searchQuery":function(){this.async?this.handleRemoteSearch():this.handleLocalSearch(),this.$emit("search-change",this.trigger.searchQuery,this.getInstanceId())},value:function(){var e=this.extractCheckedNodeIdsFromValue();Q(e,this.internalValue)&&this.fixSelectedNodeIds(e)}},methods:{verifyProps:function(){var e=this;if(h((function(){return!e.async||e.searchable}),(function(){return'For async search mode, the value of "searchable" prop must be true.'})),null!=this.options||this.loadOptions||h((function(){return!1}),(function(){return'Are you meant to dynamically load options? You need to use "loadOptions" prop.'})),this.flat&&h((function(){return e.multiple}),(function(){return'You are using flat mode. But you forgot to add "multiple=true"?'})),!this.flat){["autoSelectAncestors","autoSelectDescendants","autoDeselectAncestors","autoDeselectDescendants"].forEach((function(t){h((function(){return!e[t]}),(function(){return'"'.concat(t,'" only applies to flat mode.')}))}))}},resetFlags:function(){this._blurOnSelect=!1},initialize:function(){var e=this.async?this.getRemoteSearchEntry().options:this.options;if(Array.isArray(e)){var t=this.forest.nodeMap;this.forest.nodeMap=B(),this.keepDataOfSelectedNodes(t),this.forest.normalizedOptions=this.normalize(null,e,t),this.fixSelectedNodeIds(this.internalValue)}else this.forest.normalizedOptions=[]},getInstanceId:function(){return null==this.instanceId?this.id:this.instanceId},getValue:function(){var e=this;if("id"===this.valueFormat)return this.multiple?this.internalValue.slice():this.internalValue[0];var t=this.internalValue.map((function(t){return e.getNode(t).raw}));return this.multiple?t:t[0]},getNode:function(e){return h((function(){return null!=e}),(function(){return"Invalid node id: ".concat(e)})),null==e?null:e in this.forest.nodeMap?this.forest.nodeMap[e]:this.createFallbackNode(e)},createFallbackNode:function(e){var t=this.extractNodeFromValue(e),n={id:e,label:this.enhancedNormalizer(t).label||"".concat(e," (unknown)"),ancestors:[],parentNode:null,isFallbackNode:!0,isRootNode:!0,isLeaf:!0,isBranch:!1,isDisabled:!1,isNew:!1,index:[-1],level:0,raw:t};return this.$set(this.forest.nodeMap,e,n)},extractCheckedNodeIdsFromValue:function(){var e=this;return null==this.value?[]:"id"===this.valueFormat?this.multiple?this.value.slice():[this.value]:(this.multiple?this.value:[this.value]).map((function(t){return e.enhancedNormalizer(t)})).map((function(e){return e.id}))},extractNodeFromValue:function(e){var t=this,n={id:e};return"id"===this.valueFormat?n:W(this.multiple?Array.isArray(this.value)?this.value:[]:this.value?[this.value]:[],(function(n){return n&&t.enhancedNormalizer(n).id===e}))||n},fixSelectedNodeIds:function(e){var t=this,n=[];if(this.single||this.flat||this.disableBranchNodes||"ALL"===this.valueConsistsOf)n=e;else if("BRANCH_PRIORITY"===this.valueConsistsOf)e.forEach((function(e){n.push(e);var i=t.getNode(e);i.isBranch&&t.traverseDescendantsBFS(i,(function(e){n.push(e.id)}))}));else if("LEAF_PRIORITY"===this.valueConsistsOf)for(var i=B(),r=e.slice();r.length;){var o=r.shift(),s=this.getNode(o);n.push(o),s.isRootNode||(s.parentNode.id in i||(i[s.parentNode.id]=s.parentNode.children.length),0==--i[s.parentNode.id]&&r.push(s.parentNode.id))}else if("ALL_WITH_INDETERMINATE"===this.valueConsistsOf)for(var a=B(),l=e.filter((function(e){var n=t.getNode(e);return n.isLeaf||0===n.children.length}));l.length;){var c=l.shift(),u=this.getNode(c);n.push(c),u.isRootNode||(u.parentNode.id in a||(a[u.parentNode.id]=u.parentNode.children.length),0==--a[u.parentNode.id]&&l.push(u.parentNode.id))}Q(this.forest.selectedNodeIds,n)&&(this.forest.selectedNodeIds=n),this.buildForestState()},keepDataOfSelectedNodes:function(e){var t=this;this.forest.selectedNodeIds.forEach((function(n){if(e[n]){var i=ie({},e[n],{isFallbackNode:!0});t.$set(t.forest.nodeMap,n,i)}}))},isSelected:function(e){return!0===this.forest.selectedNodeMap[e.id]},traverseDescendantsBFS:function(e,t){if(e.isBranch)for(var n=e.children.slice();n.length;){var i=n[0];i.isBranch&&n.push.apply(n,s()(i.children)),t(i),n.shift()}},traverseDescendantsDFS:function(e,t){var n=this;e.isBranch&&e.children.forEach((function(e){n.traverseDescendantsDFS(e,t),t(e)}))},traverseAllNodesDFS:function(e){var t=this;this.forest.normalizedOptions.forEach((function(n){t.traverseDescendantsDFS(n,e),e(n)}))},traverseAllNodesByIndex:function(e){!function t(n){n.children.forEach((function(n){!1!==e(n)&&n.isBranch&&t(n)}))}({children:this.forest.normalizedOptions})},toggleClickOutsideEvent:function(e){e?document.addEventListener("mousedown",this.handleClickOutside,!1):document.removeEventListener("mousedown",this.handleClickOutside,!1)},getValueContainer:function(){return this.$refs.control.$refs["value-container"]},getInput:function(){return this.getValueContainer().$refs.input},focusInput:function(){this.getInput().focus()},blurInput:function(){this.getInput().blur()},handleMouseDown:f((function(e){(e.preventDefault(),e.stopPropagation(),this.disabled)||(this.getValueContainer().$el.contains(e.target)&&!this.menu.isOpen&&(this.openOnClick||this.trigger.isFocused)&&this.openMenu(),this._blurOnSelect?this.blurInput():this.focusInput(),this.resetFlags())})),handleClickOutside:function(e){this.$refs.wrapper&&!this.$refs.wrapper.contains(e.target)&&(this.blurInput(),this.closeMenu())},handleLocalSearch:function(){var e=this,t=this.trigger.searchQuery,n=function(){return e.resetHighlightedOptionWhenNecessary(!0)};if(!t)return this.localSearch.active=!1,n();this.localSearch.active=!0,this.localSearch.noResults=!0,this.traverseAllNodesDFS((function(t){var n;t.isBranch&&(t.isExpandedOnSearch=!1,t.showAllChildrenOnSearch=!1,t.isMatched=!1,t.hasMatchedDescendants=!1,e.$set(e.localSearch.countMap,t.id,(n={},l()(n,"ALL_CHILDREN",0),l()(n,"ALL_DESCENDANTS",0),l()(n,"LEAF_CHILDREN",0),l()(n,"LEAF_DESCENDANTS",0),n)))}));var i=t.trim().toLocaleLowerCase(),r=i.replace(/\s+/g," ").split(" ");this.traverseAllNodesDFS((function(t){e.searchNested&&r.length>1?t.isMatched=r.every((function(e){return oe(!1,e,t.nestedSearchLabel)})):t.isMatched=e.matchKeys.some((function(n){return oe(!e.disableFuzzyMatching,i,t.lowerCased[n])})),t.isMatched&&(e.localSearch.noResults=!1,t.ancestors.forEach((function(t){return e.localSearch.countMap[t.id].ALL_DESCENDANTS++})),t.isLeaf&&t.ancestors.forEach((function(t){return e.localSearch.countMap[t.id].LEAF_DESCENDANTS++})),null!==t.parentNode&&(e.localSearch.countMap[t.parentNode.id].ALL_CHILDREN+=1,t.isLeaf&&(e.localSearch.countMap[t.parentNode.id].LEAF_CHILDREN+=1))),(t.isMatched||t.isBranch&&t.isExpandedOnSearch)&&null!==t.parentNode&&(t.parentNode.isExpandedOnSearch=!0,t.parentNode.hasMatchedDescendants=!0)})),n()},handleRemoteSearch:function(){var e=this,t=this.trigger.searchQuery,n=this.getRemoteSearchEntry(),i=function(){e.initialize(),e.resetHighlightedOptionWhenNecessary(!0)};if((""===t||this.cacheOptions)&&n.isLoaded)return i();this.callLoadOptionsProp({action:"ASYNC_SEARCH",args:{searchQuery:t},isPending:function(){return n.isLoading},start:function(){n.isLoading=!0,n.isLoaded=!1,n.loadingError=""},succeed:function(r){n.isLoaded=!0,n.options=r,e.trigger.searchQuery===t&&i()},fail:function(e){n.loadingError=se(e)},end:function(){n.isLoading=!1}})},getRemoteSearchEntry:function(){var e=this,t=this.trigger.searchQuery,n=this.remoteSearch[t]||ie({},{isLoaded:!1,isLoading:!1,loadingError:""},{options:[]});if(this.$watch((function(){return n.options}),(function(){e.trigger.searchQuery===t&&e.initialize()}),{deep:!0}),""===t){if(Array.isArray(this.defaultOptions))return n.options=this.defaultOptions,n.isLoaded=!0,n;if(!0!==this.defaultOptions)return n.isLoaded=!0,n}return this.remoteSearch[t]||this.$set(this.remoteSearch,t,n),n},shouldExpand:function(e){return this.localSearch.active?e.isExpandedOnSearch:e.isExpanded},shouldOptionBeIncludedInSearchResult:function(e){return!!e.isMatched||(!(!e.isBranch||!e.hasMatchedDescendants||this.flattenSearchResults)||!(e.isRootNode||!e.parentNode.showAllChildrenOnSearch))},shouldShowOptionInMenu:function(e){return!(this.localSearch.active&&!this.shouldOptionBeIncludedInSearchResult(e))},getControl:function(){return this.$refs.control.$el},getMenu:function(){var e=(this.appendToBody?this.$refs.portal.portalTarget:this).$refs.menu.$refs.menu;return e&&"#comment"!==e.nodeName?e:null},setCurrentHighlightedOption:function(e){var t=this,n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=this.menu.current;if(null!=i&&i in this.forest.nodeMap&&(this.forest.nodeMap[i].isHighlighted=!1),this.menu.current=e.id,e.isHighlighted=!0,this.menu.isOpen&&n){var r=function(){var n=t.getMenu(),i=n.querySelector('.vue-treeselect__option[data-id="'.concat(e.id,'"]'));i&&p(n,i)};this.getMenu()?r():this.$nextTick(r)}},resetHighlightedOptionWhenNecessary:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=this.menu.current;!e&&null!=t&&t in this.forest.nodeMap&&this.shouldShowOptionInMenu(this.getNode(t))||this.highlightFirstOption()},highlightFirstOption:function(){if(this.hasVisibleOptions){var e=this.visibleOptionIds[0];this.setCurrentHighlightedOption(this.getNode(e))}},highlightPrevOption:function(){if(this.hasVisibleOptions){var e=this.visibleOptionIds.indexOf(this.menu.current)-1;if(-1===e)return this.highlightLastOption();this.setCurrentHighlightedOption(this.getNode(this.visibleOptionIds[e]))}},highlightNextOption:function(){if(this.hasVisibleOptions){var e=this.visibleOptionIds.indexOf(this.menu.current)+1;if(e===this.visibleOptionIds.length)return this.highlightFirstOption();this.setCurrentHighlightedOption(this.getNode(this.visibleOptionIds[e]))}},highlightLastOption:function(){if(this.hasVisibleOptions){var e=P()(this.visibleOptionIds);this.setCurrentHighlightedOption(this.getNode(e))}},resetSearchQuery:function(){this.trigger.searchQuery=""},closeMenu:function(){!this.menu.isOpen||!this.disabled&&this.alwaysOpen||(this.saveMenuScrollPosition(),this.menu.isOpen=!1,this.toggleClickOutsideEvent(!1),this.resetSearchQuery(),this.$emit("close",this.getValue(),this.getInstanceId()))},openMenu:function(){this.disabled||this.menu.isOpen||(this.menu.isOpen=!0,this.$nextTick(this.resetHighlightedOptionWhenNecessary),this.$nextTick(this.restoreMenuScrollPosition),this.options||this.async||this.loadRootOptions(),this.toggleClickOutsideEvent(!0),this.$emit("open",this.getInstanceId()))},toggleMenu:function(){this.menu.isOpen?this.closeMenu():this.openMenu()},toggleExpanded:function(e){var t;this.localSearch.active?(t=e.isExpandedOnSearch=!e.isExpandedOnSearch)&&(e.showAllChildrenOnSearch=!0):t=e.isExpanded=!e.isExpanded,t&&!e.childrenStates.isLoaded&&this.loadChildrenOptions(e)},buildForestState:function(){var e=this,t=B();this.forest.selectedNodeIds.forEach((function(e){t[e]=!0})),this.forest.selectedNodeMap=t;var n=B();this.multiple&&(this.traverseAllNodesByIndex((function(e){n[e.id]=0})),this.selectedNodes.forEach((function(t){n[t.id]=2,e.flat||e.disableBranchNodes||t.ancestors.forEach((function(t){e.isSelected(t)||(n[t.id]=1)}))}))),this.forest.checkedStateMap=n},enhancedNormalizer:function(e){return ie({},e,{},this.normalizer(e,this.getInstanceId()))},normalize:function(e,t,n){var i=this,o=t.map((function(e){return[i.enhancedNormalizer(e),e]})).map((function(t,o){var s=r()(t,2),a=s[0],c=s[1];i.checkDuplication(a),i.verifyNodeShape(a);var u=a.id,d=a.label,f=a.children,p=a.isDefaultExpanded,v=null===e,m=v?0:e.level+1,g=Array.isArray(f)||null===f,y=!g,S=!!a.isDisabled||!i.flat&&!v&&e.isDisabled,O=!!a.isNew,b=i.matchKeys.reduce((function(e,t){return ie({},e,l()({},t,(n=a[t],"string"==typeof n?n:"number"!=typeof n||w(n)?"":n+"").toLocaleLowerCase()));var n}),{}),_=v?b.label:e.nestedSearchLabel+" "+b.label,E=i.$set(i.forest.nodeMap,u,B());if(i.$set(E,"id",u),i.$set(E,"label",d),i.$set(E,"level",m),i.$set(E,"ancestors",v?[]:[e].concat(e.ancestors)),i.$set(E,"index",(v?[]:e.index).concat(o)),i.$set(E,"parentNode",e),i.$set(E,"lowerCased",b),i.$set(E,"nestedSearchLabel",_),i.$set(E,"isDisabled",S),i.$set(E,"isNew",O),i.$set(E,"isMatched",!1),i.$set(E,"isHighlighted",!1),i.$set(E,"isBranch",g),i.$set(E,"isLeaf",y),i.$set(E,"isRootNode",v),i.$set(E,"raw",c),g){var N,L=Array.isArray(f);i.$set(E,"childrenStates",ie({},{isLoaded:!1,isLoading:!1,loadingError:""},{isLoaded:L})),i.$set(E,"isExpanded","boolean"==typeof p?p:m<i.defaultExpandLevel),i.$set(E,"hasMatchedDescendants",!1),i.$set(E,"hasDisabledDescendants",!1),i.$set(E,"isExpandedOnSearch",!1),i.$set(E,"showAllChildrenOnSearch",!1),i.$set(E,"count",(N={},l()(N,"ALL_CHILDREN",0),l()(N,"ALL_DESCENDANTS",0),l()(N,"LEAF_CHILDREN",0),l()(N,"LEAF_DESCENDANTS",0),N)),i.$set(E,"children",L?i.normalize(E,f,n):[]),!0===p&&E.ancestors.forEach((function(e){e.isExpanded=!0})),L||"function"==typeof i.loadOptions?!L&&E.isExpanded&&i.loadChildrenOptions(E):h((function(){return!1}),(function(){return'Unloaded branch node detected. "loadOptions" prop is required to load its children.'}))}if(E.ancestors.forEach((function(e){return e.count.ALL_DESCENDANTS++})),y&&E.ancestors.forEach((function(e){return e.count.LEAF_DESCENDANTS++})),v||(e.count.ALL_CHILDREN+=1,y&&(e.count.LEAF_CHILDREN+=1),S&&(e.hasDisabledDescendants=!0)),n&&n[u]){var x=n[u];E.isMatched=x.isMatched,E.showAllChildrenOnSearch=x.showAllChildrenOnSearch,E.isHighlighted=x.isHighlighted,x.isBranch&&E.isBranch&&(E.isExpanded=x.isExpanded,E.isExpandedOnSearch=x.isExpandedOnSearch,x.childrenStates.isLoaded&&!E.childrenStates.isLoaded?E.isExpanded=!1:E.childrenStates=ie({},x.childrenStates))}return E}));if(this.branchNodesFirst){var s=o.filter((function(e){return e.isBranch})),a=o.filter((function(e){return e.isLeaf}));o=s.concat(a)}return o},loadRootOptions:function(){var e=this;this.callLoadOptionsProp({action:"LOAD_ROOT_OPTIONS",isPending:function(){return e.rootOptionsStates.isLoading},start:function(){e.rootOptionsStates.isLoading=!0,e.rootOptionsStates.loadingError=""},succeed:function(){e.rootOptionsStates.isLoaded=!0,e.$nextTick((function(){e.resetHighlightedOptionWhenNecessary(!0)}))},fail:function(t){e.rootOptionsStates.loadingError=se(t)},end:function(){e.rootOptionsStates.isLoading=!1}})},loadChildrenOptions:function(e){var t=this,n=e.id,i=e.raw;this.callLoadOptionsProp({action:"LOAD_CHILDREN_OPTIONS",args:{parentNode:i},isPending:function(){return t.getNode(n).childrenStates.isLoading},start:function(){t.getNode(n).childrenStates.isLoading=!0,t.getNode(n).childrenStates.loadingError=""},succeed:function(){t.getNode(n).childrenStates.isLoaded=!0},fail:function(e){t.getNode(n).childrenStates.loadingError=se(e)},end:function(){t.getNode(n).childrenStates.isLoading=!1}})},callLoadOptionsProp:function(e){var t=e.action,n=e.args,i=e.isPending,r=e.start,o=e.succeed,s=e.fail,a=e.end;if(this.loadOptions&&!i()){r();var l=M()((function(e,t){e?s(e):o(t),a()})),c=this.loadOptions(ie({id:this.getInstanceId(),instanceId:this.getInstanceId(),action:t},n,{callback:l}));D()(c)&&c.then((function(){l()}),(function(e){l(e)})).catch((function(e){console.error(e)}))}},checkDuplication:function(e){var t=this;h((function(){return!(e.id in t.forest.nodeMap&&!t.forest.nodeMap[e.id].isFallbackNode)}),(function(){return"Detected duplicate presence of node id ".concat(JSON.stringify(e.id),". ")+'Their labels are "'.concat(t.forest.nodeMap[e.id].label,'" and "').concat(e.label,'" respectively.')}))},verifyNodeShape:function(e){h((function(){return!(void 0===e.children&&!0===e.isBranch)}),(function(){return"Are you meant to declare an unloaded branch node? `isBranch: true` is no longer supported, please use `children: null` instead."}))},select:function(e){if(!this.disabled&&!e.isDisabled){this.single&&this.clear();var t=this.multiple&&!this.flat?0===this.forest.checkedStateMap[e.id]:!this.isSelected(e);t?this._selectNode(e):this._deselectNode(e),this.buildForestState(),t?this.$emit("select",e.raw,this.getInstanceId()):this.$emit("deselect",e.raw,this.getInstanceId()),this.localSearch.active&&t&&(this.single||this.clearOnSelect)&&this.resetSearchQuery(),this.single&&this.closeOnSelect&&(this.closeMenu(),this.searchable&&(this._blurOnSelect=!0))}},clear:function(){var e=this;this.hasValue&&(this.single||this.allowClearingDisabled?this.forest.selectedNodeIds=[]:this.forest.selectedNodeIds=this.forest.selectedNodeIds.filter((function(t){return e.getNode(t).isDisabled})),this.buildForestState())},_selectNode:function(e){var t=this;if(this.single||this.disableBranchNodes)return this.addValue(e);if(this.flat)return this.addValue(e),void(this.autoSelectAncestors?e.ancestors.forEach((function(e){t.isSelected(e)||e.isDisabled||t.addValue(e)})):this.autoSelectDescendants&&this.traverseDescendantsBFS(e,(function(e){t.isSelected(e)||e.isDisabled||t.addValue(e)})));var n=e.isLeaf||!e.hasDisabledDescendants||this.allowSelectingDisabledDescendants;if(n&&this.addValue(e),e.isBranch&&this.traverseDescendantsBFS(e,(function(e){e.isDisabled&&!t.allowSelectingDisabledDescendants||t.addValue(e)})),n)for(var i=e;null!==(i=i.parentNode)&&i.children.every(this.isSelected);)this.addValue(i)},_deselectNode:function(e){var t=this;if(this.disableBranchNodes)return this.removeValue(e);if(this.flat)return this.removeValue(e),void(this.autoDeselectAncestors?e.ancestors.forEach((function(e){t.isSelected(e)&&!e.isDisabled&&t.removeValue(e)})):this.autoDeselectDescendants&&this.traverseDescendantsBFS(e,(function(e){t.isSelected(e)&&!e.isDisabled&&t.removeValue(e)})));var n=!1;if(e.isBranch&&this.traverseDescendantsDFS(e,(function(e){e.isDisabled&&!t.allowSelectingDisabledDescendants||(t.removeValue(e),n=!0)})),e.isLeaf||n||0===e.children.length){this.removeValue(e);for(var i=e;null!==(i=i.parentNode)&&this.isSelected(i);)this.removeValue(i)}},addValue:function(e){this.forest.selectedNodeIds.push(e.id),this.forest.selectedNodeMap[e.id]=!0},removeValue:function(e){S(this.forest.selectedNodeIds,e.id),delete this.forest.selectedNodeMap[e.id]},removeLastValue:function(){if(this.hasValue){if(this.single)return this.clear();var e=P()(this.internalValue),t=this.getNode(e);this.select(t)}},saveMenuScrollPosition:function(){var e=this.getMenu();e&&(this.menu.lastScrollPosition=e.scrollTop)},restoreMenuScrollPosition:function(){var e=this.getMenu();e&&(e.scrollTop=this.menu.lastScrollPosition)}},created:function(){this.verifyProps(),this.resetFlags()},mounted:function(){this.autoFocus&&this.focusInput(),this.options||this.async||!this.autoLoadRootOptions||this.loadRootOptions(),this.alwaysOpen&&this.openMenu(),this.async&&this.defaultOptions&&this.handleRemoteSearch()},destroyed:function(){this.toggleClickOutsideEvent(!1)}};function ce(e){return"string"==typeof e?e:null==e||w(e)?"":JSON.stringify(e)}function ue(e,t,n,i,r,o,s,a){var l,c="function"==typeof e?e.options:e;if(t&&(c.render=t,c.staticRenderFns=n,c._compiled=!0),i&&(c.functional=!0),o&&(c._scopeId="data-v-"+o),s?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),r&&r.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(s)},c._ssrRegister=l):r&&(l=a?function(){r.call(this,this.$root.$options.shadowRoot)}:r),l)if(c.functional){c._injectStyles=l;var u=c.render;c.render=function(e,t){return l.call(t),u(e,t)}}else{var d=c.beforeCreate;c.beforeCreate=d?[].concat(d,l):[l]}return{exports:e,options:c}}var de=ue({name:"vue-treeselect--hidden-fields",inject:["instance"],functional:!0,render:function(e,t){var n=arguments[0],i=t.injections.instance;if(!i.name||i.disabled||!i.hasValue)return null;var r=i.internalValue.map(ce);return i.multiple&&i.joinValues&&(r=[r.join(i.delimiter)]),r.map((function(e,t){return n("input",{attrs:{type:"hidden",name:i.name},domProps:{value:e},key:"hidden-field-"+t})}))}},void 0,void 0,!1,null,null,null);de.options.__file="src/components/HiddenFields.vue";var he=de.exports,fe=n(1),pe=n.n(fe),ve=[q,X,U,J,G,Z,ee],me=ue({name:"vue-treeselect--input",inject:["instance"],data:function(){return{inputWidth:5,value:""}},computed:{needAutoSize:function(){var e=this.instance;return e.searchable&&!e.disabled&&e.multiple},inputStyle:function(){return{width:this.needAutoSize?"".concat(this.inputWidth,"px"):null}}},watch:{"instance.trigger.searchQuery":function(e){this.value=e},value:function(){this.needAutoSize&&this.$nextTick(this.updateInputWidth)}},created:function(){this.debouncedCallback=g()(this.updateSearchQuery,200,{leading:!0,trailing:!0})},methods:{clear:function(){this.onInput({target:{value:""}})},focus:function(){this.instance.disabled||this.$refs.input&&this.$refs.input.focus()},blur:function(){this.$refs.input&&this.$refs.input.blur()},onFocus:function(){var e=this.instance;e.trigger.isFocused=!0,e.openOnFocus&&e.openMenu()},onBlur:function(){var e=this.instance,t=e.getMenu();if(t&&document.activeElement===t)return this.focus();e.trigger.isFocused=!1,e.closeMenu()},onInput:function(e){var t=e.target.value;this.value=t,t?this.debouncedCallback():(this.debouncedCallback.cancel(),this.updateSearchQuery())},onKeyDown:function(e){var t=this.instance,n="which"in e?e.which:e.keyCode;if(!(e.ctrlKey||e.shiftKey||e.altKey||e.metaKey)){if(!t.menu.isOpen&&H(ve,n))return e.preventDefault(),t.openMenu();switch(n){case Y:t.backspaceRemoves&&!this.value.length&&t.removeLastValue();break;case q:if(e.preventDefault(),null===t.menu.current)return;var i=t.getNode(t.menu.current);if(i.isBranch&&t.disableBranchNodes)return;t.select(i);break;case K:this.value.length?this.clear():t.menu.isOpen&&t.closeMenu();break;case X:e.preventDefault(),t.highlightLastOption();break;case U:e.preventDefault(),t.highlightFirstOption();break;case J:var r=t.getNode(t.menu.current);r.isBranch&&t.shouldExpand(r)?(e.preventDefault(),t.toggleExpanded(r)):!r.isRootNode&&(r.isLeaf||r.isBranch&&!t.shouldExpand(r))&&(e.preventDefault(),t.setCurrentHighlightedOption(r.parentNode));break;case G:e.preventDefault(),t.highlightPrevOption();break;case Z:var o=t.getNode(t.menu.current);o.isBranch&&!t.shouldExpand(o)&&(e.preventDefault(),t.toggleExpanded(o));break;case ee:e.preventDefault(),t.highlightNextOption();break;case te:t.deleteRemoves&&!this.value.length&&t.removeLastValue();break;default:t.openMenu()}}},onMouseDown:function(e){this.value.length&&e.stopPropagation()},renderInputContainer:function(){var e=this.$createElement,t=this.instance,n={},i=[];return t.searchable&&!t.disabled&&(i.push(this.renderInput()),this.needAutoSize&&i.push(this.renderSizer())),t.searchable||F(n,{on:{focus:this.onFocus,blur:this.onBlur,keydown:this.onKeyDown},ref:"input"}),t.searchable||t.disabled||F(n,{attrs:{tabIndex:t.tabIndex}}),e("div",pe()([{class:"vue-treeselect__input-container"},n]),[i])},renderInput:function(){var e=this.$createElement,t=this.instance;return e("input",{ref:"input",class:"vue-treeselect__input",attrs:{type:"text",autocomplete:"off",tabIndex:t.tabIndex,required:t.required&&!t.hasValue},domProps:{value:this.value},style:this.inputStyle,on:{focus:this.onFocus,input:this.onInput,blur:this.onBlur,keydown:this.onKeyDown,mousedown:this.onMouseDown}})},renderSizer:function(){return(0,this.$createElement)("div",{ref:"sizer",class:"vue-treeselect__sizer"},[this.value])},updateInputWidth:function(){this.inputWidth=Math.max(5,this.$refs.sizer.scrollWidth+15)},updateSearchQuery:function(){this.instance.trigger.searchQuery=this.value}},render:function(){return this.renderInputContainer()}},void 0,void 0,!1,null,null,null);me.options.__file="src/components/Input.vue";var ge=me.exports,ye=ue({name:"vue-treeselect--placeholder",inject:["instance"],render:function(){var e=arguments[0],t=this.instance,n={"vue-treeselect__placeholder":!0,"vue-treeselect-helper-zoom-effect-off":!0,"vue-treeselect-helper-hide":t.hasValue||t.trigger.searchQuery};return e("div",{class:n},[t.placeholder])}},void 0,void 0,!1,null,null,null);ye.options.__file="src/components/Placeholder.vue";var Se=ye.exports,Oe=ue({name:"vue-treeselect--single-value",inject:["instance"],methods:{renderSingleValueLabel:function(){var e=this.instance,t=e.selectedNodes[0],n=e.$scopedSlots["value-label"];return n?n({node:t}):t.label}},render:function(){var e=arguments[0],t=this.instance,n=this.$parent.renderValueContainer,i=t.hasValue&&!t.trigger.searchQuery;return n([i&&e("div",{class:"vue-treeselect__single-value"},[this.renderSingleValueLabel()]),e(Se),e(ge,{ref:"input"})])}},void 0,void 0,!1,null,null,null);Oe.options.__file="src/components/SingleValue.vue";var be=Oe.exports,_e=function(){var e=this.$createElement,t=this._self._c||e;return t("svg",{attrs:{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 348.333 348.333"}},[t("path",{attrs:{d:"M336.559 68.611L231.016 174.165l105.543 105.549c15.699 15.705 15.699 41.145 0 56.85-7.844 7.844-18.128 11.769-28.407 11.769-10.296 0-20.581-3.919-28.419-11.769L174.167 231.003 68.609 336.563c-7.843 7.844-18.128 11.769-28.416 11.769-10.285 0-20.563-3.919-28.413-11.769-15.699-15.698-15.699-41.139 0-56.85l105.54-105.549L11.774 68.611c-15.699-15.699-15.699-41.145 0-56.844 15.696-15.687 41.127-15.687 56.829 0l105.563 105.554L279.721 11.767c15.705-15.687 41.139-15.687 56.832 0 15.705 15.699 15.705 41.145.006 56.844z"}})])};_e._withStripped=!0;var Ee=ue({name:"vue-treeselect--x"},_e,[],!1,null,null,null);Ee.options.__file="src/components/icons/Delete.vue";var Ne=Ee.exports,Le=ue({name:"vue-treeselect--multi-value-item",inject:["instance"],props:{node:{type:Object,required:!0}},methods:{handleMouseDown:f((function(){var e=this.instance,t=this.node;e.select(t)}))},render:function(){var e=arguments[0],t=this.instance,n=this.node,i={"vue-treeselect__multi-value-item":!0,"vue-treeselect__multi-value-item-disabled":n.isDisabled,"vue-treeselect__multi-value-item-new":n.isNew},r=t.$scopedSlots["value-label"],o=r?r({node:n}):n.label;return e("div",{class:"vue-treeselect__multi-value-item-container"},[e("div",{class:i,on:{mousedown:this.handleMouseDown}},[e("span",{class:"vue-treeselect__multi-value-label"},[o]),e("span",{class:"vue-treeselect__icon vue-treeselect__value-remove"},[e(Ne)])])])}},void 0,void 0,!1,null,null,null);Le.options.__file="src/components/MultiValueItem.vue";var xe=Le.exports,we=ue({name:"vue-treeselect--multi-value",inject:["instance"],methods:{renderMultiValueItems:function(){var e=this.$createElement,t=this.instance;return t.internalValue.slice(0,t.limit).map(t.getNode).map((function(t){return e(xe,{key:"multi-value-item-".concat(t.id),attrs:{node:t}})}))},renderExceedLimitTip:function(){var e=this.$createElement,t=this.instance,n=t.internalValue.length-t.limit;return n<=0?null:e("div",{class:"vue-treeselect__limit-tip vue-treeselect-helper-zoom-effect-off",key:"exceed-limit-tip"},[e("span",{class:"vue-treeselect__limit-tip-text"},[t.limitText(n)])])}},render:function(){var e=arguments[0],t=this.$parent.renderValueContainer,n={props:{tag:"div",name:"vue-treeselect__multi-value-item--transition",appear:!0}};return t(e("transition-group",pe()([{class:"vue-treeselect__multi-value"},n]),[this.renderMultiValueItems(),this.renderExceedLimitTip(),e(Se,{key:"placeholder"}),e(ge,{ref:"input",key:"input"})]))}},void 0,void 0,!1,null,null,null);we.options.__file="src/components/MultiValue.vue";var Ce=we.exports,De=function(){var e=this.$createElement,t=this._self._c||e;return t("svg",{attrs:{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 292.362 292.362"}},[t("path",{attrs:{d:"M286.935 69.377c-3.614-3.617-7.898-5.424-12.848-5.424H18.274c-4.952 0-9.233 1.807-12.85 5.424C1.807 72.998 0 77.279 0 82.228c0 4.948 1.807 9.229 5.424 12.847l127.907 127.907c3.621 3.617 7.902 5.428 12.85 5.428s9.233-1.811 12.847-5.428L286.935 95.074c3.613-3.617 5.427-7.898 5.427-12.847 0-4.948-1.814-9.229-5.427-12.85z"}})])};De._withStripped=!0;var Ie=ue({name:"vue-treeselect--arrow"},De,[],!1,null,null,null);Ie.options.__file="src/components/icons/Arrow.vue";var Me=Ie.exports,Ae=ue({name:"vue-treeselect--control",inject:["instance"],computed:{shouldShowX:function(){var e=this.instance;return e.clearable&&!e.disabled&&e.hasValue&&(this.hasUndisabledValue||e.allowClearingDisabled)},shouldShowArrow:function(){var e=this.instance;return!e.alwaysOpen||!e.menu.isOpen},hasUndisabledValue:function(){var e=this.instance;return e.hasValue&&e.internalValue.some((function(t){return!e.getNode(t).isDisabled}))}},methods:{renderX:function(){var e=this.$createElement,t=this.instance,n=t.multiple?t.clearAllText:t.clearValueText;return this.shouldShowX?e("div",{class:"vue-treeselect__x-container",attrs:{title:n},on:{mousedown:this.handleMouseDownOnX}},[e(Ne,{class:"vue-treeselect__x"})]):null},renderArrow:function(){var e=this.$createElement,t={"vue-treeselect__control-arrow":!0,"vue-treeselect__control-arrow--rotated":this.instance.menu.isOpen};return this.shouldShowArrow?e("div",{class:"vue-treeselect__control-arrow-container",on:{mousedown:this.handleMouseDownOnArrow}},[e(Me,{class:t})]):null},handleMouseDownOnX:f((function(e){e.stopPropagation(),e.preventDefault();var t=this.instance,n=t.beforeClearAll(),i=function(e){e&&t.clear()};D()(n)?n.then(i):setTimeout((function(){return i(n)}),0)})),handleMouseDownOnArrow:f((function(e){e.preventDefault(),e.stopPropagation();var t=this.instance;t.focusInput(),t.toggleMenu()})),renderValueContainer:function(e){return(0,this.$createElement)("div",{class:"vue-treeselect__value-container"},[e])}},render:function(){var e=arguments[0],t=this.instance,n=t.single?be:Ce;return e("div",{class:"vue-treeselect__control",on:{mousedown:t.handleMouseDown}},[e(n,{ref:"value-container"}),this.renderX(),this.renderArrow()])}},void 0,void 0,!1,null,null,null);Ae.options.__file="src/components/Control.vue";var Te=Ae.exports,Re=ue({name:"vue-treeselect--tip",functional:!0,props:{type:{type:String,required:!0},icon:{type:String,required:!0}},render:function(e,t){var n=arguments[0],i=t.props,r=t.children;return n("div",{class:"vue-treeselect__tip vue-treeselect__".concat(i.type,"-tip")},[n("div",{class:"vue-treeselect__icon-container"},[n("span",{class:"vue-treeselect__icon-".concat(i.icon)})]),n("span",{class:"vue-treeselect__tip-text vue-treeselect__".concat(i.type,"-tip-text")},[r])])}},void 0,void 0,!1,null,null,null);Re.options.__file="src/components/Tip.vue";var $e,Be,ze,Ve=Re.exports,ke={name:"vue-treeselect--option",inject:["instance"],props:{node:{type:Object,required:!0}},computed:{shouldExpand:function(){var e=this.instance,t=this.node;return t.isBranch&&e.shouldExpand(t)},shouldShow:function(){var e=this.instance,t=this.node;return e.shouldShowOptionInMenu(t)}},methods:{renderOption:function(){var e=this.$createElement,t=this.instance,n=this.node;return e("div",{class:{"vue-treeselect__option":!0,"vue-treeselect__option--disabled":n.isDisabled,"vue-treeselect__option--selected":t.isSelected(n),"vue-treeselect__option--highlight":n.isHighlighted,"vue-treeselect__option--matched":t.localSearch.active&&n.isMatched,"vue-treeselect__option--hide":!this.shouldShow},on:{mouseenter:this.handleMouseEnterOption},attrs:{"data-id":n.id}},[this.renderArrow(),this.renderLabelContainer([this.renderCheckboxContainer([this.renderCheckbox()]),this.renderLabel()])])},renderSubOptionsList:function(){var e=this.$createElement;return this.shouldExpand?e("div",{class:"vue-treeselect__list"},[this.renderSubOptions(),this.renderNoChildrenTip(),this.renderLoadingChildrenTip(),this.renderLoadingChildrenErrorTip()]):null},renderArrow:function(){var e=this.$createElement,t=this.instance,n=this.node;if(t.shouldFlattenOptions&&this.shouldShow)return null;if(n.isBranch){var i={"vue-treeselect__option-arrow":!0,"vue-treeselect__option-arrow--rotated":this.shouldExpand};return e("div",{class:"vue-treeselect__option-arrow-container",on:{mousedown:this.handleMouseDownOnArrow}},[e("transition",{props:{name:"vue-treeselect__option-arrow--prepare",appear:!0}},[e(Me,{class:i})])])}return t.hasBranchNodes?($e||($e=e("div",{class:"vue-treeselect__option-arrow-placeholder"},[" "])),$e):null},renderLabelContainer:function(e){return(0,this.$createElement)("div",{class:"vue-treeselect__label-container",on:{mousedown:this.handleMouseDownOnLabelContainer}},[e])},renderCheckboxContainer:function(e){var t=this.$createElement,n=this.instance,i=this.node;return n.single?null:n.disableBranchNodes&&i.isBranch?null:t("div",{class:"vue-treeselect__checkbox-container"},[e])},renderCheckbox:function(){var e=this.$createElement,t=this.instance,n=this.node,i=t.forest.checkedStateMap[n.id],r={"vue-treeselect__checkbox":!0,"vue-treeselect__checkbox--checked":2===i,"vue-treeselect__checkbox--indeterminate":1===i,"vue-treeselect__checkbox--unchecked":0===i,"vue-treeselect__checkbox--disabled":n.isDisabled};return Be||(Be=e("span",{class:"vue-treeselect__check-mark"})),ze||(ze=e("span",{class:"vue-treeselect__minus-mark"})),e("span",{class:r},[Be,ze])},renderLabel:function(){var e=this.$createElement,t=this.instance,n=this.node,i=n.isBranch&&(t.localSearch.active?t.showCountOnSearchComputed:t.showCount),r=i?t.localSearch.active?t.localSearch.countMap[n.id][t.showCountOf]:n.count[t.showCountOf]:NaN,o=t.$scopedSlots["option-label"];return o?o({node:n,shouldShowCount:i,count:r,labelClassName:"vue-treeselect__label",countClassName:"vue-treeselect__count"}):e("label",{class:"vue-treeselect__label"},[n.label,i&&e("span",{class:"vue-treeselect__count"},["(",r,")"])])},renderSubOptions:function(){var e=this.$createElement,t=this.node;return t.childrenStates.isLoaded?t.children.map((function(t){return e(ke,{attrs:{node:t},key:t.id})})):null},renderNoChildrenTip:function(){var e=this.$createElement,t=this.instance,n=this.node;return!n.childrenStates.isLoaded||n.children.length?null:e(Ve,{attrs:{type:"no-children",icon:"warning"}},[t.noChildrenText])},renderLoadingChildrenTip:function(){var e=this.$createElement,t=this.instance;return this.node.childrenStates.isLoading?e(Ve,{attrs:{type:"loading",icon:"loader"}},[t.loadingText]):null},renderLoadingChildrenErrorTip:function(){var e=this.$createElement,t=this.instance,n=this.node;return n.childrenStates.loadingError?e(Ve,{attrs:{type:"error",icon:"error"}},[n.childrenStates.loadingError,e("a",{class:"vue-treeselect__retry",attrs:{title:t.retryTitle},on:{mousedown:this.handleMouseDownOnRetry}},[t.retryText])]):null},handleMouseEnterOption:function(e){var t=this.instance,n=this.node;e.target===e.currentTarget&&t.setCurrentHighlightedOption(n,!1)},handleMouseDownOnArrow:f((function(){var e=this.instance,t=this.node;e.toggleExpanded(t)})),handleMouseDownOnLabelContainer:f((function(){var e=this.instance,t=this.node;t.isBranch&&e.disableBranchNodes?e.toggleExpanded(t):e.select(t)})),handleMouseDownOnRetry:f((function(){var e=this.instance,t=this.node;e.loadChildrenOptions(t)}))},render:function(){var e=arguments[0],t=this.node,n=this.instance.shouldFlattenOptions?0:t.level,i=l()({"vue-treeselect__list-item":!0},"vue-treeselect__indent-level-".concat(n),!0),r={props:{name:"vue-treeselect__list--transition"}};return e("div",{class:i},[this.renderOption(),t.isBranch&&e("transition",r,[this.renderSubOptionsList()])])}},Fe=ue(ke,void 0,void 0,!1,null,null,null);Fe.options.__file="src/components/Option.vue";var je=Fe.exports,Pe={top:"top",bottom:"bottom",above:"top",below:"bottom"},He=ue({name:"vue-treeselect--menu",inject:["instance"],computed:{menuStyle:function(){return{maxHeight:this.instance.maxHeight+"px"}},menuContainerStyle:function(){var e=this.instance;return{zIndex:e.appendToBody?null:e.zIndex}}},watch:{"instance.menu.isOpen":function(e){e?this.$nextTick(this.onMenuOpen):this.onMenuClose()}},created:function(){this.menuSizeWatcher=null,this.menuResizeAndScrollEventListeners=null},mounted:function(){this.instance.menu.isOpen&&this.$nextTick(this.onMenuOpen)},destroyed:function(){this.onMenuClose()},methods:{renderMenu:function(){var e=this.$createElement,t=this.instance;return t.menu.isOpen?e("div",{ref:"menu",class:"vue-treeselect__menu",on:{mousedown:t.handleMouseDown},style:this.menuStyle},[this.renderBeforeList(),t.async?this.renderAsyncSearchMenuInner():t.localSearch.active?this.renderLocalSearchMenuInner():this.renderNormalMenuInner(),this.renderAfterList()]):null},renderBeforeList:function(){var e=this.instance.$scopedSlots["before-list"];return e?e():null},renderAfterList:function(){var e=this.instance.$scopedSlots["after-list"];return e?e():null},renderNormalMenuInner:function(){var e=this.instance;return e.rootOptionsStates.isLoading?this.renderLoadingOptionsTip():e.rootOptionsStates.loadingError?this.renderLoadingRootOptionsErrorTip():e.rootOptionsStates.isLoaded&&0===e.forest.normalizedOptions.length?this.renderNoAvailableOptionsTip():this.renderOptionList()},renderLocalSearchMenuInner:function(){var e=this.instance;return e.rootOptionsStates.isLoading?this.renderLoadingOptionsTip():e.rootOptionsStates.loadingError?this.renderLoadingRootOptionsErrorTip():e.rootOptionsStates.isLoaded&&0===e.forest.normalizedOptions.length?this.renderNoAvailableOptionsTip():e.localSearch.noResults?this.renderNoResultsTip():this.renderOptionList()},renderAsyncSearchMenuInner:function(){var e=this.instance,t=e.getRemoteSearchEntry(),n=""===e.trigger.searchQuery&&!e.defaultOptions,i=!n&&(t.isLoaded&&0===t.options.length);return n?this.renderSearchPromptTip():t.isLoading?this.renderLoadingOptionsTip():t.loadingError?this.renderAsyncSearchLoadingErrorTip():i?this.renderNoResultsTip():this.renderOptionList()},renderOptionList:function(){var e=this.$createElement,t=this.instance;return e("div",{class:"vue-treeselect__list"},[t.forest.normalizedOptions.map((function(t){return e(je,{attrs:{node:t},key:t.id})}))])},renderSearchPromptTip:function(){var e=this.$createElement,t=this.instance;return e(Ve,{attrs:{type:"search-prompt",icon:"warning"}},[t.searchPromptText])},renderLoadingOptionsTip:function(){var e=this.$createElement,t=this.instance;return e(Ve,{attrs:{type:"loading",icon:"loader"}},[t.loadingText])},renderLoadingRootOptionsErrorTip:function(){var e=this.$createElement,t=this.instance;return e(Ve,{attrs:{type:"error",icon:"error"}},[t.rootOptionsStates.loadingError,e("a",{class:"vue-treeselect__retry",on:{click:t.loadRootOptions},attrs:{title:t.retryTitle}},[t.retryText])])},renderAsyncSearchLoadingErrorTip:function(){var e=this.$createElement,t=this.instance,n=t.getRemoteSearchEntry();return e(Ve,{attrs:{type:"error",icon:"error"}},[n.loadingError,e("a",{class:"vue-treeselect__retry",on:{click:t.handleRemoteSearch},attrs:{title:t.retryTitle}},[t.retryText])])},renderNoAvailableOptionsTip:function(){var e=this.$createElement,t=this.instance;return e(Ve,{attrs:{type:"no-options",icon:"warning"}},[t.noOptionsText])},renderNoResultsTip:function(){var e=this.$createElement,t=this.instance;return e(Ve,{attrs:{type:"no-results",icon:"warning"}},[t.noResultsText])},onMenuOpen:function(){this.adjustMenuOpenDirection(),this.setupMenuSizeWatcher(),this.setupMenuResizeAndScrollEventListeners()},onMenuClose:function(){this.removeMenuSizeWatcher(),this.removeMenuResizeAndScrollEventListeners()},adjustMenuOpenDirection:function(){var e=this.instance;if(e.menu.isOpen){var t=e.getMenu(),n=e.getControl(),i=t.getBoundingClientRect(),r=n.getBoundingClientRect(),o=i.height,s=window.innerHeight,a=r.top,l=window.innerHeight-r.bottom>o+40,c=a>o+40;r.top>=0&&r.top<=s||r.top<0&&r.bottom>0?"auto"!==e.openDirection?e.menu.placement=Pe[e.openDirection]:e.menu.placement=l||!c?"bottom":"top":e.closeMenu()}},setupMenuSizeWatcher:function(){var e=this.instance.getMenu();this.menuSizeWatcher||(this.menuSizeWatcher={remove:N(e,this.adjustMenuOpenDirection)})},setupMenuResizeAndScrollEventListeners:function(){var e=this.instance.getControl();this.menuResizeAndScrollEventListeners||(this.menuResizeAndScrollEventListeners={remove:x(e,this.adjustMenuOpenDirection)})},removeMenuSizeWatcher:function(){this.menuSizeWatcher&&(this.menuSizeWatcher.remove(),this.menuSizeWatcher=null)},removeMenuResizeAndScrollEventListeners:function(){this.menuResizeAndScrollEventListeners&&(this.menuResizeAndScrollEventListeners.remove(),this.menuResizeAndScrollEventListeners=null)}},render:function(){var e=arguments[0];return e("div",{ref:"menu-container",class:"vue-treeselect__menu-container",style:this.menuContainerStyle},[e("transition",{attrs:{name:"vue-treeselect__menu--transition"}},[this.renderMenu()])])}},void 0,void 0,!1,null,null,null);He.options.__file="src/components/Menu.vue";var We=He.exports,Qe=n(17),Ye=n.n(Qe);function qe(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}var Ke,Xe={name:"vue-treeselect--portal-target",inject:["instance"],watch:{"instance.menu.isOpen":function(e){e?this.setupHandlers():this.removeHandlers()},"instance.menu.placement":function(){this.updateMenuContainerOffset()}},created:function(){this.controlResizeAndScrollEventListeners=null,this.controlSizeWatcher=null},mounted:function(){this.instance.menu.isOpen&&this.setupHandlers()},methods:{setupHandlers:function(){this.updateWidth(),this.updateMenuContainerOffset(),this.setupControlResizeAndScrollEventListeners(),this.setupControlSizeWatcher()},removeHandlers:function(){this.removeControlResizeAndScrollEventListeners(),this.removeControlSizeWatcher()},setupControlResizeAndScrollEventListeners:function(){var e=this.instance.getControl();this.controlResizeAndScrollEventListeners||(this.controlResizeAndScrollEventListeners={remove:x(e,this.updateMenuContainerOffset)})},setupControlSizeWatcher:function(){var e=this,t=this.instance.getControl();this.controlSizeWatcher||(this.controlSizeWatcher={remove:N(t,(function(){e.updateWidth(),e.updateMenuContainerOffset()}))})},removeControlResizeAndScrollEventListeners:function(){this.controlResizeAndScrollEventListeners&&(this.controlResizeAndScrollEventListeners.remove(),this.controlResizeAndScrollEventListeners=null)},removeControlSizeWatcher:function(){this.controlSizeWatcher&&(this.controlSizeWatcher.remove(),this.controlSizeWatcher=null)},updateWidth:function(){var e=this.instance,t=this.$el,n=e.getControl().getBoundingClientRect();t.style.width=n.width+"px"},updateMenuContainerOffset:function(){var e=this.instance,t=e.getControl(),n=this.$el,i=t.getBoundingClientRect(),r=n.getBoundingClientRect(),o="bottom"===e.menu.placement?i.height:0,s=Math.round(i.left-r.left)+"px",a=Math.round(i.top-r.top+o)+"px";this.$refs.menu.$refs["menu-container"].style[W(["transform","webkitTransform","MozTransform","msTransform"],(function(e){return e in document.body.style}))]="translate(".concat(s,", ").concat(a,")")}},render:function(){var e=arguments[0],t=this.instance,n=["vue-treeselect__portal-target",t.wrapperClass],i={zIndex:t.zIndex};return e("div",{class:n,style:i,attrs:{"data-instance-id":t.getInstanceId()}},[e(We,{ref:"menu"})])},destroyed:function(){this.removeHandlers()}},Ue=ue({name:"vue-treeselect--menu-portal",created:function(){this.portalTarget=null},mounted:function(){this.setup()},destroyed:function(){this.teardown()},methods:{setup:function(){var e=document.createElement("div");document.body.appendChild(e),this.portalTarget=new Ye.a(function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?qe(n,!0).forEach((function(t){l()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):qe(n).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({el:e,parent:this},Xe))},teardown:function(){document.body.removeChild(this.portalTarget.$el),this.portalTarget.$el.innerHTML="",this.portalTarget.$destroy(),this.portalTarget=null}},render:function(){var e=arguments[0];return Ke||(Ke=e("div",{class:"vue-treeselect__menu-placeholder"})),Ke}},void 0,void 0,!1,null,null,null);Ue.options.__file="src/components/MenuPortal.vue";var Je=Ue.exports,Ge=ue({name:"vue-treeselect",mixins:[le],computed:{wrapperClass:function(){return{"vue-treeselect":!0,"vue-treeselect--single":this.single,"vue-treeselect--multi":this.multiple,"vue-treeselect--searchable":this.searchable,"vue-treeselect--disabled":this.disabled,"vue-treeselect--focused":this.trigger.isFocused,"vue-treeselect--has-value":this.hasValue,"vue-treeselect--open":this.menu.isOpen,"vue-treeselect--open-above":"top"===this.menu.placement,"vue-treeselect--open-below":"bottom"===this.menu.placement,"vue-treeselect--branch-nodes-disabled":this.disableBranchNodes,"vue-treeselect--append-to-body":this.appendToBody}}},render:function(){var e=arguments[0];return e("div",{ref:"wrapper",class:this.wrapperClass},[e(he),e(Te,{ref:"control"}),this.appendToBody?e(Je,{ref:"portal"}):e(We,{ref:"menu"})])}},void 0,void 0,!1,null,null,null);Ge.options.__file="src/components/Treeselect.vue";var Ze=Ge.exports;n(35);n.d(t,"VERSION",(function(){return et})),n.d(t,"Treeselect",(function(){return Ze})),n.d(t,"treeselectMixin",(function(){return le})),n.d(t,"LOAD_ROOT_OPTIONS",(function(){return"LOAD_ROOT_OPTIONS"})),n.d(t,"LOAD_CHILDREN_OPTIONS",(function(){return"LOAD_CHILDREN_OPTIONS"})),n.d(t,"ASYNC_SEARCH",(function(){return"ASYNC_SEARCH"}));t.default=Ze;var et="0.4.0"}])}));
//# sourceMappingURL=vue-treeselect.umd.min.js.map
zq-erp/src/main/resources/templates/views/admin/hive-erp/vip/vipInfo-list.html
@@ -193,7 +193,7 @@
            title : "会员跟进记录",
            area :  MUI.SIZE_M,
            maxmin : true,
            content : [ basePath+'/admin/serviceRecord/toServicefollowListForZd?id=' + id ]
            content : [ basePath+'/admin/redirect/hive/vip/followu-list?vipId=' + id ]
        });
    }
zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/servicceAddForm.html
@@ -219,8 +219,8 @@
<script type="text/javascript" th:src="@{/js/systools/AjaxProxyVue.js}"></script>
<script type="text/javascript" th:src="@{/js/plugin/vue.js}"></script>
<script type="text/javascript" th:src="@{/plugin/element-ui/index.js}"></script>
<script src="https://cdn.jsdelivr.net/npm/@riophae/vue-treeselect@^0.4.0/dist/vue-treeselect.umd.min.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@riophae/vue-treeselect@^0.4.0/dist/vue-treeselect.min.css">
<script  th:src="@{/plugin/vue-treeselect/vue-treeselect.umd.min.js}"></script>
<link rel="stylesheet"  th:href="@{/plugin/vue-treeselect/vue-treeselect.min.css}">
<script>
zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/updateServiceOrderTimeV2.html
@@ -47,8 +47,8 @@
<script type="text/javascript" th:src="@{/js/systools/AjaxProxyVue.js}"></script>
<script type="text/javascript" th:src="@{/js/plugin/vue.js}"></script>
<script type="text/javascript" th:src="@{/plugin/element-ui/index.js}"></script>
<script src="https://cdn.jsdelivr.net/npm/@riophae/vue-treeselect@^0.4.0/dist/vue-treeselect.umd.min.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@riophae/vue-treeselect@^0.4.0/dist/vue-treeselect.min.css">
<script  th:src="@{/plugin/vue-treeselect/vue-treeselect.umd.min.js}"></script>
<link rel="stylesheet"  th:href="@{/plugin/vue-treeselect/vue-treeselect.min.css}">
<script>
zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/yyServiceAddForm.html
@@ -207,8 +207,8 @@
<script type="text/javascript" th:src="@{/js/systools/AjaxProxyVue.js}"></script>
<script type="text/javascript" th:src="@{/js/plugin/vue.js}"></script>
<script type="text/javascript" th:src="@{/plugin/element-ui/index.js}"></script>
<script src="https://cdn.jsdelivr.net/npm/@riophae/vue-treeselect@^0.4.0/dist/vue-treeselect.umd.min.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@riophae/vue-treeselect@^0.4.0/dist/vue-treeselect.min.css">
<script  th:src="@{/plugin/vue-treeselect/vue-treeselect.umd.min.js}"></script>
<link rel="stylesheet"  th:href="@{/plugin/vue-treeselect/vue-treeselect.min.css}">
<script>
zq-erp/src/main/resources/templates/views/admin/hive/products/goods-form.html
@@ -1022,8 +1022,8 @@
<script type="text/javascript" th:src="@{/js/systools/AjaxProxyVue.js}"></script>
<script type="text/javascript" th:src="@{/js/plugin/vue.js}"></script>
<script type="text/javascript" th:src="@{/plugin/element-ui/index.js}"></script>
<script src="https://cdn.jsdelivr.net/npm/@riophae/vue-treeselect@^0.4.0/dist/vue-treeselect.umd.min.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@riophae/vue-treeselect@^0.4.0/dist/vue-treeselect.min.css">
<script  th:src="@{/plugin/vue-treeselect/vue-treeselect.umd.min.js}"></script>
<link rel="stylesheet"  th:href="@{/plugin/vue-treeselect/vue-treeselect.min.css}">
<script>
zq-erp/src/main/resources/templates/views/admin/hive/products/shoppinggoods-zb-list.html
@@ -17,17 +17,11 @@
<body class=" container-fluid">
<div class="pd-10">
    <div class="row" >
        <a th:href="@{/admin/redirect/hive/products/shoppinggoods-zb-list}" class="btn btn-info " type="button"></i>总部产品</a>
        <a th:href="@{/admin/redirect/hive/products/shoppinggoods-md-list}" class="btn btn-default " type="button"></i>本店产品</a>
    </div>
    <!-- 搜索框部分start -->
    <div class="row form-head">
        <form class="form-inline" id="serchform">
            <input autocomplete="off"   type="hidden" name="salePlatform" value="线下">
            <input autocomplete="off"   type="hidden" name="headquarters" value="1">
            <div class="form-group mr-20">
                <label for="name">商品名称</label>
                <input   class="form-control " name="name" id="name">
@@ -81,6 +75,15 @@
                </select>
            </div>
            <div class="form-group mr-20">
                <label for=" ">是否总部产品</label>
                <select class="form-control" name="headquarters" id=" ">
                    <option value=''>--请选择--</option>
                    <option value='1'>是</option>
                    <option value='2'>否</option>
                </select>
            </div>
            <div class="form-group mr-20">
                <label>商品创建日期</label>
@@ -101,6 +104,9 @@
    <div class="row mt-10">
        <div id="option-bar">
            <button matrix:btn="shoppinggoods1-add"  onclick="openEdit()" type="button" class="btn btn-info btn-sm"><i class="fa fa-eye" ></i> 查看</button>
            <button  matrix:btn="shoppinggoods1-add"  onclick="openAdd()" type="button" class="btn btn-info btn-sm"><i class="fa fa-plus" ></i>  新增</button>
            <button matrix:btn="shoppinggoods1-edit"  onclick="openEdit()" type="button" class="btn btn-info btn-sm"><i class="fa fa-edit" ></i> 编辑</button>
            <button matrix:btn="shoppinggoods1-dels" onclick="myGrid.delItems()" type="button" class="btn btn-danger btn-sm"><i class="fa fa-trash" ></i>批量删除</button>
            <button matrix:btn="shoppinggoods1-add" onclick="exportExcel()" type="button" class="btn btn-default btn-sm"><i class="fa fa-download"></i>导出 </button>
        </div>
        <!-- 数据表格部分 -->
@@ -118,7 +124,7 @@
                <th data-field="isPresent">是否赠送</th>
                <th data-field="goodType" data-sortable="true">类型</th>
                <th data-field="cateName" >分类</th>
                <th data-field="achieveRuleName" >业绩规则</th>
                <th data-field="shopName"   >创建门店</th>
                <th data-field="createTime"  data-sortable="true" data-formatter="MGrid.getTime">创建时间</th>
            </tr>
            </thead>
zq-erp/src/main/resources/templates/views/admin/hive/vip/followu-list.html
New file
@@ -0,0 +1,206 @@
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org" xmlns:matrix="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="utf-8">
    <META HTTP-EQUIV="Pragma" CONTENT="no-cache">
    <meta name="renderer" content="webkit|ie-comp|ie-stand">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport"
          content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"/>
    <meta http-equiv="Cache-Control" content="no-siteapp"/>
    <LINK rel="Bookmark" href="../images/favicon.ico">
    <!-- 本框架基本脚本和样式 -->
    <script type="text/javascript" th:src="@{/js/systools/MBaseVue.js}"></script>
    <link rel="stylesheet" th:href="@{/plugin/element-ui/index.css}">
    <link th:href="@{/css/styleOne/style.min.css}" rel="stylesheet" type="text/css"/>
    <title></title>
    <style>
        .panel-body{
            overflow: hidden;
        }
        .buttonPanel{
            background: #ffffff;
            padding: 10px 10px ;
            margin: 0px 0px 10px 0px;
        }
        .rowPanel{
            background: #ffffff;
            padding: 0px 10px ;
            padding-top: 10px;
            margin: 0px 0px 10px 0px;
        }
        .paginationStyle{
            background: #ffffff;
            padding: 10px 10px;
            margin: 0px 0px 10px 0px;
            text-align: right;
        }
    </style>
</head>
<body>
<div class="panel-body" id="app">
    <el-row class="table-style"  >
        <el-table id="proj" :data="table.rows"  :height="height" stripe @sort-change="sortChange">
            <el-table-column
                    prop="vipName"
                    label="客户名称"
                    width="180">
            </el-table-column>
            <el-table-column
                    prop="staffName"
                    label="员工名称">
            </el-table-column>
            <el-table-column
                    prop="orderAbstract"
                    label="订单摘要信息"
                    show-overflow-tooltip
                    width="240">
            </el-table-column>
            <el-table-column
                    prop="content"
                    label="跟进内容"
                    show-overflow-tooltip
                    width="340">
            </el-table-column>
            <el-table-column
                    prop="createTime"
                    label="填写时间"
                    width="180">
            </el-table-column>
            <el-table-column
                    prop="nextNotifyTime"
                    label="下次跟进时间">
            </el-table-column>
            <el-table-column label="效果图片">
                <template slot-scope="scope">
                    <el-image
                            style="width: 100px; height: 100px"
                            :src="scope.row.showImg"
                            :preview-src-list="scope.row.imgList">
                    </el-image>
                </template>
            </el-table-column>
        </el-table>
    </el-row>
    <el-row class="paginationStyle"  >
        <el-pagination background
                       @size-change="changePageSize"
                       @current-change="changeCurrentPage"
                       :current-page="table.currentPage"
                       :page-sizes="[10, 20, 30, 50]"
                       :page-size="table.pageSize"
                       layout="total, sizes, prev, pager, next, jumper"
                       :total="table.total">
        </el-pagination>
    </el-row>
</div>
</body>
<script type="text/javascript" th:src="@{/js/plugin/jquery-2.1.4.min.js}"></script>
<script type="text/javascript" th:src="@{/js/plugin/jquery.query.js}"></script>
<script type="text/javascript" th:src="@{/plugin/layer/layer.js}"></script>
<script type="text/javascript" th:src="@{/js/systools/AjaxProxyVue.js}"></script>
<script type="text/javascript" th:src="@{/js/plugin/vue.js}"></script>
<script type="text/javascript" th:src="@{/plugin/element-ui/index.js}"></script>
<script type="text/javascript" th:src="@{/plugin/moment.min.js}"></script>
<script type="text/javascript" th:inline="javascript">
    var vipId = $.query.get('vipId');
    var vue = new Vue({
        el: '#app',
        data: {
            table:{
                rows:[],
                total:0,
                pageSize:10,
                currentPage:1,
            },
            form:{
                vipId:vipId,
                order:'',
                sort:''
            },
            height:'calc(100vh - 240px)',
        },
        created: function () {
            let _this=this;
           this.loadData();
            window.addEventListener("keydown", this.keydown);
        },
        methods: {
            changePageSize(val) {
                this.table.pageSize = val;
                this.loadData();
            },
            changeCurrentPage(val) {
                this.table.currentPage = val;
                this.loadData();
            },
            resetForm(formName) {
                this.$refs[formName].resetFields();
            },
            sortChange:function (column){
                if(column.order){
                    if(column.order.indexOf("desc")){
                        this.form.order="desc";
                    }else{
                        this.form.order="asc";
                    }
                    this.form.sort=column.prop;
                    this.loadData();
                }
            },
            loadData:function(){
                let _this = this;
                let data=_this.getRequestParam();
                data.limit=_this.table.pageSize;
                data.offset=_this.table.pageSize*(_this.table.currentPage-1);
                AjaxProxy.requst({
                    app: _this,
                    data:data,
                    url: basePath + '/admin/followu/showList',
                    callback: function (data) {
                        data.rows.forEach(e=>{
                           e.showImg= e.albums[0].img;
                           e.imgList=[];
                           e.albums.forEach(album=>{
                               e.imgList.push(album.img);
                           })
                        })
                        _this.table.rows = data.rows;
                        _this.table.total=data.total;
                    }
                });
            },
            getRequestParam(){
                let _this = this;
                return   {
                    vipId:_this.form.vipId,
                    order:_this.form.order,
                    sort:_this.form.sort
                }
            },
            search:function(){
                this.table.currentPage=1;
                this.loadData();
            },
            keydown(evt){
                if(evt.keyCode==13) {
                    this.search();
                }
            },
        }
    });
</script>
</body>
</html>
zq-erp/src/main/resources/templates/views/admin/hive/vip/vipInfo-list.html
@@ -315,7 +315,7 @@
            title : "会员跟进记录",
            area :  MUI.SIZE_M,
            maxmin : true,
            content : [ basePath+'/admin/serviceRecord/toServicefollowList?id=' + id ]
            content : [ basePath+'/admin/redirect/hive/vip/followu-list?vipId=' + id ]
        });
    }
    function createDateDictionary() {
zq-erp/src/test/java/com/matrix/BizUserToVipInfoTool.java
@@ -17,6 +17,8 @@
import com.matrix.system.fenxiao.dao.BizUserDao;
import com.matrix.system.fenxiao.entity.BizUser;
import com.matrix.system.hive.bean.*;
import com.matrix.system.hive.bean.MoneyCardUse;
import com.matrix.system.hive.bean.SysVipInfo;
import com.matrix.system.hive.dao.SysBedInfoDao;
import com.matrix.system.hive.dao.SysOrderItemDao;
import com.matrix.system.hive.dao.SysShopInfoDao;
zq-erp/src/test/java/com/matrix/JyyTests.java
@@ -1,5 +1,6 @@
package com.matrix;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.matrix.core.pojo.AjaxResult;
import com.matrix.system.constance.Dictionary;
@@ -22,6 +23,7 @@
import javax.annotation.Resource;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
/**
@@ -98,12 +100,19 @@
    }
    @Test
    @Rollback
    public void testNoticeTask() throws IOException {
    //    orderDingDingNoticeTask.handle("",new Delivery(null,null,"1295".getBytes()));
        List<JSONObject> storeReceiptWares =new ArrayList<>();
        JSONObject o=new JSONObject();
        o.put("id",12);
        o.put("createBy","");
        storeReceiptWares.add(o);
        moneyCardUseDao.saveInTimeReceiptWare(storeReceiptWares);
    }
zq-erp/src/test/java/com/matrix/LocalCacheTest.java
@@ -7,6 +7,8 @@
 */
package com.matrix;
import com.alibaba.fastjson.TypeReference;
import com.matrix.system.common.bean.SysUsers;
import com.matrix.system.common.init.LocalCache;
import org.junit.Assert;
import org.junit.Test;
@@ -27,9 +29,9 @@
    public void testNoticeTask() throws IOException, InterruptedException {
        LocalCache.save("name","jyy",1000*3);
        System.out.println("放入对象");
        Assert.assertNotNull(LocalCache.get("name"));
        Assert.assertNotNull(LocalCache.get("name",new TypeReference<SysUsers>(){}));
        Thread.sleep(1000*5);
        Assert.assertNull(LocalCache.get("name"));
        Assert.assertNull(LocalCache.get("name",new TypeReference<SysUsers>(){}));
    }
}