合同管理修改未完成

master
wangjiuyun 2025-05-16 17:58:19 +08:00
parent 83efd16669
commit 2b67e65246
6 changed files with 525 additions and 134 deletions

View File

@ -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>

View File

@ -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 = {

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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";
}
/**
*