自动化立体仓库 - WMS系统
#
luxiaotao1123
2022-03-28 978a64cef6ac485bff42b2faa4caf0e5bf1276e0
#
1个文件已添加
4个文件已修改
109 ■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/OutController.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/model/LocDto.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/order/out.js 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/layui/lay/modules/tableMerge.js 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/order/out.html 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/OutController.java
@@ -92,7 +92,9 @@
                }
            }
            if (issued > 0) {
                locDtos.add(new LocDto("缺货", orderDetl.getMatnr(), orderDetl.getMaktx(), orderDetl.getBatch(), orderDetl.getOrderNo(), issued));
                LocDto locDto = new LocDto("缺货", orderDetl.getMatnr(), orderDetl.getMaktx(), orderDetl.getBatch(), orderDetl.getOrderNo(), issued);
                locDto.setLack(Boolean.TRUE);
                locDtos.add(locDto);
            }
        }
        return R.ok().add(locDtos);
src/main/java/com/zy/common/model/LocDto.java
@@ -20,6 +20,8 @@
    private Double anfme;
    private boolean lack = false;
    public LocDto() {
    }
src/main/webapp/static/js/order/out.js
@@ -4,7 +4,7 @@
    base: baseUrl + "/static/layui/lay/modules/"
}).extend({
    notice: 'notice/notice',
}).use(['table','laydate', 'form', 'util', 'admin', 'notice', 'treeTable', 'xmSelect'], function(){
}).use(['table','laydate', 'form', 'util', 'admin', 'notice', 'treeTable', 'xmSelect', 'tableMerge'], function(){
    var table = layui.table;
    var $ = layui.jquery;
    var layer = layui.layer;
@@ -15,6 +15,7 @@
    var notice = layui.notice;
    var treeTable = layui.treeTable;
    var xmSelect = layui.xmSelect;
    var tableMerge = layui.tableMerge;
    insTb2 = table.render({
        elem: '#orderDetlTable',
@@ -138,32 +139,35 @@
                        ,closeBtn: false
                        ,offset: '100px'
                        // ,area: ['1000px', '700px']
                        ,area: '1000px'
                        ,area: '1200px'
                        ,shade: 0.5
                        ,shadeClose: true
                        ,btn: ['立即生成', '稍后处理']
                        ,btnAlign: 'c'
                        ,moveType: 1 //拖拽模式,0或者1
                        ,content: $('#pakoutPreviewBox')
                        ,content: $('#pakoutPreviewBox').html()
                        ,success: function(layero, index){
                            console.log(res.data)
                            table.render({
                                elem: '#stoPreTab',
                                data: res.data,
                                page: false,
                                cellMinWidth: 100,
                                height: 432,
                                page: false,
                                limit: Number.MAX_VALUE,
                                cellMinWidth: 100,
                                cols: [[
                                    {type: 'checkbox', merge: ['orderNo']},
                                    {field: 'orderNo', title: '单据编号', merge: true, align: 'center'},
                                    {field: 'title', title: '商品', merge: true, align: 'center', width: 300},
                                    {field: 'title', title: '商品', align: 'center', width: 350},
                                    {field: 'batch', title: '批号', merge: ['title'], align: 'center'},
                                    // {field: 'anfme', title: '总数量', merge: ['title'], align: 'center', style: 'font-weight: bold', width: 90},
                                    {field: 'locNo', title: '货位', align: 'center', width: 90},
                                    {field: 'batch', title: '批号', align: 'center'},
                                    {field: 'anfme', title: '数量', align: 'center', width: 90, style: 'font-weight: bold'},
                                    // {field: 'remQty', title: '余量', align: 'center', width: 80},
                                    // {field: 'total', title: '总量', align: 'center', width: 90},
                                ]],
                                done: function () {
                                    tableMerge.render(this);
                                    $('.layui-table-body.layui-table-main').css("overflow", "auto")
                                }
                            });
src/main/webapp/static/layui/lay/modules/tableMerge.js
New file
@@ -0,0 +1,75 @@
/**
 * Created by YujieYang.
 * @name:  子表格扩展
 * @author: 杨玉杰
 * @version 1.0
 */
layui.define(['table'], function (exports) {
    var $ = layui.jquery;
    // 封装方法
    var mod = {
        /**
         * 渲染入口
         * @param myTable
         */
        render: function (myTable) {
            var tableBox = $(myTable.elem).next().children('.layui-table-box'),
                $main = $(tableBox.children('.layui-table-body').children('table').children('tbody').children('tr').toArray().reverse()),
                $fixLeft = $(tableBox.children('.layui-table-fixed-l').children('.layui-table-body').children('table').children('tbody').children('tr').toArray().reverse()),
                $fixRight = $(tableBox.children('.layui-table-fixed-r').children('.layui-table-body').children('table').children('tbody').children('tr').toArray().reverse()),
                cols = myTable.cols[0], mergeRecord = {};
            for (let i = 0; i < cols.length; i++) {
                var item3 = cols[i], field=item3.field;
                if (item3.merge) {
                    var mergeField = [field];
                    if (item3.merge !== true) {
                        if (typeof item3.merge == 'string') {
                            mergeField = [item3.merge]
                        } else {
                            mergeField = item3.merge
                        }
                    }
                    mergeRecord[i] = {mergeField: mergeField, rowspan:1}
                }
            }
            $main.each(function (i) {
                for (var item in mergeRecord) {
                    if (i==$main.length-1 || isMaster(i, item)) {
                        $(this).children('[data-key$="-'+item+'"]').attr('rowspan', mergeRecord[item].rowspan).css('position','static');
                        $fixLeft.eq(i).children('[data-key$="-'+item+'"]').attr('rowspan', mergeRecord[item].rowspan).css('position','static');
                        $fixRight.eq(i).children('[data-key$="-'+item+'"]').attr('rowspan', mergeRecord[item].rowspan).css('position','static');
                        mergeRecord[item].rowspan = 1;
                    } else {
                        $(this).children('[data-key$="-'+item+'"]').remove();
                        $fixLeft.eq(i).children('[data-key$="-'+item+'"]').remove();
                        $fixRight.eq(i).children('[data-key$="-'+item+'"]').remove();
                        mergeRecord[item].rowspan +=1;
                    }
                }
            })
            function isMaster (index, item) {
                var mergeField = mergeRecord[item].mergeField;
                var dataLength = layui.table.cache[myTable.id].length;
                for (var i=0; i<mergeField.length; i++) {
                    if (layui.table.cache[myTable.id][dataLength-2-index][mergeField[i]]
                        !== layui.table.cache[myTable.id][dataLength-1-index][mergeField[i]]) {
                        return true;
                    }
                }
                return false;
            }
        }
    };
    // 输出
    exports('tableMerge', mod);
});
src/main/webapp/views/order/out.html
@@ -126,12 +126,16 @@
</script>
<!-- 出库预览 -->
<div id="pakoutPreviewBox" style="display: none">
<script type="text/html" id="pakoutPreviewBox" style="display: none">
    <div  style="padding: 25px; line-height: 22px; background-color: #393D49; color: #fff; font-weight: 300;">
        <span style="font-size: large; font-weight: bold">出库预览</span>
    </div>
    <table id="stoPreTab" lay-filter="stoPreTab"></table>
</div>
    <div class="layui-card">
        <div class="layui-card-body" style="padding: 10px">
            <table id="stoPreTab" lay-filter="stoPreTab"></table>
        </div>
    </div>
</script>
<!-- 行样式 -->
<script type="text/html" id="orderNoTpl">