sgj
2025-12-03 a04453432c9898df83961eaea26dd97b65537f02
Merge remote-tracking branch 'origin/master'
已修改8个文件
已添加9个文件
3919 ■■■■■ 文件已修改
fzzy-igdss-core/src/main/java/com/fzzy/igds/constant/Constant.java 29 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-core/src/main/java/com/fzzy/igds/constant/RespCodeEnum.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-core/src/main/java/com/fzzy/igds/data/IgdsBaseParam.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-core/src/main/java/com/fzzy/igds/data/InoutParam.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-core/src/main/java/com/fzzy/igds/data/PageResponse.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-core/src/main/java/com/fzzy/igds/domain/InoutRecord.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-core/src/main/java/com/fzzy/igds/mapper/InoutRecordMapper.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-core/src/main/java/com/fzzy/igds/service/DicService.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-core/src/main/java/com/fzzy/igds/service/InoutRecordService.java 227 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-web/src/main/java/com/fzzy/sys/controller/inout/InoutController.java 206 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-web/src/main/java/com/fzzy/sys/manager/common/CommonManager.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-web/src/main/java/com/fzzy/sys/manager/inout/InoutManager.java 282 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-web/src/main/resources/static/inout/inout-style.css 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-web/src/main/resources/static/inout/out-easy.js 1053 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-web/src/main/resources/static/inout/out-register.js 591 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-web/src/main/resources/templates/inout/out-easy.html 983 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-web/src/main/resources/templates/inout/out-register.html 325 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-core/src/main/java/com/fzzy/igds/constant/Constant.java
@@ -77,19 +77,29 @@
     * ç¼“å­˜KEY-出入库配置信息缓存
     */
    public static final String CACHE_INOUT_CONF_LIST = "INOUT_CONF";
    public static final String MODEL_KEY_LOGIN_USER = "loginUser";
    // ä»“库列表
    public static final String MODEL_KEY_DEPOT_LIST = "listDepot";
    // å®ŒæˆçŠ¶æ€-未完成
    /**
     * é€šçŸ¥å•状态
     */
    public static final String COMPLETE_STATUS_NONE = "NONE";
    // å‡ºå…¥åº“类型-入库
    public static final String COMPLETE_STATUS_COMPLETE = "COMPLETE";
    /**
     * åŒ–验结果
     */
    public static final String STATUS_NONE = "NONE";
    public static final String STATUS_PASS = "PASS";
    /**
     * å‡ºå…¥åº“类型
     */
    public static final String TYPE_IN = "IN";
    // å‡ºå…¥åº“类型-出库
    public static final String TYPE_OUT = "OUT";
    /**
     * å‡ºå…¥åº“流程
     */
    // æµç¨‹-登记
    public static final String PROGRESS_REGISTER = "REGISTER";
    // æµç¨‹-入库质检
@@ -153,4 +163,9 @@
     * æ™ºæ…§å¡
     */
    public static final String CONF_TYPE_80 = "80";
    /**
     * ç¼“å­˜-入库ID
     */
    public static final String CACHE_RECORD_ID = "RECORD_ID";
}
fzzy-igdss-core/src/main/java/com/fzzy/igds/constant/RespCodeEnum.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,36 @@
package com.fzzy.igds.constant;
import lombok.Getter;
/**
 * @Description
 * @Author CZT
 * @Date 2025/11/29 16:33
 */
@Getter
public enum RespCodeEnum {
    /**
     *
     */
    CODE_0000("0000", "成功"),
    CODE_1111("1111", "后端服务异常"),
    CODE_1001("1001","数据格式校验失败"),
    CODE_1002("1002","该应用无激活授权"),
    CODE_1003("1003","该应用已经授权成功"),
    CODE_1004("1004","设备通讯失败"),
    CODE_1005("1005","该设备不存在"),
    CODE_1006("1006","当前登录人已掉线"),
    CODE_1007("1007","请求参数异常"),
    CODE_1008("1008","流程不正确"),
    CODE_2000("2000","响应数据为空")
    ;
    private String code;
    private String msg;
    RespCodeEnum(String code, String msg) {
        this.code = code;
        this.msg = msg;
    }
}
fzzy-igdss-core/src/main/java/com/fzzy/igds/data/IgdsBaseParam.java
@@ -1,5 +1,6 @@
package com.fzzy.igds.data;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.util.Date;
@@ -19,8 +20,16 @@
    private String key;//自定义关键字
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date start;
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date end;
    private int limit = 10;// LAYUI ä¸“用,每页显示的条数。laypage将会借助 count å’Œ limit è®¡ç®—出分页数
    private int curr = 1;// LAYUI ä¸“用 èµ·å§‹é¡µã€‚一般用于刷新类型的跳页以及HASH跳页
    private int page = 1;// ç›®æ ‡é¡µé¢
}
fzzy-igdss-core/src/main/java/com/fzzy/igds/data/InoutParam.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,71 @@
package com.fzzy.igds.data;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
/**
 * @Description å‡ºå…¥åº“的页面参数定义
 * @Author CZT
 * @Date 2025/11/29 16:33
 */
@Data
@EqualsAndHashCode(callSuper = false)
public class InoutParam extends IgdsBaseParam {
    public String plateNum;
    private String id;
    private String progress;
    private String type;
    private String foodVariety;
    private String foodType;
    private String checkStatus;
    private String customerName;
    private String recordStatus;
    private String userId;
    private String year;
    private double weight;//重量信息
    private Double deOther;
    private Double fullWeight;
    private String fullWeightUser;
    private Date fullWeightTime;
    private Double emptyWeight;
    private Date emptyWeightTime;
    private Date completeTime;
    private String emptyWeightUser;
    private Double netWeight;
    private Double settleWeight;
    private Double recordWeight;
    private Double price;
    private String settleBizType;
    private String settleTag;
    private Double settleMoney;
    private Date updateTime = new Date();
}
fzzy-igdss-core/src/main/java/com/fzzy/igds/data/PageResponse.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,65 @@
package com.fzzy.igds.data;
import com.fzzy.igds.constant.RespCodeEnum;
import lombok.Data;
import org.apache.commons.lang3.time.DateFormatUtils;
import java.io.Serializable;
import java.util.Date;
/**
 * @Description ç³»ç»Ÿé¡µé¢è°ƒç”¨æŽ¥å£ï¼Œå‚数返回对象封装
 * @Author CZT
 * @Date 2025/11/29 16:33
 */
@Data
public class PageResponse<T> implements Serializable {
    private String DATE_FORMAT_YMDHMS = "yyyy-MM-dd HH:mm:ss";
    /**
     *
     */
    private static final long serialVersionUID = 1L;
    /**
     * å“åº”码
     */
    private String code;
    /**
     * å“åº”信息
     */
    private String msg;
    /**
     * å“åº”æ—¶é—´
     */
    private String respDateTime;
    /**
     * è¿”回数据
     */
    private T data;
    public PageResponse() {
        super();
    }
    public PageResponse(String code, String msg) {
        this.code = code;
        this.msg = msg;
    }
    public PageResponse(String code, String msg,  T data) {
        this.code = code;
        this.msg = msg;
        this.data = data;
        this.respDateTime = DateFormatUtils.format(new Date(), DATE_FORMAT_YMDHMS);
    }
    public PageResponse(RespCodeEnum code, T data) {
        this.code = code.getCode();
        this.data = data;
        this.msg = code.getMsg();
        this.respDateTime = DateFormatUtils.format(new Date(), DATE_FORMAT_YMDHMS);
    }
}
fzzy-igdss-core/src/main/java/com/fzzy/igds/domain/InoutRecord.java
@@ -101,8 +101,8 @@
    @TableField("food_variety")
    private String foodVariety;
    @Column(name = "food_locationId", columnDefinition = "varchar(40) COMMENT '粮食产地'")
    @TableField("food_locationId")
    @Column(name = "food_location_id", columnDefinition = "varchar(40) COMMENT '粮食产地'")
    @TableField("food_location_id")
    private String foodLocationId;
    @Column(name = "food_location", columnDefinition = "varchar(40) COMMENT '粮食产地'")
@@ -118,9 +118,9 @@
    @TableField("food_level")
    private String foodLevel;
    @Column(name = "check_status", columnDefinition = "varchar(10) COMMENT '质检结果'")
    @Column(name = "check_status", columnDefinition = "varchar(10) COMMENT '化验状态'")
    @TableField("check_status")
    private String checkStatus = "NONE";
    private String checkStatus = Constant.STATUS_NONE;
    @Column(name = "check_user", columnDefinition = "varchar(40) COMMENT '质检人'")
    @TableField("check_user")
fzzy-igdss-core/src/main/java/com/fzzy/igds/mapper/InoutRecordMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,12 @@
package com.fzzy.igds.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.fzzy.igds.domain.InoutRecord;
/**
 * @Description
 * @Author CZT
 * @Date 2025/12/2 10:36
 */
public interface InoutRecordMapper extends BaseMapper<InoutRecord> {
}
fzzy-igdss-core/src/main/java/com/fzzy/igds/service/DicService.java
@@ -370,4 +370,16 @@
        list.add(new SysDictData("下锥形", Constant.CABLE_CONE_2));
        return list;
    }
    /**
     *
     * @return
     */
    public List<SysDictData> getInoutType() {
        List<SysDictData> list = new ArrayList<SysDictData>();
        list.add(new SysDictData("入库", Constant.TYPE_IN));
        list.add(new SysDictData("出库", Constant.TYPE_OUT));
        return list;
    }
}
fzzy-igdss-core/src/main/java/com/fzzy/igds/service/InoutRecordService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,227 @@
package com.fzzy.igds.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fzzy.igds.constant.Constant;
import com.fzzy.igds.constant.RedisConst;
import com.fzzy.igds.data.InoutParam;
import com.fzzy.igds.domain.InoutRecord;
import com.fzzy.igds.mapper.InoutRecordMapper;
import com.fzzy.igds.utils.ContextUtil;
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.utils.StringUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.time.DateFormatUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
/**
 * @Description
 * @Author CZT
 * @Date 2025/12/2 10:36
 */
@Slf4j
@Service
public class InoutRecordService {
    @Resource
    private InoutRecordMapper inoutRecordMapper;
    @Resource
    private RedisCache redisCache;
    /**
     * åˆ†é¡µæŸ¥è¯¢æ•°æ®
     * @param page
     * @param param
     */
    public void listPageInout(Page<InoutRecord> page, InoutParam param) {
        QueryWrapper<InoutRecord> queryWrapper = new QueryWrapper<>();
        param.setCompanyId(ContextUtil.getCompanyId());
        param.setDeptId(ContextUtil.subDeptId(null));
        queryWrapper.eq("company_id", param.getCompanyId());
        queryWrapper.eq("dept_id", param.getDeptId());
        if (StringUtils.isNotBlank(param.getDepotId())) {
            queryWrapper.eq("depot_id", param.getDepotId());
        }
        if (StringUtils.isNotBlank(param.getType())) {
            queryWrapper.eq("type", param.getType());
        }
        queryWrapper.orderByDesc("create_time");
        inoutRecordMapper.selectPage(page, queryWrapper);
    }
    /**
     * æ ¹æ®id查询数据
     * @param id
     * @return
     */
    public InoutRecord selectById(String id) {
        if(StringUtils.isBlank(id)){
            return null;
        }
        return inoutRecordMapper.selectById(id);
    }
    /**
     * éªŒè¯è½¦ç‰Œå·æ˜¯å¦åœ¨æµç¨‹ä¸­
     * @param companyId
     * @param plateNum
     * @return
     */
    public int checkExist(String companyId, String plateNum) {
        if (StringUtils.isEmpty(companyId)) {
            companyId = ContextUtil.getCompanyId();
        }
        QueryWrapper<InoutRecord> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("company_id", companyId);
        queryWrapper.eq("plate_num", plateNum);
        queryWrapper.ne("progress", Constant.PROGRESS_RECORD);
        queryWrapper.eq("record_status", "NORMAL");
        return inoutRecordMapper.selectCount(queryWrapper);
    }
    /**
     * æ–°å¢žå‡ºå…¥åº“记录
     *
     * @param data
     * @return
     */
    public int addInoutRecord(InoutRecord data) {
        if (StringUtils.isBlank(data.getId())) {
            String id = this.createId(data.getRegisterTime(), data.getCompanyId());
            if (Constant.TYPE_IN.equals(data.getType())) {
                data.setId("R_" + id);
            } else if (Constant.TYPE_OUT.equals(data.getType())) {
                data.setId("C_" + id);
            }else {
                data.setId("M_" + id);
            }
        }
        data.setCreateBy(ContextUtil.getLoginUserName());
        data.setCreateTime(new Date());
        data.setUpdateBy(ContextUtil.getLoginUserName());
        data.setUpdateTime(new Date());
        int num = inoutRecordMapper.insert(data);
        //TODO æ›´æ–°ç¼“å­˜
        //updateInoutCache(data);
        return num;
    }
    /**
     * æ–°å¢žå‡ºå…¥åº“记录
     *
     * @param data
     * @return
     */
    public int updateInoutRecord(InoutRecord data) {
        data.setUpdateBy(ContextUtil.getLoginUserName());
        data.setUpdateTime(new Date());
        int num = inoutRecordMapper.updateById(data);
        //TODO æ›´æ–°ç¼“å­˜
        //updateInoutCache(data);
        return num;
    }
    /**
     * å‡ºå…¥åº“流程ID创建 202001030001 202001030001
     * @param registerTime
     * @param companyId
     * @return
     */
    public String createId(Date registerTime, String companyId) {
        // æ—¶é—´æˆ³æ ‡ç­¾
        String timeKey = DateFormatUtils.format(registerTime, "yyyyMMdd");
        // ä»Žç¼“存中获取已有的组织编码
        String cacheKey = RedisConst.buildKey(companyId, Constant.CACHE_RECORD_ID);
        String cacheId = (String) redisCache.getCacheObject(cacheKey);
        if (null != cacheId && cacheId.indexOf(timeKey) >= 0) {
            String temp = cacheId.substring(cacheId.length() - 4);
            Integer i = Integer.valueOf(temp);
            i++;
            temp = String.valueOf(i);
            if (temp.length() == 1) {
                cacheId = timeKey + "000" + temp;
            }
            if (temp.length() == 2) {
                cacheId = timeKey + "00" + temp;
            }
            if (temp.length() == 3) {
                cacheId = timeKey + "0" + temp;
            }
            if (temp.length() == 4) {
                cacheId = timeKey + temp;
            }
        } else {
            String result = this.getMaxId(companyId, timeKey);
            if (null == result) {
                cacheId = timeKey + "0001";
            } else {
                // èŽ·å–æœ€åŽå››ä½
                int i = Integer.valueOf(result.substring(result.length() - 4));
                i++;
                String temp = String.valueOf(i);
                if (temp.length() == 1) {
                    cacheId = timeKey + "000" + temp;
                }
                if (temp.length() == 2) {
                    cacheId = timeKey + "00" + temp;
                }
                if (temp.length() == 3) {
                    cacheId = timeKey + "0" + temp;
                }
                if (temp.length() == 4) {
                    cacheId = timeKey + temp;
                }
            }
        }
        // æ›´æ–°ç¼“å­˜
        redisCache.setCacheObject(cacheKey, cacheId);
        return cacheId;
    }
    /**
     * æŸ¥è¯¢æœ€å¤§id号,为空则返回null
     * @param companyId
     * @param timeKey
     * @return
     */
    public String getMaxId(String companyId, String timeKey) {
        if (StringUtils.isEmpty(companyId)) {
            companyId = ContextUtil.getCompanyId();
        }
        QueryWrapper<InoutRecord> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("company_id", companyId);
        queryWrapper.like("id", timeKey);
        queryWrapper.orderByDesc("create_time");
        List<InoutRecord> inoutRecords = inoutRecordMapper.selectList(queryWrapper);
        if(null == inoutRecords || inoutRecords.isEmpty()){
            return null;
        }else {
            return inoutRecords.get(0).getId();
        }
    }
}
fzzy-igdss-web/src/main/java/com/fzzy/sys/controller/inout/InoutController.java
@@ -1,8 +1,12 @@
package com.fzzy.sys.controller.inout;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fzzy.igds.constant.Constant;
import com.fzzy.igds.data.InoutParam;
import com.fzzy.igds.data.PageResponse;
import com.fzzy.igds.domain.Depot;
import com.fzzy.igds.domain.InoutConf;
import com.fzzy.igds.domain.InoutRecord;
import com.fzzy.igds.utils.ContextUtil;
import com.fzzy.igds.utils.DateUtil;
import com.fzzy.sys.manager.common.CommonManager;
@@ -13,10 +17,12 @@
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateFormatUtils;
import org.springframework.stereotype.Controller;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.Date;
@@ -233,4 +239,202 @@
        return prefix + "/inout-weight";
    }
    /**
     * å‡ºåº“登记
     *
     * @param sort è¡¨ç¤ºä½¿ç”¨çš„出入库设备配套号,不传递默认为1
     * @return
     */
    @RequestMapping("/out-register")
    public String outRegister(HttpServletRequest httpRequest,
                              @RequestParam(value = "sort", required = false) String sort,
                              ModelMap view) {
        SysUser user = ContextUtil.getLoginUser();
        view.put(Constant.MODEL_KEY_LOGIN_USER, user);
        if (StringUtils.isEmpty(sort)) {
            sort = inoutManager.getInoutWeightByClient(httpRequest);
        }
        if (StringUtils.isEmpty(sort)) {
            sort = "1";
        }
        String deptId = ContextUtil.subDeptId(user);
        view.put("type", Constant.TYPE_OUT);
        view.put("deptId", deptId);
        // ç±»åž‹
        List<SysDictData> listInoutType = commonManager.getInoutType();
        view.put("listInoutType", listInoutType);
        //入库流程
        String inoutProgress = inoutManager.getInoutProgressConf(user.getCompanyId(), ContextUtil.subDeptId(user), Constant.TYPE_OUT);
        view.put("inoutProgress", inoutProgress);
        // å½“前流程节点
        view.put("progress", Constant.PROGRESS_REGISTER);
        // èŽ·å–å‡ºå…¥åº“é…ç½®ä¿¡æ¯
        List<InoutConf> listInoutConf = inoutManager.getListInoutConf(user.getCompanyId(), deptId);
        // è½¦ç‰Œè¯†åˆ«å‚数封装
        InoutConf conf = inoutManager.getInoutConf(listInoutConf, sort, Constant.CONF_TYPE_10, Constant.PROGRESS_REGISTER, 1);
        view.put("lprDto", conf);
        return prefix + "/out-register";
    }
    /**
     * å‡ºåº“简易操作页面
     *
     * @param sort è¡¨ç¤ºä½¿ç”¨çš„出入库设备配套号,不传递默认为1
     * @return
     */
    @RequestMapping("/out-easy")
    public String outEasy(@RequestParam(value = "sort", required = false) String sort,
                                @RequestParam(value = "type", required = false) String type,
                                ModelMap view) {
        SysUser user = ContextUtil.getLoginUser();
        view.put(Constant.MODEL_KEY_LOGIN_USER, user);
        view.put("type", Constant.TYPE_OUT);
        String deptId = ContextUtil.subDeptId(user);
        view.put("deptId", deptId);
        // ä»“库列表做下拉框使用
        List<Depot> listDepot = commonManager.listDepotByDeptId(deptId);
        view.put(Constant.MODEL_KEY_DEPOT_LIST, listDepot);
        //入库流程
        String inoutProgress = inoutManager.getInoutProgressConf(user.getCompanyId(),
                ContextUtil.subDeptId(user), Constant.TYPE_IN);
        view.put("inoutProgress", inoutProgress);
        // ç²®é£Ÿå“ç§ä¸‹æ‹‰æ¡†
        List<SysDictData> listFoodVariety = commonManager.getDicTrigger(Constant.TRIGGER_PARENT_FOOD_VARIETY, user.getCompanyId());
        view.put("listFoodVariety", listFoodVariety);
        // ç²®é£Ÿæ€§è´¨ä¸‹æ‹‰æ¡†
        List<SysDictData> listFoodType = commonManager.getDicTrigger(Constant.TRIGGER_PARENT_FOOD_TYPE, user.getCompanyId());
        view.put("listFoodType", listFoodType);
        // ç²®é£Ÿç­‰çº§ä¸‹æ‹‰æ¡†
        List<SysDictData> listFoodLevel = commonManager.getDicTrigger(Constant.TRIGGER_PARENT_FOOD_LEVEL, user.getCompanyId());
        view.put("listFoodLevel", listFoodLevel);
        // ç±»åž‹
        List<SysDictData> listInoutType = commonManager.getInoutType();
        view.put("listInoutType", listInoutType);
        // å½“前流程标签
        view.put("progress", Constant.PROGRESS_WEIGHT_TAG);
        // èŽ·å–å‡ºå…¥åº“é…ç½®ä¿¡æ¯
        List<InoutConf> listInoutConf = inoutManager.getListInoutConf(user.getCompanyId(), deptId);
        // èŽ·å–åœ°ç£…ä¿¡æ¯
        InoutConf weightDto = inoutManager.getInoutConf(listInoutConf, sort, Constant.CONF_TYPE_30);
        view.put("weightDto", weightDto);
        // è¿‡ç¨‹æ‘„像头1
        InoutConf conf = inoutManager.getInoutConf(listInoutConf, sort, Constant.CONF_TYPE_60, Constant.PROGRESS_WEIGHT_TAG, 1);
        view.put("snapDto1", conf);
        // è¿‡ç¨‹æ‘„像头2
        conf = inoutManager.getInoutConf(listInoutConf, sort, Constant.CONF_TYPE_60, Constant.PROGRESS_WEIGHT_TAG, 2);
        view.put("snapDto2", conf);
        // è¿‡ç¨‹æ‘„像头3
        conf = inoutManager.getInoutConf(listInoutConf, sort, Constant.CONF_TYPE_60, Constant.PROGRESS_WEIGHT_TAG, 3);
        view.put("snapDto3", conf);
        //默认查询时间
        view.put("endTime", DateFormatUtils.format(new Date(), "yyyy-MM-dd"));
        view.put("startTime", DateFormatUtils.format(DateUtil.getNewByDay(null, -30), "yyyy-MM-dd"));
        return prefix + "/out-easy";
    }
    /**
     * åˆ†é¡µèŽ·å–æµç¨‹æœªå®Œæˆçš„æ•°æ®
     *
     * @param param
     * @return
     */
    @RequestMapping("/page-inout-data")
    @ResponseBody
    public PageResponse<Page<InoutRecord>> pageInoutData(@RequestBody InoutParam param) {
        return inoutManager.pageInoutData(param);
    }
    /**
     * å‡ºå…¥åº“数据查询,根据条件查询数据,出入库数据信息
     *
     * @param param
     * @return
     */
    @RequestMapping("/inout-query")
    @ResponseBody
    public PageResponse<InoutRecord> inoutQuery(@RequestBody InoutParam param) {
        if (null == param.getCompanyId()) param.setCompanyId(ContextUtil.getCompanyId());
        return inoutManager.inoutQuery(param);
    }
    /**
     * å‡ºå…¥åº“登记提交
     *
     * @param data
     * @return
     */
    @RequestMapping("/submit-register")
    @ResponseBody
    public PageResponse<InoutRecord> submitRegister(@RequestBody InoutRecord data) {
        return inoutManager.submitRegister(data);
    }
    /**
     * å‡ºå…¥åº“化验信息提交
     * @param data
     * @return
     */
    @RequestMapping("/submit-check")
    @ResponseBody
    public PageResponse<InoutRecord> submitCheck(@RequestBody InoutRecord data) {
        return inoutManager.submitCheck(data);
    }
    /**
     * å‡ºå…¥åº“称重环节提交
     * @param data
     * @return
     */
    @RequestMapping("/submit-weight")
    @ResponseBody
    public PageResponse<InoutRecord> submitWeight(@RequestBody InoutRecord data) {
        return inoutManager.submitWeight(data);
    }
    /**
     * å‡ºå…¥åº“称重环节提交,请注意:值仓挑提交的数据非出入库流水完整信息,不能直接调用update方法
     *
     * @param data
     * @return
     */
    @RequestMapping("/submit-handle")
    @Transactional
    @ResponseBody
    public PageResponse<InoutRecord> submitHandle(@RequestBody InoutRecord data) {
        log.debug("-------------submitHandle------------------");
        return inoutManager.submitHandle(data);
    }
}
fzzy-igdss-web/src/main/java/com/fzzy/sys/manager/common/CommonManager.java
@@ -48,4 +48,11 @@
        return depotService.getCacheDepotList(ContextUtil.getCompanyId(), deptId);
    }
    /**
     * @return
     */
    public List<SysDictData> getInoutType() {
        return dicService.getInoutType();
    }
}
fzzy-igdss-web/src/main/java/com/fzzy/sys/manager/inout/InoutManager.java
@@ -1,18 +1,27 @@
package com.fzzy.sys.manager.inout;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fzzy.igds.constant.Constant;
import com.fzzy.igds.constant.RespCodeEnum;
import com.fzzy.igds.data.InoutParam;
import com.fzzy.igds.data.PageResponse;
import com.fzzy.igds.domain.InoutConf;
import com.fzzy.igds.domain.InoutRecord;
import com.fzzy.igds.domain.InoutSysConf;
import com.fzzy.igds.service.InoutConfService;
import com.fzzy.igds.service.InoutRecordService;
import com.fzzy.igds.utils.ContextUtil;
import com.fzzy.igds.utils.SystemUtil;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.redis.RedisCache;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import com.ruoyi.common.utils.StringUtils;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
/**
@@ -28,6 +37,8 @@
    private RedisCache redisCache;
    @Resource
    private InoutConfService inoutConfService;
    @Resource
    private InoutRecordService inoutRecordService;
    /**
     * æ ¹æ®ç”¨æˆ·è¯·æ±‚信息,根据当前客户电脑IP,获取出入库称重上次选择的地磅
@@ -109,6 +120,12 @@
        return result;
    }
    /**
     * æ ¹æ®é…ç½®èŽ·å–å‡ºå…¥åº“çš„é…ç½®å‚æ•°
     * @param listInoutConf
     * @param type
     * @return
     */
    public List<InoutConf> getInoutConf(List<InoutConf> listInoutConf, String type) {
        List<InoutConf> result = new ArrayList<>();
        if (null == listInoutConf) return result;
@@ -120,6 +137,13 @@
        return result;
    }
    /**
     * æ ¹æ®é…ç½®èŽ·å–å‡ºå…¥åº“çš„é…ç½®å‚æ•°
     * @param listInoutConf
     * @param sort
     * @param type
     * @return
     */
    public InoutConf getInoutConf(List<InoutConf> listInoutConf, String sort, String type) {
        if (null == listInoutConf) return new InoutConf(sort);
        if (StringUtils.isEmpty(sort)) sort = "1";
@@ -150,4 +174,258 @@
        return weightEditTag;
    }
    /**
     * å‡ºå…¥åº“注册数据提交,出入库登记使用同一个方法
     *
     * @param data
     * @return
     */
    public PageResponse<InoutRecord> submitRegister(InoutRecord data) {
        SysUser user = ContextUtil.getLoginUser();
        if (StringUtils.isEmpty(data.getCompanyId())) {
            data.setCompanyId(user.getCompanyId());
        }
        if (StringUtils.isEmpty(data.getDeptId())) {
            data.setDeptId(ContextUtil.subDeptId(user));
        }
        int num = inoutRecordService.checkExist(data.getCompanyId(), data.getPlateNum());
        if (num > 0) {
            return new PageResponse<>(RespCodeEnum.CODE_1111.getCode(), "当前车牌号正在执行流程未结束,请核查车牌或联系管理员", data);
        }
        // èŽ·å–ç³»ç»Ÿå‚æ•°é…ç½®
        InoutSysConf inoutSysConf = inoutConfService.getCacheInoutSysConf(data.getCompanyId(), data.getDeptId());
        if (null == inoutSysConf) {
            return new PageResponse<>(RespCodeEnum.CODE_1111.getCode(), "提示:当前库区未配置出入库流程信息,请联系管理员", data);
        }
        // èŽ·å–ä¸‹ä¸€ä¸ªæµç¨‹çŠ¶æ€
        String curProgress = data.getProgress();
        String nextProgress = getNextProgress(curProgress, data.getType(), inoutSysConf);
        data.setProgress(nextProgress);
        //去除身份证号中的空格
        if (StringUtils.isNotEmpty(data.getUserId())) {
            data.setUserId(data.getUserId().trim());
        }
        //去除姓名中的空格
        if (StringUtils.isNotEmpty(data.getUserName())) {
            data.setUserName(data.getUserName().trim());
        }
        //登记人及登记时间
        data.setRegisterUser(user.getUserName());
        data.setRegisterTime(new Date());
        num = inoutRecordService.addInoutRecord(data);
        if (num == 0) {
            return new PageResponse<>(RespCodeEnum.CODE_1111.getCode(), "登记失败!", data);
        }
        //TODO é™„件处理
//        List<FileData> files = data.getFiles();
//        if (null != files && files.size() > 0) {
//            // æ‰§è¡Œé™„件信息
//            fileService.saveInoutFiles(files, data.getCompanyId(), data.getId(), curProgress);
//        }
        return new PageResponse<>(RespCodeEnum.CODE_0000.getCode(), "登记成功!", data);
    }
    /**
     * åŒ–验信息提交
     * @param data
     * @return
     */
    public PageResponse<InoutRecord> submitCheck(InoutRecord data) {
        SysUser user = ContextUtil.getLoginUser();
        if (StringUtils.isEmpty(data.getCompanyId())) {
            data.setCompanyId(user.getCompanyId());
        }
        if (StringUtils.isEmpty(data.getDeptId())) {
            data.setDeptId(ContextUtil.subDeptId(user));
        }
        //化验人及时间
        data.setCheckUser(user.getUserName());
        data.setCheckTime(new Date());
        data.setCheckStatus(Constant.STATUS_PASS);
        int num = inoutRecordService.updateInoutRecord(data);
        if (num == 0) {
            return new PageResponse<>(RespCodeEnum.CODE_1111.getCode(), "提交失败!", data);
        }
        return new PageResponse<>(RespCodeEnum.CODE_0000.getCode(), "提交成功!", data);
    }
    /**
     * ç§°é‡æäº¤ï¼ŒåŒ…含称重登记提交及单独称重提交
     * @param data
     * @return
     */
    public PageResponse<InoutRecord> submitWeight(InoutRecord data) {
        // èŽ·å–ç³»ç»Ÿå‚æ•°é…ç½®
        InoutSysConf inoutSysConf = inoutConfService.getCacheInoutSysConf(data.getCompanyId(), data.getDeptId());
        if (null == inoutSysConf) {
            return new PageResponse<>(RespCodeEnum.CODE_1111.getCode(), "提示:当前系统中流程配置异常,请联系管理员", data);
        }
        // èŽ·å–ä¸‹ä¸€ä¸ªæµç¨‹çŠ¶æ€
        String curProgress = data.getProgress();
        String nextProgress = getNextProgress(curProgress, data.getType(), inoutSysConf);
        data.setProgress(nextProgress);
        int num;
        if(StringUtils.isBlank(data.getId())){
            data.setRegisterTime(new Date());
            data.setRegisterUser(ContextUtil.getLoginUserName());
            //设置初次提交时称重时间信息
            if(data.getFullWeight() > 0){
                data.setFullWeightUser(ContextUtil.getLoginUserName());
                data.setFullWeightTime(new Date());
            }
            if(data.getEmptyWeight() > 0){
                data.setEmptyWeightUser(ContextUtil.getLoginUserName());
                data.setEmptyWeightTime(new Date());
            }
            //称重登记
            num = inoutRecordService.addInoutRecord(data);
        }else {
            if (Constant.PROGRESS_WEIGHT_EMPTY.equals(curProgress)) {
                data.setEmptyWeightTime(new Date());
                data.setEmptyWeightUser(ContextUtil.getLoginUserName());
            }
            if (Constant.PROGRESS_WEIGHT_FULL.equals(curProgress)) {
                data.setFullWeightTime(new Date());
                data.setFullWeightUser(ContextUtil.getLoginUserName());
            }
            //称重更新
            num = inoutRecordService.updateInoutRecord(data);
        }
        if (num == 0) {
            return new PageResponse<>(RespCodeEnum.CODE_1111.getCode(), "提交失败!", data);
        }
        //TODO é™„件处理
//        List<FileData> files = data.getFiles();
//        if (null != files && files.size() > 0) {
//            // æ‰§è¡Œé™„件信息
//            fileService.saveInoutFiles(files, data.getCompanyId(), data.getId(), curProgress);
//        }
        return new PageResponse<>(RespCodeEnum.CODE_0000.getCode(), "执行成功", data);
    }
    /**
     * å€¼ä»“信息提交
     * @param data
     * @return
     */
    public PageResponse<InoutRecord> submitHandle(InoutRecord data) {
        // èŽ·å–ç³»ç»Ÿå‚æ•°é…ç½®
        InoutSysConf inoutSysConf = inoutConfService.getCacheInoutSysConf(data.getCompanyId(), data.getDeptId());
        if (null == inoutSysConf) {
            return new PageResponse<>(RespCodeEnum.CODE_1111.getCode(), "提示:当前系统中流程配置异常,请联系管理员", data);
        }
        // èŽ·å–ä¸‹ä¸€ä¸ªæµç¨‹çŠ¶æ€
        String curProgress = data.getProgress();
        String nextProgress = getNextProgress(curProgress, data.getType(), inoutSysConf);
        data.setProgress(nextProgress);
        data.setHandleEnd(new Date());
        data.setHandleUser(ContextUtil.getLoginUserName());
        // æ‰§è¡Œæ•°æ®æ›´æ–°
        int num = inoutRecordService.updateInoutRecord(data);
        if (num == 0) {
            return new PageResponse<>(RespCodeEnum.CODE_1111.getCode(), "提交失败!", data);
        }
        //TODO é™„件处理
//        List<FileData> files = data.getFiles();
//        if (null != files && files.size() > 0) {
//            // æ‰§è¡Œé™„件信息
//            fileService.saveInoutFiles(files, data.getCompanyId(), data.getId(), curProgress);
//        }
        return new PageResponse<>(RespCodeEnum.CODE_0000.getCode(), "提交成功", data);
    }
    /**
     * èŽ·å–ä¸‹ä¸€æµç¨‹
     *
     * @param curProgress
     * @param type
     * @param sysConf
     * @return
     */
    private String getNextProgress(String curProgress, String type, InoutSysConf sysConf) {
        String nextProgress = null;
        List<String> list = null;
        if (Constant.TYPE_IN.equals(type)) {
            list = Arrays.asList(sysConf.getProgressIn().split("-"));
        }
        if (Constant.TYPE_OUT.equals(type)) {
            list = Arrays.asList(sysConf.getProgressOut().split("-"));
        }
        if (list != null) {
            for (int i = 0; i < list.size() - 1; i++) {
                if (curProgress.equals(list.get(i))) {
                    nextProgress = list.get(i + 1);
                    break;
                }
            }
        }
        return nextProgress;
    }
    /**
     * åˆ†é¡µæŸ¥è¯¢æ•°æ®
     * @param param
     * @return
     */
    public PageResponse<Page<InoutRecord>> pageInoutData(InoutParam param) {
        if (StringUtils.isEmpty(param.getCompanyId())) {
            param.setCompanyId(ContextUtil.getCompanyId());
        }
        if (StringUtils.isEmpty(param.getDeptId())) {
            param.setDeptId(ContextUtil.subDeptId(null));
        }
        Page<InoutRecord> corePage = new Page<>(param.getPage(), param.getLimit());
        inoutRecordService.listPageInout(corePage, param);
        if (null == corePage.getRecords() || corePage.getRecords().isEmpty()) {
            return new PageResponse<>(RespCodeEnum.CODE_2000.getCode(), "获取到数据信息为空");
        }
        return new PageResponse<>(RespCodeEnum.CODE_0000, corePage);
    }
    /**
     * æŸ¥è¯¢æ•°æ®
     * @param param
     * @return
     */
    public PageResponse<InoutRecord> inoutQuery(InoutParam param) {
        if (StringUtils.isEmpty(param.getId())) {
            return new PageResponse<>(RespCodeEnum.CODE_1007.getCode(), "查询参数不完整,查询失败!");
        }
        InoutRecord result = inoutRecordService.selectById(param.getId());
        if (null == result) {
            return new PageResponse<>(RespCodeEnum.CODE_2000.getCode(),
                    "系统未查询到执行中的单据信息", null);
        }
        return new PageResponse<>(RespCodeEnum.CODE_0000, result);
    }
}
fzzy-igdss-web/src/main/resources/static/inout/inout-style.css
@@ -287,7 +287,7 @@
.rkbk-search-input.bg-date {
    background: #eff4f6 url(../img/web/inout/icon-date.png) 98% center no-repeat;
    background: #FFFFFF url(../img/web/inout/icon-date.png) 98% center no-repeat;
}
@@ -520,6 +520,7 @@
    padding: 20px;
    background: #fff;
    margin-top: 20px;
    height: 782px;
}
.qyzj-con-top .layui-input-block {
fzzy-igdss-web/src/main/resources/static/inout/out-easy.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,1053 @@
//当前节点 å…¥åº“质检
var layer;
var form;
var table;
var upload;
var page = 1;
var limit = 15;
var recordData = null;
var selectData = null;  //单选的信息
var snapData;//系统抓拍对象信息
var timerWeight;
var img1, img2, img3;// é¡µé¢ä¸­çš„图片上传名称
$(function () {
    layui.use(['layer', 'laydate', 'form', 'table', 'util', 'upload'], function () {
        var util = layui.util;
        upload = layui.upload;
        layer = layui.layer;
        form = layui.form;
        table = layui.table;
        var laydate = layui.laydate;
        laydate.render({
            elem: '#start',
            theme: '#7b8e9f',
            value: startTime
        });
        laydate.render({
            elem: '#end',
            theme: '#7b8e9f',
            value: endTime
        });
        laydate.render({
            elem: '#foodYear',
            theme: '#7b8e9f',
            type: 'year'
        });
        //上传
        upload.render({
            elem: '#kccz-r-btn1',
            url: '../file/update-file', //上传接口
            size: 4 * 1024, //限制文件大小,单位KB, æœ€å¤§ä¸Šä¼ 4MB
            accept: 'images',
            before: function (obj) {
                var plateNum = $("#plateNum").val();
                this.data = {"plateNum": plateNum, "type": "1"};//携带参数
                //预读本地文件示例,不支持ie8
                obj.preview(function (index, file, result) {
                    $('#kccz-r-img1').attr('src', result); //图片链接(base64)
                });
            },
            done: function (res) {
                //如果上传失败
                if (res.code > 0) {
                    layer.msg("图片上传失败!");
                }
                //上传成功
                img1 = res.msg;
                layer.msg("图片上传成功!");
                //console.log(img1);
            }
        });
        upload.render({
            elem: '#kccz-r-btn2',
            url: '../file/update-file', //上传接口
            size: 4 * 1024, //限制文件大小,单位KB, æœ€å¤§ä¸Šä¼ 4MB
            accept: 'images',
            before: function (obj) {
                var plateNum = $("#plateNum").val();
                this.data = {"plateNum": plateNum, "type": "1"};//携带参数
                //预读本地文件示例,不支持ie8
                obj.preview(function (index, file, result) {
                    $('#kccz-r-img2').attr('src', result); //图片链接(base64)
                });
            },
            done: function (res) {
                //如果上传失败
                if (res.code > 0) {
                    layer.msg("图片上传失败!");
                }
                //上传成功
                img2 = res.msg;
                layer.msg("图片上传成功!");
                // console.log(img2);
            }
        });
        upload.render({
            elem: '#kccz-r-btn3',
            url: '../file/update-file', //上传接口
            size: 4 * 1024, //限制文件大小,单位KB, æœ€å¤§ä¸Šä¼ 4MB
            accept: 'images',
            before: function (obj) {
                var plateNum = $("#plateNum").val();
                this.data = {"plateNum": plateNum}; //携带参数
                //预读本地文件示例,不支持ie8
                obj.preview(function (index, file, result) {
                    $('#kccz-r-img3').attr('src', result); //图片链接(base64)
                });
            },
            done: function (res) {
                //如果上传失败
                if (res.code > 0) {
                    layer.msg("图片上传失败!");
                }
                //上传成功
                img3 = res.msg;
                layer.msg("图片上传成功!");
            }
        });
        // ç›‘听行工具事件
        table.on('tool(tableData)', function (obj) {
            if (obj.event === 'edit') {
                //展示弹窗
                afreshGetData(obj);
            }
        });
        // ç›‘听仓库选择,选择后自动调用仓库的粮品种和产地信息
        form.on('select(select_depotId)', function (obj) {
            updateFoodVarietyByDepot(obj.value);
        });
        // åˆå§‹åŒ–表单数据
        renderTable();
    });
    //显示称重弹窗流程
    showProgress();
    // ç›‘听比例值填写
    $(".per").blur(function () {
        deAutoByPer();
    });
    // ç›‘听比例值填写
    $(".weight").blur(function () {
        deAutoByWeight();
    });
    //初始化WebSocket
    // initWS(deptId, bizType, progress, userId);
});
window.onload = function () {
    //自动连接地磅信息,2.5秒获取一次地磅重量信息
    clearInterval(timerWeight);
    timerWeight = setInterval(function () {
        flushWeight();
    }, 2500);
    // åŠ è½½è§†é¢‘
    initVideo(lprDto, snapDto1, snapDto2);
    //设置地磅
    $("#scaleName").val(weightDto.sort);
    //监听地磅选择
    $("#scaleName").change(function () {
        layer.confirm('调整地磅需重新加载页面,确定调整?', {
            btn: ['确定', '取消']
        }, function () {
            updateWeight();
        });
    });
};
//根据条件查询数据
function flushData() {
    var index = layer.load();
    var param = form.val("form-param");
    table.reload('tableData', {
        url: "/basic/inout/page-inout-data",
        where: param
    });
    $("thead tr").css({
        "border-bottom": "2px solid #53adce",
        "background": "#eff4f6"
    });
    layer.close(index);
}
//表单清空
function resetForm() {
    $("#form-param")[0].reset();
    form.render();
}
// æ¸²æŸ“表单数据
function renderTable() {
    var param = form.val("form-param");
    // æ¸…空数据
    $("#tableData").empty();
    table.render({
        elem: '#tableData',
        url: '/basic/inout/page-inout-data',
        page: true,
        limit: limit,
        even: true,
        method: 'POST',
        contentType: "application/json;charset=UTF-8",
        cols: [[{
            type: 'numbers',
            title: '序号'
        }, {
            field: 'id',
            title: '单据号',
            width: '13%',
            style: 'color: #f67d06;font-weight: bold'
        }, {
            field: 'plateNum',
            title: '车牌',
            width: '11%',
            style: 'font-weight: bold'
        }, {
            field: 'type',
            title: '类型',
            templet: function (item) {
                var result = item.type;
                return result == "IN" ? "入库" : "出库";
            }
        }, {
            field: 'customerName',
            title: '发货单位'
        }, {
            field: 'deptName',
            title: '收货单位'
        }, {
            field: 'depotId',
            title: '装卸仓库',
            width: '10%',
            templet: function (item) {
                var result = item.depotId;
                $.each(listDepot, function (index, data) {
                    if (item.depotId == data.id) {
                        result = data.name;
                        return true;
                    }
                });
                return result == null ? "" : result;
            }
        }, {
            field: 'foodVariety',
            title: '品种',
            width: '10%',
            templet: function (item) {
                var result = item.foodVariety;
                $.each(listFoodVariety, function (index, data) {
                    if (item.foodVariety == data.code) {
                        result = data.name;
                        return true;
                    }
                });
                return result == null ? "" : result;
            }
        }, {
            field: 'progress',
            title: '流程进度',
            width: '10%',
            style: 'font-weight: bold',
            templet: function (item) {
                return INOUT_PROGRESS_MSG(item.progress);
            }
        }, {
            field: '',
            title: '操作',
            width: '9%',
            toolbar: "#barControl"
        }]],
        where: param,
        parseData: function (res) {
            if ("0000" == res.code) {
                return {
                    "code": "0",
                    "msg": res.msg,
                    "count": res.data.total,
                    "data": res.data.records
                }
            } else {
                return {
                    "code": "1",
                    "msg": res.msg
                }
            }
        }
    });
    $("thead tr").css({
        "border-bottom": "2px solid #53adce",
        "background": "#eff4f6"
    });
}
/*-----------------------弹窗显示渲染-开始------------------------------*/
//操作前,重新流水数据当前信息
function afreshGetData(obj) {
    var index = layer.load();
    recordData = null;
    var data = obj.data;
    var param = {
        userId: data.userId,
        plateNum: data.plateNum,
        id: data.id
    };
    $.ajax({
        type: "POST",
        url: "../../basic/inout/inout-query",
        dataType: "json",
        contentType: "application/json;charset=UTF-8",
        data: JSON.stringify(param),
        success: function (result) {
            if (result.code != "0000") {
                layer.alert("请刷新页面后,重新操作!!");
            } else {
                recordData = result.data;
                showWindows(recordData.progress);
            }
            layer.close(index);
        },
        error: function () {
            layer.close(index);
            layer.alert("请刷新页面后,重新操作!!");
        }
    });
}
//显示流程操作弹窗
function quickRegister() {
    //登记按钮放开
    $("#btn_register").css("display", "block");
    //称重操作弹窗
    var pro = '登记';
    updateEditAndProgress();
    flushPage();
    layer.open({
        type: 1,
        title: pro,
        area: ['1283px', '815px'],
        cancel: function (index, layero) {
            $("#weightDetail").css("display", "none");
        },
        shade: 0,
        scrollbar: 0,
        content: $('#weightDetail'),
        offset: ['16px', '16px']
    });
}
//显示流程操作弹窗
function showWindows(progress) {
    console.log(progress);
    if (progress == 'WEIGHT_FULL' || progress == 'WEIGHT_EMPTY') {
        //登记按钮放开
        $("#btn_register").css("display", "none");
        //称重操作弹窗
        var pro = '空车称重';
        if (progress == 'WEIGHT_FULL') {
            pro = '满车称重';
        }
        updateEditAndProgress();
        flushPage();
        layer.open({
            type: 1,
            title: "称重" + pro + " - å•号:" + recordData.id,
            area: ['1283px', '815px'],
            cancel: function (index, layero) {
                $("#weightDetail").css("display", "none");
            },
            shade: 0,
            scrollbar: 0,
            content: $('#weightDetail'),
            offset: ['16px', '16px']
        });
    } else if (progress == 'HANDLE') {
        //值仓操作弹窗
        form.val("form-handle", recordData);
        form.render();
        layer.open({
            type: 1,
            title: "值仓 - å•号:" + recordData.id,
            area: ['1283px', '815px'],
            cancel: function (index, layero) {
                $("#handleDetail").css("display", "none");
            },
            shade: 0,
            scrollbar: 0,
            content: $('#handleDetail'),
            offset: ['16px', '16px']
        });
    } else {
        layer.alert("请到对应页面进行操作!!!");
    }
}
//称重弹窗中流程环节显示
function showProgress() {
    if (!inoutProgress) {
        return;
    }
    if (inoutProgress.indexOf("REGISTER") == -1) {
        $("#progress-register").css("display", "none");
    }
    if (inoutProgress.indexOf("WEIGHT_FULL") == -1) {
        $("#progress-fullWeight").css("display", "none");
    }
    if (inoutProgress.indexOf("HANDLE") == -1) {
        $("#progress-hand").css("display", "none");
    }
    if (inoutProgress.indexOf("WEIGHT_EMPTY") == -1) {
        $("#progress-emptyWeight").css("display", "none");
    }
    if (inoutProgress.indexOf("CARD_BACK") == -1) {
        $("#progress-cardBack").css("display", "none");
    }
}
//称重弹窗中更新流程节点
function updateEditAndProgress() {
    if (recordData) {
        if (InoutProgress.WEIGHT_EMPTY == recordData.progress) {
            $("#emptyWeight").removeClass("rkbk-search-input");
            $("#emptyWeight").attr("disabled", false);
            $("#progress-hand").removeClass("active");
            $("#progress-fullWeight").removeClass("active");
            $("#fullWeight").addClass("rkbk-search-input");
            $("#fullWeight").attr("disabled", true);
        }
        if (InoutProgress.WEIGHT_FULL == recordData.progress) {
            $("#fullWeight").removeClass("rkbk-search-input");
            $("#fullWeight").attr("disabled", false);
            $("#progress-hand").addClass("active");
            $("#progress-fullWeight").addClass("active");
            $("#emptyWeight").addClass("rkbk-search-input");
            $("#emptyWeight").attr("disabled", true);
        }
    } else {
        $("#fullWeight").addClass("rkbk-search-input");
        $("#fullWeight").attr("disabled", true);
        $("#emptyWeight").addClass("rkbk-search-input");
        $("#emptyWeight").attr("disabled", true);
        $("#progress-hand").removeClass("active");
        $("#progress-fullWeight").removeClass("active");
    }
}
/*-----------------------弹窗显示渲染-结束------------------------------*/
/*-----------------------称重操作-开始------------------------------*/
//自动连接地磅信息,2.5秒获取一次地磅重量信息
function timerGetWeight() {
    clearInterval(timerWeight);
    timerWeight = setInterval(function () {
        flushWeight();
    }, 2500);
}
//发送请求获取称重数据
function flushWeight() {
    var ip = "127.0.0.1";
    if (weightDto.ip) {
        ip = weightDto.ip;
    }
    var port = "9111";
    if (weightDto.port) {
        port = weightDto.port;
    }
    var sn = "WEIGHT";
    if (weightDto.sn) {
        sn = weightDto.sn;
    }
    var url = "http://" + ip + ":" + port + "/" + sn;
    $.ajax({
        type: "GET",
        async: true,
        timeout: 2000,
        url: url,
        data: {},
        dataType: "json",
        success: function (json) {
            var data = json.content;
            if (!data) data = 0.0;
            weightDto.weight = data;
            $("#weightValue").text(data);
            $("#img_scale_statule").attr("src", "/img/web/inout/icon-gree.png");
        },
        error: function () {
            weightDto.weight = 0.0;
            $("#weightValue").text("0.0");
            $("#img_scale_statule").attr("src", "/img/web/inout/icon-red.png");
        }
    });
}
//点击称重
function weight() {
    // æ²¡æœ‰ä¸šåŠ¡æ•°æ®ä¸å¯æ‰§è¡Œ
    if (!recordData) {
        layer.alert("没有查询到业务数据,执行被拒绝!!");
        return;
    }
    // å¦‚果是空车称重
    if (InoutProgress.WEIGHT_EMPTY == recordData.progress) {
        form.val("form-weight", {
            emptyWeight: weightDto.weight
        });
    }
    // å¦‚果是满车称重
    if (InoutProgress.WEIGHT_FULL == recordData.progress) {
        form.val("form-weight", {
            fullWeight: weightDto.weight
        });
    }
    form.render();
    snapData == null;
    //点击称重时候自动抓拍数据
    layer.msg("系统自动抓拍保留记录……");
    snapData = {
        companyId: companyId,
        deptId: deptId,
        bizTag: recordData.progress,
        bizType: bizType,
        plateNum: recordData.plateNum + "-" + recordData.carNum,
        id1: (null != lprDto) ? lprDto.id : null,
        id2: (null != snapDto1) ? snapDto1.id : null,
        id3: (null != snapDto2) ? snapDto2.id : null
    };
    console.log(snapData);
    //当前AJAX服务为同步服务,返回数据包装照片信息
    var index = layer.load();
    $.ajax({
        sync: false,
        type: "POST",
        url: "../../basic/inout/snap-img",
        dataType: "json",
        contentType: "application/json;charset=UTF-8",
        data: JSON.stringify(snapData),
        success: function (result) {
            layer.close(index);
            if (result.code != "0000") {
                layer.alert(result.msg);
            } else {
                snapData = result.data;
            }
        },
        error: function () {
            layer.close(index);
            layer.msg("后台调用截图失败,请重新尝试!!");
        }
    });
    //二次称重后,自动调用下自动计算
    if (InoutProgress.WEIGHT_EMPTY == recordData.progress) {
        deAutoByPer();
    }
    flushBtn("btn-weight");
}
// è‡ªåŠ¨è®¡ç®—ï¼Œæ³¨æ„ï¼šå‡ºåº“æ°´åˆ†æ˜¯ +,入库水分需要 -
function deAutoByPer() {
    var curData = form.val("form-weight");
    var netWeight = 0, deImpurity = 0, deWet = 0, deSum = 0, settleWeight = 0;
    if (curData.fullWeight == 0 || curData.emptyWeight == 0) {
        return;
    }
    // è®¡ç®—净重
    netWeight = curData.fullWeight - curData.emptyWeight;
    if (netWeight <= 0) {
        layer.msg("净重小于等于0,当前计算不正确!");
        return;
    }
    // æ‚质扣重
    if (curData.impurity > 0) {
        deImpurity = (netWeight * curData.impurity / 100.00).toFixed(0);
    }
    // æ°´åˆ†å¢žé‡
    if (curData.wet > 0) {
        deWet = (netWeight * curData.wet / 100.00).toFixed(0);
    }
    // æ€»æ‰£é‡
    deSum = Number(deImpurity) + Number(curData.deOther)
        + Number(curData.deHandle);
    deSum = deSum.toFixed(0);
    // ç»“算净重,把水分添加近来
    settleWeight = Number(netWeight) - Number(deSum) + Number(deWet);
    settleWeight = settleWeight.toFixed(0);
    form.val("form-weight", {
        netWeight: netWeight,
        deImpurity: deImpurity,
        deWet: deWet,
        deSum: deSum,
        settleWeight: settleWeight
    });
    form.render();
}
// è‡ªåŠ¨è®¡ç®—
function deAutoByWeight() {
    var curData = form.val("form-weight");
    var netWeight = 0, impurity = 0, wet = 0, deSum = 0, settleWeight = 0;
    if (curData.fullWeight == 0 || curData.emptyWeight == 0) {
        return;
    }
    // å‡€é‡
    netWeight = curData.fullWeight - curData.emptyWeight;
    if (netWeight <= 0) {
        layer.msg("净重小于等于0,当前计算不正确!");
        return;
    }
    // æ‚è´¨-百分比
    if (curData.deImpurity > 0) {
        impurity = (curData.deImpurity / netWeight * 100).toFixed(2);
    }
    // æ°´åˆ† -百分比
    if (curData.deWet > 0) {
        wet = (curData.deWet / netWeight * 100).toFixed(2);
    }
    // æ€»æ‰£é‡= æ‚质扣重 + ä¸å®Œå–„扣重 + æ°”体扣重 + å€¼ä»“扣重 + åŒ…装扣重
    deSum = Number(curData.deImpurity)
        + Number(curData.deOther) + Number(curData.deHandle);
    deSum = deSum.toFixed(0);
    // ç»“算净重,把水分添加近来
    settleWeight = Number(netWeight) - Number(deSum) + Number(curData.deWet);
    settleWeight = settleWeight.toFixed(0);
    form.val("form-weight", {
        netWeight: netWeight,
        impurity: impurity,
        wet: wet,
        deSum: deSum,
        settleWeight: settleWeight
    });
    form.render();
}
//根据当前操作的按钮ID更新其他按钮状态
function flushBtn(btnId) {
    if ("btn-weight" == btnId) {// ç§°é‡åŽå¯ä»¥ç‚¹å‡»å®Œæˆç§°é‡
        $("#btn-submit").removeClass("layui-btn-disabled");
        $("#btn-submit").attr("disabled", false);
    }
    if ("btn-submit" == btnId) {
        $("#btn-submit").addClass("layui-btn-disabled");
        $("#btn-submit").attr("disabled", true);
        flushData();
        if (InoutProgress.WEIGHT_EMPTY == recordData.progress) {// å‡ºåº“,如果是空车称重,完成收直接刷新页面
            layer.closeAll();
        } else {
            // å®Œæˆç§°é‡åŽæŽ§åˆ¶æŒ‰é’®
            $("#btn-weight").addClass("layui-btn-disabled");
            $("#btn-weight").attr("disabled", true);
            $("#btn-printBill").removeClass("layui-btn-disabled");
            $("#btn-printBill").attr("disabled", false);
            addDisabled();
        }
    }
    if ("btn-printBill" == btnId) {// æ‰“印过磅单,说明业务完成
        $("#btn-weight").removeClass("layui-btn-disabled");
        $("#btn-weight").attr("disabled", false);
        $("#btn-submit").addClass("layui-btn-disabled");
        $("#btn-submit").attr("disabled", true);
        $("#btn-printBill").addClass("layui-btn-disabled");
        $("#btn-printBill").attr("disabled", true);
        layer.closeAll();
        flushData();
    }
}
//更改扣重信息框不可编辑
function addDisabled() {
    //杂质
    $("#impurity").attr("disabled", true);
    $("#deImpurity").attr("disabled", true);
    //水分
    $("#wet").attr("disabled", true);
    $("#deWet").attr("disabled", true);
    //值仓
    $("#deHandle").attr("disabled", true);
    //其他
    $("#deOther").attr("disabled", true);
}
//恢复扣重信息框编辑状态
function delDisabled() {
    //杂质
    $("#impurity").attr("disabled", false);
    $("#deImpurity").attr("disabled", false);
    //水分
    $("#wet").attr("disabled", false);
    $("#deWet").attr("disabled", false);
    //值仓
    $("#deHandle").attr("disabled", false);
    //其他
    $("#deOther").attr("disabled", false);
}
// ç‚¹å‡»æ‰“印,系统判断是否已经执行完成,如果已经完成,直接打印,如果未完成则先执行完成
function printBill() {
    if (!recordData) {
        layer.alert("没有获取到业务数据,不支持打印!");
        return;
    }
    // ä»ŽåŽå°èŽ·å–æ¨¡ç‰ˆå¹¶æ‰“å°
    var data = form.val("form-weight");
    // åˆå¹¶æ›´æ–°ç•¶å‰ç¼–辑数据
    Object.assign(recordData, data);
    printBillStep2();
};
// ç‚¹å‡»æ‰“印,先执行系统默认执行完成卡回收
function printBillStep2() {
    var index = layer.load();
    $.ajax({
        type: "POST",
        url: "../../basic/inout-report/inout-bill-weight",
        dataType: "json",
        contentType: "application/json;charset=UTF-8",
        data: JSON.stringify(recordData),
        success: function (result) {
            layer.close(index);
            if (result.code != "0000") {
                layer.msg(result.msg);
            } else {
                layer.msg("开始渲染打印单……");
                printWeight(result.data);
                // åˆ·æ–°æŒ‰é’®
                flushBtn("btn-printBill");
            }
        },
        error: function () {
            layer.close(index);
            layer.msg("获取打印模版失败,请联系管理员查看原因!!");
        }
    });
};
//完成称重
function submitWeight() {
    if (null == recordData) {
        notify("没有数据可以提交", null);
        return;
    }
    var data = form.val("form-weight");
    if (!data.depotId) {
        notify("装卸仓库必须填写", null);
        return;
    }
    // æ ¡éªŒ-出库空车
    if (InoutProgress.WEIGHT_EMPTY == recordData.progress) {
        if (data.emptyWeight <= 0.0) {
            notify("空车称重信息必填", null);
            return;
        }
        if (!data.customerName) {
            notify("往来单位信息必填", null);
            return;
        }
    } else {
        if (data.fullWeight <= 0.0) {
            notify("满车称重信息必填", null);
            return;
        }
        if (!data.foodVariety) {
            notify("粮食品种必填", null);
            return;
        }
        if (!data.foodLocation) {
            notify("粮食产地必填", null);
            return;
        }
        if (!data.settleWeight || data.settleWeight <= 0.0) {
            notify("扣重后净信息不正确,请核实计算", null);
            return;
        }
    }
    // åˆå¹¶æ›´æ–°ç•¶å‰ç¼–辑数据
    Object.assign(recordData, data);
    // èŽ·å–ç…§ç‰‡
    var files = [{
        fileName: snapData.fileName1
    }, {
        fileName: snapData.fileName2
    }, {
        fileName: snapData.fileName3
    }];
    recordData.files = files;
    var index = layer.load();
    $.ajax({
        type: "POST",
        url: "../../basic/inout/inout-next-step",
        dataType: "json",
        contentType: "application/json;charset=UTF-8",
        data: JSON.stringify(recordData),
        success: function (result) {
            if (result.code != "0000") {
                layer.alert("数据提交失败,请重试!!");
            } else {
                clearInterval(timerWeight);
                layer.alert("数据提交成功!!");
                // æ›´æ–°æŒ‰é’®æ˜¾ç¤º
                flushBtn("btn-submit");
            }
            layer.close(index);
        },
        error: function () {
            layer.close(index);
            layer.alert("提交失败,请重新尝试!!");
        }
    });
}
//重新称重时,表单不清空,按钮重置
function flushPage() {
    weightDto.weight = 0.0;
    $("#weightValue").text("0.0");
    $("#img_scale_statule").attr("src", "/img/web/inout/icon-red.png");
    timerGetWeight();
    //扣重信息框恢复为可编辑
    delDisabled();
    //表单数据重置
    form.val("form-weight", recordData);
    form.render();
}
//根据选择的仓库信息,更新粮食品种
function updateFoodVarietyByDepot(selectId) {
    var selectDepot;
    $.each(listDepot, function (index, data) {
        if (data.id === selectId) {
            selectDepot = data;
            return false;
        }
    });
    if (selectDepot) {
        form.val("form-weight", {
            foodVariety: selectDepot.foodVariety,
            foodLocation: selectDepot.foodLocation,
            foodLevel: selectDepot.foodLevel,
            noticeId: selectDepot.noticeId
        });
        form.render();
    }
}
/*-----------------------称重操作-结束------------------------------*/
/*-----------------------值仓操作-开始------------------------------*/
//值仓提交
function submitHandle() {
    if (null == recordData) {
        layer.alert("没有数据可以提交!!!");
        return;
    }
    var index = layer.load();
    var data = form.val("form-handle");
    // åˆå¹¶æ›´æ–°ç•¶å‰ç¼–辑数据
    Object.assign(recordData, data);
    // èŽ·å–å›¾ç‰‡åç§°
    recordData.files = [{
        fileName: img1
    }, {
        fileName: img2
    }, {
        fileName: img3
    }];
    console.log(recordData);
    $.ajax({
        type: "POST",
        url: "../../basic/inout/inout-next-step",
        dataType: "json",
        contentType: "application/json;charset=UTF-8",
        data: JSON.stringify(recordData),
        success: function (result) {
            if (result.code != "0000") {
                layer.alert("提交失败,请重新尝试!!");
            } else {
                layer.alert("值仓完成!!");
                layer.closeAll();
                flushData();
            }
            layer.close(index);
        },
        error: function () {
            layer.close(index);
            layer.alert("提交失败,请重新尝试!!");
        }
    });
}
// ---------------------------往来单位操作--开始 -------------------//
// å¼¹å‡ºå¾€æ¥å•位下拉框
function showCustomer() {
    var index = layer.load();
    // æ¸²æŸ“往来单位列表
    table.render({
        elem: '#tableCustomer',
        url: '../../basic/inout/list-out-customer',
        page: false,
        // skin : "nob",
        // size : 'sm',
        toolbar: '#toolbarCustomer',
        even: true,
        method: 'POST',
        contentType: "application/json;charset=UTF-8",
        cols: [[{
            field: 'id',
            title: '编码'
        }, {
            field: 'name',
            title: '名称'
        }, {
            field: 'cardId',
            title: '身份证'
        }]],
        parseData: function (res) {
            if ("0000" == res.code) {
                return {
                    "code": "0",
                    "msg": res.msg,
                    "data": res.data
                }
            } else {
                return {
                    "code": "1",
                    "msg": res.msg
                }
            }
        },
        done: function (res) {
            layer.close(index);
        }
    });
    //双击显示选中数据
    table.on('rowDouble(tableCustomer)', function (obj) {
        var data = obj.data;
        // èµ‹å€¼
        form.val("form-weight", {
            customerId: data.id,
            customerName: data.name
        });
        // å…³é—­
        layer.close(index2);
    });
    // å¼¹å‡ºå¯¹è¯æ¡†
    var index2 = layer.open({
        type: 1,
        title: "选择往来单位",
        area: ['600px', '600px'],
        shade: 0,
        content: $('#listCustomer'),
        btn: 0,
        btn: ['取消'],
        yes: function () {
            layer.close(index2);
        },
        closeBtn: 0
    });
}
// åˆ·æ–°å¾€æ¥å•位数据
function flushCustomer() {
    var key = $("#key").val();
    var param = {
        key: key
    };
    table.reload('tableCustomer', {
        url: "../../basic/inout/list-out-customer",
        where: param,
        done: function (res) {
            if (key) {
                $("#key").val(key);
            }
        }
    });
}
// ---------------------------往来单位操作--结束-------------------//
/**
 * å¼¹å‡ºæé†’框
 * @param msg æé†’信息
 * @param data æ•°æ®ä¿¡æ¯ï¼Œå¯èƒ½ä¸ºç©º
 */
function notify(msg, data) {
    if (data) {
        //赋值
        $("#resultMsg").text(msg);
        $("#resultUserName").text(data.userName);
        $("#resultPlateNum").text(data.plateNum);
        if ("IN" == data.type) {
            $("#resultType").text("入库-" + INOUT_PROGRESS_MSG(data.progress));
        } else {
            $("#resultType").text("出库-" + INOUT_PROGRESS_MSG(data.progress));
        }
        $("#resultIntelCard").text(data.intelCard);
        layer.open({
            type: 1,
            offset: ['150px', '200px'],
            area: '450px;',
            shade: 0.8,
            id: 'dialog_notify_info',
            btn: ['确定'],
            content: $('#dialog-from-notify'),
            yes: function (index) {
                layer.closeAll();
            }
        });
    } else {
        layer.alert(msg, {offset: ['300px', '300px']});
    }
};
fzzy-igdss-web/src/main/resources/static/inout/out-register.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,591 @@
var layer;
var form;
var snapData;//登记照片
$(function () {
    layui.use(['layer', 'laydate', 'form', 'util'], function () {
        var util = layui.util;
        var laydate = layui.laydate;
        layer = layui.layer;
        form = layui.form;
        laydate.render({
            elem: '#userBirthday'
        });
    });
    showProgress();
    var rightH = $(".rkbk-left-wrap").height();
    $(".rkbk-right-wrap").height(rightH);
    $(window).resize(function () {
        var rightH = $(".rkbk-left-wrap").height();
        $(".rkbk-right-wrap").height(rightH);
    });
    // åˆå§‹åŒ–WebSocket
    // initWS(deptId, bizType, progress, userId);
});
window.onload = function () {
    // åŠ è½½è§†é¢‘
    initVideo(lprDto, null, null);
};
//控制流程环节显示
function showProgress() {
    if (!inoutProgress) {
        return;
    }
    if (inoutProgress.indexOf("REGISTER") == -1) {
        $("#progress-register").css("display", "none");
    }
    if (inoutProgress.indexOf("WEIGHT_FULL") == -1) {
        $("#progress-fullWeight").css("display", "none");
    }
    if (inoutProgress.indexOf("HANDLE") == -1) {
        $("#progress-hand").css("display", "none");
    }
    if (inoutProgress.indexOf("WEIGHT_EMPTY") == -1) {
        $("#progress-emptyWeight").css("display", "none");
    }
    if (inoutProgress.indexOf("CARD_BACK") == -1) {
        $("#progress-cardBack").css("display", "none");
    }
}
// socket信息返回處理
function socketOnMessage(packet) {
};
//使用插件读取身份证
function flushIdCard() {
    var index = layer.load();
    $.ajax({
        type: "GET",
        async: true,
        url: "http://127.0.0.1:9111/IDCARD",
        data: {},
        dataType: "json",
        success: function (json) {
            layer.close(index);
            var data = json;
            if (data.code === "200" || data.code == 200) {
                // ä¸´æ—¶èµ‹å€¼
                $("#userName").val(data.cnName);
                $("#userSex").val(data.sex);
                $("#userNation").val(data.nation);
                $("#userAddress").val(data.address);
                //$("#id_img_pers").attr("src",data.Image);
                var time = data.birthdate;
                if (time.length == 8) {
                    time = time.substring(0, 4) + "-" + time.substring(4, 6) + "-" + time.substring(6);
                }
                $("#userBirthday").val(time);
                $("#userId").val(data.idNum);
                if (data.Image) {
                    $("#id_img_pers").attr("src", data.Image);
                }
                getPhone();
            }else{
                alertError("没有获取到身份证信息!");
                return;
            }
        },
        error: function () {
            layer.alert("身份证读取失败!", {
                offset: ['300px', '300px']
            });
            layer.close(index);
        }
    });
}
//使用插件读取智慧卡号
function flushICCard() {
    $("#intelCard").val(null);
    $.ajax({
        type: "GET",
        async: true,
        url: "http://127.0.0.1:9111/ICCARD",
        data: {},
        dataType: "json",
        // jsonp: "callback",
        // jsonpCallback: "jsonpCallback",
        success: function (json) {
            //console.log(json);
            var data = json;
            //console.log(data);
            if (data.code === "200" || data.code == 200) {
                $("#intelCard").val(data.no);
            } else {
                layer.alert("请重新读卡!", {offset: ['300px', '300px']});
            }
        },
        error: function () {
            layer.alert("IC卡读取出错!", {offset: ['300px', '300px']});
        }
    });
}
//获取联系方式
function getPhone() {
    var userId = $("#userId").val();
    var data = {
        userId: userId
    };
    $.ajax({
        type: "POST",
        url: "../../basic/inout/driver-phone",
        dataType: "json",
        contentType: "application/json;charset=UTF-8",
        data: JSON.stringify(data),
        success: function (result) {
            if (result.code != "0000") {
                layer.msg("未获取到司机信息,请填写联系方式");
            } else {
                $("#userContact").val(result.data.mobile);
            }
        },
        error: function () {
            layer.msg("未获取到司机信息,请填写联系方式");
        }
    });
}
//读取车牌号
function flushPlateNum() {
    var param = JSON.stringify(lprDto);
    var index = layer.load();
    $.ajax({
        type: "POST",
        url: "../../inout/api/get-plateNum",
        dataType: "json",
        contentType: "application/json;charset=UTF-8",
        data: param,
        success: function (result) {
            if (result.code != "0000") {
                alertError(result.msg);
            } else {
                $("#plateNum").val(result.data.plateNum);
                $("#plateNum2").val(result.data.plateNum);
                if (plateTag === "Y") {
                    plateNumImg(result.data.plateNum, result.data.platePath);
                }
            }
            layer.close(index);
            getPlateNumAfter()
        },
        error: function () {
            layer.close(index);
            alertError("车牌识别失败!");
        }
    });
}
//获取挂车号
function getPlateNumAfter() {
    var plateNum = $("#plateNum").val();
    var data = {
        plateNum: plateNum
    };
    $.ajax({
        type: "POST",
        url: "../../basic/inout/plate-num",
        dataType: "json",
        contentType: "application/json;charset=UTF-8",
        data: JSON.stringify(data),
        success: function (result) {
            if (result.code != "0000") {
                layer.msg("未获取到车牌信息,请填写挂车号");
            } else {
                $("#plateNumAfter").val(result.data.plateNumAfter);
            }
        },
        error: function () {
            layer.msg("未获取到车牌信息,请填写挂车号");
        }
    });
}
///重置车牌识别信息
function resetPlateNum() {
    var index = layer.load();
    var param = JSON.stringify(lprDto);
    $.ajax({
        type: "POST",
        url: "../../inout/api/reset-lpr",
        dataType: "json",
        contentType: "application/json;charset=UTF-8",
        data: param,
        success: function (result) {
            if (result.code != "0000") {
                layer.alert(result.msg, {
                    offset: ['300px', '300px']
                });
            } else {
                layer.alert("重置成功,请重新获取车牌信息", {
                    offset: ['300px', '300px']
                });
            }
            layer.close(index);
        },
        error: function () {
            layer.close(index);
            layer.alert("重置执行失败", {
                offset: ['300px', '300px']
            });
        }
    });
}
// è¡¨å•清空
function resetForm() {
    $("#form-data")[0].reset();
    form.render();
    // èº«ä»½è¯é‡ç½®
    $("#id_img_pers").attr("src", "../../static/images/rkbk-photo_03.png");
    $("#pz-img").removeClass("kccz-r-img-red");
    $("#pz-text").text("自动抓拍");
}
// å½“前完成
function submit() {
    var data = form.val("form-data");
    if (!data.plateNum) {
        alertError("承运人车牌号不能为空");
        return;
    }
    if (!data.userName) {
        alertError("承运人姓名不能为空");
        return;
    }
    if (!data.userId) {
        alertError("承运人身份证号不能为空");
        return;
    }
    if (!data.userContact) {
        alertError("承运人联系方式不能为空");
        return;
    }
    var isPhone = checkPhone(data.userContact);
    if (!isPhone) {
        alertError("手机号格式不对,请检查一下手机号");
        return;
    }
    var isUserId = checkPsidno(data.userId);
    if (!isUserId) {
        alertError("身份证号格式不对,请检查一下身份证号");
        return;
    }
    var isPlateNum = checkPlateNum(data.plateNum);
    if (!isPlateNum) {
        alertError("车牌号格式不对,请检查一下车牌号");
        return;
    }
    //系统抓拍
    layer.msg("系统自动抓拍记录……");
    snapData = {
        companyId: companyId,
        deptId: deptId,
        progress: progress,
        bizType: type,
        plateNum: data.plateNum,
        id1: (null != lprDto) ? lprDto.id : null,
        id2: (null != lprDto) ? lprDto.id : null,
    };
    $.ajax({
        sync: false,
        type: "POST",
        url: "../../inout/api/snap-img",
        dataType: "json",
        contentType: "application/json;charset=UTF-8",
        data: JSON.stringify(snapData),
        success: function (result) {
            if (result.code != "0000") {
                layer.alert(result.msg);
                submitData(data);
            } else {
                snapData = result.data;
                $("#pz-img").addClass("kccz-r-img-red");
                $("#pz-text").text("已拍照");
                submitData(data);
            }
        },
        error: function () {
            layer.msg("后台调用截图失败,请重新尝试!!");
            submitData(data);
        }
    });
}
//执行保存数据
function submitData(data) {
    var index = layer.load();
    var files = [{
        fileName: snapData.fileName1
    },{
        fileName: snapData.fileName2
    }];
    data.files = files;
    $.ajax({
        type: "POST",
        url: "../../basic/inout/submit-register",
        dataType: "json",
        contentType: "application/json;charset=UTF-8",
        data: JSON.stringify(data),
        success: function (result) {
            layer.close(index);
            if (result.code != "0000") {
                notify(result.msg, result.data);
            } else {
                notify("数据提交成功", result.data);
                // é‡ç½®é¡µé¢
                resetForm();
            }
        },
        error: function () {
            layer.close(index);
            layer.alert("提交失败,请重新尝试!!");
        }
    });
}
/**
 * å¼¹å‡ºæé†’框
 * @param msg æé†’信息
 * @param data æ•°æ®ä¿¡æ¯ï¼Œå¯èƒ½ä¸ºç©º
 */
function notify(msg, data) {
    if (data) {
        //赋值
        $("#resultMsg").text(msg);
        $("#resultUserName").text(data.userName);
        $("#resultPlateNum").text(data.plateNum);
        if ("IN" == data.type) {
            $("#resultType").text("入库-" + INOUT_PROGRESS_MSG(data.progress));
        } else {
            $("#resultType").text("出库-" + INOUT_PROGRESS_MSG(data.progress));
        }
        $("#resultIntelCard").text(data.intelCard);
        layer.open({
            type: 1,
            offset: ['150px', '200px'],
            area: '450px;',
            shade: 0.8,
            id: 'dialog_notify_info',
            btn: ['确定'],
            content: $('#dialog-from-notify'),
            yes: function (index) {
                layer.closeAll();
            }
        });
    } else {
        layer.alert(msg, {offset: ['300px', '300px']});
    }
}
function checkPhone(str) {
    var reg = /^1[3456789]\d{9}$/;
    // ^1  ä»¥1开头
    // [3456789] ç¬¬2位,使用原子表里的任意一个原子都可以
    // \d{9}$  ç¬¬ä¸‰ä½  æœåŽå¯ä»¥æ˜¯ä»»æ„æ•°å­—  å¹¶ä¸”最后结尾必须是数字
    if (reg.test(str)) {
        return true;
    } else {
        return false;
    }
}
/**
 * @description : æ ¡éªŒèº«ä»½è¯å·æ˜¯å¦åˆè§„(18位、15位)
 * @param        value
 * @return       {Boolean} true-合规 false-不合规
 */
function checkPsidno(value) {
    var psidno = String(value)
    // 1.校验身份证号格式和长度
    var regPsidno = /^(^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$)|(^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[X])$)$/
    if (!regPsidno.test(psidno)) {
        return false;
    }
    // 2.校验前两位的省份编码是否正确
    var province = {
        11: '北京',
        12: '天津',
        13: '河北',
        14: '山西',
        15: '内蒙古',
        21: '辽宁',
        22: '吉林',
        23: '黑龙江 ',
        31: '上海',
        32: '江苏',
        33: '浙江',
        34: '安徽',
        35: '福建',
        36: '江西',
        37: '山东',
        41: '河南',
        42: '湖北 ',
        43: '湖南',
        44: '广东',
        45: '广西',
        46: '海南',
        50: '重庆',
        51: '四川',
        52: '贵州',
        53: '云南',
        54: '西藏 ',
        61: '陕西',
        62: '甘肃',
        63: '青海',
        64: '宁夏',
        65: '新疆',
        71: '台湾',
        81: '香港',
        82: '澳门',
        91: '国外'
    }
    if (!province[Number(psidno.slice(0, 2))]) {
        return false;
    }
    var reg;
    var arrSplit;
    var year;
    var month;
    var day;
    // 3.校验出生日期
    if (psidno.length === 15) {
        // 15位号码 çœï¼ˆ2位)市(2位)县(2位)年(2位)月(2位)日(2位)校验码(3位)
        reg = new RegExp(/^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/)
        arrSplit = psidno.match(reg)
        // 15位号码在年份前补 19 æˆ– 20
        year = Number(arrSplit[2].charAt(0)) > 0 ? '19' + arrSplit[2] : '20' + arrSplit[2]
        month = arrSplit[3]
        day = arrSplit[4]
        if (!validateBirthday(year, month, day)) {
            return false;
        }
    } else if (psidno.length === 18) {
        // 18位号码 çœï¼ˆ2位)市(2位)县(2位)年(4位)月(2位)日(2位)校验码(4位)
        reg = new RegExp(/^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/)
        arrSplit = psidno.match(reg)
        year = arrSplit[2]
        month = arrSplit[3]
        day = arrSplit[4]
        if (!validateBirthday(year, month, day)) {
            return false;
        }
    } else {
        return false;
    }
    // 4.18位号码校验生成的校验码
    if (psidno.length === 18) {
        var Wi = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2] // åŠ æƒå› å­
        var parity = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'] // æ ¡éªŒç 
        var sum = 0;
        for (var i = 0; i < 17; i++) {
            sum += Number(psidno.charAt(i)) * Wi[i];
        }
        if (parity[sum % 11] !== psidno[17]) {
            return false;
        }
    }
    return true;
}
// æ ¡éªŒå‡ºç”Ÿæ—¥æœŸæ˜¯å¦åˆç†
function validateBirthday(year, month, day) {
    year = Number(year) // å¹´
    month = Number(month) // æœˆ
    day = Number(day) // æ—¥
    var nowTime = new Date().getTime() // å½“前时间戳
    var birthTime = new Date(year, month, day).getTime() // èŽ·å–å‡ºç”Ÿæ—¥æœŸçš„æ—¶é—´æˆ³
    // ä¸èƒ½æ˜¯æ˜Žå¤©å‡ºç”Ÿçš„吧
    if (birthTime > nowTime) {
        return false;
    }
    // ä¸€èˆ¬äººæ´»ä¸åˆ°150岁吧
    var nowYear = new Date().getFullYear()
    if ((nowYear - year) > 150) {
        return false;
    }
    // ä¸èƒ½æ˜¯13月出生的吧
    if (month < 1 || month > 12) {
        return false;
    }
    // ä¸èƒ½æ˜¯2月30号、4月31号、5月32号出生的吧
    var date = new Date(year, month, 0) // èŽ·å–å½“æœˆçš„æœ€åŽä¸€å¤©
    if (day < 1 || day > date.getDate()) {
        return false;
    }
    return true;
}
//车牌号验证方法
function checkPlateNum(plateNum) {
    var xreg = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}(([0-9]{5}[DF]$)|([DF][A-HJ-NP-Z0-9][0-9]{4}$))/;
    var creg = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳]{1}$/;
    if (plateNum.length === 7) {
        return creg.test(plateNum);
    } else if (plateNum.length === 8) {
        return xreg.test(plateNum);
    } else {
        return false;
    }
}
/**
 * å¼¹å‡ºæé†’框
 * @param plateNum æé†’信息
 * @param platePath æ•°æ®ä¿¡æ¯ï¼Œå¯èƒ½ä¸ºç©º
 */
plateNumImg = function (plateNum, platePath) {
    var mainDiv = $("#plateNumId");
    mainDiv.empty();
    var html = ""
    if (!plateNum) {
        console.log("1")
        html += "<div style=\"color: red; font-size: 50px; text-align: center;\"><span>未读取到车牌号</span></div>";
    } else {
        console.log(plateNum)
        html += "<div style=\"color: red; font-size: 50px; text-align: center;\"><span>" + plateNum + "</span></div>";
    }
    html += "<div style=\"text-align: center\"><img class ='cut-img' src='../../basic/common/getImg?filePath=" + platePath + "' /></div>";
    mainDiv.html(html);
    layer.open({
        type: 1,
        title: "车牌号对比",
        offset: 'l',
        shade: 0.8,
        area: ['55%', '90%'],
        id: 'dialog_plate_img',
        btn: ['确定'],
        content: $('#plateNumImg'),
        yes: function (index) {
            layer.closeAll();
        }
    });
};
fzzy-igdss-web/src/main/resources/templates/inout/out-easy.html
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,983 @@
<!DOCTYPE html>
<html lang="zh-cn" xmlns:th=http://www.thymeleaf.org>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <meta name="viewport"
          content="width=device-width, initial-scale=1, maximum-scale=1">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="renderer" content="webkit">
    <title>出入库管理-出库简易操作</title>
    <link rel="stylesheet" type="text/css" th:href="@{/ajax/libs/layui/css/layui.css}"/>
    <link rel="stylesheet" type="text/css" th:href="@{/inout/inout-style.css}">
    <!--使用打印插件 éšè—å½“前插件 -->
    <script th:src="@{/js/plugins/lodop/LodopFuncs.js}"></script>
    <style type="text/css">
        .qyzj-tabBox {
            margin-top: 0px !important;
            overflow: hidden;
            width: 100%;
        }
        .layui-table, .layui-table-view {
            margin: 0;
        }
        #layui-table-page1 {
            text-align: right !important;
        }
        .display-none {
            display: none;
        }
        .control-btn {
            height: 35px;
            line-height: 30px;
        }
        .tip-red {
            text-align: right;
            padding-left: 40px;
            font-size: 16px;
            color: red;
            font-weight: bold;
        }
        thead span {
            font-weight: bold
        }
        .red-color {
            color: red;
        }
        .layui-select-disabled .layui-disabled {
            color: #000 !important;
        }
        .layui-table td {
            font-weight: bold;
        }
        .depot-food input {
            line-height: 34px;
            padding-right: 10px;
            font-size: 16px;
            color: #666;
            background: #eff4f6;
        }
        .rk-main {
            margin: 0 16px;
        }
        .qyzj-con {
            margin-top: 0;
            padding: 15px;
        }
        .kccz-con {
            margin: 16px 0;
        }
        .kccz-r-item {
            height: 265px;
        }
        .kccz-r-con {
            height: unset;
            padding-right: unset;
        }
        .kccz-r-vedio {
            height: 215px;
        }
        .layui-flow-more a *, .layui-laypage input, .layui-table-view select[lay-ignore] {
            display: none;
        }
        .layui-laypage .layui-laypage-skip {
            display: none;
        }
        .color-red {
            color: red !important;
        }
        .rkbk-search-input {
            background: #FFFFFF;
        }
    </style>
</head>
<body>
<div class="l-container layui-clear">
    <div class="rk-main">
        <div class="kccz-con">
            <div class="kccz-left fl" style="width: 76%;">
                <div class="qyzj-con radius-6">
                    <div class="qyzj-con-top layui-row" style="margin-top: 5px;">
                        <form class="layui-form" action="" id="form-param"
                              lay-filter="form-param">
                            <div class="layui-form-item display-none">
                                <label class="layui-form-label">隐藏-类型</label>
                                <div class="layui-input-block">
                                    <input type="text" name="type" th:value="${type}"
                                           autocomplete="off" class="layui-input rkbk-search-input">
                                </div>
                            </div>
                            <div class="layui-form-item display-none">
                                <label class="layui-form-label">隐藏-库区编码</label>
                                <div class="layui-input-block">
                                    <input type="text" name="deptId" th:value="${deptId}"
                                           autocomplete="off" class="layui-input rkbk-search-input">
                                </div>
                            </div>
                            <div class="layui-col-xs4">
                                <div class="layui-form-item">
                                    <label class="layui-form-label">单据号</label>
                                    <div class="layui-input-block">
                                        <input type="text" name="checkId" placeholder="请输入"
                                               autocomplete="off" class="layui-input rkbk-search-input">
                                    </div>
                                </div>
                            </div>
                            <div class="layui-col-xs4">
                                <div class="layui-form-item">
                                    <label class="layui-form-label">目标仓库</label>
                                    <div class="layui-input-block rkbk-selBox">
                                        <select name="depotId">
                                            <option value=""></option>
                                            <option th:each="depot,depotSet:${listDepot}"
                                                    th:value="${depot.id}" th:text="${depot.name}"></option>
                                        </select>
                                    </div>
                                </div>
                            </div>
                            <div class="layui-col-xs4">
                                <div class="layui-form-item">
                                    <label class="layui-form-label">往来单位</label>
                                    <div class="layui-input-block">
                                        <input type="text" name="customerName" placeholder="请输入"
                                               autocomplete="off" class="layui-input rkbk-search-input">
                                    </div>
                                </div>
                            </div>
                            <div class="layui-col-xs4">
                                <div class="layui-form-item">
                                    <label class="layui-form-label">开始时间</label>
                                    <div class="layui-input-block">
                                        <input type="text" name="start" placeholder="请选择"
                                               autocomplete="off"
                                               class="layui-input rkbk-search-input bg-date" id="start">
                                    </div>
                                </div>
                            </div>
                            <div class="layui-col-xs4">
                                <div class="layui-form-item">
                                    <label class="layui-form-label">结束时间</label>
                                    <div class="layui-input-block">
                                        <input type="text" name="end" placeholder="请选择"
                                               autocomplete="off"
                                               class="layui-input rkbk-search-input bg-date" id="end">
                                    </div>
                                </div>
                            </div>
                            <div class="layui-col-xs4 layui-text-right">
                                <input type="button" style="border-radius: 50px;background-color: #1c84c6 !important;width: 94px;height: 32px;line-height: 32px;font-size: 14px;" value="搜索" class="qyzj-top-btn layui-btn btn-blue" onclick="flushData()"/>
                                <input type="button" style="border-radius: 50px;background-color: #f8ac59 !important;width: 94px;height: 32px;line-height: 32px;font-size: 14px;" value="重置" class="qyzj-top-btn layui-btn btn-red" onclick="resetForm()"/>
                                <input type="button" style="border-radius: 50px;background-color: #1ab394 !important;width: 94px;height: 32px;line-height: 32px;font-size: 14px;" value="登记" class="qyzj-top-btn layui-btn btn-group" onclick="quickRegister()"/>
                            </div>
                        </form>
                    </div>
                    <!--qyzj-con-oop end-->
                    <div class="qyzj-tabBox">
                        <table class="layui-table" lay-skin="nob" id="tableData"
                               lay-filter="tableData">
                            <colgroup>
                                <col width="10%">
                                <col width="10%">
                                <col width="10%">
                                <col width="10%">
                                <col width="10%">
                                <col width="10%">
                                <col width="10%">
                                <col width="">
                                <col width="15%">
                            </colgroup>
                            <thead>
                            <tr class="qyzj-table-tit">
                                <th>单据号</th>
                                <th>车牌号</th>
                                <th>类型</th>
                                <th>发货单位</th>
                                <th>收货单位</th>
                                <th>装卸仓库</th>
                                <th>粮食品种</th>
                                <th>流程进度</th>
                                <th>操作</th>
                            </tr>
                            </thead>
                            <tbody>
                            </tbody>
                        </table>
                    </div>
                    <!--qyzj-tabBox end-->
                    <!--qyzj-page-wrap end-->
                </div>
                <!--qyzj-con end-->
            </div>
            <!--kccz-left end-->
            <div class="kccz-right fr" style=" width: 23%;">
                <div class="kccz-r-item radius-6">
                    <div class="kccz-r-box">
                        <div class="rkbk-tit">
                            <i></i>
                            <h3>过程抓拍视频1</h3>
                        </div>
                        <div class="kccz-r-con">
                            <div class="kccz-r-vedio" id="kccz-r-video1">
                            </div>
                        </div>
                    </div>
                </div>
                <!--kccz-r-item end-->
                <div class="kccz-r-item radius-6 mt-10">
                    <div class="kccz-r-box">
                        <div class="rkbk-tit">
                            <i></i>
                            <h3>过程抓拍视频2</h3>
                        </div>
                        <div class="kccz-r-con">
                            <div class="kccz-r-vedio" id="kccz-r-video2">
                            </div>
                        </div>
                    </div>
                </div>
                <!--kccz-r-item end-->
                <div class="kccz-r-item radius-6 mt-10">
                    <div class="kccz-r-box">
                        <div class="rkbk-tit">
                            <i></i>
                            <h3>过程抓拍视频3</h3>
                        </div>
                        <div class="kccz-r-con">
                            <div class="kccz-r-vedio" id="kccz-r-video3">
                            </div>
                        </div>
                    </div>
                </div>
                <!--kccz-r-item end-->
            </div>
        </div>
        <!--kccz-con end-->
    </div>
    <!--rk-main end-->
</div>
<!--l-container end-->
<script th:src="@{/ajax/libs/layui/layui.js}"></script>
<script th:src="@{/js/jquery.min.js}"></script>
<script th:src="@{/common/constant.js}"></script>
<script th:src="@{/common/igds-common.js}"></script>
<script th:src="@{/inout/inout-common.js}"></script>
<script th:src="@{/inout/inout-print.js}"></script>
<script th:src="@{/inout/video-play.js}"></script>
<script th:src="@{/inout/weight.js}"></script>
<script th:src="@{/inout/out-easy.js}"></script>
<script th:inline="javascript">
    //流程环节
    var inoutProgress = [[${inoutProgress}]];
    //库区编码
    var deptId = [[${deptId}]];
    //仓库列表
    var listDepot = [[${listDepot}]];
    //业务步骤
    var bizType = [[${bizType}]];
    //userId
    var userId = [[${loginUser.loginName}]];
    //出入库类型
    var type = [[${type}]];
    var companyId = [[${loginUser.companyId}]];
    //品种
    var listFoodVariety = [[${listFoodVariety}]];
    //当前流程
    var progress = [[${progress}]];
    //地磅信息
    var weightDto = [[${weightDto}]];
    //抓拍摄像机
    var snapDto1 = [[${snapDto1}]];
    var snapDto2 = [[${snapDto2}]];
    var snapDto3 = [[${snapDto3}]];
    //默认查询时间
    var startTime = [[${startTime}]];
    var endTime = [[${endTime}]];
</script>
<script type="text/html" id="barControl">
    <a class="layui-btn control-btn" lay-event="edit">操作</a>
</script>
<script type="text/html" id="toolbarCustomer">
    <div class="">
        <div class="layui-col-xs6">
            <input type="text" id="key" placeholder="输入编码或者名称……" class="layui-input">
        </div>
        <div class="layui-col-xs6" style="padding-left: 10px;">
            <button class="layui-btn layui-btn-sm" onclick="flushCustomer()">查询</button>
        </div>
    </div>
</script>
</body>
<!-- --------------弹出往来单位列表-------------- -->
<div class="layui-tab-content" id="listCustomer" style="display: none;">
    <table class="layui-table" lay-skin="nob" id="tableCustomer"
           lay-filter="tableCustomer" style="margin: 0px;"></table>
</div>
<!-- --------------称重操作弹窗-------------- -->
<div class="layui-tab-content" id="weightDetail" style="display: none;padding: 10px 10px;">
    <div class="rk-main" style="margin: 0;">
        <div class="qyzj-btnbox layui-clear" style="margin-top: unset;">
            <div class="rkbk-quick fl" style="line-height: 60px">
                <button class="rkbk-quick-btn layui-btn btn-blue" onclick="weight()">
                    <i><img th:src="@{/img/web/inout/icon-chengzhong.png}"/></i>步骤1:称重及抓拍
                </button>
                <button class="rkbk-quick-btn layui-btn btn-green" onclick="submit()">
                    <i><img th:src="@{/img/web/inout/icon-ok.png}"/></i>步骤2:完成称重
                </button>
                <button class="rkbk-quick-btn layui-btn btn-blue" onclick="printBill()">
                    <i><img th:src="@{/img/web/inout/icon-dayin.png}"/></i>步骤3:打印过磅单
                </button>
                <button class="rkbk-quick-btn layui-btn btn-violet"
                        onclick="flushPage()">
                    <i><img th:src="@{/img/web/inout/icon-shuaxin2.png}"/></i>刷新页面
                </button>
            </div>
            <!-- æµç¨‹å¼•导 -->
            <div class="rk-step-wrap fr" style="padding: unset;border-bottom: unset">
                <ul class="rk-step">
                    <li id="progress-register" class="active rk-step-first">
                        <span class="rk-step-span">
                            <img th:src="@{/img/web/inout/icon-dengji.png}"/>
                        </span>
                        <p>入库登记</p>
                    </li>
                    <li id="progress-fullWeight">
                        <span class="rk-step-span">
                            <img th:src="@{/img/web/inout/icon-chengzhong.png}"/>
                        </span>
                        <p>满车称重</p>
                    </li>
                    <li id="progress-hand" class="">
                        <span class="rk-step-span">
                            <img th:src="@{/img/web/inout/icon-xiehuo.png}"/>
                        </span>
                        <p>入库值仓</p>
                    </li>
                    <li id="progress-emptyWeight" class="">
                        <span class="rk-step-span">
                            <img th:src="@{/img/web/inout/icon-chengzhong.png}"/>
                        </span>
                        <p>空车称重</p>
                    </li>
                </ul>
            </div>
            <!-- æµç¨‹å¼•导EDN -->
        </div>
        <!--qyzj-btnbox end-->
        <div class="kccz-con" style="margin: 5px 0 0 0">
            <div class="kccz-left fl" style="width: 100%">
                <div class="kccz-left-box1 radius-6" style="padding: 1px 20px 10px 20px">
                    <div class="rkbk-tit">
                        <i></i>
                        <div>
                            <h3 style="width: 150px; float: left;">登记信息</h3>
                            <div id="btn_register" style="display: none">
                                <input type="button" value="读身份证" style="right: 120px;width: unset;"
                                       class="rkbk-search-btn layui-btn" onclick="flushIdCard()">
                                <input type="button" value="车牌识别" style="width: unset;"
                                       class="rkbk-search-btn layui-btn" onclick="flushICCard()">
                            </div>
                        </div>
                    </div>
                    <div class="kccz-data-form layui-row">
                        <form class="layui-form" action="" id="form-data-regster"
                              lay-filter="form-data-regster">
                            <div class="layui-col-xs4">
                                <div class="layui-form-item">
                                    <label class="layui-form-label color-red">承运人</label>
                                    <div class="layui-input-block">
                                        <input type="text" name="userName1" placeholder="请输入" class="layui-input">
                                    </div>
                                </div>
                            </div>
                            <div class="layui-col-xs4">
                                <div class="layui-form-item">
                                    <label class="layui-form-label color-red">身份证号</label>
                                    <div class="layui-input-block">
                                        <input type="text" name="userId1" id="userId1" placeholder="请输入"
                                               autocomplete="off" class="layui-input">
                                    </div>
                                </div>
                            </div>
                            <div class="layui-col-xs4">
                                <div class="layui-form-item">
                                    <label class="layui-form-label color-red">车牌号</label>
                                    <div class="layui-input-block">
                                        <input type="text" name="plateNum1" id="plateNum1" placeholder="请输入"
                                               autocomplete="off" class="layui-input">
                                    </div>
                                </div>
                            </div>
                            <div class="layui-col-xs4">
                                <div class="layui-form-item">
                                    <label class="layui-form-label">联系电话</label>
                                    <div class="layui-input-block">
                                        <input type="text" name="userContact" id="userContact" placeholder="请输入"
                                               autocomplete="off" class="layui-input">
                                    </div>
                                </div>
                            </div>
                            <div class="layui-col-xs8">
                                <div class="layui-form-item">
                                    <label class="layui-form-label">地&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;址</label>
                                    <div class="layui-input-block">
                                        <input type="text" name="userAddress" id="userAddress" placeholder="请输入"
                                               autocomplete="off" class="layui-input">
                                    </div>
                                </div>
                            </div>
                        </form>
                    </div>
                    <!--kccz-czxx-wrap end-->
                </div>
                <div class="kccz-left-box1 mt-10 radius-6">
                    <div class="rkbk-tit">
                        <i></i>
                        <div>
                            <h3 style="width: 150px; float: left;">称重信息</h3>
                            <div style="float: right;">
                                <div class="kccz-czxx-left fl">
                                    <div class="layui-form-item">
                                        <label class="layui-form-label">当前地磅</label>
                                        <div class="layui-input-block">
                                            <select name="depotId" id="scaleName" lay-filter="select_scaleName">
                                                <option th:each="dto,weightSet:${listWeight}"
                                                        th:value="${dto.sort}" th:text="${dto.name}"></option>
                                            </select>
                                        </div>
                                    </div>
                                </div>
                                <div class="kccz-czxx-right fr">
                                    <dl class="kccz-czxx-dl" style="padding-left: 15px;">
                                        <dt>
                                            <i><img id="img_scale_statule"
                                                    th:src="@{/img/web/inout/icon-red.png}"/></i>
                                        </dt>
                                    </dl>
                                </div>
                            </div>
                        </div>
                    </div>
                    <div class="kccz-czxx-wrap">
                        <div class="kccz-czxx-num">
                            <span id="weightValue">0.00</span><em>KG</em>
                        </div>
                    </div>
                    <!--kccz-czxx-wrap end-->
                </div>
                <!--kccz-left-box1 end-->
                <div class="kccz-left-box2 mt-10 radius-6" style="height: unset;">
                    <div class="rkbk-tit">
                        <i></i>
                        <h3>业务数据</h3>
                    </div>
                    <div class="kccz-data-form layui-row" style="margin-top: unset;padding: 10px 0 0 0;">
                        <form class="layui-form" action="" id="form-data"
                              lay-filter="form-data">
                            <div class="layui-form-item display-none">
                                <input type="text" name="id">
                            </div>
                            <div class="layui-form-item display-none">
                                <input type="text" name="progress">
                            </div>
                            <div class="layui-form-item display-none">
                                <input type="text" name="type">
                            </div>
                            <div class="layui-form-item display-none">
                                <input type="text" name="foodLocationId">
                            </div>
                            <div class="layui-form-item display-none">
                                <input type="text" name="noticeId">
                            </div>
                            <div class="layui-form-item display-none">
                                <input type="text" name="foodType">
                            </div>
                            <div class="layui-col-xs4">
                                <div class="layui-form-item">
                                    <label class="layui-form-label  color-red" id="depotIdLabel">装卸仓库</label>
                                    <div class="layui-input-block">
                                        <select name="depotId" id="depotId" lay-filter="select_depotId">
                                            <option value=""></option>
                                            <option th:each="depot,depotSet:${listDepot}"
                                                    th:value="${depot.id}" th:text="${depot.name}"></option>
                                        </select>
                                    </div>
                                </div>
                            </div>
                            <div class="layui-col-xs4">
                                <div class="layui-form-item">
                                    <label class="layui-form-label color-red">毛重(满车)</label>
                                    <div class="layui-input-block">
                                        <input type="text" name="fullWeight" id="fullWeight" autocomplete="off"
                                               placeholder="地磅自动带入" class="layui-input rkbk-search-input" disabled>
                                        <em
                                                class="kccz-data-dw">KG</em>
                                    </div>
                                </div>
                            </div>
                            <div class="layui-col-xs4">
                                <div class="layui-form-item">
                                    <label class="layui-form-label color-red">皮重(空车)</label>
                                    <div class="layui-input-block">
                                        <input type="text" name="emptyWeight" id="emptyWeight" autocomplete="off"
                                               placeholder="地磅自动带入" class="layui-input weight rkbk-search-input"
                                               disabled>
                                        <em
                                                class="kccz-data-dw">KG</em>
                                    </div>
                                </div>
                            </div>
                            <div class="layui-col-xs4">
                                <div class="layui-form-item">
                                    <label class="layui-form-label color-red">通知单</label>
                                    <div class="layui-input-block">
                                        <input type="text" name="customerName" placeholder="请选择"
                                               autocomplete="off" class="layui-input" disabled="disabled"> <em
                                            class="kccz-data-dw cursor" onclick="showNotice()">……</em>
                                    </div>
                                </div>
                            </div>
                            <div class="layui-col-xs4">
                                <div class="layui-form-item">
                                    <label class="layui-form-label color-red">粮食品种</label>
                                    <div class="layui-input-block">
                                        <select name="foodVariety" id="foodVariety">
                                            <option value=""></option>
                                            <option th:each="dic,dicSet:${listFoodVariety}"
                                                    th:value="${dic.dictValue}" th:text="${dic.dictLabel}"></option>
                                        </select>
                                    </div>
                                </div>
                            </div>
                            <div class="layui-col-xs4">
                                <div class="layui-form-item">
                                    <label class="layui-form-label">净&nbsp;&nbsp;&nbsp;&nbsp;重</label>
                                    <div class="layui-input-block">
                                        <input type="text" name="netWeight" autocomplete="off"
                                               placeholder="自动计算,不可编辑" class="layui-input rkbk-search-input"
                                               disabled> <em class="kccz-data-dw">KG</em>
                                    </div>
                                </div>
                            </div>
                            <div class="layui-col-xs4">
                                <div class="layui-form-item">
                                    <label class="layui-form-label">粮食产地</label>
                                    <div class="layui-input-block">
                                        <input type="text" name="foodLocation" placeholder="请选择"
                                               autocomplete="off" class="layui-input" disabled="disabled"> <em
                                            class="kccz-data-dw cursor" onclick="showFoodLocation()">……</em>
                                    </div>
                                </div>
                            </div>
                            <div class="layui-col-xs4">
                                <div class="layui-form-item">
                                    <label class="layui-form-label">水分</label>
                                    <div class="layui-input-block">
                                        <input id="perWet" type="text" name="perWet" autocomplete="off"
                                               placeholder="请输入" class="layui-input weight"> <em
                                            class="kccz-data-dw">%</em>
                                    </div>
                                </div>
                            </div>
                            <div class="layui-col-xs4">
                                <div class="layui-form-item">
                                    <label class="layui-form-label">扣重</label>
                                    <div class="layui-input-block">
                                        <input id="deOther" type="text" name="deOther" autocomplete="off"
                                               placeholder="请输入" class="layui-input weight"> <em
                                            class="kccz-data-dw">KG</em>
                                    </div>
                                </div>
                            </div>
                            <div class="layui-col-xs4">
                                <div class="layui-form-item">
                                    <label class="layui-form-label">单价</label>
                                    <div class="layui-input-block">
                                        <input id="price" type="text" name="price" autocomplete="off"
                                               placeholder="请输入" class="layui-input weight"> <em
                                            class="kccz-data-dw">元</em>
                                    </div>
                                </div>
                            </div>
                            <div class="layui-col-xs4">
                                <div class="layui-form-item">
                                    <label class="layui-form-label">杂质</label>
                                    <div class="layui-input-block">
                                        <input id="perImpurity" type="text" name="perImpurity" autocomplete="off"
                                               placeholder="请输入" class="layui-input weight"> <em
                                            class="kccz-data-dw">%</em>
                                    </div>
                                </div>
                            </div>
                            <div class="layui-col-xs4">
                                <div class="layui-form-item">
                                    <label class="layui-form-label">入库重量</label>
                                    <div class="layui-input-block">
                                        <input type="text" name="recordWeight" placeholder="自动计算"
                                               autocomplete="off" class="layui-input rkbk-search-input"
                                               disabled> <em class="kccz-data-dw">KG</em>
                                    </div>
                                </div>
                            </div>
                            <div class="layui-col-xs8">
                                <div class="layui-form-item">
                                    <label class="layui-form-label">备注说明</label>
                                    <div class="layui-input-block">
                                        <input type="text" name="remarks" placeholder="请输入内容"
                                               class="layui-input">
                                    </div>
                                </div>
                            </div>
                            <div class="layui-col-xs4">
                                <div class="layui-form-item">
                                    <label class="layui-form-label">结算重量</label>
                                    <div class="layui-input-block">
                                        <input type="text" name="settleWeight" placeholder="自动计算"
                                               autocomplete="off" class="layui-input rkbk-search-input"
                                               disabled> <em class="kccz-data-dw">KG</em>
                                    </div>
                                </div>
                            </div>
                        </form>
                    </div>
                </div>
                <!--kccz-left-box2 end-->
            </div>
        </div>
    </div>
</div>
<!-- --------------值仓操作弹窗-------------- -->
<div class="layui-tab-content" id="handleDetail" style="display: none;padding: 15px 10px;" >
    <div class="rk-main" style="margin: 0;">
        <!--qyzj-btnbox end-->
        <div class="kccz-con" style="margin: 0;">
            <div class="kccz-left radius-6 fl" style="width: 70%">
                <div class="kccz-left-box1" style="background: #FFFFFF;padding: 1px 20px 10px 20px;">
                    <button class="rkbk-quick-btn layui-btn btn-green btn-sm"
                            onclick="submitHandle()">
                        <i><img th:src="@{/img/web/inout/icon-ok.png}"/></i>值仓完成
                    </button>
                </div>
                <div class="kccz-left-box2 bg-ef" style="height: unset">
                    <div class="rkbk-tit">
                        <i></i>
                        <h3>单据信息</h3>
                    </div>
                    <div class="kccz-data-form layui-row">
                        <form class="layui-form" action="" id="form-handle"
                              lay-filter="form-handle">
                            <div class="layui-form-item display-none">
                                <label class="layui-form-label">隐藏字段-流水号</label>
                                <div class="layui-input-block">
                                    <input type="text" name="id" autocomplete="off"
                                           class="layui-input rkbk-search-input">
                                </div>
                            </div>
                            <div class="layui-form-item display-none">
                                <label class="layui-form-label">隐藏字段-组织编码</label>
                                <div class="layui-input-block">
                                    <input type="text" name="companyId" autocomplete="off"
                                           class="layui-input rkbk-search-input">
                                </div>
                            </div>
                            <div class="layui-form-item display-none">
                                <label class="layui-form-label">隐藏字段-所属库区</label>
                                <div class="layui-input-block">
                                    <input type="text" name="deptId" autocomplete="off"
                                           class="layui-input rkbk-search-input">
                                </div>
                            </div>
                            <div class="layui-form-item display-none">
                                <label class="layui-form-label">隐藏字段-流程节点</label>
                                <div class="layui-input-block">
                                    <input type="text" name="progress" autocomplete="off"
                                           class="layui-input rkbk-search-input">
                                </div>
                            </div>
                            <div class="layui-form-item display-none">
                                <label class="layui-form-label">隐藏字段-通知单id</label>
                                <div class="layui-input-block">
                                    <input type="text" name="noticeId" autocomplete="off"
                                           class="layui-input rkbk-search-input">
                                </div>
                            </div>
                            <div class="layui-col-xs6">
                                <div class="layui-form-item">
                                    <label class="layui-form-label">业务类型</label>
                                    <div class="layui-input-block">
                                        <select name="type">
                                            <option th:each="dic,dicSet:${listInoutType}"
                                                    th:value="${dic.dictValue}" th:text="${dic.dictLabel}"></option>
                                        </select>
                                    </div>
                                </div>
                            </div>
                            <div class="layui-col-xs6">
                                <div class="layui-form-item">
                                    <label class="layui-form-label">装卸仓库</label>
                                    <div class="layui-input-block">
                                        <select name="depotId">
                                            <option th:each="depot,depotSet:${listDepot}"
                                                    th:value="${depot.id}" th:text="${depot.name}"></option>
                                        </select>
                                    </div>
                                </div>
                            </div>
                            <div class="layui-col-xs6">
                                <div class="layui-form-item">
                                    <label class="layui-form-label">车牌号</label>
                                    <div class="layui-input-block">
                                        <input type="text" name="plateNum"
                                               autocomplete="off" class="layui-input">
                                    </div>
                                </div>
                            </div>
                            <div class="layui-col-xs6">
                                <div class="layui-form-item">
                                    <label class="layui-form-label">满车称重</label>
                                    <div class="layui-input-block">
                                        <input type="text" name="fullWeight" autocomplete="off" placeholder="不可改"
                                               class="layui-input rkbk-search-input" disabled> <em
                                            class="kccz-data-dw">KG</em>
                                    </div>
                                </div>
                            </div>
                            <div class="layui-col-xs6">
                                <div class="layui-form-item">
                                    <label class="layui-form-label">身份证号</label>
                                    <div class="layui-input-block">
                                        <input type="text" name="userId"
                                               placeholder="承运人身份证号" autocomplete="off" class="layui-input">
                                    </div>
                                </div>
                            </div>
                            <div class="layui-col-xs6">
                                <div class="layui-form-item">
                                    <label class="layui-form-label">空车称重</label>
                                    <div class="layui-input-block">
                                        <input type="text" name="emptyWeight" autocomplete="off" placeholder="不可改"
                                               class="layui-input rkbk-search-input" disabled> <em
                                            class="kccz-data-dw">KG</em>
                                    </div>
                                </div>
                            </div>
                            <div class="layui-col-xs6">
                                <div class="layui-form-item">
                                    <label class="layui-form-label">往来单位</label>
                                    <div class="layui-input-block">
                                        <input type="text" name="customerName" placeholder="不可改"
                                               autocomplete="off" class="layui-input rkbk-search-input"
                                               disabled>
                                    </div>
                                </div>
                            </div>
                            <div class="layui-col-xs6">
                                <div class="layui-form-item">
                                    <label class="layui-form-label">净&nbsp;&nbsp;&nbsp;&nbsp;重</label>
                                    <div class="layui-input-block">
                                        <input type="text" name="netWeight" autocomplete="off" placeholder="不可改"
                                               class="layui-input rkbk-search-input" disabled> <em
                                            class="kccz-data-dw">KG</em>
                                    </div>
                                </div>
                            </div>
                            <div class="layui-col-xs6">
                                <div class="layui-form-item">
                                    <label class="layui-form-label">粮食品种</label>
                                    <div class="layui-input-block">
                                        <select name="foodVariety">
                                            <option th:each="dic,dicSet:${listFoodVariety}"
                                                    th:value="${dic.dictValue}" th:text="${dic.dictLabel}"></option>
                                        </select>
                                    </div>
                                </div>
                            </div>
                            <div class="layui-col-xs6">
                                <div class="layui-form-item">
                                    <label class="layui-form-label">扣重</label>
                                    <div class="layui-input-block">
                                        <input type="text" name="deOther" placeholder="请输入"
                                               autocomplete="off" class="layui-input"> <em class="kccz-data-dw">KG</em>
                                    </div>
                                </div>
                            </div>
                            <div class="layui-col-xs6">
                                <div class="layui-form-item">
                                    <label class="layui-form-label">粮食等级</label>
                                    <div class="layui-input-block">
                                        <select name="foodLevel" id="foodLevel">
                                            <option value="">不可改</option>
                                            <option th:each="dic,dicSet:${listFoodLevel}"
                                                    th:value="${dic.dictValue}" th:text="${dic.dictLabel}"></option>
                                        </select>
                                    </div>
                                </div>
                            </div>
                            <div class="layui-col-xs6">
                                <div class="layui-form-item">
                                    <label class="layui-form-label">单价</label>
                                    <div class="layui-input-block">
                                        <input type="text" name="price" placeholder="请输入"
                                               autocomplete="off" class="layui-input"> <em
                                            class="kccz-data-dw">元/KG</em>
                                    </div>
                                </div>
                            </div>
                            <div class="layui-col-xs6">
                                <div class="layui-form-item">
                                    <label class="layui-form-label">质检水分</label>
                                    <div class="layui-input-block">
                                        <input type="text" name="perWet" placeholder="请输入"
                                               autocomplete="off" class="layui-input"> <em class="kccz-data-dw">%</em>
                                    </div>
                                </div>
                            </div>
                            <div class="layui-col-xs6">
                                <div class="layui-form-item">
                                    <label class="layui-form-label">质检杂质</label>
                                    <div class="layui-input-block">
                                        <input type="text" name="perImpurity" placeholder="请输入"
                                               autocomplete="off" class="layui-input"> <em class="kccz-data-dw">%</em>
                                    </div>
                                </div>
                            </div>
                            <div class="layui-col-xs12">
                                <div class="layui-form-item">
                                    <label class="layui-form-label">备&nbsp;注</label>
                                    <div class="layui-input-block">
                                        <input type="text" name="remarks" placeholder="请输入内容"
                                               class="layui-input">
                                    </div>
                                </div>
                            </div>
                        </form>
                    </div>
                </div>
                <!--kccz-left-box2 end-->
            </div>
            <!--kccz-left end-->
            <div class="kccz-right fr" style="width: 29%;margin-top: 5px;">
                <div class="kccz-r-item" style="height: unset">
                    <div class="kccz-r-box" style="padding: 0;">
                        <div class="rkbk-tit">
                            <i></i>
                            <h3>值仓记录1</h3>
                        </div>
                        <div class="kccz-r-con" style="padding-right: 80px;background: #f3f5f8;">
                            <div class="kccz-r-vedio" style="height: 170px"><img id="kccz-r-img1"></div>
                            <div class="kccz-r-btnbox" style="width: 78px;background: #FFFFFF;">
                                <a href="javascript:;" class="kccz-r-btn" id="kccz-r-btn1" style="width: 76px"> <span
                                        class="kccz-r-img"></span>
                                    <p>上传图片</p>
                                </a>
                            </div>
                        </div>
                    </div>
                </div>
                <!--kccz-r-item end-->
                <div class="kccz-r-item" style="height: unset">
                    <div class="kccz-r-box" style="padding: 0;">
                        <div class="rkbk-tit">
                            <i></i>
                            <h3>值仓记录2</h3>
                        </div>
                        <div class="kccz-r-con" style="padding-right: 80px;background: #f3f5f8;">
                            <div class="kccz-r-vedio" style="height: 170px"><img id="kccz-r-img2"></div>
                            <div class="kccz-r-btnbox" style="width: 78px;background: #FFFFFF;">
                                <a href="javascript:;" class="kccz-r-btn" id="kccz-r-btn2" style="width: 76px"> <span
                                        class="kccz-r-img"></span>
                                    <p>上传图片</p>
                                </a>
                            </div>
                        </div>
                    </div>
                </div>
                <!--kccz-r-item end-->
                <div class="kccz-r-item" style="height: unset">
                    <div class="kccz-r-box" style="padding: 0;">
                        <div class="rkbk-tit">
                            <i></i>
                            <h3>值仓记录3</h3>
                        </div>
                        <div class="kccz-r-con" style="padding-right: 80px;background: #f3f5f8;">
                            <div class="kccz-r-vedio" style="height: 170px"><img id="kccz-r-img3"></div>
                            <div class="kccz-r-btnbox" style="width: 78px;background: #FFFFFF;">
                                <a href="javascript:;" class="kccz-r-btn" id="kccz-r-btn3" style="width: 76px"> <span
                                        class="kccz-r-img"></span>
                                    <p>上传图片</p>
                                </a>
                            </div>
                        </div>
                    </div>
                </div>
                <!--kccz-r-item end-->
            </div>
        </div>
        <!--kccz-con end-->
    </div>
</div>
</html>
fzzy-igdss-web/src/main/resources/templates/inout/out-register.html
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,325 @@
<!DOCTYPE html>
<html lang="zh-cn" xmlns:th=http://www.thymeleaf.org>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="renderer" content="webkit">
    <title>出入库管理-出库登记</title>
    <link rel="stylesheet" type="text/css" th:href="@{/ajax/libs/layui/css/layui.css}"/>
    <link rel="stylesheet" type="text/css" th:href="@{/inout/inout-style.css}">
    <style>
        .display-none {
            display: none;
        }
        .kccz-r-con2 {
            /* height: 230px; */
            padding-right: 120px;
            position: relative;
            margin-top: 10px;
        }
        .kccz-r-vedio {
            width: 100%;
            height: 280px;
            /*     background: #dee6ec; */
            background: #000;
            color: #FFF;
            text-align: center;
        }
        .kccz-r-btnbox {
            width: 100px;
            position: absolute;
            right: 0px;
            top: 0px;
            z-index: 99;
        }
        .layui-form-label {
            font-weight: bold;
        }
        .ckdj-radiobox .layui-form-item {
            margin-bottom: 0px;
            margin-top: 10px;
        }
        .rk-step-wrap {
            padding: 0px;
            border-bottom: 0px;
            text-align: center;
        }
        .qyzj-btnbox .rkbk-quick {
            margin-top: 15px !important;
        }
        .color-red {
            color: red !important;
        }
        .layui-form-item .layui-input-inline {
            width: unset;
        }
        .rkbk-search-input {
            background: #FFF !important;
        }
        .rkbk-search-input.bg-date {
            background: #FFF !important;
        }
        .video {
            width: 100%;
            height: 100%;
        }
    </style>
</head>
<body>
<div class="l-container layui-clear">
    <div class="rk-main">
        <div class="qyzj-btnbox layui-clear">
            <!-- æ“ä½œèœå•-->
            <div class="rkbk-quick fl">
                <button class="rkbk-quick-btn layui-btn btn-red"
                        onclick="resetForm()">
                    <i><img th:src="@{/img/web/inout/icon-clear.png}"/></i> æ¸…空数据
                </button>
                <button class="rkbk-quick-btn layui-btn btn-green"
                        onclick="submit()">
                    <i><img th:src="@{/img/web/inout/icon-ok.png}"/></i> å®Œæˆç™»è®°
                </button>
            </div>
            <!--流程引导-->
            <div class="rk-step-wrap fr">
                <ul class="rk-step">
                    <li id="progress-register" class="active rk-step-first">
                        <span class="rk-step-span">
                            <img th:src="@{/img/web/inout/icon-dengji.png}"/>
                        </span>
                        <p>出库登记</p>
                    </li>
                    <li id="progress-emptyWeight">
                        <span class="rk-step-span">
                            <img th:src="@{/img/web/inout/icon-chengzhong.png}"/>
                        </span>
                        <p>空车称重</p>
                    </li>
                    <li id="progress-hand">
                        <span class="rk-step-span">
                            <img th:src="@{/img/web/inout/icon-xiehuo.png}"/>
                        </span>
                        <p>出库值仓</p>
                    </li>
                    <li id="progress-fullWeight">
                        <span class="rk-step-span">
                            <img th:src="@{/img/web/inout/icon-chengzhong.png}"/>
                        </span>
                        <p>满车称重</p>
                    </li>
                    <li id="progress-cardBack">
                        <span class="rk-step-span">
                            <img th:src="@{/img/web/inout/icon-banli.png}"/>
                        </span>
                        <p>离库确认</p>
                    </li>
                </ul>
            </div>
            <!--流程引导结束-->
        </div>
        <form class="layui-form" action="" id="form-data"
              lay-filter="form-data">
            <div class="rkbk-con">
                <div class="radius-6 rkbk-left-wrap fl">
                    <div class="rkbk-left">
                        <div class="rkbk-tit">
                            <i></i>
                            <h3>承运人信息</h3>
                        </div>
                        <div class="rkbk-left-form">
                            <div class="rkbk-form-box1">
                                <div class="layui-form-item display-none">
                                    <label class="layui-form-label">隐藏字段-类型</label>
                                    <input type="text" name="type" th:value="${type}">
                                </div>
                                <div class="rkbk-form-left">
                                    <div class="layui-form-item">
                                        <label class="layui-form-label color-red">姓&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;名:</label>
                                        <div class="layui-input-block">
                                            <input type="text" name="userName" id="userName" required
                                                   lay-verify="required" placeholder="必填信息" autocomplete="off"
                                                   class="layui-input rkbk-search-input">
                                        </div>
                                    </div>
                                    <div class="layui-form-item">
                                        <label class="layui-form-label color-red">身份证号:</label>
                                        <div class="layui-input-block">
                                            <input type="text" name="userId" id="userId" required
                                                   lay-verify="required" placeholder="必填信息" autocomplete="off"
                                                   oninput="getPhone()" class="layui-input rkbk-search-input">
                                        </div>
                                    </div>
                                    <div class="layui-form-item">
                                        <label class="layui-form-label color-red">联系方式:</label>
                                        <div class="layui-input-block">
                                            <input type="text" name="userContact" id="userContact"
                                                   placeholder="请输入" autocomplete="off"
                                                   class="layui-input rkbk-search-input">
                                        </div>
                                    </div>
                                    <div class="layui-form-item">
                                        <label class="layui-form-label">地&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;址:</label>
                                        <div class="layui-input-block">
                                            <input type="text" name="userNation" id="userNation"
                                                   required lay-verify="required" placeholder="请输入"
                                                   autocomplete="off" class="layui-input rkbk-search-input">
                                        </div>
                                    </div>
                                </div>
                                <!--rk-form-left end-->
                                <div class="rkbk-photo">
                                    <a href="#"><img id="id_img_pers"
                                                     th:src="@{/img/web/inout/rkbk-photo_03.png}"/></a>
                                </div>
                            </div>
                            <!--rkbk-form-box1 end-->
                            <!--rkbk-form-box2 end-->
                            <div class="rkbk-quick layui-text-center">
                                <button id="button_readID" type="button"
                                        onclick="flushIdCard()"
                                        class="rkbk-quick-btn layui-btn btn-blue">读取身份证
                                </button>
                            </div>
                        </div>
                    </div>
                </div>
                <!--rkbk-left end-->
                <div class="radius-6 rkbk-right-wrap fr" style="height: 512px;">
                    <div class="rkbk-left">
                        <div class="rkbk-tit">
                            <i></i>
                            <h3>运输信息</h3>
                        </div>
                        <div class="rkbk-left-form rkbk-right-form">
                            <div class="layui-form-item">
                                <label class="layui-form-label color-red">业务类型:</label>
                                <div class="layui-input-block">
                                    <select name="type">
                                        <option th:each="dic,dicSet:${listInoutType}"
                                                th:value="${dic.dictValue}" th:text="${dic.dictLabel}"></option>
                                    </select>
                                </div>
                            </div>
                            <div class="layui-form-item">
                                <input type="button" value="读车牌"
                                       class="rkbk-r-btn fr layui-btn layui-btn-normal"
                                       onclick="flushPlateNum()"/>
                                <label class="layui-form-label color-red">运输车牌:</label>
                                <div class="layui-input-block">
                                    <input type="text" name="plateNum" id="plateNum" required placeholder="填写前车牌号"
                                           lay-verify="required" autocomplete="off"
                                           class="layui-input rkbk-search-input">
                                </div>
                            </div>
                        </div>
                    </div>
                    <!-- è§†é¢‘ -->
                    <div class="rkbk-left">
                        <div class="rkbk-tit">
                            <i></i>
                            <h3>登记视频</h3>
                        </div>
                        <div class="kccz-r-con2">
                            <div class="kccz-r-vedio" id="kccz-r-video1"></div>
                        </div>
                    </div>
                </div>
                <!--rkbk-right end-->
            </div>
            <!--rkbk-con end-->
        </form>
    </div>
    <!--rk-main end-->
</div>
<!--l-container end-->
<script th:inline="javascript">
    //流程环节
    var inoutProgress = [[${inoutProgress}]];
    //当前节点
    var progress = [[${progress}]];
    var deptId = [[${deptId}]];
    //出入库类型
    var type = [[${type}]];
    var userId = [[${loginUser.loginName}]];
    var companyId = [[${loginUser.companyId}]];
    //车牌识别
    var lprDto = [[${lprDto}]];
    var plateTag = [[${plateTag}]];
    var ship = null; //是否船运页面标识
</script>
<script th:src="@{/ajax/libs/layui/layui.js}"></script>
<script th:src="@{/js/jquery.min.js}"></script>
<script th:src="@{/common/constant.js}"></script>
<script th:src="@{/common/igds-common.js}"></script>
<script th:src="@{/inout/inout-common.js}"></script>
<script th:src="@{/inout/video-play.js}"></script>
<script th:src="@{/inout/out-register.js}"></script>
<!-- å¼¹å‡ºæ¡†çš„信息 -->
<div class="layui-tab-content" id="dialog-from-notify" style="display: none;">
    <table class="layui-table">
        <colgroup>
            <col width="100">
        </colgroup>
        <tbody>
        <tr>
            <td>返回信息</td>
            <td id="resultMsg" style="color: red;font-weight: bold;"></td>
        </tr>
        <tr>
            <td>承运人</td>
            <td id="resultUserName" style="font-weight: bold;"></td>
        </tr>
        <tr>
            <td>车牌号</td>
            <td id="resultPlateNum" style="font-weight: bold;"></td>
        </tr>
        <tr>
            <td>下一步</td>
            <td id="resultType" style="font-weight: bold;"></td>
        </tr>
        <tr>
            <td>智慧卡号</td>
            <td id="resultIntelCard" style="font-weight: bold;"></td>
        </tr>
        </tbody>
    </table>
</div>
</body>
</html>