diff --git a/ruoyi-admin/src/main/resources/templates/manage/order/add.html b/ruoyi-admin/src/main/resources/templates/manage/order/add.html index 3c2e18fc..648db42e 100644 --- a/ruoyi-admin/src/main/resources/templates/manage/order/add.html +++ b/ruoyi-admin/src/main/resources/templates/manage/order/add.html @@ -4,6 +4,15 @@ <th:block th:include="include :: header('新增合同档案')" /> <th:block th:include="include :: datetimepicker-css" /> </head> +<style> + .customerBox{ + display: flex; + flex-direction: column; + } + .customerBox div{ + padding-left: 25px !important; + } +</style> <body class="white-bg"> <div class="wrapper wrapper-content animated fadeInRight ibox-content"> <form class="form-horizontal m" id="form-order-add"> @@ -40,39 +49,7 @@ </div> </div> </div> - <div class="col-xs-6"> - <div class="form-group"> - <label class="col-sm-4 control-label is-required">客户名称:</label> - <div class="col-sm-8"> - <input name="customerName" class="form-control" type="text" required> - </div> - </div> - </div> - <div class="col-xs-6"> - <div class="form-group"> - <label class="col-sm-4 control-label">客户联系人:</label> - <div class="col-sm-8"> - <input name="customerContact" class="form-control" type="text"> - </div> - </div> - </div> - <div class="col-xs-6"> - <div class="form-group"> - <label class="col-sm-4 control-label">客户电话:</label> - <div class="col-sm-8"> - <input name="customerPhone" class="form-control" type="text"> - </div> - </div> - </div> - <div class="col-xs-6"> - <div class="form-group"> - <label class="col-sm-4 control-label">客户邮箱:</label> - <div class="col-sm-8"> - <input name="customerEmail" class="form-control" type="text"> - </div> - </div> - </div> - <div class="col-xs-6"> + <div class="col-xs-6"> <div class="form-group"> <label class="col-sm-4 control-label is-required">合同类型:</label> <div class="col-sm-8"> @@ -87,8 +64,7 @@ <label class="col-sm-4 control-label is-required">代表处编码:</label> <div class="col-sm-8"> <div class="input-group"> - <input class="form-control" type="text" name="orderDeptName" onclick="selectDeptTree()" id="treeName" required> - <input name="orderDept" type="hidden" id="treeId"/> + <input class="form-control" type="text" name="orderAgentCode" onclick="selectAgent()" required> <span class="input-group-addon"><i class="fa fa-search"></i></span> </div> </div> @@ -99,8 +75,7 @@ <label class="col-sm-4 control-label is-required">代理商编码:</label> <div class="col-sm-8"> <div class="input-group"> - <input class="form-control" type="text" name="orderDeptName" onclick="selectDeptTreePartner()" id="treeName1" required> - <input name="orderPartnerCode" type="hidden" id="treeId1" > + <input class="form-control" type="text" name="orderPartnerCode" onclick="selectPartner()" required> <span class="input-group-addon"><i class="fa fa-search"></i></span> </div> </div> @@ -125,11 +100,52 @@ </div> </div> </div> - <h4 class="form-header h4">合同清单列表</h4> + <div class="col-xs-12"> + <div class="form-group"> + <div class="col-sm-4 customerBox"> + <div class="col-sm-12 is-required">客户编码:</div> + <div class="col-sm-12 input-group" style="display: flex"> + <input name="customerCode" class="form-control" type="text" required style="width: 70% !important" onclick="selectCustomer()"> + <span class="input-group-addon" style="width: 40px !important;"><i class="fa fa-search"></i></span> + </div> + </div> + <div class="col-sm-4 customerBox"> + <div class="col-sm-12 is-required">客户名称:</div> + <div class="col-sm-12"> + <input name="customerName" readonly class="form-control" type="text" required> + </div> + </div> + <div class="col-sm-4 customerBox"> + <div class="col-sm-12 ">客户联系人:</div> + <div class="col-sm-12"> + <input name="customerContact" readonly class="form-control" type="text"> + </div> + </div> + <div class="col-sm-4 customerBox"> + <div class="col-sm-12">客户邮箱:</div> + <div class="col-sm-12"> + <input name="customerEmail" readonly class="form-control" type="text"> + </div> + </div> + <div class="col-sm-4 customerBox"> + <div class="col-sm-12">客户电话:</div> + <div class="col-sm-12"> + <input name="customerPhone" readonly class="form-control" type="text"> + </div> + </div> + </div> + </div> + + <div class="col-xs-12"> + <h4 class="form-header h4">合同清单列表</h4> + </div> <div class="row"> + <input id="uploadInput" type="file" accept=".xls,.xlsx" style="display: none"> <div class="col-xs-12"> - <button type="button" class="btn btn-white btn-sm" onclick="addRow()"><i class="fa fa-plus"> 增加</i></button> +<!-- <button type="button" class="btn btn-white btn-sm" onclick="addRow()"><i class="fa fa-plus"> 增加</i></button>--> <button type="button" class="btn btn-white btn-sm" onclick="sub.delRow()"><i class="fa fa-minus"> 删除</i></button> + <button type="button" class="btn btn-white btn-sm" onclick="importList()"><i class="fa fa-download"> 导入</i></button> + <div class="col-sm-12 select-table table-striped"> <table id="bootstrap-table"></table> </div> @@ -191,7 +207,7 @@ align: 'center', title: '数量', formatter: function(value, row, index) { - var html = $.common.sprintf("<input class='form-control' type='number' name='orderListList[%s].quantity' value='%s'>", index, value); + var html = $.common.sprintf("<input disabled class='form-control' type='number' name='orderListList[%s].quantity' value='%s'>", index, value); return html; } }, @@ -200,16 +216,25 @@ align: 'center', title: '单价', formatter: function(value, row, index) { - var html = $.common.sprintf("<input class='form-control' type='number' name='orderListList[%s].price' value='%s'>", index, value); + var html = $.common.sprintf("<input disabled class='form-control' type='number' name='orderListList[%s].price' value='%s'>", index, value); return html; } }, + { + field: 'discount', + align: 'center', + title: '折扣', + formatter: function(value, row, index) { + var html = $.common.sprintf("<input class='form-control' type='number' name='orderListList[%s].price' value='%s'>", index, value); + return html; + } + }, { field: 'amount', align: 'center', title: '总价', formatter: function(value, row, index) { - var html = $.common.sprintf("<input class='form-control' type='number' name='orderListList[%s].amount' value='%s'>", index, value); + var html = $.common.sprintf("<input disabled class='form-control' type='number' name='orderListList[%s].amount' value='%s'>", index, value); return html; } }, @@ -233,42 +258,6 @@ }; $.table.init(options); }); - function selectDeptTree() { - var deptId = $.common.isEmpty($("#treeId").val()) ? "100" : $("#treeId").val(); - console.log(deptId) - var url = ctx + "system/user/selectDeptTree/" + deptId; - var options = { - title: '选择部门', - width: "380", - url: url, - callBack: doSubmit - }; - $.modal.openOptions(options); - } - function doSubmit(index, layero){ - var body = $.modal.getChildFrame(index); - $("#treeId").val(body.find('#treeId').val()); - $("#treeName").val(body.find('#treeName').val()); - $.modal.close(index); - } - function selectDeptTreePartner() { - var deptId = $.common.isEmpty($("#treeId1").val()) ? "100" : $("#treeId1").val(); - console.log(deptId) - var url = ctx + "system/user/selectDeptTree/" + deptId; - var options = { - title: '选择部门', - width: "380", - url: url, - callBack: doSubmitPartner - }; - $.modal.openOptions(options); - } - function doSubmitPartner(index, layero){ - var body = $.modal.getChildFrame(index); - $("#treeId1").val(body.find('#treeId').val()); - $("#treeName1").val(body.find('#treeName').val()); - $.modal.close(index); - } function addRow() { var count = $("#" + table.options.id).bootstrapTable('getData').length; var row = { @@ -285,6 +274,101 @@ } sub.addRow(row); } + function selectCustomer(){ + var url = prefix+"/customer"; + var options = { + title: '选择客户', + width: "680", + url: url, + callBack: doSubmitCustomer + }; + $.modal.openOptions(options); + } + function selectAgent() { + var url = prefix+"/agent"; + var options = { + title: '选择代表处', + width: "680", + url: url, + callBack: doSubmitAgent + }; + $.modal.openOptions(options); + } + function doSubmitCustomer(index, layero){ + var rows = layero.find("iframe")[0].contentWindow.getSelections(); + if (rows.length == 0) { + $.modal.alertWarning("请选择一个用户"); + return; + } + $('[name="customerCode"]').val(rows[0].customerCode); + $(' [name="customerName"]').val(rows[0].customerName); + $(' [name="customerContact"]').val(rows[0].contactPerson); + $(' [name="customerEmail"]').val(rows[0].contactEmail); + $(' [name="customerPhone"]').val(rows[0].contactPhone); + $.modal.close(index); + } + function doSubmitAgent(index, layero){ + var rows = layero.find("iframe")[0].contentWindow.getSelections(); + if (rows.length == 0) { + $.modal.alertWarning("请选择一个代表处"); + return; + } + $('[name="orderAgentCode"]').val(rows[0].agentCode); + $.modal.close(index); + } + function selectPartner() { + var url = prefix+"/partner"; + var options = { + title: '选择代理商', + width: "680", + url: url, + callBack: doSubmitPartner + }; + $.modal.openOptions(options); + } + function doSubmitPartner(index, layero){ + var rows = layero.find("iframe")[0].contentWindow.getSelections(); + if (rows.length == 0) { + $.modal.alertWarning("请选择一个代理商"); + return; + } + $('[name="orderPartnerCode"]').val(rows[0].partnerCode); + $.modal.close(index); + } + function importList(){ + $('#uploadInput').click() + } + document.getElementById('uploadInput').addEventListener('change', function(event) { + const file = event.target.files[0]; + let data=new FormData() + data.append('file',file) + data.append('deliveryId',$('#bootstrap-table').attr('deliveryid')) + var xhr = new XMLHttpRequest(); // 创建XMLHttpRequest对象 + xhr.open('POST',prefix+'/importData', true); // 设置请求类型和URL + // 当请求完成时执行的回调函数 + xhr.onload = function (res) { + let data=JSON.parse(res.currentTarget.response) + if (data.code === 0) { + $.modal.msgSuccess('导入成功'); + $.table.refresh(); + + } else { + $.modal.msgError(data.msg||'导入失败'); + } + $('#uploadInput').val('') + + }; + + // 当请求发生错误时执行的回调函数 + xhr.onerror = function () { + console.log('上传过程中发生错误'); + }; + // + // // 发送数据到服务器 + xhr.send(data); + + + }); </script> </body> </html> \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/templates/manage/order/edit.html b/ruoyi-admin/src/main/resources/templates/manage/order/edit.html index cb6fc21c..7cb4c27c 100644 --- a/ruoyi-admin/src/main/resources/templates/manage/order/edit.html +++ b/ruoyi-admin/src/main/resources/templates/manage/order/edit.html @@ -46,38 +46,6 @@ </div> </div> </div> - <div class="col-xs-6"> - <div class="form-group"> - <label class="col-sm-4 control-label is-required">客户名称:</label> - <div class="col-sm-8"> - <input name="customerName" th:field="*{customerName}" class="form-control" type="text" required> - </div> - </div> - </div> - <div class="col-xs-6"> - <div class="form-group"> - <label class="col-sm-4 control-label">客户联系人:</label> - <div class="col-sm-8"> - <input name="customerContact" th:field="*{customerContact}" class="form-control" type="text"> - </div> - </div> - </div> - <div class="col-xs-6"> - <div class="form-group"> - <label class="col-sm-4 control-label">客户电话:</label> - <div class="col-sm-8"> - <input name="customerPhone" th:field="*{customerPhone}" class="form-control" type="text"> - </div> - </div> - </div> - <div class="col-xs-6"> - <div class="form-group"> - <label class="col-sm-4 control-label">客户邮箱:</label> - <div class="col-sm-8"> - <input name="customerEmail" th:field="*{customerEmail}" class="form-control" type="text"> - </div> - </div> - </div> <div class="col-xs-6"> <div class="form-group"> <label class="col-sm-4 control-label is-required">合同类型:</label> @@ -88,30 +56,30 @@ </div> </div> </div> -<!-- <div class="col-xs-6">--> -<!-- <div class="form-group">--> -<!-- <label class="col-sm-4 control-label is-required">代表处:</label>--> -<!-- <div class="col-sm-8">--> -<!-- <div class="input-group">--> -<!-- <input name="orderDept" type="hidden" th:field="*{orderDept}" id="treeId"/>--> -<!-- <input class="form-control" type="text" name="orderDeptName" onclick="selectDeptTree()" id="treeName" th:field="*{orderDeptName}" required>--> -<!-- <span class="input-group-addon"><i class="fa fa-search"></i></span>--> -<!-- </div>--> -<!-- </div>--> -<!-- </div>--> -<!-- </div>--> -<!-- <div class="col-xs-6">--> -<!-- <div class="form-group">--> -<!-- <label class="col-sm-4 control-label is-required">代理商:</label>--> -<!-- <div class="col-sm-8">--> -<!-- <div class="input-group">--> -<!-- <input name="orderPartnerCode" type="hidden" th:field="*{orderPartnerCode}" id="treeId1">--> -<!-- <input class="form-control" type="text" name="orderDeptName" onclick="selectDeptTreePartner()" id="treeName1" th:field="*{partnerDeptName}" required>--> -<!-- <span class="input-group-addon"><i class="fa fa-search"></i></span>--> -<!-- </div>--> -<!-- </div>--> -<!-- </div>--> -<!-- </div>--> + <div class="col-xs-6"> + <div class="form-group"> + <label class="col-sm-4 control-label is-required">代表处:</label> + <div class="col-sm-8"> + <div class="input-group"> + <input name="orderDept" type="hidden" th:field="*{orderDept}" id="treeId"/> + <input class="form-control" type="text" name="orderDeptName" onclick="selectAgent()" id="treeName" th:field="*{orderDeptName}" required> + <span class="input-group-addon"><i class="fa fa-search"></i></span> + </div> + </div> + </div> + </div> + <div class="col-xs-6"> + <div class="form-group"> + <label class="col-sm-4 control-label is-required">代理商:</label> + <div class="col-sm-8"> + <div class="input-group"> + <input name="orderPartnerCode" type="hidden" th:field="*{orderPartnerCode}" id="treeId1"> + <input class="form-control" type="text" name="orderDeptName" onclick="selectPartner()" id="treeName1" th:field="*{partnerDeptName}" required> + <span class="input-group-addon"><i class="fa fa-search"></i></span> + </div> + </div> + </div> + </div> <div class="col-xs-6"> <div class="form-group"> <label class="col-sm-4 control-label is-required">签定日期:</label> @@ -131,6 +99,42 @@ </div> </div> </div> + <div class="col-xs-12"> + <div class="form-group"> + <div class="col-sm-4 customerBox"> + <div class="col-sm-12 is-required">客户编码:</div> + <div class="col-sm-12 input-group" style="display: flex"> + <input name="customerCode" class="form-control" type="text" required style="width: 70% !important" onclick="selectCustomer()"> + <span class="input-group-addon" th:field="*{customerCode}" style="width: 40px !important;"><i class="fa fa-search"></i></span> + </div> + </div> + <div class="col-sm-4 customerBox"> + <div class="col-sm-12 is-required">客户名称:</div> + <div class="col-sm-12"> + <input name="customerName" th:field="*{customerName}" disabled class="form-control" type="text" required> + </div> + </div> + <div class="col-sm-4 customerBox"> + <div class="col-sm-12 ">客户联系人:</div> + <div class="col-sm-12"> + <input name="customerContact" th:field="*{customerContact}" disabled class="form-control" type="text"> + </div> + </div> + <div class="col-sm-4 customerBox"> + <div class="col-sm-12">客户邮箱:</div> + <div class="col-sm-12"> + <input name="customerEmail" th:field="*{customerEmail}" disabled class="form-control" type="text"> + </div> + </div> + <div class="col-sm-4 customerBox"> + <div class="col-sm-12">客户电话:</div> + <div class="col-sm-12"> + <input name="customerPhone" th:field="*{customerPhone}" disabled class="form-control" type="text"> + </div> + </div> + </div> + </div> + <h4 class="form-header h4">合同清单列表</h4> <div class="row"> <div class="col-sm-12 select-table table-striped"> @@ -193,6 +197,102 @@ minView: "month", autoclose: true }); + function selectCustomer(){ + var url = prefix+"/customer"; + var options = { + title: '选择客户', + width: "680", + url: url, + callBack: doSubmitCustomer + }; + $.modal.openOptions(options); + } + function selectAgent() { + var url = prefix+"/agent"; + var options = { + title: '选择代表处', + width: "680", + url: url, + callBack: doSubmitAgent + }; + $.modal.openOptions(options); + } + function doSubmitCustomer(index, layero){ + var rows = layero.find("iframe")[0].contentWindow.getSelections(); + if (rows.length == 0) { + $.modal.alertWarning("请选择一个用户"); + return; + } + $('[name="customerCode"]').val(rows[0].customerCode); + $(' [name="customerName"]').val(rows[0].customerName); + $(' [name="customerContact"]').val(rows[0].contactPerson); + $(' [name="customerEmail"]').val(rows[0].contactEmail); + $(' [name="customerPhone"]').val(rows[0].contactPhone); + $.modal.close(index); + } + function doSubmitAgent(index, layero){ + var rows = layero.find("iframe")[0].contentWindow.getSelections(); + if (rows.length == 0) { + $.modal.alertWarning("请选择一个代表处"); + return; + } + $('[name="orderAgentCode"]').val(rows[0].agentCode); + $.modal.close(index); + } + function selectPartner() { + var url = prefix+"/partner"; + var options = { + title: '选择代理商', + width: "680", + url: url, + callBack: doSubmitPartner + }; + $.modal.openOptions(options); + } + function doSubmitPartner(index, layero){ + var rows = layero.find("iframe")[0].contentWindow.getSelections(); + if (rows.length == 0) { + $.modal.alertWarning("请选择一个代理商"); + return; + } + $('[name="orderPartnerCode"]').val(rows[0].partnerCode); + $.modal.close(index); + } + function importList(){ + $('#uploadInput').click() + } + document.getElementById('uploadInput').addEventListener('change', function(event) { + const file = event.target.files[0]; + let data=new FormData() + data.append('file',file) + data.append('deliveryId',$('#bootstrap-table').attr('deliveryid')) + var xhr = new XMLHttpRequest(); // 创建XMLHttpRequest对象 + xhr.open('POST',prefix+'/importData', true); // 设置请求类型和URL + // 当请求完成时执行的回调函数 + xhr.onload = function (res) { + let data=JSON.parse(res.currentTarget.response) + if (data.code === 0) { + $.modal.msgSuccess('导入成功'); + $.table.refresh(); + + } else { + $.modal.msgError(data.msg||'导入失败'); + } + $('#uploadInput').val('') + + }; + + // 当请求发生错误时执行的回调函数 + xhr.onerror = function () { + console.log('上传过程中发生错误'); + }; + // + // // 发送数据到服务器 + xhr.send(data); + + + }); + $(function() { var options = { diff --git a/ruoyi-admin/src/main/resources/templates/manage/order/selectAgent.html b/ruoyi-admin/src/main/resources/templates/manage/order/selectAgent.html new file mode 100644 index 00000000..82a9448f --- /dev/null +++ b/ruoyi-admin/src/main/resources/templates/manage/order/selectAgent.html @@ -0,0 +1,54 @@ +<!DOCTYPE html> +<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro"> +<head> + <th:block th:include="include :: header('选择代表处')" /> +</head> +<body class="gray-bg"> +<div class="col-sm-12 select-table table-striped" > + <table id="bootstrap-table"></table> +</div> +<th:block th:include="include :: footer" /> + + +<script> + var prefix = ctx + "system/agent"; + $(function() { + var options = { + url: prefix + "/list", + showSearch:false, + showColumns:false, + showToggle:false, + showPageGo:true, + params:{ + }, + columns: [{ + radio: true + }, + { + field: 'agentCode', + title: '办事处编码' + }, + { + field: 'agentName', + title: '办公处名称' + }, + { + field: 'province', + title: '所在省' + }, + { + field: 'city', + title: '所在市' + }, + ] + }; + $.table.init(options); + }); + function getSelections() { + var rows = $('#bootstrap-table').bootstrapTable('getSelections'); + return rows; + } +</script> +</body> + +</html> \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/templates/manage/order/selectCustomer.html b/ruoyi-admin/src/main/resources/templates/manage/order/selectCustomer.html new file mode 100644 index 00000000..7c73e815 --- /dev/null +++ b/ruoyi-admin/src/main/resources/templates/manage/order/selectCustomer.html @@ -0,0 +1,74 @@ +<!DOCTYPE html> +<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro"> +<head> + <th:block th:include="include :: header('选择客户')" /> +</head> +<body class="gray-bg"> +<div class="col-sm-12 select-table table-striped" > + <table id="bootstrap-table"></table> +</div> +<th:block th:include="include :: footer" /> + + +<script> + var prefix = ctx + "system/customer"; + $(function() { + var options = { + url: prefix + "/list", + showSearch:false, + showColumns:false, + showToggle:false, + showPageGo:true, + params:{ + }, + columns: [{ + radio: true + }, + { + field: 'customerCode', + title: '客户编码' + }, + { + field: 'customerName', + title: '客户名称' + }, + { + field: 'customerPostcode', + title: '客户邮编' + }, + { + field: 'address', + title: '详细地址' + }, + { + field: 'contactPerson', + title: '联系人' + }, + { + field: 'contactPhone', + title: '联系电话' + }, + { + field: 'contactEmail', + title: '联系邮件' + }, + { + field: 'industryType', + title: '所属行业' + }, + { + field: 'remark', + title: '备注' + }, + ] + }; + $.table.init(options); + }); + function getSelections() { + var rows = $('#bootstrap-table').bootstrapTable('getSelections'); + return rows; + } +</script> +</body> + +</html> \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/templates/manage/order/selectPartner.html b/ruoyi-admin/src/main/resources/templates/manage/order/selectPartner.html new file mode 100644 index 00000000..d5bb300c --- /dev/null +++ b/ruoyi-admin/src/main/resources/templates/manage/order/selectPartner.html @@ -0,0 +1,67 @@ +<!DOCTYPE html> +<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro"> +<head> + <th:block th:include="include :: header('选择代理商')" /> +</head> +<body class="gray-bg"> +<div class="col-sm-12 select-table table-striped" > + <table id="bootstrap-table"></table> +</div> +<th:block th:include="include :: footer" /> + + +<script> + var prefix = ctx + "system/partner"; + + $(function() { + var options = { + url: prefix + "/list", + showSearch:false, + showColumns:false, + showToggle:false, + showPageGo:true, + params:{ + }, + columns: [{ + radio: true + }, + { + field: 'partnerCode', + title: '供应商编码' + }, + { + field: 'partnerName', + title: '供应商名称' + }, + { + field: 'province', + title: '省' + }, + { + field: 'city', + title: '市' + }, + { + field: 'address', + title: '详细地址' + }, + { + field: 'contactPerson', + title: '联系人' + }, + { + field: 'contactPhone', + title: '联系电话' + }, + ] + }; + $.table.init(options); + }); + function getSelections() { + var rows = $('#bootstrap-table').bootstrapTable('getSelections'); + return rows; + } +</script> +</body> + +</html> \ No newline at end of file diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/OrderInfoController.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/OrderInfoController.java index a6c4350b..17047d82 100644 --- a/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/OrderInfoController.java +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/OrderInfoController.java @@ -47,6 +47,18 @@ public class OrderInfoController extends BaseController { return prefix + "/selectCustomer"; } + @RequiresPermissions("manage:order:view") + @GetMapping("/agent") + public String agent() + { + return prefix + "/selectAgent"; + } + @RequiresPermissions("manage:order:view") + @GetMapping("/partner") + public String partner() + { + return prefix + "/selectPartner"; + } /** * 查询合同档案列表