|
|
@ -6,93 +6,6 @@ |
|
|
|
<script type="text/javascript" th:src="@{/js/axios.min.js}"></script> |
|
|
|
|
|
|
|
</head> |
|
|
|
<style> |
|
|
|
.division { |
|
|
|
width: 100%; |
|
|
|
border-bottom: 1px solid #f1ecec; |
|
|
|
padding: 10px 0 0; |
|
|
|
margin-bottom: 30px; |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
.col-sm-3 { |
|
|
|
width: 30%; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.hiddenDetailInfo { |
|
|
|
display: none; |
|
|
|
} |
|
|
|
|
|
|
|
.search-collapse, .select-table { |
|
|
|
box-shadow: none; |
|
|
|
} |
|
|
|
|
|
|
|
.get-finish-product h4 { |
|
|
|
padding: 0 40px; |
|
|
|
} |
|
|
|
|
|
|
|
.base-sales-order { |
|
|
|
display: flex; |
|
|
|
flex-wrap: wrap; |
|
|
|
justify-content: space-between; |
|
|
|
} |
|
|
|
|
|
|
|
.base-sales-order .form-group { |
|
|
|
width: 30%; |
|
|
|
} |
|
|
|
|
|
|
|
.details-title { |
|
|
|
width: 100%; |
|
|
|
position: fixed; |
|
|
|
font-size: 20px; |
|
|
|
padding: 10px 0; |
|
|
|
text-align: center; |
|
|
|
background-color: #a7b1c2; |
|
|
|
color: #FFFFFF; |
|
|
|
z-index: 9999; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
.details-body { |
|
|
|
padding-top: 80px; |
|
|
|
overflow-y: auto; |
|
|
|
max-height: 750px; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
/*结案*/ |
|
|
|
|
|
|
|
.audit { |
|
|
|
display: flex; |
|
|
|
width: 100%; |
|
|
|
height: auto; |
|
|
|
} |
|
|
|
|
|
|
|
.audit .changeWidth { |
|
|
|
flex: 1; |
|
|
|
} |
|
|
|
|
|
|
|
.audit-title { |
|
|
|
font-size: 16px; |
|
|
|
padding: 2px 10px; |
|
|
|
float: left |
|
|
|
} |
|
|
|
/*提醒框*/ |
|
|
|
.alert{ |
|
|
|
position: fixed; |
|
|
|
top: 50%; |
|
|
|
left: 50%; |
|
|
|
transform: translate(-50%, -50%); |
|
|
|
/* width: 200px; */ |
|
|
|
/* margin-left: 20%; */ |
|
|
|
z-index: 2000; |
|
|
|
text-align: center; |
|
|
|
font-size: 18px; |
|
|
|
padding: 20px 50px; |
|
|
|
} |
|
|
|
</style> |
|
|
|
<body class="gray-bg"> |
|
|
|
<div class="container-div"> |
|
|
|
<div class="row"> |
|
|
@ -194,21 +107,21 @@ |
|
|
|
</form> |
|
|
|
</div> |
|
|
|
<div class="btn-group-sm" id="toolbar" role="group"> |
|
|
|
<a class="btn btn-warning" onclick="exportExcel()" shiro:hasPermission="system:salesOrder:export"> |
|
|
|
<i class="fa fa-download"></i> 导出 |
|
|
|
</a> |
|
|
|
<a class="btn btn-warning" onclick="exportSalesOrder()" shiro:hasPermission="system:salesOrder:exportSalesOrder"> |
|
|
|
<i class="fa fa-download"></i> 导出销售订单 |
|
|
|
</a> |
|
|
|
<a class="btn btn-success" onclick="$.operate.add()" shiro:hasPermission="system:salesOrder:add"> |
|
|
|
<i class="fa fa-plus"></i> 添加 |
|
|
|
</a> |
|
|
|
<a class="btn btn-success" onclick="exportExcel()" shiro:hasPermission="system:salesOrder:export"> |
|
|
|
<i class="fa fa-download"></i> 导出销售订单列表 |
|
|
|
</a> |
|
|
|
<a class="btn btn-success" onclick="exportSalesOrder()" shiro:hasPermission="system:salesOrder:exportSalesOrder"> |
|
|
|
<i class="fa fa-download"></i> 导出销售订单模板 |
|
|
|
</a> |
|
|
|
<a class="btn btn-success" onclick="makeInvoice()" shiro:hasPermission="system:salesOrder:makeInvoice"> |
|
|
|
<i class="fa fa-plus"></i> 开票 |
|
|
|
</a> |
|
|
|
</div> |
|
|
|
<div class="col-sm-12 select-table table-striped"> |
|
|
|
<table id="bootstrap-table" style="white-space:nowrap"></table> |
|
|
|
<table id="bootstrap-table"></table> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
@ -272,7 +185,7 @@ |
|
|
|
sortStable: true, // 设置为 true 将获得稳定的排序 |
|
|
|
fixedColumns: true, // 启用冻结列 |
|
|
|
showFooter: true, |
|
|
|
rightFixedColumns:1, |
|
|
|
// rightFixedColumns:1, |
|
|
|
fixedRightNumber: 1, // 冻结右列个数 |
|
|
|
modalName: "销售订单", |
|
|
|
columns: [ |
|
|
@ -284,8 +197,20 @@ |
|
|
|
{title: '流程恢复实例ID',field: 'restoreInstanceId', visible: false}, |
|
|
|
{ title: '流程实例类型', field: 'instanceTypeName',visible: false}, |
|
|
|
{title: '申请人ID',field: 'applyUser', visible: false}, |
|
|
|
{title: '当前任务ID',field: 'taskId',visible: false}, |
|
|
|
{ title: '待办用户ID',field: 'todoUserId', visible: false}, |
|
|
|
{ title: '当前任务名称',field: 'taskName',visible: false, |
|
|
|
formatter: function(value, row, index) { |
|
|
|
return '<span class="badge badge-primary">' + value + '</span>'; |
|
|
|
} |
|
|
|
|
|
|
|
}, |
|
|
|
{title: '审核状态',field: 'auditStatus',visible: false, |
|
|
|
formatter: function(value, row, index) { |
|
|
|
return $.table.selectDictLabel(auditStatusDatas, value);} |
|
|
|
}, |
|
|
|
|
|
|
|
{title: '当前状态',field: 'taskStatus', |
|
|
|
{title: '当前状态',field: 'taskStatus', align: 'center', |
|
|
|
formatter: function(value, row, index) { |
|
|
|
if(row.auditStatus!="1"&&value != "未启动"){ |
|
|
|
return '<span class="badge badge-danger">' + value + '</span>'; |
|
|
@ -296,11 +221,11 @@ |
|
|
|
return '<span class="badge badge-primary">' + value + '</span>';} |
|
|
|
}, |
|
|
|
|
|
|
|
{title: '销售订单编号',field: 'salesOrderCode'}, |
|
|
|
{title: '客户订单编号',field: 'salesOrderNumber'}, |
|
|
|
{title: '客户ID',field: 'enterpriseCode',}, |
|
|
|
{title: '客户名称',field: 'enterpriseName'}, |
|
|
|
{title: '物料数合计',field: 'materialSum', |
|
|
|
{title: '销售订单编号',field: 'salesOrderCode', align: 'center',}, |
|
|
|
{title: '客户订单编号',field: 'salesOrderNumber', align: 'center',}, |
|
|
|
{title: '客户ID',field: 'enterpriseCode', align: 'center',}, |
|
|
|
{title: '客户名称',field: 'enterpriseName', align: 'center',}, |
|
|
|
{title: '物料数合计',field: 'materialSum', align: 'center', |
|
|
|
footerFormatter: function (value) { |
|
|
|
var sum = 0; |
|
|
|
for (var i in value) { |
|
|
@ -309,7 +234,7 @@ |
|
|
|
return "总物料: " + sum; |
|
|
|
} |
|
|
|
}, |
|
|
|
{title: '数量合计',field: 'enterpriseSum', |
|
|
|
{title: '数量合计',field: 'enterpriseSum', align: 'center', |
|
|
|
footerFormatter: function (value) { |
|
|
|
var sum = 0; |
|
|
|
for (var i in value) { |
|
|
@ -318,12 +243,7 @@ |
|
|
|
return "总数量: " + sum; |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
{title: '不含税单价(RMB)',field: 'noRmbPrice',visible:false}, |
|
|
|
{title: '含税单价(RMB)',field: 'rmbTaxPrice',visible:false}, |
|
|
|
{title: '不含税单价(美元)',field: 'noUsdPrice',visible:false}, |
|
|
|
{title: '含税单价(美元)',field: 'usdTaxPrice',visible: false}, |
|
|
|
{title: '不含税总价(RMB)',field: 'noRmbSum', |
|
|
|
{title: '不含税总价(RMB)',field: 'noRmbSum', align: 'center', |
|
|
|
footerFormatter: function (value) { |
|
|
|
var sum = 0; |
|
|
|
for (var i in value) { |
|
|
@ -332,7 +252,7 @@ |
|
|
|
return "总不含税总价: " + sum.toFixed(2); |
|
|
|
} |
|
|
|
}, |
|
|
|
{title: '含税总价(RMB)',field: 'rmbTaxSum', |
|
|
|
{title: '含税总价(RMB)',field: 'rmbTaxSum', align: 'center', |
|
|
|
footerFormatter: function (value) { |
|
|
|
var sum = 0; |
|
|
|
for (var i in value) { |
|
|
@ -341,7 +261,7 @@ |
|
|
|
return "总含税总价: " + sum.toFixed(2); |
|
|
|
} |
|
|
|
}, |
|
|
|
{title: '不含税总价(美元)',field: 'noUsdSum', |
|
|
|
{title: '不含税总价(美元)',field: 'noUsdSum', align: 'center', |
|
|
|
footerFormatter: function (value) { |
|
|
|
var sum = 0; |
|
|
|
for (var i in value) { |
|
|
@ -350,7 +270,7 @@ |
|
|
|
return "总不含税总价: " + sum.toFixed(2); |
|
|
|
} |
|
|
|
}, |
|
|
|
{title: '含税总价(美元)',field: 'usdTaxSum', |
|
|
|
{title: '含税总价(美元)',field: 'usdTaxSum', align: 'center', |
|
|
|
footerFormatter: function (value) { |
|
|
|
var sum = 0; |
|
|
|
for (var i in value) { |
|
|
@ -361,67 +281,63 @@ |
|
|
|
}, |
|
|
|
|
|
|
|
{ |
|
|
|
field: 'applyUserName', |
|
|
|
field: 'applyUserName', align: 'center', |
|
|
|
title: '<span style="color: red;">申请人</span>', |
|
|
|
formatter: function(value, row, index) { |
|
|
|
return '<span style="color: red;">' + (value ? value : "-") + '</span>'; |
|
|
|
} |
|
|
|
}, |
|
|
|
{field: 'applyTime',title: '申请时间' |
|
|
|
{field: 'applyTime',title: '申请时间', align: 'center', |
|
|
|
}, |
|
|
|
{title: '当前任务ID',field: 'taskId',visible: false}, |
|
|
|
{ title: '待办用户ID',field: 'todoUserId', visible: false}, |
|
|
|
{ title: '当前任务名称',field: 'taskName',visible: false, |
|
|
|
formatter: function(value, row, index) { |
|
|
|
return '<span class="badge badge-primary">' + value + '</span>'; |
|
|
|
} |
|
|
|
|
|
|
|
}, |
|
|
|
{title: '审核状态',field: 'auditStatus',visible: false, |
|
|
|
formatter: function(value, row, index) { |
|
|
|
return $.table.selectDictLabel(auditStatusDatas, value);} |
|
|
|
}, |
|
|
|
{title: '使用状态',field: 'useStatus',formatter:function(value, row, index) { |
|
|
|
{title: '使用状态',field: 'useStatus', align: 'center',formatter:function(value, row, index) { |
|
|
|
return $.table.selectDictLabel(useStatusDatas, value);} |
|
|
|
}, |
|
|
|
{title: '生产状态',field: 'makeStatus',formatter:function(value, row, index) { |
|
|
|
{title: '生产状态',field: 'makeStatus', align: 'center',formatter:function(value, row, index) { |
|
|
|
return $.table.selectDictLabel(makeStatusDatas, value);} |
|
|
|
}, |
|
|
|
{title: '出货状态',field: 'deliveryStatus',formatter:function(value, row, index) { |
|
|
|
{title: '出货状态',field: 'deliveryStatus', align: 'center',formatter:function(value, row, index) { |
|
|
|
return $.table.selectDictLabel(deliveryStatusDatas, value);} |
|
|
|
}, |
|
|
|
{title: '收款结案状态',field:'closeStatus',formatter:function(value, row, index){ |
|
|
|
{title: '收款结案状态',field:'closeStatus', align: 'center',formatter:function(value, row, index){ |
|
|
|
return $.table.selectDictLabel(closeStatusDatas, value); |
|
|
|
} |
|
|
|
}, |
|
|
|
{title: '业务人员',field: 'businessMembers',visible: false}, |
|
|
|
{title: '是否开票',field:'invoice',formatter:function(value, row, index){ |
|
|
|
|
|
|
|
{title: '是否开票',field:'invoice', align: 'center',formatter:function(value, row, index){ |
|
|
|
return $.table.selectDictLabel(sysWhetherDatas, value); |
|
|
|
} |
|
|
|
}, |
|
|
|
{title: '订单类型',field: 'salesOrderType',formatter: function(value, row, index) { |
|
|
|
{title: '订单类型',field: 'salesOrderType', align: 'center',formatter: function(value, row, index) { |
|
|
|
return $.table.selectDictLabel(salesOrderTypeDatas, value); |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
{title: '是否含税',field:'confirmTax' ,align: 'center',formatter:function(value, row, index) { |
|
|
|
return $.table.selectDictLabel(confirmTaxDatas, value); |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
|
|
|
|
{title: '是否含税',field:'confirmTax',formatter:function(value, row, index) { |
|
|
|
return $.table.selectDictLabel(confirmTaxDatas, value); |
|
|
|
{title: '付款条件',field: 'paymentTerms', align: 'center', |
|
|
|
formatter: function(value, row, index) { |
|
|
|
return $.table.tooltip(value, 5, "open"); |
|
|
|
} |
|
|
|
}, |
|
|
|
{title: '交货条件',field: 'deliveryConditions', align: 'center', |
|
|
|
formatter: function(value, row, index) { |
|
|
|
return $.table.tooltip(value, 5, "open"); |
|
|
|
} |
|
|
|
}, |
|
|
|
{title: '联系人',field: 'customerContact', align: 'center',}, |
|
|
|
{title: '联系电话',field: 'contactNumber', align: 'center',}, |
|
|
|
{title: '收货地址',field: 'deliveryAddress', align: 'center', |
|
|
|
formatter: function(value, row, index) { |
|
|
|
return $.table.tooltip(value, 5, "open"); |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
{title: '计划交付时间',field:'deliveryTime' ,visible: false}, |
|
|
|
{title: '付款条件',field: 'paymentTerms'}, |
|
|
|
{title: '交货条件',field: 'deliveryConditions'}, |
|
|
|
{title: '联系人',field: 'customerContact'}, |
|
|
|
{title: '联系电话',field: 'contactNumber'}, |
|
|
|
{title: '传真号码',field: 'customerFax',visible: false}, |
|
|
|
{title: '收货地址',field: 'deliveryAddress'}, |
|
|
|
{title: '接单日期',field: 'orderReceivingTime',visible: false}, |
|
|
|
{title: '接单方式', field: 'orderReceivingMode',visible: false}, |
|
|
|
{title: '交货方式',field: 'deliveryMethod',visible: false}, |
|
|
|
{title: '待出库数量',field: 'unBoundQuantity', |
|
|
|
{title: '待出库数量',field: 'unBoundQuantity', align: 'center', |
|
|
|
footerFormatter: function (value) { |
|
|
|
var sum = 0; |
|
|
|
for (var i in value) { |
|
|
@ -430,7 +346,7 @@ |
|
|
|
return "总待出库数量: " + sum; |
|
|
|
} |
|
|
|
}, |
|
|
|
{title: '已出库数量',field: 'outBoundQuantity', |
|
|
|
{title: '已出库数量',field: 'outBoundQuantity', align: 'center', |
|
|
|
footerFormatter: function (value) { |
|
|
|
var sum = 0; |
|
|
|
for (var i in value) { |
|
|
@ -439,7 +355,7 @@ |
|
|
|
return "总已出库数量: " + sum; |
|
|
|
} |
|
|
|
}, |
|
|
|
{title: '实收金额(RMB)',field:'standbyOne', |
|
|
|
{title: '实收金额(RMB)',field:'standbyOne', align: 'center', |
|
|
|
footerFormatter: function (value) { |
|
|
|
var sum = 0; |
|
|
|
for (var i in value) { |
|
|
@ -448,7 +364,7 @@ |
|
|
|
return "总实收金额: " + sum.toFixed(2); |
|
|
|
} |
|
|
|
}, |
|
|
|
{title: '实收金额(美元)',field:'standbyTwo', |
|
|
|
{title: '实收金额(美元)',field:'standbyTwo', align: 'center', |
|
|
|
footerFormatter: function (value) { |
|
|
|
var sum = 0; |
|
|
|
for (var i in value) { |
|
|
@ -457,15 +373,15 @@ |
|
|
|
return "总实收金额: " + sum.toFixed(2); |
|
|
|
} |
|
|
|
}, |
|
|
|
{title: '录入时间',field:'createTime'}, |
|
|
|
{title: '更新人',field:'updateBy'}, |
|
|
|
{title: '更新时间',field:'updateTime'}, |
|
|
|
{title: '备注',field:'remark'}, |
|
|
|
{title: '录入时间',field:'createTime', align: 'center',}, |
|
|
|
{title: '更新人',field:'updateBy', align: 'center',}, |
|
|
|
{title: '更新时间',field:'updateTime', align: 'center',}, |
|
|
|
{title: '备注',field:'remark', align: 'center',}, |
|
|
|
{title: '操作',align: 'center',formatter: function (value, row, index) { |
|
|
|
var actions = []; |
|
|
|
if(row.auditStatus=="1" && row.useStatus=="1" && !row.cancelInstanceId) { |
|
|
|
// 作废 |
|
|
|
actions.push('<a class="btn btn-danger btn-xs ' + cancelFlag + ' " href="javascript:void(0)" onclick="cancel(\'' + row.salesOrderId + '\')"><i class="fa fa-remove"></i> 作废</a>'); |
|
|
|
actions.push('<a class=" ' + cancelFlag + ' " href="javascript:void(0)" onclick="cancel(\'' + row.salesOrderId + '\')"><i class="fa fa-remove"></i> 作废</a>'); |
|
|
|
|
|
|
|
// 已作废 |
|
|
|
} |
|
|
@ -475,7 +391,7 @@ |
|
|
|
// 有流程实例id |
|
|
|
if(row.useStatus=="2" && !row.restoreInstanceId){ |
|
|
|
// 恢复 |
|
|
|
actions.push('<a class="btn btn-success btn-xs" href="javascript:void(0)" onclick="$.operate.restore(\'' + row.salesOrderId + '\')"><i class="fa fa-window-restore"></i> 恢复</a> '); |
|
|
|
actions.push('<a class="" href="javascript:void(0)" onclick="$.operate.restore(\'' + row.salesOrderId + '\')"><i class="fa fa-window-restore"></i> 恢复</a> '); |
|
|
|
} |
|
|
|
// 有流程实例id |
|
|
|
if (row.instanceId) { |
|
|
@ -484,25 +400,26 @@ |
|
|
|
var todoUserIdList = row.todoUserId.split(","); |
|
|
|
if(todoUserIdList.includes(loginName)){ |
|
|
|
var nodeName = row.taskName=='驳回调整'?' 调整申请':' 审批'; |
|
|
|
actions.push('<a class="btn btn-success btn-xs" href="javascript:void(0)" onclick="showVerifyDialog(\'' + prefix + '\',\'' + row.taskId + '\', \'' + row.taskName+"-"+ row.instanceTypeName +"申请" + '\')"><i class="fa fa-edit"></i> '+nodeName+'</a> '); |
|
|
|
actions.push('<a href="javascript:void(0)" onclick="showVerifyDialog(\'' + prefix + '\',\'' + row.taskId + '\', \'' + row.taskName+"-"+ row.instanceTypeName +"申请" + '\')"><i class="fa fa-edit"></i> '+nodeName+'</a> '); |
|
|
|
} |
|
|
|
} |
|
|
|
// 审批历史 |
|
|
|
actions.push('<a class="btn btn-warning btn-xs" href="javascript:void(0)" onclick="showHistoryDialog(\'' + row.instanceId + '\')"><i class="fa fa-list"></i> 审批历史</a> '); |
|
|
|
actions.push('<a href="javascript:void(0)" onclick="showHistoryDialog(\'' + row.instanceId + '\')"><i class="fa fa-list"></i> 审批历史</a> '); |
|
|
|
// 进度查看 |
|
|
|
actions.push('<a class="btn btn-info btn-xs" href="javascript:void(0)" onclick="showProcessImgDialog(\'' + row.instanceId + '\')"><i class="fa fa-image"></i> 进度查看</a> '); |
|
|
|
actions.push('<a href="javascript:void(0)" onclick="showProcessImgDialog(\'' + row.instanceId + '\')"><i class="fa fa-image"></i> 进度查看</a> '); |
|
|
|
} |
|
|
|
|
|
|
|
// 生产状态部分完成/全部完成 |
|
|
|
if (row.makeStatus == "5" || row.makeStatus == "6"){ |
|
|
|
actions.push('<a class="btn btn-success btn-xs ' + salesDeliverGoodsFlag + '" href="javascript:void(0)" onclick="salesDeliverGoods(\'' + row.salesOrderId + '\')"><i class="fa fa-edit"></i>出货</a> '); |
|
|
|
actions.push('<a class=" ' + salesDeliverGoodsFlag + '" href="javascript:void(0)" onclick="salesDeliverGoods(\'' + row.salesOrderId + '\')"><i class="fa fa-edit"></i>出货</a> '); |
|
|
|
} |
|
|
|
if (row.closeStatus == 3){ |
|
|
|
actions.push('<a class="btn btn-success btn-xs ' + startAftersalesFlag + '" href="javascript:void(0)" onclick="startAftersales(\'' + row.salesOrderId + '\')"><i class="fa fa-edit"></i>售后</a> '); |
|
|
|
actions.push('<a class=" ' + startAftersalesFlag + '" href="javascript:void(0)" onclick="startAftersales(\'' + row.salesOrderId + '\')"><i class="fa fa-edit"></i>售后</a> '); |
|
|
|
} |
|
|
|
// 详情 |
|
|
|
actions.push('<a class="btn btn-primary btn-xs " href="javascript:void(0)" onclick="$.operate.detail(\'' + row.salesOrderId + '\')"><i class="fa fa-eye"></i> 详情</a> '); |
|
|
|
return actions.join(''); |
|
|
|
actions.push('<a href="javascript:void(0)" onclick="$.operate.detail(\'' + row.salesOrderId + '\')"><i class="fa fa-eye"></i> 详情</a> '); |
|
|
|
var actionLinks = actions.join(''); |
|
|
|
return $.table.dropdownToggle(actionLinks); |
|
|
|
} |
|
|
|
} |
|
|
|
], |
|
|
|