From a6535d6c9889a4240d037367db3c481a679e15a0 Mon Sep 17 00:00:00 2001 From: LSH Date: 星期二, 10 十月 2023 09:09:54 +0800 Subject: [PATCH] #一键出差、报销完善相关 --- src/main/webapp/static/js/businessTrip/businessTripOther.js | 271 ++++++++++++++++++++++++++++++++++++++++++++ src/main/webapp/views/businessTrip/businessTripOther.html | 70 +++++++++++ src/main/java/com/zy/crm/manager/entity/BusinessTripOther.java | 10 + 3 files changed, 348 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/zy/crm/manager/entity/BusinessTripOther.java b/src/main/java/com/zy/crm/manager/entity/BusinessTripOther.java index b2713ce..526062d 100644 --- a/src/main/java/com/zy/crm/manager/entity/BusinessTripOther.java +++ b/src/main/java/com/zy/crm/manager/entity/BusinessTripOther.java @@ -7,6 +7,7 @@ import com.core.common.Cools; import com.core.common.SpringUtils; import com.fasterxml.jackson.annotation.JsonFormat; +import com.zy.crm.manager.service.OrderService; import com.zy.crm.manager.utils.TimeCalculatorUtils; import com.zy.crm.system.entity.Dept; import com.zy.crm.system.entity.Dic; @@ -545,6 +546,15 @@ return s; } + public String getOrderId$(){ + OrderService service = SpringUtils.getBean(OrderService.class); + Order order = service.selectById(this.orderId); + if (!Cools.isEmpty(order)){ + return String.valueOf(order.getName()); + } + return null; + } + public String getPcdStart$() { StringBuilder sb = new StringBuilder(); DicService service = SpringUtils.getBean(DicService.class); diff --git a/src/main/webapp/static/js/businessTrip/businessTripOther.js b/src/main/webapp/static/js/businessTrip/businessTripOther.js index 76607ee..1f89cd2 100644 --- a/src/main/webapp/static/js/businessTrip/businessTripOther.js +++ b/src/main/webapp/static/js/businessTrip/businessTripOther.js @@ -3,7 +3,7 @@ base: baseUrl + "/static/layui/lay/modules/" }).extend({ cascader: 'cascader/cascader', -}).use(['table','laydate', 'form', 'admin', 'cascader', 'tree', 'dropdown'], function(){ +}).use(['table','laydate', 'form', 'admin', 'xmSelect', 'cascader', 'tree', 'dropdown'], function(){ var table = layui.table; var $ = layui.jquery; var layer = layui.layer; @@ -89,7 +89,8 @@ ,{field: 'userId$', align: 'center',title: '鐢宠浜�',hide: false} ,{field: 'deptId$', align: 'center',title: '鎵�灞為儴闂�',hide: true} ,{field: 'hostId', align: 'center',title: 'hostId',hide: true} - ,{field: 'orderId', align: 'center',title: '璺熻釜椤圭洰',hide: false} + ,{field: 'orderId$', align: 'center',title: '璺熻釜椤圭洰',hide: false} + ,{field: 'orderId', align: 'center',title: '璺熻釜椤圭洰',hide: true} ,{field: 'settle$', align: 'center',title: '杩涘害', style: 'color: #1890ff;cursor:pointer', event: 'more',hide: false} ,{field: 'status$', align: 'center',title: '鐘舵��',hide: false} ,{field: 'businessTripType', align: 'center',title: '绫诲瀷',hide: true} @@ -98,7 +99,7 @@ ,{field: 'updateTime$', align: 'center',title: '鏇存柊鏃堕棿',hide: false,width: 125} ,{field: 'updateId$', align: 'center',title: '鏇存柊浜哄憳',hide: false} - ,{fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width:180} + ,{fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width:240} ]], request: { pageName: 'curr', @@ -199,6 +200,9 @@ table.on('tool(businessTripOther)', function(obj){ var data = obj.data; switch (obj.event) { + case 'addBlank': + showEditModelBlank(data.id); + break; case 'approval': layer.confirm('瀹℃壒閫氳繃锛�', { skin: 'layui-layer-admin', @@ -372,6 +376,267 @@ }); } + // 鏄剧ず琛ㄥ崟寮圭獥 + function showEditModelBlank(businessOtherId) { + admin.open({ + type: 1, + title: '娣诲姞鎶ラ攢瀹℃壒', + content: $('#editDialog2').html(), + area: '2200px', + success: function (layero, dIndex) { + $(layero).children('.layui-layer-content').css('overflow', 'visible'); + var isExpAdd = true; + // 鍥炴樉鏁版嵁 + form.val('editForm', false); + // console.log(expTpe) + // if (expTpe) { + // // $('#orderNo').attr("disabled", "disabled"); + // } + // 琛ㄥ崟鎻愪氦浜嬩欢 + form.on('submit(orderEditSubmit)', function (data) { + // 缁勮鏁版嵁 + if (xxDataList.length <= 0) { + layer.tips('璇锋坊鍔犳姤閿�鏄庣粏', '#matAddBtnComment', {tips: [1, '#ff4c4c']}); + return false; + } + let nList = admin.util.deepClone(xxDataList); + for (let xi = 0; xi < nList.length; xi++) { + // if (nList[xi].anfme <= 0){ + // layer.msg('鏄庣粏淇敼鏁伴噺涓嶅悎娉�', {icon: 2}); + // return false; + // } + } + layer.load(2); + $.ajax({ + url: baseUrl+"/reimburseOnline/from/" + (isExpAdd?"add":"modify") + "/auth", + headers: {'token': localStorage.getItem('token')}, + data: JSON.stringify({ + reimburseId: Number(data.field.id), + docType: Number(data.field.docType), + businessOtherId: businessOtherId, + templateName: data.field.templateName, + checkData: data.field.checkData, + reimburseOnlineDetls: nList + }), + contentType:'application/json;charset=UTF-8', + method: 'POST', + success: function (res) { + console.log(data) + layer.closeAll('loading'); + if (res.code === 200){ + layer.close(dIndex); + $(".layui-laypage-btn")[0].click(); + layer.msg(res.msg, {icon: 1}); + } else if (res.code === 403){ + top.location.href = baseUrl+"/"; + }else { + layer.msg(res.msg, {icon: 2}); + } + } + }) + return false; + }); + // 鏄庣粏琛ㄦ牸 + var xxDataList = []; + var tbOptions = { + elem: '#formSSXMTable', + headers: {token: localStorage.getItem('token')}, + data: xxDataList, + page: true, + height: '350px;', + cellMinWidth: 100, + cols: [[ + {type: 'numbers', title: '#'}, + {field: 'occupation', title: '浜嬬敱', width: 100, style: 'color: blue;font-weight: bold', edit:true}, + // {field: 'expenseType', title: '璐圭敤绫诲瀷', width: 100}, + {field: 'expenseType$', title: '璐圭敤绫诲瀷', width: 100}, + {field: 'taxRate', title: '绋庣巼', width: 60, edit: true}, + {field: 'untaxedAmountInLocalCurrency', title: '鏈◣鏈竵閲戦', width: 120, edit: true}, + {field: 'untaxedAmount', title: '鏈◣閲戦', width: 100, edit: true}, + {field: 'taxAmount', title: '绋庨', width: 60, edit: true}, + {field: 'invoiceValue', title: '鍙戠エ閲戦', width: 100, edit: true}, + {field: 'invoiceAmountInLocalCurrency', title: '鍙戠エ鏈竵閲戦', width: 120, edit: true}, + {field: 'reimbursementRatio', title: '鎶ラ攢姣斾緥', width: 100, edit: true}, + {field: 'reimbursementAmount', title: '鎶ラ攢閲戦', width: 100, edit: true}, + {field: 'reimbursementAmountInLocalCurrency', title: '鎶ラ攢鏈竵閲戦', width: 120, edit: true}, + {field: 'cashierConfirmationAmount', title: '鍑虹撼纭閲戦', width: 120, edit: true}, + {field: 'cashierCurrency', title: '鍑虹撼甯佺', width: 100, edit: true}, + {field: 'departureTime', title: '鍑哄彂鏃ユ湡', width: 100}, + {field: 'cashierConfirmationAmount', title: '鍑虹撼纭閲戦', width: 120, edit: true}, + {field: 'userId', title: '鍒楁敮浜哄憳', width: 120}, + {field: 'deptId', title: '鍒楁敮閮ㄩ棬', width: 120}, + {field: 'updateTime', title: '鏇存柊鏃ユ湡', width: 100}, + // {field: 'updateUserId', title: '鏇存柊浜哄憳ID', width: 160}, + {field: 'updateUserName', title: '鏇存柊浜哄憳鍚嶅瓧'}, + // {field: 'creationTime', title: '鍒涘缓鏃ユ湡', width: 160} + {align: 'center', title: '鎿嶄綔', toolbar: '#formSSXMTableBar', minWidth: 80, width: 80, fixed: 'right'} + ]], + done: function (res, curr, count) { + $(layero).find('.layui-table-view').css('margin', '0'); + var options = this; + + // 鑾峰彇褰撳墠琛屾暟鎹� + table.getRowData = function(elem){ + var index = $(elem).closest('tr').data('index'); + return table.cache[options.id][index] || {}; + }; + + $('.input-occupation').on('text', function(){ + var value = this.value; // 鑾峰彇閫変腑椤� value + var data = table.getRowData(this); + console.log(value); + console.log("value------==="); + xxDataList.forEach(res => { + if (data.id === res.id){ + console.log(res) + res.occupation = value; + } + }) + + }); + }, + size: '' + }; + var insTbSSXM = table.render(tbOptions); + // 宸ュ叿鏉$偣鍑讳簨浠� + table.on('tool(formSSXMTable)', function (obj) { + var data = obj.data; + var layEvent = obj.event; + if (layEvent === 'edit') { + showEditModel2(data); + } else if (layEvent === 'del') { + layer.confirm('纭畾瑕佸垹闄ゅ悧锛�', { + shade: .1, + skin: 'layui-layer-admin' + }, function (i) { + layer.close(i); + for (var j = 0; j < xxDataList.length; j++) { + if (xxDataList[j].matnr === data.matnr && xxDataList[j].batch === data.batch) { + xxDataList.splice(j, 1); + break; + } + } + insTbSSXM.reload({data: xxDataList, page: {curr: 1}}); + }); + } + }); + // 鏄庣粏鏁版嵁淇敼 + table.on('edit(formSSXMTable)', function (obj) { + let index = obj.tr.attr("data-index"); + let data = xxDataList[index]; + if (obj.field === 'anfme'){ + let vle = Number(obj.value); + if (isNaN(vle)) { + layer.msg("璇疯緭鍏ユ暟瀛�", {icon: 2}); + return false; + } else { + if (vle <= 0) { + layer.msg("鏁伴噺蹇呴』澶т簬闆�", {icon: 2}); + return false; + } + } + } + data[obj.field] = obj.value; + insTbSSXM.reload({data: xxDataList}); + }); + + $('#matAddBtnComment').click(function () { + showEditModel2(); + }); + + // 鏄剧ず娣诲姞鏄庣粏琛ㄥ崟寮圭獥 + function showEditModel2(exp) { + admin.open({ + type: 1, + offset: '150px', + area: '680px', + title: (exp ? '淇敼' : '娣诲姞') + '鏄庣粏', + content: $('#matEditDialog').html(), + success: function (layero, dIndex) { + console.log("exp") + console.log(exp) + // 鍥炴樉鏁版嵁 + form.val('matEditForm', exp); + // 琛ㄥ崟鎻愪氦浜嬩欢 + form.on('submit(matEditSubmit)', function (data) { + let selectList = matXmSelect.getValue(); + console.log("selectList") + console.log(selectList) + console.log(selectList) + for (let i = 0; i<selectList.length; i++) { + let item = selectList[i]; + // 鏌ヨ鐗╂枡璇︽儏 + $.ajax({ + url: baseUrl+"/reimburseCostTypes/covert/"+item.value+"/auth", + headers: {'token': localStorage.getItem('token')}, + method: 'GET', + async: false, + success: function (res) { + if (res.code === 200){ + var bige=true; + // console.log("-------2.1-------") + // for (var j = 0; j < xxDataList.length; j++) { + // if (xxDataList[j].expenseType === res.data.expenseType && xxDataList[j].batch === res.data.batch) { + // bige=false; + // console.log("-------2.2-------") + // break; + // } + // } + if (bige){ + // console.log("-------2.3-------") + xxDataList.push(res.data); + insTbSSXM.reload({data: xxDataList, page: {curr: 1}}); + } + } else if (res.code === 403){ + top.location.href = baseUrl+"/"; + }else { + layer.msg(res.msg, {icon: 2}) + } + } + }) + } + layer.close(dIndex); + return false; + }); + // 娓叉煋鐗╂枡閫夋嫨 + var matXmSelect = xmSelect.render({ + el: '#reimburseCostTypes', + style: { + width: '340px', + }, + autoRow: true, + toolbar: { show: true }, + filterable: true, + remoteSearch: true, + remoteMethod: function(val, cb, show){ + $.ajax({ + url: baseUrl+"/reimburseCostTypes/all/get/kv", + headers: {'token': localStorage.getItem('token')}, + data: { + condition: val + }, + method: 'POST', + success: function (res) { + if (res.code === 200){ + cb(res.data) + } else { + cb([]); + layer.msg(res.msg, {icon: 2}); + } + } + }); + } + }) + // 寮圭獥涓嶅嚭鐜版粴鍔ㄦ潯 + $(layero).children('.layui-layer-content').css('overflow', 'visible'); + layui.form.render('select'); + } + }); + } + } + }); + } + function approval(planId, plannerId, dIdx) { let loadIndex = layer.load(2); $.ajax({ diff --git a/src/main/webapp/views/businessTrip/businessTripOther.html b/src/main/webapp/views/businessTrip/businessTripOther.html index 9c34d64..4210d78 100644 --- a/src/main/webapp/views/businessTrip/businessTripOther.html +++ b/src/main/webapp/views/businessTrip/businessTripOther.html @@ -84,6 +84,7 @@ <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="edit">淇敼</a> {{# } }} <a class="layui-btn layui-btn-danger layui-btn-xs btn-edit" lay-event="del">鍒犻櫎</a> + <a class="layui-btn icon-btn layui-btn-sm" lay-event="addBlank">鐢宠鎶ラ攢</a> </script> <script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script> @@ -155,5 +156,74 @@ </div> </form> </script> + +<!-- 琛ㄥ崟寮圭獥 --> +<script type="text/html" id="editDialog2"> + <form id="editForm" lay-filter="editForm" class="layui-form model-form"> + <input name="id" type="hidden"/> + <div class="layui-form-item"> + <label class="layui-form-label layui-form-required">鎶ラ攢绫诲瀷: </label> + <div class="layui-input-inline"> + <select class="layui-input" name="templateName" lay-vertype="tips" lay-verify="required"> + <option style="display: none"></option> + <option value="椤圭洰鏈畬鎴�">椤圭洰鏈畬鎴�</option> + <option value="椤圭洰宸插畬鎴愬湪璐ㄤ繚鏈熷唴">椤圭洰宸插畬鎴愬湪璐ㄤ繚鏈熷唴</option> + <option value="闈為」鐩瀷鎶ラ攢">闈為」鐩瀷鎶ラ攢</option> + <option value="鍏跺畠">鍏跺畠</option> + </select> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label layui-form-required">鏄惁鍐茶处: </label> + <div class="layui-input-inline"> + <select class="layui-input" name="checkData" lay-vertype="tips" lay-verify="required"> + <option style="display: none"></option> + <option value="鍚�">鍚�</option> + <option value="鏄�">鏄�</option> + </select> + </div> + </div> + <div class="layui-form-item" style="position: relative;"> + <label class="layui-form-label">鎶ラ攢鏄庣粏锛�</label> + <div class="layui-input-block"> + <table id="formSSXMTable" lay-filter="formSSXMTable"></table> + </div> + <button class="layui-btn layui-btn-sm icon-btn" id="matAddBtnComment" + style="position: absolute; left: 20px;top: 60px;padding: 0 5px;" type="button"> + <i class="layui-icon"></i>娣诲姞鏄庣粏 + </button> + </div> + <div class="layui-form-item text-right"> + <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">鍙栨秷</button> + <button class="layui-btn" lay-filter="orderEditSubmit" lay-submit>淇濆瓨</button> + </div> + </form> +</script> + +<!-- 琛ㄦ牸鎿嶄綔鍒� --> +<script type="text/html" id="formSSXMTableBar"> + <!-- <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="edit">淇敼</a>--> + <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">鍒犻櫎</a> +</script> +<!-- 琛ㄥ崟寮圭獥 --> +<script type="text/html" id="matEditDialog"> + <form id="matEditForm" lay-filter="matEditForm" class="layui-form model-form"> + <input name="experimentId" type="hidden"/> + + <div class="layui-form-item" style="float: left"> + <label class="layui-form-label">璐圭敤绫诲瀷 - 澶氶��</label> + <div class="layui-input-block"> + <div id="reimburseCostTypes" name="reimburseCostTypes"> + </div> + </div> + </div> + + <div class="layui-form-item text-right" style="display: inline-block; margin-left: 35px"> + <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">鍙栨秷</button> + <button class="layui-btn" lay-filter="matEditSubmit" lay-submit>淇濆瓨</button> + </div> + + </form> +</script> </html> -- Gitblit v1.9.1