Merge branch 'master' into csc
| | |
| | | var bodyHeight = $("#body").outerHeight(); |
| | | var topHeight = $("#top").outerHeight(); |
| | | var centerHeight = $("#center").outerHeight(); |
| | | // console.log(bodyHeight); |
| | | // console.log(topHeight); |
| | | // console.log(centerHeight); |
| | | console.log(bodyHeight); |
| | | console.log(topHeight); |
| | | console.log(centerHeight); |
| | | |
| | | var hh = bodyHeight - topHeight-centerHeight - 26 ;//6是body上内边距 |
| | | return hh; |
New file |
| | |
| | | /** |
| | | @ Name:layui.dragMove 图片查看器 |
| | | @ Author:FQSong |
| | | @ License:MIT |
| | | */ |
| | | |
| | | /* 样式加载完毕的标识 */ |
| | | html #layuicss-dragMove{display: none; position: absolute; width: 1989px;} |
| | | |
| | | |
| | | /* 组件样式 */ |
| | | .dragMove-skin .layui-layer-content {overflow: hidden !important;} |
| | | .layui-dragMove {position: relative; width: 100%; height: 100%; display: -webkit-flex; display: flex; flex-direction:column;} |
| | | .layui-dragMove .dragMove-img {position: relative; width: 100%; height: 100%; overflow: hidden; -webkit-flex: 1; flex: 1; background-color:#eee;} |
| | | .layui-dragMove .dragMove-img img {position: absolute; left: 0; top: 0; user-select:none; cursor: grab;} |
| | | .layui-dragMove .dragMove-btn {width:100%; padding: 10px 0; text-align:center; -webkit-flex: none; flex: none;} |
| | | .layui-dragMove .dragMove-btn .layui-btn {height: 28px; line-height: 28px;} |
| | | .layui-icon-loading {position: absolute; left: 50%; top: 50%; display: block; width: 36px; height: 36px; font-size: 36px; line-height: 36px; } |
| | | |
| | | .transitioning {-webkit-transition: -webkit-transform .24s ease-out; transition: transform .24s ease-out;} |
New file |
| | |
| | | /** |
| | | @ Name:layui.dragMove 图片查看器 |
| | | @ Author:FQSong |
| | | @ License:MIT |
| | | */ |
| | | |
| | | layui.define('layer', function(exports){ |
| | | var $ = layui.$ |
| | | ,layer = layui.layer |
| | | |
| | | //字符常量 |
| | | ,MOD_NAME = 'dragMove', ELEM = '.layui-dragMove' |
| | | |
| | | //外部接口 |
| | | ,dragMove = { |
| | | index: layui.dragMove ? (layui.dragMove.index + 10000) : 0 |
| | | |
| | | //设置全局项 |
| | | ,set: function(options){ |
| | | var that = this; |
| | | that.config = $.extend({}, that.config, options); |
| | | return that; |
| | | } |
| | | |
| | | //事件监听 |
| | | ,on: function(events, callback){ |
| | | return layui.onevent.call(this, MOD_NAME, events, callback); |
| | | } |
| | | } |
| | | |
| | | //构造器 |
| | | ,Class = function(options){ |
| | | var that = this; |
| | | that.index = ++dragMove.index; |
| | | that.config = $.extend({}, that.config, dragMove.config, options); |
| | | that.render(); |
| | | }; |
| | | |
| | | //默认配置 |
| | | Class.prototype.config = { |
| | | layerArea: ["960px","720px"], |
| | | layerShade: 0.6, |
| | | layerMove: 0, |
| | | maxZoom: 1 |
| | | }; |
| | | |
| | | //渲染视图 |
| | | Class.prototype.render = function(){ |
| | | var that = this |
| | | ,options = that.config |
| | | ,dragMoveView = "<div class='layui-dragMove'>" |
| | | + "<div class='dragMove-img'>" |
| | | + "<span class='layui-icon layui-icon-loading layui-anim layui-anim-rotate layui-anim-loop'></span>" |
| | | + "</div>" |
| | | + "<div class='dragMove-btn'>" |
| | | + "<button type='button' class='layui-btn layui-btn-sm' data-method='default'>默认大小</button>" |
| | | + "<button type='button' class='layui-btn layui-btn-sm' data-method='real'>实际大小</button>" |
| | | + "<button type='button' class='layui-btn layui-btn-sm' data-method='zoomin'>放大</button>" |
| | | + "<button type='button' class='layui-btn layui-btn-sm' data-method='zoomout'>缩小</button>" |
| | | + "</div>" |
| | | + "</div>"; |
| | | |
| | | options.elem = $(options.elem); |
| | | |
| | | options.elem.on("click","img",function(e){ |
| | | let imgObj = $(this), |
| | | imgSrc = imgObj.attr("src"), |
| | | imgTitle = imgObj.attr("alt") || imgSrc.replace(/(.*\/)*([^.]+).*/ig,"$2"); |
| | | |
| | | layer.open({ |
| | | type: 1, |
| | | resize: 0, |
| | | btn: 0, |
| | | skin: "dragMove-skin", |
| | | move: options.layerMove, |
| | | area: options.layerArea, |
| | | shade: options.layerShade, |
| | | title: imgTitle, |
| | | content: dragMoveView, |
| | | success: function(layero){ |
| | | var imgbox = layero.find(".dragMove-img"); |
| | | options.imgboxWidth = imgbox.innerWidth(); |
| | | options.imgboxHeight = imgbox.innerHeight(); |
| | | |
| | | var nImg = new Image(); |
| | | nImg.src = imgSrc; |
| | | if (nImg.complete) { |
| | | imgbox.empty().append(nImg); |
| | | that.init(nImg) |
| | | } else { |
| | | nImg.onload = function () { |
| | | imgbox.empty().append(nImg); |
| | | that.init(nImg) |
| | | } |
| | | } |
| | | } |
| | | }); |
| | | }); |
| | | } |
| | | |
| | | // |
| | | Class.prototype.init = function(img){ |
| | | var that = this |
| | | ,options = that.config; |
| | | |
| | | let $img = $(img), |
| | | parent = $img.closest(".layui-dragMove"), |
| | | zoomData = {}; |
| | | |
| | | zoomData.img = img; |
| | | zoomData.imgWidth = img.width; |
| | | zoomData.imgHeight = img.height; |
| | | |
| | | zoomData.zoomSize = Math.min(Math.min(options.imgboxWidth / zoomData.imgWidth, options.imgboxHeight / zoomData.imgHeight), 1); |
| | | zoomData.left = (options.imgboxWidth - zoomData.imgWidth * zoomData.zoomSize) / 2; |
| | | zoomData.top = (options.imgboxHeight - zoomData.imgHeight * zoomData.zoomSize) / 2; |
| | | zoomData.defaultZoom = zoomData.zoomSize; |
| | | |
| | | that.zoomData = zoomData; |
| | | $img.css({ "transform-origin": "0 0", "transform": "matrix(" + zoomData.zoomSize + ",0,0," + zoomData.zoomSize + "," + zoomData.left + "," + zoomData.top + ")" }); |
| | | |
| | | $img.on("mousedown", function (e) { |
| | | e.preventDefault(); |
| | | let currentX = e.clientX, |
| | | currentY = e.clientY; |
| | | $img.removeClass("transitioning").css({"cursor": "grabbing"}); |
| | | |
| | | $(document).on("mousemove", function (even) { |
| | | let moveX = even.clientX - currentX, |
| | | moveY = even.clientY - currentY; |
| | | $img.css({ "transform": "matrix(" + zoomData.zoomSize + ",0,0," + zoomData.zoomSize + "," + (zoomData.left + moveX) + "," + (zoomData.top + moveY) + ")" }); |
| | | }); |
| | | $(document).on("mouseup", function (even) { |
| | | var matrix = $img.css("transform").slice(7, -1).split(','), |
| | | center = that.getCenter(parseFloat(matrix[4]), parseFloat(matrix[5]), zoomData); |
| | | |
| | | zoomData.left = center.left; |
| | | zoomData.top = center.top; |
| | | |
| | | $img.addClass("transitioning").css({ |
| | | "transform": "matrix(" + zoomData.zoomSize + ",0,0," + zoomData.zoomSize + "," + zoomData.left + "," + zoomData.top + ")", |
| | | "cursor": "grab" |
| | | }); |
| | | |
| | | $(document).off("mousemove"); |
| | | $(document).off("mouseup"); |
| | | }); |
| | | }); |
| | | |
| | | parent.on("click", "button", function (e) { |
| | | e.preventDefault(); |
| | | var method = $(this).attr("data-method"), |
| | | scaleSize = 0; |
| | | switch (method) { |
| | | case "default": |
| | | scaleSize = zoomData.defaultZoom; |
| | | break; |
| | | case "real": |
| | | scaleSize = 1; |
| | | break; |
| | | case "zoomin": |
| | | scaleSize = zoomData.zoomSize * 1.2; |
| | | scaleSize = scaleSize > options.maxZoom ? options.maxZoom : scaleSize; |
| | | break; |
| | | case "zoomout": |
| | | scaleSize = zoomData.zoomSize / 1.2; |
| | | scaleSize = scaleSize < zoomData.defaultZoom ? zoomData.defaultZoom : scaleSize; |
| | | break; |
| | | |
| | | default: |
| | | break; |
| | | } |
| | | scaleSize && that.scaleZoom(scaleSize); |
| | | }); |
| | | |
| | | //鼠标滚轮 |
| | | parent.on("mousewheel", function (e) { |
| | | e.preventDefault(); |
| | | let scaleSize = 0; |
| | | if (e.originalEvent.wheelDelta > 0) { |
| | | scaleSize = zoomData.zoomSize * 1.2; |
| | | } else { |
| | | scaleSize = zoomData.zoomSize / 1.2; |
| | | } |
| | | scaleSize = Math.min(Math.max(scaleSize, zoomData.defaultZoom),options.maxZoom); |
| | | that.scaleZoom(scaleSize); |
| | | }); |
| | | |
| | | $img.on("transitionend webkitTransitionend", function () { |
| | | $(this).removeClass("transitioning") |
| | | }); |
| | | |
| | | }; |
| | | |
| | | Class.prototype.scaleZoom = function(index){ |
| | | var that = this |
| | | ,options = that.config |
| | | ,zoomData = that.zoomData; |
| | | |
| | | zoomData.left = zoomData.left - zoomData.imgWidth * (index - zoomData.zoomSize) / 2; |
| | | zoomData.top = zoomData.top - zoomData.imgHeight * (index - zoomData.zoomSize) / 2; |
| | | zoomData.zoomSize = index; |
| | | |
| | | var center = that.getCenter(zoomData.left,zoomData.top,zoomData); |
| | | zoomData.left = center.left; |
| | | zoomData.top = center.top; |
| | | |
| | | $(zoomData.img).addClass("transitioning").css({ |
| | | "transform":"matrix("+ zoomData.zoomSize +",0,0," + zoomData.zoomSize +","+zoomData.left+","+zoomData.top+")" |
| | | }); |
| | | }; |
| | | |
| | | Class.prototype.getCenter = function(x,y,zoomData){ |
| | | var that = this |
| | | ,options = that.config |
| | | ,zoomData = that.zoomData; |
| | | |
| | | let newleft,newtop; |
| | | newleft = (function(){ |
| | | var left; |
| | | if(zoomData.imgWidth * zoomData.zoomSize < options.imgboxWidth){ |
| | | left = (options.imgboxWidth - zoomData.imgWidth * zoomData.zoomSize) / 2; |
| | | }else{ |
| | | left = Math.max(Math.min(0,x), options.imgboxWidth - zoomData.imgWidth * zoomData.zoomSize); |
| | | } |
| | | return left; |
| | | })(); |
| | | newtop = (function(){ |
| | | var top; |
| | | if(zoomData.imgHeight * zoomData.zoomSize < options.imgboxHeight){ |
| | | top = (options.imgboxHeight - zoomData.imgHeight * zoomData.zoomSize) / 2; |
| | | }else{ |
| | | top = Math.max(Math.min(0, y), options.imgboxHeight - zoomData.imgHeight * zoomData.zoomSize); |
| | | } |
| | | return top; |
| | | })(); |
| | | return {left:newleft,top:newtop} |
| | | }; |
| | | |
| | | Class.prototype.decimal = function(num){ |
| | | var result = parseFloat(num); |
| | | if (isNaN(result)) { |
| | | return false; |
| | | } |
| | | result = Math.round(num * 100) / 100; |
| | | return result; |
| | | }; |
| | | |
| | | //核心入口 |
| | | dragMove.render = function(options){ |
| | | var ins = new Class(options); |
| | | return ins; |
| | | }; |
| | | |
| | | //加载组件所需样式 |
| | | layui.link(layui.cache.base + 'dragMove/dragMove.css', function(){ |
| | | //样式加载完毕的回调 |
| | | }, MOD_NAME); |
| | | |
| | | exports(MOD_NAME, dragMove); |
| | | }); |
| | |
| | | }} |
| | | |
| | | </script> |
| | | |
| | | <script type="text/html" id="table-content-list2"> |
| | | {{# |
| | | var html = ''; |
| | | |
| | | if(d.Status >= 1){ |
| | | html += `<a class="layui-btn layui-btn-danger layui-btn-xs delClass" lay-event="viewPicture"> |
| | | <i class="layui-icon layui-icon-ok"></i>查看图片 |
| | | </a>`; |
| | | } |
| | | return html; |
| | | |
| | | }} |
| | | |
| | | </script> |
| | | <script type="text/html" id="toolbarDemo"> |
| | | |
| | | <button class="layui-btn layuiadmin-btn-list layui-btn-sm addClass" lay-event="add"> |
| | |
| | | { field: 'CreateTime', title: '创建时间', align: 'center', width: 160, templet: '#CreateTimeButton', }, |
| | | { field: 'UpdateUserName', title: '修改人', align: 'center', width: 120, hide: true }, |
| | | { field: 'UpdateTime', title: '修改时间', align: 'center', width: 160, hide: true, templet: '#UpdateTimeButton', }, |
| | | { field: 'caozuo', title: '操作', fixed: 'right', align: 'center', toolbar: '#table-content-list2', width: 100 } |
| | | ]]; |
| | | var TotalColsSysArrm = encodeURIComponent(encodeURIComponent(JSON.stringify(TotalColsArrm)))//将表头数据进行url编码 |
| | | refreshTable(); |
| | |
| | | } |
| | | }); |
| | | } else if (obj.event === 'vision') { |
| | | |
| | | |
| | | layer.confirm('确定视觉盘点', function () { |
| | | if (isChongFu == true) { |
| | | isChongFu = false; |
| | |
| | | }); |
| | | } |
| | | }); |
| | | |
| | | table.on('tool(LAY-app-content-list2)', function (obj) { |
| | | var data = obj.data; |
| | | if (obj.event === 'viewPicture') {//查看图片 |
| | | debugger; |
| | | layer.open({ |
| | | type: 2, |
| | | title: '查看图片', |
| | | content: 'ViewPicture.html', |
| | | maxmin: true, |
| | | area: ['100%', '100%'], |
| | | success: function (layero, index) { |
| | | var body = layer.getChildFrame('body', index); |
| | | body.find('#CrNo').val(data.CrNo); |
| | | body.find('#PalletNo').val(data.PalletNo); |
| | | } |
| | | }); |
| | | } |
| | | }); |
| | | var $ = layui.$, |
| | | active = { |
| | | customCols: function () { |
New file |
| | |
| | | <!DOCTYPE html> |
| | | <html> |
| | | |
| | | <head> |
| | | <meta charset="utf-8"> |
| | | <title>查看图片</title> |
| | | <meta name="renderer" content="webkit"> |
| | | <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> |
| | | <meta name="viewport" |
| | | content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0"> |
| | | <link rel="stylesheet" href="../../layuiadmin/layui/css/layui.css" media="all"> |
| | | </head> |
| | | |
| | | <body> |
| | | <input type="hidden" id="CrNo" name="CrNo"> |
| | | <input type="hidden" id="PalletNo" name="PalletNo"> |
| | | <div class="layui-bg-gray" style="padding: 16px;" id="imgDragmove"> |
| | | <div class="layui-row layui-col-space15"> |
| | | <div class="layui-col-md2"> |
| | | <div class="layui-card"> |
| | | <div class="layui-card-header">0100101箱</div> |
| | | <div class="layui-card-body"> |
| | | <img src="images/1920x1080.jpg" height="200" width="100%" alt="0100101箱"> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="layui-col-md2"> |
| | | <div class="layui-card"> |
| | | <div class="layui-card-header">0100102箱</div> |
| | | <div class="layui-card-body"> |
| | | <img src="images/1920x400.jpg" height="200" width="100%" alt="0100102箱"> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="layui-col-md2"> |
| | | <div class="layui-card"> |
| | | <div class="layui-card-header">0100103箱</div> |
| | | <div class="layui-card-body"> |
| | | <img src="images/400x400.jpg" height="200" width="100%" alt="0100103箱"> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="layui-col-md2"> |
| | | <div class="layui-card"> |
| | | <div class="layui-card-header">0100104箱</div> |
| | | <div class="layui-card-body"> |
| | | <img src="images/400x400.jpg" height="200" width="100%" alt="0100104箱"> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="layui-col-md2"> |
| | | <div class="layui-card"> |
| | | <div class="layui-card-header">0100105箱</div> |
| | | <div class="layui-card-body"> |
| | | <img src="images/400x400.jpg" height="200" width="100%" alt="0100105箱"> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="layui-col-md2"> |
| | | <div class="layui-card"> |
| | | <div class="layui-card-header">0100106箱</div> |
| | | <div class="layui-card-body"> |
| | | <img src="images/400x400.jpg" height="200" width="100%" alt="0100106箱"> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="layui-col-md2"> |
| | | <div class="layui-card"> |
| | | <div class="layui-card-header">0100107箱</div> |
| | | <div class="layui-card-body"> |
| | | <img src="images/400x400.jpg" height="200" width="100%" alt="0100107箱"> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | |
| | | <script src="../../layuiadmin/layui/layui.js"></script> |
| | | <script src="../../js/jquery-3.5.1.min.js"></script> |
| | | <script src="../../js/jquery.cookie.js"></script> |
| | | <script src="../../js/public.js"></script> |
| | | <script> |
| | | layui.config({ |
| | | base: '../../layuiadmin/' //静态资源所在路径 |
| | | }).extend({ |
| | | index: 'lib/index', //主入口模块 |
| | | dragMove: 'dragMove/dragMove' |
| | | }).use(['dragMove'], function () { |
| | | var $ = layui.$; |
| | | var dragMove = layui.dragMove; |
| | | //执行示例 |
| | | dragMove.render({ |
| | | elem: "#imgDragmove", //指向图片的父容器 |
| | | layerArea: ["960px", "720px"], //弹窗的宽高,同layer的area,默认["960px","720px"] |
| | | layerShade: 0.6, //遮罩的透明度,同layer的shade,默认0.6 |
| | | layerMove: false, //触发拖动的元素,同layer的move,这里默认禁止,可设置为'.layui-layer-title' |
| | | maxZoom: 1 //图片能放大的最大倍数,默认1倍 |
| | | }); |
| | | }) |
| | | </script> |
| | | </body> |
| | | |
| | | </html> |
| | |
| | | <div class="layui-form layui-card-header layuiadmin-card-header-auto" id="top"> |
| | | <div class="layui-form-item" style="margin-bottom: 0px;"> |
| | | |
| | | <div class="layui-inline "> |
| | | <label class="layui-form-label" style="width: 60px;">查询类型</label> |
| | | <div class="layui-input-inline" style="width: 170px; margin-right: 0px;"> |
| | | <select name="SelectType" id="SelectType" lay-filter="SelectType" lay-search> |
| | | <option value="">正常</option> |
| | | <option value="0">物料信息</option> |
| | | <option value="1">批次信息</option> |
| | | <option value="2">质检信息</option> |
| | | <option value="3">货主信息</option> |
| | | </select> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline zongdan"> |
| | | <label class="layui-form-label" style="width: 60px;">物料编码</label> |
| | | <div class="layui-input-inline" style="width: 170px; margin-right: 0px;"> |
| | |
| | | class="layui-input"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline mingxi"> |
| | | <!-- <div class="layui-inline mingxi"> |
| | | <label class="layui-form-label" style="width: 60px;">储位地址</label> |
| | | <div class="layui-input-inline" style="width: 170px; margin-right: 0px;"> |
| | | <input type="text" id="LocatNo" name="LocatNo" placeholder="储位地址" autocomplete="off" |
| | |
| | | <input type="text" id="PalletNo" name="PalletNo" placeholder="托盘号" autocomplete="off" |
| | | class="layui-input"> |
| | | </div> |
| | | </div> |
| | | </div> --> |
| | | |
| | | <div class="layui-inline "> |
| | | <label class="layui-form-label" style="width: 60px;">库存状态</label> |
| | |
| | | </select> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline zhijian"> |
| | | <!-- <div class="layui-inline zhijian"> |
| | | <label class="layui-form-label" style="width: 60px;">开始时间</label> |
| | | <div class="layui-input-inline" style="width: 170px; margin-right: 0px;"> |
| | | <input type="text" autocomplete="off" id="StartTime" class="layui-input" |
| | |
| | | <input type="text" autocomplete="off" id="EndTime" class="layui-input" |
| | | placeholder="结束时间"> |
| | | </div> |
| | | </div> |
| | | </div> --> |
| | | <div class="layui-inline sousuo"> |
| | | <button class="layui-btn layui-btn-sm layuiadmin-btn-list" lay-submit |
| | | lay-filter="LAY-app-contlist-search"> |
| | |
| | | </div> |
| | | </div> |
| | | |
| | | |
| | | <div id="center"></div> |
| | | <div class="layui-card-body"> |
| | | <div style="position: relative;"> |
| | | <div class="layui-tab layui-tab-brief" lay-filter="docDemoTabBrief"> |
| | | <ul class="layui-tab-title" id="tab"> |
| | | <li class="layui-this">库存总量</li> |
| | | <li>库存明细</li> |
| | | </ul> |
| | | |
| | | <div id="center"></div> |
| | | <!-- <div id="center"> |
| | | </div> --> |
| | | |
| | | <div class="layui-tab-content"> |
| | | <div class="layui-tab-item layui-show"> |
| | | <!-- <div class="layui-tab-item layui-show"> --> |
| | | <div class="position-relative"><!-- class="position-relative" --><!-- 自定义表头加上 --> |
| | | <table id="LAY-app-content-list" lay-filter="LAY-app-content-list"></table> |
| | | <!-- #region 自定义表头 --> |
| | |
| | | </div> |
| | | <!-- #endregion --> |
| | | </div> |
| | | </div> |
| | | <div class="layui-tab-item"> |
| | | <div class="position-relative"><!-- class="position-relative" --><!-- 自定义表头加上 --> |
| | | <table id="LAY-app-content-list2" lay-filter="LAY-app-content-list2"></table> |
| | | <!-- #region 自定义表头 --> |
| | | <div class="headerSetIcon"> |
| | | <button class="layui-btn layui-btn-primary layui-btn-sm" data-type="customCols2"> |
| | | <i class="layui-icon"></i> |
| | | </button> |
| | | </div> |
| | | <!-- #endregion --> |
| | | |
| | | <!-- #region 自定义表头 --> |
| | | <script type="text/html" id="templetCompleteTime"> |
| | | {{# function GetBtn(d){ |
| | | return formatDate(d.CompleteTime); |
| | | } |
| | | }} |
| | | {{ GetBtn(d) }} |
| | | </script> |
| | | <!-- #endregion --> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | |
| | | element = layui.element; |
| | | laydate = layui.laydate; |
| | | |
| | | var h1 = GetTableTabHeight(); |
| | | var h1 = GetTableHeight(); |
| | | |
| | | laydate.render({ |
| | | elem: '#StartTime', |
| | |
| | | |
| | | var $ = layui.$; |
| | | var yemianid = 0; |
| | | refreshTable("", "","","",""); |
| | | refreshTable("", "", "", "", "", "", "", ""); |
| | | |
| | | // 表单需要的变量 |
| | | var infoOptions; |
| | |
| | | {field: 'LotText',title: '批次描述',align: 'center'}, |
| | | {field: 'OwnerNo',title: '货主编码',align: 'center'}, |
| | | {field: 'OwnerName',title: '货主名称',align: 'center'}, |
| | | {field: 'Status',title: '库存状态',align: 'center',templet: '#buttonTpl'}, |
| | | {field: 'InspectStatus',title: '质检状态',align: 'center',templet: '#buttonTp2'}, |
| | | {field: 'Qty',title: '库存数量',align: 'center',totalRow: true}, |
| | | {field: 'LockQty',title: '锁定数量',align: 'center',totalRow: true}, |
| | | {field: 'FrozenQty',title: '冻结数量',align: 'center',totalRow: true} |
| | | {field: 'FrozenQty',title: '冻结数量',align: 'center',totalRow: true}, |
| | | {field: 'InspectQty',title: '可抽检数量',align: 'center',totalRow: true}, |
| | | ]]; |
| | | var TotalColsSysArr=encodeURIComponent(encodeURIComponent(JSON.stringify(TotalColsArr)))//将表头数据进行url编码 |
| | | //#endregion |
| | | //获取总量信息 |
| | | function refreshTable(SkuNo,SkuName,OwnerNo,OwnerName,LotNo) { |
| | | function refreshTable(SelectType,SkuNo,SkuName,OwnerNo,OwnerName,LotNo,Status,InspectStatus) { |
| | | //#region 自定义表头 |
| | | var colsJson |
| | | var param1={ |
| | |
| | | cols:colsJson |
| | | }; |
| | | var param = { |
| | | SelectType:SelectType, //查询类型 |
| | | SkuNo:SkuNo, //物料号 |
| | | SkuName:SkuName, //物料名称 |
| | | OwnerNo:OwnerNo, //货主编码 |
| | | OwnerName:OwnerName, //货主名称 |
| | | LotNo:LotNo, //批次号 |
| | | Status:Status, //库存状态 = $("#Status").val(); |
| | | InspectStatus:InspectStatus, //质检状态 = $("#InspectStatus").val(); |
| | | }; |
| | | sendData(IP + "/Statistical/GetInventoryList", param, 'get', function (res) { |
| | | console.log(res) |
| | |
| | | }); |
| | | }); |
| | | //#endregion |
| | | } |
| | | |
| | | // 表单需要的变量 |
| | | var infoOptions2; |
| | | //#region 原始非自定义列 |
| | | //infoOptions2 = { |
| | | // elem: '#LAY-app-content-list2', |
| | | // height: 'full-206', |
| | | // id: 'LAY-app-content-list2', |
| | | // page: true, |
| | | // limit: pageCnt, |
| | | // limits: pageLimits, |
| | | // even: true, |
| | | // cellMinWidth: 80, //全局定义常规单元格的最小宽度,layui 2.2.1 新增 |
| | | // cols: |
| | | // [[ |
| | | // { |
| | | // field: 'PalletNo', |
| | | // title: '托盘号', |
| | | // align: 'center', |
| | | // width: 110, |
| | | // }, { |
| | | // field: 'LocatNo', |
| | | // title: '储位地址', |
| | | // align: 'center', |
| | | // width: 100, |
| | | // }, { |
| | | // field: 'RoadwayName', |
| | | // title: '所属巷道', |
| | | // width: 90, |
| | | // align: 'center', |
| | | // }, { |
| | | // field: 'WareHouseName', |
| | | // title: '所属仓库', |
| | | // width: 90, |
| | | // align: 'center', |
| | | // }, { |
| | | // field: 'SkuNo', |
| | | // title: '物料编码', |
| | | // width: 100, |
| | | // align: 'center', |
| | | // }, { |
| | | // field: 'SkuName', |
| | | // title: '物料名称', |
| | | // align: 'center', |
| | | // }, { |
| | | // field: 'Standard', |
| | | // title: '物料规格', |
| | | // width: 130, |
| | | // align: 'center', |
| | | // }, { |
| | | // field: 'LotNo', |
| | | // title: '批次号', |
| | | // align: 'center', |
| | | // }, { |
| | | // field: 'Qty', |
| | | // title: '库存数量', |
| | | // width: 110, |
| | | // align: 'center', |
| | | // }, { |
| | | // field: 'LockQty', |
| | | // title: '锁定数量', |
| | | // width: 110, |
| | | // align: 'center', |
| | | // }, |
| | | // { |
| | | // field: 'Status', |
| | | // templet: '#buttonTpl', |
| | | // title: '库存状态', |
| | | // width: 90, |
| | | // align: 'center', |
| | | // }, { |
| | | // field: 'InspectStatus', |
| | | // templet: '#buttonTp2', |
| | | // title: '质检状态', |
| | | // width: 90, |
| | | // align: 'center', |
| | | // }, |
| | | // { |
| | | // field: 'CompleteTime', |
| | | // title: '入库时间', |
| | | // align: 'center', |
| | | // width: 150, |
| | | // templet: function (d) { |
| | | // return formatDate(d.CompleteTime); |
| | | // }, |
| | | // }, |
| | | // ]] |
| | | //}; |
| | | //#endregion |
| | | |
| | | //获取明细信息 |
| | | //#region 自定义表头 |
| | | var DetailColsArr = [[ |
| | | {field: 'PalletNo',title: '托盘号',align: 'center',width: 110,}, |
| | | {field: 'LocatNo',title: '储位地址',align: 'center',width: 100,}, |
| | | {field: 'WareHouseName',title: '所属仓库',width: 90,align: 'center'}, |
| | | {field: 'RoadwayName',title: '所属巷道',width: 90,align: 'center'}, |
| | | {field: 'AreaName',title: '所属区域',width: 90,align: 'center'}, |
| | | {field: 'SkuNo',title: '物料编码',width: 100,align: 'center'}, |
| | | {field: 'SkuName',title: '物料名称',align: 'center'}, |
| | | {field: 'Standard',title: '物料规格',width: 130,align: 'center'}, |
| | | {field: 'LotNo',title: '批次号',align: 'center'}, |
| | | {field: 'OwnerNo',title: '货主编码',align: 'center'}, |
| | | {field: 'OwnerName',title: '货主名称',align: 'center'}, |
| | | {field: 'SupplierNo',title: '供应商编码',align: 'center'}, |
| | | {field: 'SupplierName',title: '供应商名称',align: 'center'}, |
| | | {field: 'Qty',title: '库存数量',width: 110,align: 'center'}, |
| | | {field: 'LockQty',title: '锁定数量',width: 110,align: 'center'}, |
| | | {field: 'Status',templet: '#buttonTpl',title: '库存状态',width: 90,align: 'center'}, |
| | | {field: 'InspectStatus',templet: '#buttonTp2',title: '质检状态',width: 90,align: 'center'}, |
| | | {field: 'CompleteTime',title: '入库时间',align: 'center',width: 150,templet: '#templetCompleteTime'}, |
| | | ]]; |
| | | var DetailColsSysArr=encodeURIComponent(encodeURIComponent(JSON.stringify(DetailColsArr)))//将表头数据进行url编码 |
| | | //#endregion |
| | | function refreshTable2(SkuNo,SkuName,OwnerNo,OwnerName,LotNo,LocatNo,PalletNo,Status,InspectStatus,StartTime,EndTime) { |
| | | //#region 自定义表头 |
| | | var colsJson2 |
| | | var param1={ |
| | | Href:'Statistical/GetInventoryList1' |
| | | }; |
| | | sendData(IP + "/Sys/GetTableColsByUserId", param1, 'post', function(res) { |
| | | if (res.code == 0){ |
| | | if(res.data=='' || res.data==undefined || res.data==null){ |
| | | colsJson2=DetailColsArr |
| | | }else{ |
| | | colsJson2= eval(res.data); |
| | | } |
| | | }else{ |
| | | colsJson2=DetailColsArr |
| | | } |
| | | infoOptions2 = { |
| | | elem: '#LAY-app-content-list2', |
| | | height: h1, |
| | | id: 'LAY-app-content-list2', |
| | | page: true, |
| | | limit: pageCnt, |
| | | limits: pageLimits, |
| | | even: true, |
| | | cellMinWidth: 80, //全局定义常规单元格的最小宽度,layui 2.2.1 新增 |
| | | done: function(){ |
| | | //自定义列宽 |
| | | SetTableColW('LAY-app-content-list2','Statistical/GetInventoryList1',DetailColsSysArr); |
| | | }, |
| | | cols:colsJson2 |
| | | }; |
| | | var param = { |
| | | SkuNo:SkuNo, //物料号 |
| | | SkuName:SkuName, //物料名称 |
| | | OwnerNo:OwnerNo, //货主编码 |
| | | OwnerName:OwnerName, //货主名称 |
| | | LotNo:LotNo, //批次号 |
| | | LocatNo:LocatNo,//储位地址 |
| | | PalletNo:PalletNo, //托盘号 |
| | | Status:Status,//库存状态 |
| | | InspectStatus:InspectStatus, //质检状态 |
| | | StartTime:StartTime,//开始时间 |
| | | EndTime:EndTime, //结束时间 |
| | | }; |
| | | sendData(IP + "/Statistical/GetInventoryList1", param, 'get', function (res) { |
| | | if (res.code == 0) //成功 |
| | | { |
| | | var list = res.data; |
| | | $.extend(infoOptions2, { |
| | | data: list |
| | | }); |
| | | infoOptions2.page = { |
| | | curr: 1 |
| | | } |
| | | tableIns2 = table.render(infoOptions2); |
| | | } |
| | | else //不成功 |
| | | { |
| | | layer.msg('获取明细列表信息失败!', { |
| | | icon: 2, |
| | | time: 2000 //2秒关闭(如果不配置,默认是3秒) |
| | | }, function () { }); |
| | | } |
| | | }) |
| | | }); |
| | | //#endregion |
| | | } |
| | | } |
| | | |
| | | //var url = IP + "/Statistical/GetInventoryList1"; |
| | | |
| | | //接受全局变量 |
| | | let quanSkuNo = ''; |
| | | let quanLotNo=''; |
| | | //监听搜索 |
| | | form.on('submit(LAY-app-contlist-search)', function (data) { |
| | | var SelectType = $("#SelectType").val(); |
| | | var SkuNo = $("#SkuNo").val(); |
| | | var SkuName = $("#SkuName").val(); |
| | | var LotNo = $("#LotNo").val(); |
| | | var LocatNo = $("#LocatNo").val(); |
| | | var PalletNo = $("#PalletNo").val(); |
| | | var OwnerNo = $("#OwnerNo").val(); |
| | | var OwnerName = $("#OwnerName").val(); |
| | | var Status = $("#Status").val(); |
| | | var InspectStatus = $("#InspectStatus").val(); |
| | | var StartTime = $("#StartTime").val(); |
| | | var EndTime = $("#EndTime").val(); |
| | | if (yemianid == 0) { |
| | | console.log("总单"); |
| | | refreshTable(SkuNo, SkuName,OwnerNo,OwnerName,LotNo); |
| | | } else if (yemianid == 1) { |
| | | //quanSkuNo = quanSkuNo; |
| | | //quanLotNo=''; |
| | | console.log("明细"); |
| | | console.log(SkuNo,SkuName,OwnerNo,OwnerName,LotNo,LocatNo,PalletNo,Status,InspectStatus,StartTime,EndTime) |
| | | refreshTable2(quanSkuNo,SkuName,OwnerNo,OwnerName,quanLotNo,LocatNo,PalletNo,Status,InspectStatus,StartTime,EndTime); |
| | | } |
| | | refreshTable(SelectType,SkuNo, SkuName,OwnerNo,OwnerName,LotNo,Status,InspectStatus); |
| | | |
| | | }); |
| | | //触发行双击事件 |
| | | table.on('rowDouble(LAY-app-content-list)', function (obj) { |
| | | $(".layui-tab-title>li").attr("class", ""); |
| | | $('.layui-tab-title>li').eq(1).attr('class', 'layui-this'); |
| | | $('.layui-tab-content .layui-tab-item').attr('class', 'layui-tab-item') |
| | | $('.layui-tab-content .layui-tab-item').eq(1).attr('class', 'layui-tab-item layui-show') |
| | | console.log(obj); |
| | | quanSkuNo = obj.data.SkuNo; |
| | | quanLotNo=obj.data.lotNo; |
| | | refreshTable2(obj.data.SkuNo,obj.data.SkuName,obj.data.OwnerNo,obj.data.OwnerName,obj.data.LotNo,obj.data.LocatNo,obj.data.PalletNo,obj.data.Status,obj.data.InspectStatus,obj.data.StartTime,obj.data.EndTime); |
| | | yemianid = 1; |
| | | }); |
| | | |
| | | //监听Tab切换,以改变地址hash值 |
| | | element.on('tab(docDemoTabBrief)', function (data) { |
| | | var SkuNo = $("#SkuNo").val(); |
| | | var SkuName = $("#SkuName").val(); |
| | | var LotNo = $("#LotNo").val(); |
| | | var LocatNo = $("#LocatNo").val(); |
| | | var PalletNo = $("#PalletNo").val(); |
| | | var OwnerNo = $("#OwnerNo").val(); |
| | | var OwnerName = $("#OwnerName").val(); |
| | | var Status = $("#Status").val(); |
| | | var InspectStatus = $("#InspectStatus").val(); |
| | | console.log(data.index); |
| | | yemianid = data.index |
| | | if (yemianid == 0) { |
| | | console.log("总单"); |
| | | refreshTable(SkuNo, SkuName,OwnerNo,OwnerName,LotNo); |
| | | } else if (yemianid == 1) { |
| | | console.log("明细"); |
| | | refreshTable2(SkuNo,SkuName,OwnerNo,OwnerName,LotNo,LocatNo,PalletNo,Status,InspectStatus,StartTime,EndTime); |
| | | } |
| | | }); |
| | | |
| | | form.on('submit(daochu)', function () { |
| | | layer.confirm('确定导出当前数据吗?', function (index) { |
| | | if (yemianid == 0) { |
| | | console.log("总单"); |
| | | var param = { |
| | | SkuNo: $("#SkuNo").val(), |
| | | SkuName: $("#SkuName").val(), |
| | | }; |
| | | sendData(IP + "/Statistical/GetInventoryListDaoChu", param, 'get', function (res) { |
| | | console.log(res); |
| | | if (res.code == 0) { //成功 |
| | | var list = res.data; |
| | | table.exportFile(tableIns.config.id, list, 'xls', "库存信息" + getNowTime(),); //data 为该实例中的任意数量的数据 |
| | | layer.msg('导出成功!', { |
| | | icon: 1, |
| | | time: 2000 //2秒关闭(如果不配置,默认是3秒) |
| | | }, function () { |
| | | var param = { |
| | | SkuNo: $("#SkuNo").val(), |
| | | SkuName: $("#SkuName").val(), |
| | | }; |
| | | sendData(IP + "/Statistical/GetInventoryListDaoChu", param, 'get', function (res) { |
| | | console.log(res); |
| | | if (res.code == 0) { //成功 |
| | | var list = res.data; |
| | | table.exportFile(tableIns.config.id, list, 'xls', "库存信息" + getNowTime(),); //data 为该实例中的任意数量的数据 |
| | | layer.msg('导出成功!', { |
| | | icon: 1, |
| | | time: 2000 //2秒关闭(如果不配置,默认是3秒) |
| | | }, function () { |
| | | |
| | | }); |
| | | }); |
| | | |
| | | } else { //不成功 |
| | | layer.msg('获取信息失败!', { |
| | | icon: 2, |
| | | time: 2000 //2秒关闭(如果不配置,默认是3秒) |
| | | }, function () { }); |
| | | } |
| | | }); |
| | | } else if (yemianid == 1) { |
| | | console.log("明细"); |
| | | var SkuNo = $("#SkuNo").val(); |
| | | if (SkuNo == '') { |
| | | SkuNo = quanSkuNo; |
| | | } else { //不成功 |
| | | layer.msg('获取信息失败!', { |
| | | icon: 2, |
| | | time: 2000 //2秒关闭(如果不配置,默认是3秒) |
| | | }, function () { }); |
| | | } |
| | | var param = { |
| | | SkuNo: SkuNo, |
| | | SkuName: $("#SkuName").val(), |
| | | LotNo: $("#LotNo").val(), |
| | | LocatNo: $("#LocatNo").val(), |
| | | PalletNo: $("#PalletNo").val(), |
| | | Status: $("#Status").val(), |
| | | InspectStatus: $("#InspectStatus").val(), |
| | | IsSamolingTray: $("#IsSamolingTray").val(), |
| | | StartTime: $("#StartTime").val(), |
| | | EndTime: $("#EndTime").val(), |
| | | }; |
| | | sendData(IP + "/Statistical/GetInventoryList1DaoChu", param, 'get', function (res) { |
| | | console.log(res); |
| | | if (res.code == 0) { //成功 |
| | | var list = res.data; |
| | | table.exportFile(tableIns2.config.id, list, 'xls', "库存明细信息" + getNowTime(),); //data 为该实例中的任意数量的数据 |
| | | layer.msg('导出成功!', { |
| | | icon: 1, |
| | | time: 2000 //2秒关闭(如果不配置,默认是3秒) |
| | | }, function () { |
| | | |
| | | }); |
| | | |
| | | } else { //不成功 |
| | | layer.msg('获取信息失败!', { |
| | | icon: 2, |
| | | time: 2000 //2秒关闭(如果不配置,默认是3秒) |
| | | }, function () { }); |
| | | } |
| | | }); |
| | | } |
| | | }); |
| | | }); |
| | | |
| | | |
| | |
| | | resize: false, |
| | | area: ['970px', '650px'] |
| | | }); |
| | | }, |
| | | customCols2: function(){ |
| | | layer.open({ |
| | | type: 2, |
| | | title: '自定义列', |
| | | content: '../SystemSettings/HeaderSetting.html?Href=Statistical/GetInventoryList1&ColsSysArr='+DetailColsSysArr, |
| | | maxmin: false, |
| | | resize: false, |
| | | area: ['970px', '650px'] |
| | | }); |
| | | } |
| | | |
| | | }; |
| | | $('.layui-btn').on('click', function() { |
| | | var type = $(this).data('type'); |
New file |
| | |
| | | <!DOCTYPE html> |
| | | <html> |
| | | |
| | | <head> |
| | | <meta charset="utf-8"> |
| | | <title>打印模板信息维护</title> |
| | | <meta name="renderer" content="webkit"> |
| | | <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> |
| | | <meta name="viewport" |
| | | content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0"> |
| | | <link rel="stylesheet" href="../../layuiadmin/layui/css/layui.css" media="all"> |
| | | <link rel="stylesheet" type="text/css" href="../../js/HiPrint/css/hiprint.css?t=' + Math.random() + '" /> |
| | | <link rel="stylesheet" type="text/css" href="../../js/HiPrint/css/print-lock.css" /> |
| | | <link rel="stylesheet" media="print" href="../../js/HiPrint/css/print-lock.css" /> |
| | | <!-- <link rel="stylesheet" type="text/css" href="../../js/HiPrint/css/bootstrap.min.css" > --> |
| | | <style> |
| | | .layui-form-label { |
| | | padding: 5px 1px; |
| | | text-align: center; |
| | | } |
| | | |
| | | div { |
| | | font-size: inherit; |
| | | } |
| | | </style> |
| | | </head> |
| | | |
| | | <body> |
| | | <div class="layui-card"> |
| | | <input type="hidden" id="printData" name="printData"> |
| | | <input type="hidden" id="printType" name="printType"> |
| | | <div class="row"> |
| | | |
| | | <!--左侧div--> |
| | | <div class="layui-col-xs2" style="padding-right:0px;max-height:250mm;"> |
| | | <div class="small-printElement-types hiprintEpContainer"> |
| | | </div> |
| | | </div> |
| | | <!--打印部分--> |
| | | <div class="layui-col-xs6" style="margin-right: 50px;margin-left: 30px;"> |
| | | <!--打印头部分--> |
| | | <div class="hiprint-toolbar" style="margin-top:15px;"> |
| | | <ul> |
| | | <li><a class="hiprint-toolbar-item"><input type="number" id="customWidth" |
| | | style="width: 50px;height: 19px;border: 0px;" placeholder="宽/mm" /></a></li> |
| | | <li><a class="hiprint-toolbar-item"><input type="number" id="customHeight" |
| | | style="width: 50px;height: 19px;border: 0px;" placeholder="高/mm" /></a></li> |
| | | <li><a class="hiprint-tizee-btn" onclick="clearTemplate()">清空</a></li> |
| | | <!-- <li> <a class="btn hiprint-toolbar-item " |
| | | style="color: #fff;background-color: #d9534f;border-color: #d43f3a;" |
| | | id="preview">快速预览</a> </li> --> |
| | | <li> <a id="directPrint" class="btn hiprint-toolbar-item " |
| | | style="color: #fff;background-color: #d9534f; border-color: #d43f3a;">打印</a> |
| | | </li> |
| | | <!-- <li> |
| | | <a class="btn hiprint-toolbar-item" |
| | | style="color: #fff;background-color: #d9534f; border-color: #d43f3a;" |
| | | id="A4_getJson_toTextarea" onclick="BtnSubmit_Click()">保存</a> |
| | | </li> --> |
| | | </ul> |
| | | <div style="clear:both;"></div> |
| | | </div> |
| | | <!--打印主体部分--> |
| | | <div id="hiprint-printTemplate" class="hiprint-printTemplate" style="margin-top:20px;"> |
| | | |
| | | </div> |
| | | <textarea class="form-control" rows="10" id="A4_textarea_json" style="display: none;"></textarea> |
| | | </div> |
| | | <!--右侧div--> |
| | | <div class="layui-col-xs2" style="margin-left: 6%;max-height:260mm; overflow-y: scroll;"> |
| | | <div id="PrintElementOptionSetting" style="margin-top: 10px;"></div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <script src="../../js/jquery-3.5.1.min.js"></script> |
| | | <script src="../../js/jquery.cookie.js"></script> |
| | | <script src="../../js/hiprint/content/bootstrap.min.js"></script> |
| | | <script src="../../js/HiPrint/polyfill.min.js"></script> |
| | | <script src="../../js/HiPrint/plugins/jquery.minicolors.min.js"></script> |
| | | <script src="../../js/HiPrint/plugins/JsBarcode.all.min.js"></script> |
| | | <script src="../../js/HiPrint/plugins/qrcode.js"></script> |
| | | <script src="../../js/HiPrint/hiprint.bundle.js"></script> |
| | | <script src="../../js/HiPrint/plugins/jquery.hiwprint.js"></script> |
| | | <!-- <script src="../../js/HiPrint/plugins/socket.io.js"></script> --> |
| | | <script src="../../js/HiPrint/plugins/config-etype-provider.js"></script> |
| | | <script src="../../js/HiPrint/plugins/jspdf/canvas2image.js"></script> |
| | | <script src="../../js/HiPrint/plugins/jspdf/canvg.min.js"></script> |
| | | <script src="../../js/HiPrint/plugins/jspdf/html2canvas.min.js"></script> |
| | | <script src="../../js/HiPrint/plugins/jspdf/jspdf.min.js"></script> |
| | | <script src="../../js/HiPrint/plugins/print-data-list.js"></script> |
| | | <script src="../../js/HiPrint/hiprint.config.js"></script> |
| | | <script src="../../layuiadmin/layui/layui.js"></script> |
| | | <script src="../../js/public.js"></script> |
| | | <script> |
| | | var configPrintJson; |
| | | var datalist = []; |
| | | //初始化打印插件渲染 |
| | | $(".hiprintEpContainer").html(""); //清除div内容 |
| | | |
| | | |
| | | |
| | | var hiprintTemplate; |
| | | // var JsonData = JSON.parse('{"panels":[{"index":0,"height":50,"width":50,"paperHeader":0,"paperFooter":141.73228346456693,"printElements":[{"tid":"configModule.SkuName","options":{"left":9,"top":12,"height":9.75,"width":120}},{"tid":"configModule.SkuNo","options":{"left":9,"top":37.5,"height":78,"width":120,"textType":"qrcode"}}],"paperNumberLeft":178.5,"paperNumberTop":123}]}') |
| | | var JsonData = {}; |
| | | setTimeout(function () { |
| | | var printType = $("#printType").val(); |
| | | datalist = getPrintDataList()(printType); |
| | | synData(IP + "/sys/GetDefaultPrintTemplate?Type=" + printType, {}, 'get', function (res) { |
| | | if (res.code == 0) { //成功 |
| | | hiprint.init({ |
| | | providers: [new configElementTypeProvider()] |
| | | }); |
| | | //设置左侧拖拽事件 |
| | | hiprint.PrintElementTypeManager.build('.hiprintEpContainer', 'testModule'); |
| | | JsonData = JSON.parse(res.data.PositionJson); |
| | | $("#customWidth").val(JsonData.panels[0].width); |
| | | $("#customHeight").val(JsonData.panels[0].height); |
| | | hiprintTemplate = new hiprint.PrintTemplate({ |
| | | template: JsonData,//模板JSON |
| | | settingContainer: '#PrintElementOptionSetting', |
| | | paginationContainer: '.hiprint-printPagination' |
| | | }); |
| | | |
| | | //打印设计 |
| | | hiprintTemplate.design('#hiprint-printTemplate'); |
| | | |
| | | //打印 |
| | | //这里获取上级页面的printData数据打印 |
| | | // var printData = deepClone(parent.printData); |
| | | var printData = JSON.parse($("#printData").val()); |
| | | hiprintTemplate.print(printData, '打印'); |
| | | parent.layer.closeAll(); |
| | | } |
| | | else //不成功 |
| | | { |
| | | layer.msg(res.msg, { |
| | | icon: 2, |
| | | time: 2000 //2秒关闭(如果不配置,默认是3秒) |
| | | }, function () { parent.layer.closeAll(); }); |
| | | } |
| | | }); |
| | | }, 100); |
| | | |
| | | |
| | | |
| | | $('#directPrint').click(function () { |
| | | hiprintTemplate.print(printData); |
| | | }); |
| | | </script> |
| | | </body> |
| | | |
| | | </html> |
| | |
| | | /// <summary> |
| | | /// 数量 |
| | | /// </summary> |
| | | public string Qty { get; set; } |
| | | public decimal? Qty { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 锁定数量 |
| | | /// </summary> |
| | | public string LockQty { get; set; } |
| | | public decimal? LockQty { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 冻结数量 |
| | | /// </summary> |
| | | public string FrozenQty { get; set; } |
| | | public decimal? FrozenQty { get; set; } |
| | | |
| | | |
| | | /// <summary> |
| | | /// 可抽检数量 |
| | | /// </summary> |
| | | public decimal? InspectQty { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 剩余数量 |
| | |
| | | |
| | | var exAllotList = new List<BllExportAllot>(); |
| | | var assign = new AllotSku(); |
| | | var specialSku = new List<string>();//特殊物料集合,无需托盘上全部分配的 |
| | | var specialSku = new List<string>();//特殊物料集合, 无需托盘上全部分配的 |
| | | Db.BeginTran(); |
| | | try |
| | | { |
| | |
| | | } |
| | | else |
| | | { |
| | | qty += assign.AllotPallets(stockDetail, needQty, pNum, bNum, stockQtyDic); |
| | | qty += assign.AllotPallets(stockDetail, needQty, pNum, bNum, stockQtyDic, detail.LotNo, detail.IsMixBox); |
| | | } |
| | | |
| | | foreach (var sc in stockQtyDic) |
| | |
| | | Dictionary<string, int> zxQtyDic = new Dictionary<string, int>();//托出整箱数 |
| | | //分配货物 |
| | | //assign.AllocatePallets(stocks, pNum, bNum, needQty, stockQtyDic, zxQtyDic); |
| | | var qty = assign.AllotPallets(stockDetail, decimal.Parse(needQty.ToString()), pNum, bNum, stockQtyDic); |
| | | var qty = assign.AllotPallets(stockDetail, decimal.Parse(needQty.ToString()), pNum, bNum, stockQtyDic, detail.LotNo, detail.IsMixBox); |
| | | |
| | | foreach (var sc in stockQtyDic) |
| | | { |
| | |
| | | using System.Runtime.Intrinsics.X86; |
| | | using System.Security.Claims; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using Model.ModelDto; |
| | | using Model.ModelDto.DataDto; |
| | | using Model.ModelDto.SysDto; |
| | | using Model.ModelVm.DataVm; |
| | | using Model.ModelVm.SysVm; |
| | | using SqlSugar; |
| | | using WMS.DAL; |
| | | using WMS.Entity.Context; |
| | |
| | | /// <summary> |
| | | /// 查询库存总量 |
| | | /// </summary> |
| | | /// <param name="selectType">查询类型 0:物料信息 1:批次信息 2:质检信息 3:货主信息</param> |
| | | /// <param name="skuNo">物料编码</param> |
| | | /// <param name="skuName">物料名称</param> |
| | | /// <param name="ownerNo">货主编码</param> |
| | | /// <param name="ownerName">货主名称</param> |
| | | /// <param name="lotNo">批次</param> |
| | | /// <param name="status">库存状态</param> |
| | | /// <param name="inspectStatus">质检状态</param> |
| | | /// <returns></returns> |
| | | public List<MateDataStockDto> GetDataStockList(string skuNo, string skuName, string ownerNo, string ownerName, string lotNo) |
| | | public async Task<List<MateDataStockDto>> GetDataStockList(string selectType, string skuNo, string skuName, string ownerNo, string ownerName, string lotNo, string status, string inspectStatus) |
| | | { |
| | | string str = "select stock.SkuNo,stock.SkuName,stock.LotNo,stock.LotText,stock.Standard,stock.Qty," + |
| | | "stock.LockQty,stock.FrozenQty,stock.OwnerNo,stock.OwnerName,(mate.Weight * stock.Qty) WeightSum " + |
| | | "from DataStock stock " + |
| | | "left join SysMaterials mate on stock.SkuNo = mate.SkuNo " + |
| | | "Where stock.IsDel = @isdel and mate.IsDel = 0 "; |
| | | //判断物料编码是否为空 |
| | | if (!string.IsNullOrEmpty(skuNo)) |
| | | List<MateDataStockDto> modUser = new List<MateDataStockDto>(); |
| | | if (string.IsNullOrEmpty(selectType)) |
| | | { |
| | | str += " and stock.SkuNo like @skuno"; |
| | | } |
| | | //判断物料名称是否为空 |
| | | if (!string.IsNullOrEmpty(skuName)) |
| | | { |
| | | str += " and stock.SkuName like @skuname"; |
| | | } |
| | | //判断货主编码是否为空 |
| | | if (!string.IsNullOrEmpty(ownerNo)) |
| | | { |
| | | str += " and stock.OwnerNo like @ownerNo"; |
| | | } |
| | | //判断货主名称是否为空 |
| | | if (!string.IsNullOrEmpty(ownerName)) |
| | | { |
| | | str += " and stock.OwnerName like @ownerName"; |
| | | } |
| | | //判断货主名称是否为空 |
| | | if (!string.IsNullOrEmpty(lotNo)) |
| | | { |
| | | str += " and stock.LotNo like @lotNo"; |
| | | } |
| | | //排序 |
| | | str += " order by stock.SkuNo"; |
| | | List<MateDataStockDto> StockList = Db.Ado.SqlQuery<MateDataStockDto>(str, new |
| | | { |
| | | isdel = "0", //是否删除 |
| | | skuno = "%" + skuNo + "%", //物料编码 |
| | | skuname = "%" + skuName + "%", //物料名称 |
| | | ownerNo = "%" + ownerNo + "%", //货主编码 |
| | | ownerName = "%" + ownerName + "%", //货主名称 |
| | | lotNo = "%" + lotNo + "%", //批次号 |
| | | }); |
| | | modUser = await Db.Queryable<DataStock>() |
| | | .WhereIF(!string.IsNullOrEmpty(skuNo), a => a.SkuNo == skuNo) |
| | | .WhereIF(!string.IsNullOrEmpty(skuName), a => a.SkuName == skuName) |
| | | .WhereIF(!string.IsNullOrEmpty(ownerNo), a => a.OwnerNo == ownerNo) |
| | | .WhereIF(!string.IsNullOrEmpty(ownerName), a => a.OwnerName == ownerName) |
| | | .WhereIF(!string.IsNullOrEmpty(lotNo), a => a.LotNo == lotNo) |
| | | .Where(a => a.IsDel == "0") |
| | | .Select(a => new MateDataStockDto() |
| | | { |
| | | SkuNo = a.SkuNo, //物料编码 |
| | | SkuName = a.SkuName, //物料名称 |
| | | Standard = a.Standard, //规格 |
| | | LotNo = a.LotNo, //批次 |
| | | LotText = a.LotText, //批次描述 |
| | | OwnerNo = a.OwnerNo, //货主编码 |
| | | OwnerName = a.OwnerName, //货主名称 |
| | | Status = status, //库存状态 |
| | | InspectStatus = inspectStatus, //质检状态 |
| | | Qty = SqlFunc.Subqueryable<DataStockDetail>() |
| | | .WhereIF(!string.IsNullOrEmpty(status), s => s.Status == status) |
| | | .WhereIF(!string.IsNullOrEmpty(inspectStatus), s => s.InspectStatus == inspectStatus) |
| | | .Where(s => s.IsDel == "0" && s.LotNo == a.LotNo) |
| | | .Sum(s => s.Qty), //库存数量 |
| | | //Qty = SqlFunc.AggregateSum(b.Qty), //库存数量 |
| | | LockQty = SqlFunc.Subqueryable<DataStockDetail>() |
| | | .WhereIF(!string.IsNullOrEmpty(status), s => s.Status == status) |
| | | .WhereIF(!string.IsNullOrEmpty(inspectStatus), s => s.InspectStatus == inspectStatus) |
| | | .Where(s => s.IsDel == "0" && s.LotNo == a.LotNo) |
| | | .Sum(s => s.LockQty), //锁定数量 |
| | | FrozenQty = SqlFunc.Subqueryable<DataStockDetail>() |
| | | .WhereIF(!string.IsNullOrEmpty(status), s => s.Status == status) |
| | | .WhereIF(!string.IsNullOrEmpty(inspectStatus), s => s.InspectStatus == inspectStatus) |
| | | .Where(s => s.IsDel == "0" && s.LotNo == a.LotNo) |
| | | .Sum(s => s.FrozenQty), //冻结数量 |
| | | InspectQty = SqlFunc.Subqueryable<DataStockDetail>() |
| | | .WhereIF(!string.IsNullOrEmpty(status), s => s.Status == status) |
| | | .WhereIF(!string.IsNullOrEmpty(inspectStatus), s => s.InspectStatus == inspectStatus) |
| | | .Where(s => s.IsDel == "0" && s.LotNo == a.LotNo) |
| | | .Sum(s => s.InspectQty), //可抽检数量 |
| | | }).ToListAsync(); |
| | | |
| | | //库存总量 |
| | | List<MateDataStockDto> StockListDto = new List<MateDataStockDto>(); |
| | | |
| | | foreach (var item in StockList) |
| | | { |
| | | StockListDto.Add(item); |
| | | ////判断库存总量是否拥有物料 |
| | | //if (StockListDto.Count > 0) |
| | | //{ |
| | | // int i = 0; |
| | | // //foreach循环库存总量 |
| | | // foreach (var dto in StockListDto) |
| | | // { |
| | | // //判断物料和批次是否相同 |
| | | // if (dto.SkuNo == item.SkuNo && dto.LotNo == item.LotNo) |
| | | // { |
| | | // dto.Qty = (Convert.ToDecimal(dto.Qty) + Convert.ToDecimal(item.Qty)).ToString(); |
| | | // dto.FrozenQty = (Convert.ToDecimal(dto.FrozenQty) + Convert.ToDecimal(item.FrozenQty)).ToString(); |
| | | // dto.LockQty = (Convert.ToDecimal(dto.LockQty) + Convert.ToDecimal(item.LockQty)).ToString(); |
| | | // dto.ResidueQty= (Convert.ToDecimal(dto.ResidueQty) + Convert.ToDecimal(item.ResidueQty)).ToString(); |
| | | // break; |
| | | // } |
| | | // i += 1; |
| | | // //判断已有相同物料 |
| | | // if (i == StockListDto.Count) |
| | | // { |
| | | // StockListDto.Add(item); |
| | | // break; |
| | | // } |
| | | // } |
| | | //} |
| | | //else |
| | | //{ |
| | | // StockListDto.Add(item); |
| | | // continue; |
| | | //} |
| | | return modUser; |
| | | } |
| | | else |
| | | { |
| | | var selectList = new List<DataStockDetail>(); |
| | | switch (selectType) |
| | | { |
| | | case "0": // 物料信息 |
| | | modUser = await Db.Queryable<DataStock>() |
| | | .Where(a => a.IsDel == "0") |
| | | .GroupBy(a => new { a.SkuNo, a.SkuName, a.Standard }) |
| | | .Select(a => new MateDataStockDto() |
| | | { |
| | | SkuNo = a.SkuNo, //物料编码 |
| | | SkuName = a.SkuName, //物料名称 |
| | | Standard = a.Standard, //规格 |
| | | Qty = SqlFunc.Subqueryable<DataStockDetail>() |
| | | .WhereIF(!string.IsNullOrEmpty(skuNo), s => s.SkuNo == skuNo) |
| | | .WhereIF(!string.IsNullOrEmpty(skuName), s => s.SkuName == skuName) |
| | | .WhereIF(!string.IsNullOrEmpty(ownerNo), s => s.OwnerNo == ownerNo) |
| | | .WhereIF(!string.IsNullOrEmpty(ownerName), s => s.OwnerName == ownerName) |
| | | .WhereIF(!string.IsNullOrEmpty(lotNo), s => s.LotNo == lotNo) |
| | | .WhereIF(!string.IsNullOrEmpty(status), s => s.Status == status) |
| | | .WhereIF(!string.IsNullOrEmpty(inspectStatus), s => s.InspectStatus == inspectStatus) |
| | | .Where(s => s.IsDel == "0" && s.SkuNo == a.SkuNo) |
| | | .Sum(s => s.Qty), //库存数量 |
| | | LockQty = SqlFunc.Subqueryable<DataStockDetail>() |
| | | .WhereIF(!string.IsNullOrEmpty(skuNo), s => s.SkuNo == skuNo) |
| | | .WhereIF(!string.IsNullOrEmpty(skuName), s => s.SkuName == skuName) |
| | | .WhereIF(!string.IsNullOrEmpty(ownerNo), s => s.OwnerNo == ownerNo) |
| | | .WhereIF(!string.IsNullOrEmpty(ownerName), s => s.OwnerName == ownerName) |
| | | .WhereIF(!string.IsNullOrEmpty(lotNo), s => s.LotNo == lotNo) |
| | | .WhereIF(!string.IsNullOrEmpty(status), s => s.Status == status) |
| | | .WhereIF(!string.IsNullOrEmpty(inspectStatus), s => s.InspectStatus == inspectStatus) |
| | | .Where(s => s.IsDel == "0" && s.SkuNo == a.SkuNo) |
| | | .Sum(s => s.LockQty), //锁定数量 |
| | | FrozenQty = SqlFunc.Subqueryable<DataStockDetail>() |
| | | .WhereIF(!string.IsNullOrEmpty(skuNo), s => s.SkuNo == skuNo) |
| | | .WhereIF(!string.IsNullOrEmpty(skuName), s => s.SkuName == skuName) |
| | | .WhereIF(!string.IsNullOrEmpty(ownerNo), s => s.OwnerNo == ownerNo) |
| | | .WhereIF(!string.IsNullOrEmpty(ownerName), s => s.OwnerName == ownerName) |
| | | .WhereIF(!string.IsNullOrEmpty(lotNo), s => s.LotNo == lotNo) |
| | | .WhereIF(!string.IsNullOrEmpty(status), s => s.Status == status) |
| | | .WhereIF(!string.IsNullOrEmpty(inspectStatus), s => s.InspectStatus == inspectStatus) |
| | | .Where(s => s.IsDel == "0" && s.SkuNo == a.SkuNo) |
| | | .Sum(s => s.FrozenQty), //冻结数量 |
| | | InspectQty = SqlFunc.Subqueryable<DataStockDetail>() |
| | | .WhereIF(!string.IsNullOrEmpty(skuNo), s => s.SkuNo == skuNo) |
| | | .WhereIF(!string.IsNullOrEmpty(skuName), s => s.SkuName == skuName) |
| | | .WhereIF(!string.IsNullOrEmpty(ownerNo), s => s.OwnerNo == ownerNo) |
| | | .WhereIF(!string.IsNullOrEmpty(ownerName), s => s.OwnerName == ownerName) |
| | | .WhereIF(!string.IsNullOrEmpty(lotNo), s => s.LotNo == lotNo) |
| | | .WhereIF(!string.IsNullOrEmpty(status), s => s.Status == status) |
| | | .WhereIF(!string.IsNullOrEmpty(inspectStatus), s => s.InspectStatus == inspectStatus) |
| | | .Where(s => s.IsDel == "0" && s.SkuNo == a.SkuNo) |
| | | .Sum(s => s.InspectQty), //可抽检数量 |
| | | }) |
| | | .ToListAsync(); |
| | | |
| | | return StockListDto; |
| | | return modUser; |
| | | case "1": // 批次信息 |
| | | |
| | | modUser = await Db.Queryable<DataStock>() |
| | | .Where(a => a.IsDel == "0") |
| | | .GroupBy(a => new { a.LotNo, a.LotText }) |
| | | .Select(a => new MateDataStockDto() |
| | | { |
| | | LotNo = a.LotNo, //批次 |
| | | LotText = a.LotText, //批次描述 |
| | | Qty = SqlFunc.Subqueryable<DataStockDetail>() |
| | | .WhereIF(!string.IsNullOrEmpty(skuNo), s => s.SkuNo == skuNo) |
| | | .WhereIF(!string.IsNullOrEmpty(skuName), s => s.SkuName == skuName) |
| | | .WhereIF(!string.IsNullOrEmpty(ownerNo), s => s.OwnerNo == ownerNo) |
| | | .WhereIF(!string.IsNullOrEmpty(ownerName), s => s.OwnerName == ownerName) |
| | | .WhereIF(!string.IsNullOrEmpty(lotNo), s => s.LotNo == lotNo) |
| | | .WhereIF(!string.IsNullOrEmpty(status), s => s.Status == status) |
| | | .WhereIF(!string.IsNullOrEmpty(inspectStatus), s => s.InspectStatus == inspectStatus) |
| | | .Where(s => s.IsDel == "0" && s.LotNo == a.LotNo) |
| | | .Sum(s => s.Qty), //库存数量 |
| | | LockQty = SqlFunc.Subqueryable<DataStockDetail>() |
| | | .WhereIF(!string.IsNullOrEmpty(skuNo), s => s.SkuNo == skuNo) |
| | | .WhereIF(!string.IsNullOrEmpty(skuName), s => s.SkuName == skuName) |
| | | .WhereIF(!string.IsNullOrEmpty(ownerNo), s => s.OwnerNo == ownerNo) |
| | | .WhereIF(!string.IsNullOrEmpty(ownerName), s => s.OwnerName == ownerName) |
| | | .WhereIF(!string.IsNullOrEmpty(lotNo), s => s.LotNo == lotNo) |
| | | .WhereIF(!string.IsNullOrEmpty(status), s => s.Status == status) |
| | | .WhereIF(!string.IsNullOrEmpty(inspectStatus), s => s.InspectStatus == inspectStatus) |
| | | .Where(s => s.IsDel == "0" && s.LotNo == a.LotNo) |
| | | .Sum(s => s.LockQty), //锁定数量 |
| | | FrozenQty = SqlFunc.Subqueryable<DataStockDetail>() |
| | | .WhereIF(!string.IsNullOrEmpty(skuNo), s => s.SkuNo == skuNo) |
| | | .WhereIF(!string.IsNullOrEmpty(skuName), s => s.SkuName == skuName) |
| | | .WhereIF(!string.IsNullOrEmpty(ownerNo), s => s.OwnerNo == ownerNo) |
| | | .WhereIF(!string.IsNullOrEmpty(ownerName), s => s.OwnerName == ownerName) |
| | | .WhereIF(!string.IsNullOrEmpty(lotNo), s => s.LotNo == lotNo) |
| | | .WhereIF(!string.IsNullOrEmpty(status), s => s.Status == status) |
| | | .WhereIF(!string.IsNullOrEmpty(inspectStatus), s => s.InspectStatus == inspectStatus) |
| | | .Where(s => s.IsDel == "0" && s.LotNo == a.LotNo) |
| | | .Sum(s => s.FrozenQty), //冻结数量 |
| | | InspectQty = SqlFunc.Subqueryable<DataStockDetail>() |
| | | .WhereIF(!string.IsNullOrEmpty(skuNo), s => s.SkuNo == skuNo) |
| | | .WhereIF(!string.IsNullOrEmpty(skuName), s => s.SkuName == skuName) |
| | | .WhereIF(!string.IsNullOrEmpty(ownerNo), s => s.OwnerNo == ownerNo) |
| | | .WhereIF(!string.IsNullOrEmpty(ownerName), s => s.OwnerName == ownerName) |
| | | .WhereIF(!string.IsNullOrEmpty(lotNo), s => s.LotNo == lotNo) |
| | | .WhereIF(!string.IsNullOrEmpty(status), s => s.Status == status) |
| | | .WhereIF(!string.IsNullOrEmpty(inspectStatus), s => s.InspectStatus == inspectStatus) |
| | | .Where(s => s.IsDel == "0" && s.LotNo == a.LotNo) |
| | | .Sum(s => s.InspectQty), //可抽检数量 |
| | | }) |
| | | .ToListAsync(); |
| | | |
| | | return modUser; |
| | | case "2": // 质检信息 |
| | | modUser = await Db.Queryable<DataStock>() |
| | | .LeftJoin<DataStockDetail>((a, b) => a.LotNo == b.LotNo) |
| | | .WhereIF(!string.IsNullOrEmpty(skuNo), a => a.SkuNo == skuNo) |
| | | .WhereIF(!string.IsNullOrEmpty(skuName), a => a.SkuName == skuName) |
| | | .WhereIF(!string.IsNullOrEmpty(ownerNo), a => a.OwnerNo == ownerNo) |
| | | .WhereIF(!string.IsNullOrEmpty(ownerName), a => a.OwnerName == ownerName) |
| | | .WhereIF(!string.IsNullOrEmpty(lotNo), a => a.LotNo == lotNo) |
| | | .WhereIF(!string.IsNullOrEmpty(status), (a, b) => b.Status == status) |
| | | .WhereIF(!string.IsNullOrEmpty(inspectStatus), (a, b) => b.InspectStatus == inspectStatus) |
| | | .Where(a => a.IsDel == "0") |
| | | .GroupBy((a, b) => b.InspectStatus) |
| | | .Select((a, b) => new MateDataStockDto() |
| | | { |
| | | InspectStatus = b.InspectStatus, //质检状态 |
| | | Qty = SqlFunc.AggregateSum(b.Qty), //库存数量 |
| | | LockQty = SqlFunc.AggregateSum(b.LockQty), //锁定数量 |
| | | FrozenQty = SqlFunc.AggregateSum(b.FrozenQty), //冻结数量 |
| | | InspectQty = SqlFunc.AggregateSum(b.InspectQty), //可抽检数量 |
| | | }) |
| | | .ToListAsync(); |
| | | |
| | | return modUser; |
| | | case "3": // 货主信息 |
| | | |
| | | modUser = await Db.Queryable<DataStock>() |
| | | .Where(a => a.IsDel == "0") |
| | | .GroupBy(a => new { a.OwnerNo, a.OwnerName }) |
| | | .Select(a => new MateDataStockDto() |
| | | { |
| | | OwnerNo = a.OwnerNo, //货主编码 |
| | | OwnerName = a.OwnerName, //货主名称 |
| | | Qty = SqlFunc.Subqueryable<DataStockDetail>() |
| | | .WhereIF(!string.IsNullOrEmpty(skuNo), s => s.SkuNo == skuNo) |
| | | .WhereIF(!string.IsNullOrEmpty(skuName), s => s.SkuName == skuName) |
| | | .WhereIF(!string.IsNullOrEmpty(ownerNo), s => s.OwnerNo == ownerNo) |
| | | .WhereIF(!string.IsNullOrEmpty(ownerName), s => s.OwnerName == ownerName) |
| | | .WhereIF(!string.IsNullOrEmpty(lotNo), s => s.LotNo == lotNo) |
| | | .WhereIF(!string.IsNullOrEmpty(status), s => s.Status == status) |
| | | .WhereIF(!string.IsNullOrEmpty(inspectStatus), s => s.InspectStatus == inspectStatus) |
| | | .Where(s => s.IsDel == "0" && s.OwnerNo == a.OwnerNo) |
| | | .Sum(s => s.Qty), //库存数量 |
| | | LockQty = SqlFunc.Subqueryable<DataStockDetail>() |
| | | .WhereIF(!string.IsNullOrEmpty(skuNo), s => s.SkuNo == skuNo) |
| | | .WhereIF(!string.IsNullOrEmpty(skuName), s => s.SkuName == skuName) |
| | | .WhereIF(!string.IsNullOrEmpty(ownerNo), s => s.OwnerNo == ownerNo) |
| | | .WhereIF(!string.IsNullOrEmpty(ownerName), s => s.OwnerName == ownerName) |
| | | .WhereIF(!string.IsNullOrEmpty(lotNo), s => s.LotNo == lotNo) |
| | | .WhereIF(!string.IsNullOrEmpty(status), s => s.Status == status) |
| | | .WhereIF(!string.IsNullOrEmpty(inspectStatus), s => s.InspectStatus == inspectStatus) |
| | | .Where(s => s.IsDel == "0" && s.OwnerNo == a.OwnerNo) |
| | | .Sum(s => s.LockQty), //锁定数量 |
| | | FrozenQty = SqlFunc.Subqueryable<DataStockDetail>() |
| | | .WhereIF(!string.IsNullOrEmpty(skuNo), s => s.SkuNo == skuNo) |
| | | .WhereIF(!string.IsNullOrEmpty(skuName), s => s.SkuName == skuName) |
| | | .WhereIF(!string.IsNullOrEmpty(ownerNo), s => s.OwnerNo == ownerNo) |
| | | .WhereIF(!string.IsNullOrEmpty(ownerName), s => s.OwnerName == ownerName) |
| | | .WhereIF(!string.IsNullOrEmpty(lotNo), s => s.LotNo == lotNo) |
| | | .WhereIF(!string.IsNullOrEmpty(status), s => s.Status == status) |
| | | .WhereIF(!string.IsNullOrEmpty(inspectStatus), s => s.InspectStatus == inspectStatus) |
| | | .Where(s => s.IsDel == "0" && s.OwnerNo == a.OwnerNo) |
| | | .Sum(s => s.FrozenQty), //冻结数量 |
| | | InspectQty = SqlFunc.Subqueryable<DataStockDetail>() |
| | | .WhereIF(!string.IsNullOrEmpty(skuNo), s => s.SkuNo == skuNo) |
| | | .WhereIF(!string.IsNullOrEmpty(skuName), s => s.SkuName == skuName) |
| | | .WhereIF(!string.IsNullOrEmpty(ownerNo), s => s.OwnerNo == ownerNo) |
| | | .WhereIF(!string.IsNullOrEmpty(ownerName), s => s.OwnerName == ownerName) |
| | | .WhereIF(!string.IsNullOrEmpty(lotNo), s => s.LotNo == lotNo) |
| | | .WhereIF(!string.IsNullOrEmpty(status), s => s.Status == status) |
| | | .WhereIF(!string.IsNullOrEmpty(inspectStatus), s => s.InspectStatus == inspectStatus) |
| | | .Where(s => s.IsDel == "0" && s.OwnerNo == a.OwnerNo) |
| | | .Sum(s => s.InspectQty), //可抽检数量 |
| | | }) |
| | | .ToListAsync(); |
| | | return modUser; |
| | | default: |
| | | break; |
| | | } |
| | | |
| | | return modUser; |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | //判断物料是否相同 |
| | | if (dto.SkuNo == item.SkuNo) |
| | | { |
| | | dto.Qty = (Convert.ToInt32(dto.Qty) + Convert.ToInt32(item.Qty)).ToString(); |
| | | dto.FrozenQty = (Convert.ToInt32(dto.FrozenQty) + Convert.ToInt32(item.FrozenQty)).ToString(); |
| | | dto.LockQty = (Convert.ToInt32(dto.LockQty) + Convert.ToInt32(item.LockQty)).ToString(); |
| | | dto.Qty = Convert.ToInt32(dto.Qty) + Convert.ToInt32(item.Qty); |
| | | dto.FrozenQty = Convert.ToInt32(dto.FrozenQty) + Convert.ToInt32(item.FrozenQty); |
| | | dto.LockQty = Convert.ToInt32(dto.LockQty) + Convert.ToInt32(item.LockQty); |
| | | dto.ResidueQty = (Convert.ToInt32(dto.ResidueQty) + Convert.ToInt32(item.ResidueQty)).ToString(); |
| | | break; |
| | | } |
| | |
| | | /// <param name="fullPalletQty">满托数量</param> |
| | | /// <param name="fullBoxQty">满箱数量</param> |
| | | /// <param name="stockQtyDic">托出库物品数 key:库存托盘表的ID、val:托盘上的数量</param> |
| | | /// <param name="lotNo">批次</param> |
| | | /// <param name="isMixBox">是否接受拼箱 0:否 1:是</param> |
| | | /// <returns></returns> |
| | | public decimal AllotPallets(List<DataStockDetail> palletList, decimal needQty, int fullPalletQty, int fullBoxQty, Dictionary<int, decimal> stockQtyDic) |
| | | public decimal AllotPallets(List<DataStockDetail> palletList, decimal needQty, int fullPalletQty, int fullBoxQty, Dictionary<int, decimal> stockQtyDic,string lotNo,string isMixBox) |
| | | { |
| | | //优先先进先出(快过期的先出) |
| | | //优先零箱、零托(出完零箱出整箱) |
| | |
| | | { |
| | | var ztNum = needQty / fullPalletQty;//需要整托数 |
| | | |
| | | |
| | | |
| | | var zps = list.Where(s => s.Qty >= fullPalletQty).ToList();//整托 |
| | | var sps = list.Where(s => s.Qty < fullPalletQty).ToList();//散托(有可能是被锁定了数量的) |
| | | |
| | |
| | | //散托 |
| | | foreach (var s in st) |
| | | { |
| | | var detailQty = decimal.Parse((s.Qty - s.LockQty - s.FrozenQty).ToString()); |
| | | decimal otherLotQty = 0;//混箱中其他批次数量 |
| | | //不接受拼箱 |
| | | if (isMixBox == "0") |
| | | { |
| | | //查找出混箱集合 |
| | | otherLotQty = GetMixBoxQty(s.Id, lotNo); |
| | | } |
| | | var detailQty = decimal.Parse((s.Qty - s.LockQty - s.FrozenQty - otherLotQty).ToString()); |
| | | if (needQty - qty < detailQty) |
| | | { |
| | | var num = needQty - qty; |
| | |
| | | var zt = zps.OrderBy(s => s.ExpirationTime).ToList();//所有未使用的托盘(未被分配的) |
| | | foreach (var ss in zt) |
| | | { |
| | | var detailQty = decimal.Parse((ss.Qty - ss.LockQty - ss.FrozenQty).ToString()); |
| | | decimal otherLotQty = 0;//混箱中其他批次数量 |
| | | //不接受拼箱 |
| | | if (isMixBox == "0") |
| | | { |
| | | //查找出混箱集合 |
| | | otherLotQty = GetMixBoxQty(ss.Id, lotNo); |
| | | } |
| | | var detailQty = decimal.Parse((ss.Qty - ss.LockQty - ss.FrozenQty - otherLotQty).ToString()); |
| | | if (needQty - qty < detailQty) |
| | | { |
| | | var num = needQty - qty; |
| | |
| | | break; |
| | | } |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | } |
| | | else if (allotSet == 1)//优先整托(分配合适的整托数量) |
| | | { |
| | |
| | | var zt = zps.OrderBy(s => s.ExpirationTime).ToList();//所有未使用的托盘(未被分配的) |
| | | foreach (var ss in zt) |
| | | { |
| | | var detailQty = decimal.Parse((ss.Qty - ss.LockQty - ss.FrozenQty).ToString()); |
| | | decimal otherLotQty = 0;//混箱中其他批次数量 |
| | | //不接受拼箱 |
| | | if (isMixBox == "0") |
| | | { |
| | | //查找出混箱集合 |
| | | otherLotQty = GetMixBoxQty(ss.Id, lotNo); |
| | | } |
| | | var detailQty = decimal.Parse((ss.Qty - ss.LockQty - ss.FrozenQty - otherLotQty).ToString()); |
| | | if (needQty - qty < detailQty) |
| | | { |
| | | break; |
| | |
| | | |
| | | foreach (var ss in zt) |
| | | { |
| | | var detailQty = decimal.Parse((ss.Qty - ss.LockQty - ss.FrozenQty).ToString()); |
| | | decimal otherLotQty = 0;//混箱中其他批次数量 |
| | | //不接受拼箱 |
| | | if (isMixBox == "0") |
| | | { |
| | | //查找出混箱集合 |
| | | otherLotQty = GetMixBoxQty(ss.Id, lotNo); |
| | | } |
| | | var detailQty = decimal.Parse((ss.Qty - ss.LockQty - ss.FrozenQty - otherLotQty).ToString()); |
| | | if (needQty - qty < detailQty) |
| | | { |
| | | var num = needQty - qty; |
| | |
| | | var zt = zps.Where(s => !sIds.Contains(s.Id)).OrderBy(s => s.ExpirationTime).ThenBy(m => m.Qty - m.LockQty - m.FrozenQty).ToList();//所有未使用(未被分配的) |
| | | foreach (var ss in zt) |
| | | { |
| | | var detailQty = decimal.Parse((ss.Qty - ss.LockQty - ss.FrozenQty).ToString()); |
| | | decimal otherLotQty = 0;//混箱中其他批次数量 |
| | | //不接受拼箱 |
| | | if (isMixBox == "0") |
| | | { |
| | | //查找出混箱集合 |
| | | otherLotQty = GetMixBoxQty(ss.Id, lotNo); |
| | | } |
| | | var detailQty = decimal.Parse((ss.Qty - ss.LockQty - ss.FrozenQty - otherLotQty).ToString()); |
| | | if (needQty - qty < detailQty) |
| | | { |
| | | var num = needQty - qty; |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | } |
| | | /// <summary> |
| | | /// 查找出混箱中其他批次总数量 |
| | | /// </summary> |
| | | /// <param name="stockDetailId"></param> |
| | | /// <param name="lotNo"></param> |
| | | /// <returns></returns> |
| | | private decimal GetMixBoxQty(int stockDetailId,string lotNo) |
| | | { |
| | | var contextDb = DataContext.Db; |
| | | //查找出混箱集合 |
| | | List<string> mixBoxList = contextDb.Queryable<DataBoxInfo>() |
| | | .Where(w => w.IsDel == "0" && w.StockDetailId == stockDetailId) |
| | | .GroupBy(g => g.LotNo) |
| | | .Having(h => SqlFunc.AggregateCount(h.LotNo) > 1) |
| | | .Select(s => s.BoxNo).ToList(); |
| | | |
| | | decimal otherLotQty = contextDb.Queryable<DataBoxInfo>() |
| | | .Where(w => w.IsDel == "0" && w.StockDetailId == stockDetailId && mixBoxList.Contains(w.BoxNo) && w.LotNo != lotNo) |
| | | .Sum(s => s.Qty); |
| | | |
| | | return otherLotQty; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// JC23领料出库分配货物(分配托盘上全部物料,防止四楼不同投料口分配同一托盘物料冲突) |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WMS.Entity.DataEntity; |
| | | using WMS.Entity.SysEntity; |
| | | |
| | |
| | | /// <summary> |
| | | /// 查询库存总量 |
| | | /// </summary> |
| | | /// <param name="selectType">查询类型</param> |
| | | /// <param name="skuNo">物料编码</param> |
| | | /// <param name="skuName">物料名称</param> |
| | | /// <param name="ownerNo">货主编码</param> |
| | | /// <param name="ownerName">货主名称</param> |
| | | /// <param name="lotNo">批次</param> |
| | | /// <param name="status">库存状态</param> |
| | | /// <param name="inspectStatus">质检状态</param> |
| | | /// <returns></returns> |
| | | List<MateDataStockDto> GetDataStockList(string skuNo, string skuName, string ownerNo, string ownerName, string lotNo); |
| | | Task<List<MateDataStockDto>> GetDataStockList(string selectType, string skuNo, string skuName, string ownerNo, string ownerName, string lotNo, string status, string inspectStatus); |
| | | |
| | | /// <summary> |
| | | /// 获取库存明细 |
| | |
| | | using WMS.Entity.DataEntity; |
| | | using WMS.IBLL.IDataServer; |
| | | using System.Security.Claims; |
| | | using System.Threading.Tasks; |
| | | |
| | | namespace Wms.Controllers |
| | | { |
| | |
| | | /// <summary> |
| | | /// 获取库存总量 |
| | | /// </summary> |
| | | /// <param name="skuNo"></param> |
| | | /// <param name="skuName"></param> |
| | | /// <param name="selectType">查询类型</param> |
| | | /// <param name="skuNo">物料编码</param> |
| | | /// <param name="skuName">物料名称</param> |
| | | /// <param name="ownerNo">货主编码</param> |
| | | /// <param name="ownerName">货主名称</param> |
| | | /// <param name="lotNo">批次</param> |
| | | /// <param name="status">库存状态</param> |
| | | /// <param name="inspectStatus">质检状态</param> |
| | | /// <returns></returns> |
| | | [HttpGet] |
| | | public IActionResult GetInventoryList(string skuNo, string skuName, string ownerNo, string ownerName, string lotNo) |
| | | public async Task<IActionResult> GetInventoryList(string selectType, string skuNo, string skuName, string ownerNo, string ownerName, string lotNo, string status, string inspectStatus) |
| | | { |
| | | List<MateDataStockDto> StockList = _stock.GetDataStockList(skuNo, skuName, ownerNo, ownerName, lotNo); |
| | | List<MateDataStockDto> StockList = await _stock.GetDataStockList(selectType, skuNo, skuName, ownerNo, ownerName, lotNo, status, inspectStatus); |
| | | return Ok(new |
| | | { |
| | | data = StockList, |
| | |
| | | /// <param name="inspectStatus">质检状态</param> |
| | | /// <returns></returns> |
| | | [HttpGet] |
| | | public IActionResult GetInventoryList1(string skuNo, string skuName, string lotNo, string locatNo, string palletNo, string status, string inspectStatus, string ownerNo, string ownerName,string startTime,string endTime) |
| | | public IActionResult GetInventoryList1(string skuNo, string skuName, string lotNo, string locatNo, string palletNo, string status, string inspectStatus, string ownerNo, string ownerName, string startTime, string endTime) |
| | | { |
| | | List<StockDetailDto> stockDetailsList = _stock.GetInventoryList1(skuNo, skuName, lotNo, locatNo, palletNo, status, inspectStatus, ownerNo, ownerName, startTime,endTime); |
| | | List<StockDetailDto> stockDetailsList = _stock.GetInventoryList1(skuNo, skuName, lotNo, locatNo, palletNo, status, inspectStatus, ownerNo, ownerName, startTime, endTime); |
| | | return Ok(new |
| | | { |
| | | data = stockDetailsList, |
| | |
| | | /// <param name="inspectStatus">质量状态</param> |
| | | /// <returns></returns> |
| | | [HttpGet] |
| | | public IActionResult GetBindList(string skuNo, string skuName, string palletNo, string lotNo, string boxNo, string status, string inspectMark, string bitPalletMark, string bitBoxMark, string inspectStatus, string ownerNo, string ownerName,string startTime,string endTIme) |
| | | public IActionResult GetBindList(string skuNo, string skuName, string palletNo, string lotNo, string boxNo, string status, string inspectMark, string bitPalletMark, string bitBoxMark, string inspectStatus, string ownerNo, string ownerName, string startTime, string endTIme) |
| | | { |
| | | try |
| | | { |
| | |
| | | /// <param name="inspectStatus">质检状态</param> |
| | | /// <returns></returns> |
| | | [HttpGet] |
| | | public IActionResult GetInventoryList1DaoChu(string skuNo, string skuName, string lotNo, string locatNo, string palletNo, string status, string inspectStatus,string startTime,string endTime) |
| | | public IActionResult GetInventoryList1DaoChu(string skuNo, string skuName, string lotNo, string locatNo, string palletNo, string status, string inspectStatus, string startTime, string endTime) |
| | | { |
| | | List<StockDetailDto> stockDetailsList = _stock.GetInventoryList1DaoChu(skuNo, skuName, lotNo, locatNo, palletNo, status, inspectStatus, startTime, endTime); |
| | | return Ok(new |