refactor(templates): 优化多个模板的样式和布局

-调整了多个模板的输入框、选择框等元素的样式
- 优化了部分布局结构,使页面更加美观
-统一了必填项的样式
- 调整了部分字体和颜色
master
chenhao 2025-06-11 17:55:55 +08:00
parent 43906d59ef
commit da0bde24e6
25 changed files with 359 additions and 296 deletions

View File

@ -141,10 +141,10 @@
<td><input value="${data.cataloguePrice || ''}" name="softwareProjectProductInfoList[${length}].cataloguePrice" readonly type="text" class="form-control cataloguePrice" required></td>
<td>
<input value="${data.guidanceDiscount || ''}" name="softwareProjectProductInfoList[${length}].guidanceDiscount" readonly type="hidden" class="form-control guidanceDiscount" >
<label style="display: flex;align-items: center"><input style="width: calc(100% - 10px);" value="${data.guidanceDiscountFormat || ''}" readonly required type="number" min="0" max="100" step="0.1" class="form-control discount-format" required>%
<label style="display: flex;align-items: center"><input style="width: calc(100% - 10px);" value="${data.guidanceDiscountFormat || ''}" readonly required type="number" min="0" max="100" step="0.1" class="form-control guidance-discount-format" required>%
</label>
</td>
<td><input value="${data.discount || ''}" name="maintenanceProjectProductInfoList[${length}].discount" type="hidden" class="form-control discount" required>
<td><input value="${data.discount || ''}" name="softwareProjectProductInfoList[${length}].discount" type="hidden" class="form-control discount" required>
<label style="display: flex;align-items: center"><input style="width: calc(100% - 10px);" value="${data.discountFormat || ''}" required type="number" min="0" max="100" step="0.1" class="form-control discount-format" required>%
</label></td>
<td>
@ -179,12 +179,12 @@
<td><input value="${data.quantity || ''}" name="hardwareProjectProductInfoList[${length}].quantity" type="number" class="form-control quantity" step="1" required></td>
<td><input value="${data.cataloguePrice || ''}" name="hardwareProjectProductInfoList[${length}].cataloguePrice" readonly type="text" class="form-control cataloguePrice" required></td>
<td>
<input value="${data.guidanceDiscount || ''}" name="softwareProjectProductInfoList[${length}].guidanceDiscount" readonly type="hidden" class="form-control guidanceDiscount" >
<label style="display: flex;align-items: center"><input style="width: calc(100% - 10px);" value="${data.guidanceDiscountFormat || ''}" readonly required type="number" min="0" max="100" step="0.1" class="form-control discount-format" required>%
<input value="${data.guidanceDiscount || ''}" name="hardwareProjectProductInfoList[${length}].guidanceDiscount" readonly type="hidden" class="form-control guidanceDiscount" >
<label style="display: flex;align-items: center"><input style="width: calc(100% - 10px);" value="${data.guidanceDiscountFormat || ''}" readonly required type="number" min="0" max="100" step="0.01" class="form-control guidance-discount-format" required>%
</label>
</td>
<td><input value="${data.discount || ''}" name="maintenanceProjectProductInfoList[${length}].discount" type="hidden" class="form-control discount" required>
<label style="display: flex;align-items: center"><input style="width: calc(100% - 10px);" value="${data.discountFormat || ''}" required type="number" min="0" max="100" step="0.1" class="form-control discount-format" required>%
<td><input value="${data.discount || ''}" name="hardwareProjectProductInfoList[${length}].discount" type="hidden" class="form-control discount" required>
<label style="display: flex;align-items: center"><input style="width: calc(100% - 10px);" value="${data.discountFormat || ''}" required type="number" min="0" max="100" step="0.01" class="form-control discount-format" required>%
</label></td>
<td>
<input value="${data.price || ''}" name="hardwareProjectProductInfoList[${length}].price" type="hidden" class="form-control price" placeholder="自动计算" required readonly>
@ -218,8 +218,8 @@
<td><input value="${data.quantity || ''}" name="maintenanceProjectProductInfoList[${length}].quantity" type="number" class="form-control quantity" step="1" required></td>
<td><input value="${data.cataloguePrice || ''}" name="maintenanceProjectProductInfoList[${length}].cataloguePrice" readonly type="text" class="form-control cataloguePrice" required></td>
<td>
<input value="${data.guidanceDiscount || ''}" name="softwareProjectProductInfoList[${length}].guidanceDiscount" readonly type="hidden" class="form-control guidanceDiscount" >
<label style="display: flex;align-items: center"><input style="width: calc(100% - 10px);" value="${data.guidanceDiscountFormat || ''}" readonly required type="number" min="0" max="100" step="0.1" class="form-control discount-format" required>%
<input value="${data.guidanceDiscount || ''}" name="maintenanceProjectProductInfoList[${length}].guidanceDiscount" readonly type="hidden" class="form-control guidanceDiscount" >
<label style="display: flex;align-items: center"><input style="width: calc(100% - 10px);" value="${data.guidanceDiscountFormat || ''}" readonly required type="number" min="0" max="100" step="0.01" class="form-control guidance-discount-format" required>%
</label>
</td>
<td><input value="${data.discount || ''}" name="maintenanceProjectProductInfoList[${length}].discount" type="hidden" class="form-control discount" required>
@ -337,6 +337,9 @@
$(ele).parent().parent().find('.productBomCode').val(rows[0].productCode)
$(ele).parent().parent().find('.model').val(rows[0].model)
$(ele).parent().parent().find('.productDesc').val(rows[0].description)
$(ele).parent().parent().find('.guidanceDiscount').val(rows[0].guidanceDiscount)
$(ele).parent().parent().find('.guidance-discount-format').val(formatAmountNumber(rows[0].guidanceDiscount*100))
$(ele).parent().parent().find('.cataloguePrice').val(rows[0].cataloguePrice)
$.modal.close(index);
}

View File

@ -37,7 +37,9 @@
padding: 10px 0;
color: #0075ff;
}
.white-bg{
padding: 0px 50px;
}
.checkbox-group label {
margin-right: 20px;
}
@ -299,33 +301,7 @@
</table>
</div>
<div class="layui-tab-item">
<div style="display: flex;flex-direction: row-reverse;">
<button type="button" class="add-btn" onclick="addPocLog({})">添加</button>
</div>
<table id="pocLog">
<thead>
<tr>
<th style="white-space: pre-line">测试环境
1.服务器配置
2.终端配置
3.操作系统
4.云桌面软件版本
</th>
<th>测试进展</th>
<th style="white-space: pre-line">项目成员信息
1.H3C销售/SE
2.汇智接口人
3.研发处理人员
4.现场处理人员
</th>
<th style="width: 110px">启动日期</th>
<th style="width: 110px">预计完成日期</th>
<th style="width: 110px">实际完成日期</th>
</tr>
</thead>
<tbody></tbody>
<!-- 可动态添加行 -->
</table>
<div th:replace="project/info/common/pocLog::pocLog()"></div>
</div>
</div>
</div>

View File

@ -0,0 +1,45 @@
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>配置信息表格组件</title>
</head>
<style>
.add-btn-div {
display: flex;
justify-content: space-between;
}
.add-btn {
background: #409eff;
color: #fff;
border: none;
padding: 5px 10px;
cursor: pointer;
margin-bottom: 5px;
}
.section-title {
font-weight: bold;
font-size: 30px;
padding: 10px 0;
color: #0075ff;
}
</style>
<body>
<div id="config-info-component" th:fragment="pocLog()">
<div class="layui-tab">
</div>
<!-- JS 函数引用或内联 -->
<script th:inline="javascript"> /*<![CDATA[*/
/*]]>*/
</script>
</div>
</body>
</html>

View File

@ -100,7 +100,9 @@
label {
margin-bottom: 0 !important;
}
.white-bg{
padding: 0px 50px;
}
</style>
<body class="white-bg">
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
@ -319,33 +321,7 @@
</table>
</div>
<div class="layui-tab-item">
<div style="display: flex;flex-direction: row-reverse;">
<button type="button" id="addPocLog" class="add-btn" onclick="addPocLog({})">添加</button>
</div>
<table id="pocLog">
<thead>
<tr>
<th style="white-space: pre-line">测试环境
1.服务器配置
2.终端配置
3.操作系统
4.云桌面软件版本
</th>
<th>测试进展</th>
<th style="white-space: pre-line">项目成员信息
1.H3C销售/SE
2.汇智接口人
3.研发处理人员
4.现场处理人员
</th>
<th style="width: 110px">启动日期</th>
<th style="width: 110px">预计完成日期</th>
<th style="width: 110px">实际完成日期</th>
</tr>
</thead>
<tbody></tbody>
<!-- 可动态添加行 -->
</table>
<div th:replace="project/info/common/pocLog::pocLog()"></div>
</div>
<div class="layui-tab-item">
<table id="sysLog">

View File

@ -147,10 +147,7 @@
<a class="btn btn-success" onclick="$.operate.addFull()" shiro:hasPermission="sip:product:add">
<i class="fa fa-plus"></i> 添加
</a>
<a class="btn btn-primary single disabled" onclick="$.operate.editFull()"
shiro:hasPermission="sip:product:edit">
<i class="fa fa-edit"></i> 修改
</a>
<a class="btn btn-danger multiple disabled" onclick="$.operate.removeAll()"
shiro:hasPermission="sip:product:remove">
<i class="fa fa-remove"></i> 删除

View File

@ -75,6 +75,17 @@
field: 'description',
title: '描述'
},
{
field: 'cataloguePrice',
title: '目录单价'
},
{
field: 'guidanceDiscount',
title: '指导折扣',
formatter: function(value, row, index) {
return value * 100 + '%';
}
},
]
};
$.table.init(options);

View File

@ -22,6 +22,9 @@
.is-required {
color: red;
display: inline-block;
vertical-align: middle;
font-size: 25px;
}
th {
@ -33,6 +36,9 @@
font-size: 30px;
padding: 10px 0;
color: #0075ff;
display: flex;
align-items: flex-end; /* 垂直居中 */
font-family: "微软雅黑", Arial, sans-serif; /* 统一字体 */
}
.checkbox-group label {
@ -66,7 +72,7 @@
}
.shortTd {
width: 100px;
width: 160px;
}
input, textarea, .productTable td {
@ -99,13 +105,18 @@
font-size: 10px;
color: #999999;
}
.white-bg{
padding: 0px 50px;
}
</style>
<body class="white-bg">
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
<form id="form-order-add">
<div class="section-title">新建订单<span style="margin-left: 10px">|</span>
<span id="projectNameBox" style="color: black"></span></div>
<table>
<div class="section-title">
<span class="title-text">编辑订单</span>
<span style="padding-bottom: 4px; margin-left: 10px;" >|</span>
<span id="projectNameBox" style="margin-left: 10px;color: black;font-size: 24px"></span>
</div>
<tr>
<td class="shortTd">项目编号<span class="is-required">*</span></td>
<td>
@ -148,7 +159,7 @@
</td>
</tr>
<tr>
<td>进货商商务接口人姓名<span class="is-required">*</span></td>
<td>进货商接口人<span class="is-required">*</span></td>
<td><input type="text" name="businessPerson" class="form-control" required>
</td>
<td>Email</td>
@ -170,7 +181,7 @@
<option th:each="dict : ${type}" th:text="${dict.dictLabel}"
th:value="${dict.dictValue}"></option>
</select></td>
<td class="shortTd">出货金额<span class="is-required">*</span></td>
<td class="shortTd">订单金额<span class="is-required">*</span></td>
<td>
<input id="shipmentAmount" name="shipmentAmount" class="form-control" type="hidden" >
<input type="text" required id="displayshipmentAmount" class="form-control" placeholder="输入金额"
@ -180,15 +191,15 @@
</td>
</tr>
<tr>
<td>实际进货金额<span class="is-required">*</span></td>
<td><input type="hidden" id="actualPurchaseAmount" name="actualPurchaseAmount" class="form-control" >
<input type="text" required id="displayactualPurchaseAmount" class="form-control" placeholder="输入金额"
oninput="this.value = this.value.replace(/[^0-9.]/g,'').replace(/(\..*)\./g, '$1');"
onfocus="this.value=document.getElementById('actualPurchaseAmount').value"
onblur="updateShipmentAmountValue('actualPurchaseAmount')" >
</td>
<!-- <td>实际进货金额<span class="is-required">*</span></td>-->
<!-- <td><input type="hidden" id="actualPurchaseAmount" name="actualPurchaseAmount" class="form-control" >-->
<!-- <input type="text" required id="displayactualPurchaseAmount" class="form-control" placeholder="输入金额"-->
<!-- oninput="this.value = this.value.replace(/[^0-9.]/g,'').replace(/(\..*)\./g, '$1');"-->
<!-- onfocus="this.value=document.getElementById('actualPurchaseAmount').value"-->
<!-- onblur="updateShipmentAmountValue('actualPurchaseAmount')" >-->
<!-- </td>-->
<td>执行单有效截止时间<span class="is-required">*</span></td>
<td colspan="3">
<td colspan="5">
<input name="orderEndTime" class="form-control" placeholder="yyyy-MM-dd"
required>
</td>
@ -210,14 +221,19 @@
</td>
</tr>
<tr>
<td>通知人<span class="is-required">*</span></td>
<td><input type="text" name="notifier" class="form-control" required>
<td>下单通路<span class="is-required">*</span></td>
<td colspan="2">
<select name="orderChannel" class="form-control" required>
<option value="">请选择</option>
<option value="1">总代</option>
<option value="2">直签</option>
</select>
</td>
<td>供货商<span class="is-required">*</span></td>
<td colspan="2">
<input name="supplier" class="form-control" type="text" required>
</td>
<td>Email</td>
<td><input type="text" name="notifierEmail"
class="form-control"></td>
<td>联系方式<span class="is-required">*</span></td>
<td><input name="notifierPhone" class="form-control" type="text" required></td>
</tr>
<tr>
<td>汇智责任人</td>
@ -230,16 +246,7 @@
<td>联系方式<span class="is-required">*</span></td>
<td><input name="dutyPhone" class="form-control" type="text" required></td>
</tr>
<tr>
<td>下单通路<span class="is-required">*</span></td>
<td colspan="5">
<select name="orderChannel" class="form-control" required>
<option value="">请选择</option>
<option value="1">总代</option>
<option value="2">直签</option>
</select>
</td>
</tr>
<tr>
<td>进货商<span class="is-required">*</span></td>
<td><input name="partnerName" class="form-control" type="text"
@ -266,12 +273,7 @@
<td>联系方式<span class="is-required">*</span></td>
<td><input name="partnerPhone" class="form-control" type="text" required></td>
</tr>
<tr>
<td>供货商<span class="is-required">*</span></td>
<td colspan="5">
<input name="supplier" class="form-control" type="text" required>
</td>
</tr>
<tr>
<td>其他特别说明</td>
<td colspan="5">

View File

@ -22,6 +22,9 @@
.is-required {
color: red;
display: inline-block;
vertical-align: middle;
font-size: 25px;
}
th {
@ -33,6 +36,9 @@
font-size: 30px;
padding: 10px 0;
color: #0075ff;
display: flex;
align-items: flex-end; /* 垂直居中 */
font-family: "微软雅黑", Arial, sans-serif; /* 统一字体 */
}
.checkbox-group label {
@ -60,7 +66,7 @@
}
.shortTd {
width: 100px;
width: 160px;
}
input, textarea, .productTable td {
@ -93,13 +99,20 @@
font-size: 10px;
color: #999999;
}
.white-bg{
padding: 0px 50px;
}
</style>
<body class="white-bg">
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
<form id="form-order-edit" th:object="${projectOrderInfo}">
<div class="section-title">编辑订单<span style="margin-left: 10px">|</span>
<span id="projectNameBox" style="color: black"></span></div>
<table>
<div class="section-title">
<span class="title-text">编辑订单</span>
<span style="padding-bottom: 4px; margin-left: 10px;" >|</span>
<span id="projectNameBox" style="margin-left: 10px;color: black;font-size: 24px"></span>
</div>
<table>
<tr>
<td class="shortTd">项目编号<span class="is-required">*</span></td>
<td>
@ -144,7 +157,7 @@
</td>
</tr>
<tr>
<td>进货商商务接口人姓名<span class="is-required">*</span></td>
<td>进货商接口人<span class="is-required">*</span></td>
<td><input type="text" name="businessPerson" th:field="*{businessPerson}" class="form-control" required>
</td>
<td>Email</td>
@ -169,7 +182,7 @@
<option th:each="dict : ${type}" th:text="${dict.dictLabel}"
th:value="${dict.dictValue}"></option>
</select></td>
<td class="shortTd">出货金额<span class="is-required">*</span></td>
<td class="shortTd">订单金额<span class="is-required">*</span></td>
<td><input name="shipmentAmount" id="shipmentAmount" th:field="*{shipmentAmount}" class="form-control" type="hidden"
>
<input type="text" required id="displayshipmentAmount" class="form-control" placeholder="输入金额"
@ -179,16 +192,16 @@
</td>
</tr>
<tr>
<td>实际进货金额<span class="is-required">*</span></td>
<td><input type="hidden" id="actualPurchaseAmount" name="actualPurchaseAmount" th:field="*{actualPurchaseAmount}"
class="form-control" >
<input type="text" required id="displayactualPurchaseAmount" class="form-control" placeholder="输入金额"
oninput="this.value = this.value.replace(/[^0-9.]/g,'').replace(/(\..*)\./g, '$1');"
onfocus="this.value=document.getElementById('actualPurchaseAmount').value"
onblur="updateShipmentAmountValue('actualPurchaseAmount')" >
</td>
<!-- <td>实际进货金额<span class="is-required">*</span></td>-->
<!-- <td><input type="hidden" id="actualPurchaseAmount" name="actualPurchaseAmount" th:field="*{actualPurchaseAmount}"-->
<!-- class="form-control" >-->
<!-- <input type="text" required id="displayactualPurchaseAmount" class="form-control" placeholder="输入金额"-->
<!-- oninput="this.value = this.value.replace(/[^0-9.]/g,'').replace(/(\..*)\./g, '$1');"-->
<!-- onfocus="this.value=document.getElementById('actualPurchaseAmount').value"-->
<!-- onblur="updateShipmentAmountValue('actualPurchaseAmount')" >-->
<!-- </td>-->
<td>执行单有效截止时间<span class="is-required">*</span></td>
<td colspan="3">
<td colspan="5">
<input name="orderEndTime" class="form-control"
th:value="${#dates.format(projectOrderInfo.orderEndTime, 'yyyy-MM-dd')}"
placeholder="yyyy-MM-dd"
@ -216,14 +229,17 @@
</td>
</tr>
<tr>
<td>通知人<span class="is-required">*</span></td>
<td><input type="text" name="notifier" class="form-control" th:field="*{notifier}" required>
<td>下单通路<span class="is-required">*</span></td>
<td >
<select name="orderChannel" class="form-control" required th:field="*{orderChannel}">
<option value="">请选择</option>
<option value="1">总代</option>
<option value="2">直签</option>
</select>
</td>
<td>Email</td>
<td><input type="text" name="notifierEmail" th:field="*{notifierEmail}"
class="form-control"></td>
<td>联系方式<span class="is-required">*</span></td>
<td><input name="notifierPhone" class="form-control" th:field="*{notifierPhone}" type="text" required>
<td>供货商<span class="is-required">*</span></td>
<td colspan="3">
<input name="supplier" class="form-control" type="text" required th:field="*{supplier}">
</td>
</tr>
<tr>
@ -238,16 +254,7 @@
<td>联系方式<span class="is-required">*</span></td>
<td><input name="dutyPhone" class="form-control" th:field="*{dutyPhone}" type="text" required></td>
</tr>
<tr>
<td>下单通路<span class="is-required">*</span></td>
<td colspan="5">
<select name="orderChannel" class="form-control" required th:field="*{orderChannel}">
<option value="">请选择</option>
<option value="1">总代</option>
<option value="2">直签</option>
</select>
</td>
</tr>
<tr>
<td>进货商<span class="is-required">*</span></td>
<td><input name="partnerName" class="form-control" type="text" th:field="*{partnerName}"
@ -275,12 +282,7 @@
<td><input name="partnerPhone" class="form-control" type="text" required th:field="*{partnerPhone}">
</td>
</tr>
<tr>
<td>供货商<span class="is-required">*</span></td>
<td colspan="5">
<input name="supplier" class="form-control" type="text" required th:field="*{supplier}">
</td>
</tr>
<tr>
<td>其他特别说明</td>
<td colspan="5">
@ -441,12 +443,12 @@
$(function () {
let shipmentAmount = [[${projectOrderInfo.shipmentAmount}]] || ''
if (shipmentAmount) {
document.getElementById('displayshipmentAmount').value=shipmentAmount.toLocaleString('en-US');
}
let actualPurchaseAmount = [[${projectOrderInfo.actualPurchaseAmount}]] || ''
if (actualPurchaseAmount) {
document.getElementById('displayactualPurchaseAmount').value=actualPurchaseAmount.toLocaleString('en-US');
document.getElementById('displayshipmentAmount').value=formatAmountNumber(shipmentAmount);
}
// let actualPurchaseAmount = [[${projectOrderInfo.actualPurchaseAmount}]] || ''
// if (actualPurchaseAmount) {
// document.getElementById('displayactualPurchaseAmount').value=actualPurchaseAmount.toLocaleString('en-US');
// }
initProductList()
initSaveDraft()
$("input[name='estimatedOrderTime']").datetimepicker({

View File

@ -50,10 +50,6 @@
<label>汇智负责人:</label>
<input type="text" name="dutyName" placeholder="项目负责人" />
</li>
<li>
<label>通知人:</label>
<input type="text" name="notifier" placeholder="通知人" />
</li>
<li>
<label>进货商:</label>
<input type="text" name="partnerName" placeholder="进货商" />
@ -74,9 +70,7 @@
<a class="btn btn-success" onclick="$.operate.addFull()" shiro:hasPermission="product:order:add">
<i class="fa fa-plus"></i> 添加
</a>
<a class="btn btn-primary single disabled" onclick="$.operate.editFull()" shiro:hasPermission="product:order:edit">
<i class="fa fa-edit"></i> 修改
</a>
<a class="btn btn-danger multiple disabled" onclick="$.operate.removeAll()" shiro:hasPermission="product:order:remove">
<i class="fa fa-remove"></i> 删除
</a>
@ -156,6 +150,10 @@
return $.table.selectDictLabel([[${@dict.getType('order_status')}]], value);
}
},
{
field: 'agentName',
title: '代表处'
},
{
field: 'dutyName',
title: '汇智负责人'
@ -163,14 +161,6 @@
{
field: '',
title: '物流状态'
},
{
field: 'agentName',
title: '代表处'
},
{
field: 'notifier',
title: '通知人'
},
{
field: 'partnerName',

View File

@ -75,6 +75,17 @@
field: 'description',
title: '描述'
},
{
field: 'cataloguePrice',
title: '目录单价'
},
{
field: 'guidanceDiscount',
title: '指导折扣',
formatter: function(value, row, index) {
return value * 100 + '%';
}
},
]
};
$.table.init(options);

View File

@ -25,9 +25,9 @@
<div id="element1" class="col-xs-12" style="padding: 0">
<div class="col-xs-6">
<div class="form-group">
<label class="col-sm-4 control-label">省:</label>
<label class="col-sm-4 control-label is-required">省:</label>
<div class="col-sm-8">
<select name="province" th:data-value="*{province}" class="province form-control m-b" data-first-title="选择省">
<select name="province" required th:data-value="*{province}" class="province form-control m-b" data-first-title="选择省">
<option value="">请选择</option>
</select>
</div>
@ -35,9 +35,9 @@
</div>
<div class="col-xs-6">
<div class="form-group">
<label class="col-sm-4 control-label">市:</label>
<label class="col-sm-4 control-label is-required">市:</label>
<div class="col-sm-8">
<select name="city" th:data-value="*{city}" class="city form-control m-b" data-first-title="选择省">
<select name="city" required th:data-value="*{city}" class="city form-control m-b" data-first-title="选择省">
<option value="">请选择</option>
</select>

View File

@ -49,9 +49,7 @@
<a class="btn btn-success" onclick="$.operate.add()" shiro:hasPermission="system:agent:add">
<i class="fa fa-plus"></i> 添加
</a>
<a class="btn btn-primary single disabled" onclick="$.operate.edit()" shiro:hasPermission="system:agent:edit">
<i class="fa fa-edit"></i> 修改
</a>
<a class="btn btn-danger multiple disabled" onclick="$.operate.removeAll()" shiro:hasPermission="system:agent:remove">
<i class="fa fa-remove"></i> 删除
</a>

View File

@ -26,9 +26,9 @@
<div id="element1" class="col-xs-12" style="padding: 0">
<div class="col-xs-6">
<div class="form-group">
<label class="col-sm-4 control-label">省:</label>
<label class="col-sm-4 control-label is-required">省:</label>
<div class="col-sm-8">
<select name="province" th:data-value="*{province}" class="province form-control m-b" data-first-title="选择省">
<select name="province" required th:data-value="*{province}" class="province form-control m-b" data-first-title="选择省">
<option value="">请选择</option>
</select>
</div>
@ -36,9 +36,9 @@
</div>
<div class="col-xs-6">
<div class="form-group">
<label class="col-sm-4 control-label">市:</label>
<label class="col-sm-4 control-label is-required">市:</label>
<div class="col-sm-8">
<select name="city" th:data-value="*{city}" class="city form-control m-b" data-first-title="选择省">
<select name="city" required th:data-value="*{city}" class="city form-control m-b" data-first-title="选择省">
<option value="">请选择</option>
</select>

View File

@ -17,26 +17,19 @@
</div>
<div class="col-xs-6">
<div class="form-group">
<label class="col-sm-4 control-label">最终客户名称:</label>
<label class="col-sm-4 control-label is-required">最终客户名称:</label>
<div class="col-sm-8">
<input name="customerName" 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="customerPostcode" class="form-control" type="text">
<input name="customerName" required class="form-control" type="text">
</div>
</div>
</div>
<div id="element1" class="col-xs-12" style="padding: 0">
<div class="col-xs-6">
<div class="form-group">
<label class="col-sm-4 control-label">省:</label>
<label class="col-sm-4 control-label is-required">省:</label>
<div class="col-sm-8">
<select name="province" class="province form-control m-b" data-first-title="选择省">
<select name="province" required class="province form-control m-b" data-first-title="选择省">
<option value="">请选择</option>
</select>
</div>
@ -44,15 +37,28 @@
</div>
<div class="col-xs-6">
<div class="form-group">
<label class="col-sm-4 control-label">市:</label>
<label class="col-sm-4 control-label is-required">市:</label>
<div class="col-sm-8">
<select name="city" class="city form-control m-b" data-first-title="选择省">
<select name="city" required class="city form-control m-b" data-first-title="选择省">
<option value="">请选择</option>
</select>
</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">
<select name="industryType" class="form-control"
th:with="type=${@dict.getType('industry_code')}" required>
<option value="">请选择</option>
<option th:each="dict : ${type}" th:text="${dict.dictLabel}"
th:value="${dict.dictValue}"></option>
</select>
</div>
</div>
</div>
<div class="col-xs-6">
<div class="form-group">
<label class="col-sm-4 control-label">详细地址:</label>
@ -85,19 +91,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">
<select name="industryType" class="form-control"
th:with="type=${@dict.getType('industry_code')}" required>
<option value="">请选择</option>
<option th:each="dict : ${type}" th:text="${dict.dictLabel}"
th:value="${dict.dictValue}"></option>
</select>
</div>
</div>
</div>
<div class="col-xs-6">
<div class="form-group">
<label class="col-sm-4 control-label">备注:</label>

View File

@ -18,40 +18,43 @@
</div>
<div class="col-xs-6">
<div class="form-group">
<label class="col-sm-4 control-label">最终客户名称:</label>
<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">
<input name="customerName" required th:field="*{customerName}" class="form-control" type="text">
</div>
</div>
</div>
<div id="element1" class="col-xs-12" style="padding: 0">
<div class="col-xs-6">
<div class="form-group">
<label class="col-sm-4 control-label is-required">省:</label>
<div class="col-sm-8">
<select name="province" required th:data-value="*{province}" class="province form-control m-b" data-first-title="选择省">
<option value="">请选择</option>
</select>
</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">
<select name="city" required th:data-value="*{city}" class="city form-control m-b" data-first-title="选择省">
<option value="">请选择</option>
</select>
</div>
</div>
</div>
</div>
<div class="col-xs-6">
<div class="form-group">
<label class="col-sm-4 control-label">客户邮编:</label>
<label class="col-sm-4 control-label is-required">所属行业</label>
<div class="col-sm-8">
<input name="customerPostcode" th:field="*{customerPostcode}" class="form-control" type="text">
</div>
</div>
</div>
<div id="element1" class="col-xs-12" style="padding: 0">
<div class="col-xs-6">
<div class="form-group">
<label class="col-sm-4 control-label">省:</label>
<div class="col-sm-8">
<select name="province" th:data-value="*{province}" class="province form-control m-b" data-first-title="选择省">
<option value="">请选择</option>
</select>
</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">
<select name="city" th:data-value="*{city}" class="city form-control m-b" data-first-title="选择省">
<option value="">请选择</option>
</select>
</div>
<select name="industryType" required th:field="*{industryType}" class="form-control" th:with="type=${@dict.getType('industry_code')}" required>
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
</select>
</div>
</div>
</div>
@ -87,16 +90,7 @@
</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">
<select name="industryType" th:field="*{industryType}" class="form-control" th:with="type=${@dict.getType('industry_code')}" required>
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
</select>
</div>
</div>
</div>
<div class="col-xs-6">
<div class="form-group">
<label class="col-sm-4 control-label">备注:</label>

View File

@ -54,10 +54,7 @@
<a class="btn btn-success" onclick="$.operate.add()" shiro:hasPermission="system:customer:add">
<i class="fa fa-plus"></i> 添加
</a>
<a class="btn btn-primary single disabled" onclick="$.operate.edit()"
shiro:hasPermission="system:customer:edit">
<i class="fa fa-edit"></i> 修改
</a>
<a class="btn btn-danger multiple disabled" onclick="$.operate.removeAll()"
shiro:hasPermission="system:customer:remove">
<i class="fa fa-remove"></i> 删除

View File

@ -25,9 +25,9 @@
<div id="element1" class="col-xs-12" style="padding: 0">
<div class="col-xs-6">
<div class="form-group">
<label class="col-sm-4 control-label">省:</label>
<label class="col-sm-4 control-label is-required" >省:</label>
<div class="col-sm-8">
<select name="province" class="province form-control m-b" data-first-title="选择省">
<select name="province" class="province form-control m-b" data-first-title="选择省" required>
<option value="">请选择</option>
</select>
</div>
@ -35,15 +35,25 @@
</div>
<div class="col-xs-6">
<div class="form-group">
<label class="col-sm-4 control-label">市:</label>
<label class="col-sm-4 control-label is-required">市:</label>
<div class="col-sm-8">
<select name="city" class="city form-control m-b" data-first-title="选择市">
<select name="city" class="city form-control m-b" data-first-title="选择市" required>
<option value="">请选择</option>
</select>
</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">
<select name="level" class="form-control" required th:with="type=${@dict.getType('identify_level')}">
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
</select>
</div>
</div>
</div>
<div class="col-xs-6">
<div class="form-group">
<label class="col-sm-4 control-label">详细地址:</label>
@ -68,16 +78,7 @@
</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">
<select name="level" class="form-control" th:with="type=${@dict.getType('identify_level')}">
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
</select>
</div>
</div>
</div>
</form>
</div>
<th:block th:include="include :: footer" />

View File

@ -26,9 +26,9 @@
<div id="element1" class="col-xs-12" style="padding: 0">
<div class="col-xs-6">
<div class="form-group">
<label class="col-sm-4 control-label">省:</label>
<label class="col-sm-4 control-label is-required">省:</label>
<div class="col-sm-8">
<select name="province" th:data-value="*{province}" class="province form-control m-b" data-first-title="选择省">
<select name="province" required th:data-value="*{province}" class="province form-control m-b" data-first-title="选择省">
<option value="">请选择</option>
</select>
</div>
@ -36,9 +36,9 @@
</div>
<div class="col-xs-6">
<div class="form-group">
<label class="col-sm-4 control-label">市:</label>
<label class="col-sm-4 control-label is-required">市:</label>
<div class="col-sm-8">
<select name="city" th:data-value="*{city}" class="city form-control m-b" data-first-title="选择省">
<select name="city" required th:data-value="*{city}" class="city form-control m-b" data-first-title="选择省">
<option value="">请选择</option>
</select>
@ -46,6 +46,16 @@
</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">
<select name="level" required class="form-control" th:with="type=${@dict.getType('identify_level')}">
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}" th:field="*{level}"></option>
</select>
</div>
</div>
</div>
<div class="col-xs-6">
<div class="form-group">
<label class="col-sm-4 control-label">详细地址:</label>
@ -70,16 +80,7 @@
</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">
<select name="level" class="form-control" th:with="type=${@dict.getType('identify_level')}">
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}" th:field="*{level}"></option>
</select>
</div>
</div>
</div>
</form>
</div>
<th:block th:include="include :: footer" />

View File

@ -62,9 +62,7 @@
<a class="btn btn-success" onclick="$.operate.add()" shiro:hasPermission="system:partner:add">
<i class="fa fa-plus"></i> 添加
</a>
<a class="btn btn-primary single disabled" onclick="$.operate.edit()" shiro:hasPermission="system:partner:edit">
<i class="fa fa-edit"></i> 修改
</a>
<a class="btn btn-danger multiple disabled" onclick="$.operate.removeAll()" shiro:hasPermission="system:partner:remove">
<i class="fa fa-remove"></i> 删除
</a>

View File

@ -39,14 +39,6 @@
</div>
</div>
</div>
<div class="col-xs-12">
<div class="form-group">
<label class="col-sm-3 control-label">产品描述:</label>
<div class="col-sm-8">
<textarea name="description" class="form-control"></textarea>
</div>
</div>
</div>
<div class="col-xs-12">
<div class="form-group">
<label class="col-sm-3 control-label is-required">产品类型:</label>
@ -57,6 +49,35 @@
</div>
</div>
</div>
<div class="col-xs-12">
<div class="form-group">
<label class="col-sm-3 control-label is-required">目录单价:</label>
<div class="col-sm-8">
<input name="cataloguePrice" class="form-control" type="text" required>
</div>
</div>
</div>
<div class="col-xs-12">
<div class="form-group">
<label class="col-sm-3 control-label is-required">指导折扣:</label>
<div class="col-sm-8">
<input name="guidanceDiscount" id="guidanceDiscount" class="form-control" type="hidden" >
<label style="display: flex;align-items: center;">
<input name="guidanceDiscountFormat" id="guidanceDiscountFormat" oninput="document.getElementById('guidanceDiscount').value=this.value/100" class="form-control" type="number" min="0" max="100" step="0.1" required>
%
</label>
</div>
</div>
</div>
<div class="col-xs-12">
<div class="form-group">
<label class="col-sm-3 control-label">产品描述:</label>
<div class="col-sm-8">
<textarea name="description" class="form-control"></textarea>
</div>
</div>
</div>
<div class="col-xs-12" id="valueBox" style="display: none">
<div class="form-group">
<label class="col-sm-3 control-label is-required">维保年限:</label>

View File

@ -39,14 +39,6 @@
</div>
</div>
</div>
<div class="col-xs-12">
<div class="form-group">
<label class="col-sm-3 control-label">产品描述:</label>
<div class="col-sm-8">
<textarea name="description" class="form-control">[[*{description}]]</textarea>
</div>
</div>
</div>
<div class="col-xs-12">
<div class="form-group">
<label class="col-sm-3 control-label is-required">产品类型:</label>
@ -57,6 +49,35 @@
</div>
</div>
</div>
<div class="col-xs-12">
<div class="form-group">
<label class="col-sm-3 control-label is-required">目录单价:</label>
<div class="col-sm-8">
<input name="cataloguePrice" th:field="*{cataloguePrice}" class="form-control" type="text" required>
</div>
</div>
</div>
<div class="col-xs-12">
<div class="form-group">
<label class="col-sm-3 control-label is-required">指导折扣:</label>
<div class="col-sm-8">
<input name="guidanceDiscount" id="guidanceDiscount" th:field="*{guidanceDiscount}" class="form-control" type="hidden" >
<label style="display: flex;align-items: center;">
<input name="guidanceDiscountFormat" id="guidanceDiscountFormat" oninput="document.getElementById('guidanceDiscount').value=this.value/100" class="form-control" type="number" min="0" max="100" step="0.1" required>
%
</label>
</div>
</div>
</div>
<div class="col-xs-12">
<div class="form-group">
<label class="col-sm-3 control-label">产品描述:</label>
<div class="col-sm-8">
<textarea name="description" class="form-control">[[*{description}]]</textarea>
</div>
</div>
</div>
<div class="col-xs-12" id="valueBox">
<div class="form-group">
<label class="col-sm-3 control-label is-required">维保年限:</label>
@ -99,6 +120,10 @@
if([[${productInfo.type}]]!=11&&[[${productInfo.type}]]!=22){
$('#valueBox').hide()
}
let guidanceDiscount=[[${productInfo.guidanceDiscount}]]
if (guidanceDiscount){
$('#guidanceDiscountFormat').val(guidanceDiscount*100)
}
})
</script>
</body>

View File

@ -35,9 +35,7 @@
<a class="btn btn-success" onclick="$.operate.add()" shiro:hasPermission="system:product:add">
<i class="fa fa-plus"></i> 添加
</a>
<a class="btn btn-primary single disabled" onclick="$.operate.edit()" shiro:hasPermission="system:product:edit">
<i class="fa fa-edit"></i> 修改
</a>
<a class="btn btn-danger multiple disabled" onclick="$.operate.removeAll()" shiro:hasPermission="system:product:remove">
<i class="fa fa-remove"></i> 删除
</a>
@ -87,6 +85,17 @@
{
field: 'model',
title: '产品型号'
},
{
field: 'cataloguePrice',
title: '目录单价'
},
{
field: 'guidanceDiscount',
title: '指导折扣',
formatter: function(value, row, index) {
return value * 100 + '%';
}
},
{
field: 'createdAt',

View File

@ -32,6 +32,10 @@ public class ProductInfo extends BaseEntity
private String hzCode;
private String type;
private String value;
//目录单价
private String cataloguePrice;
//指导折扣
private String guidanceDiscount;
/** 产品名称 */
@Excel(name = "产品名称")

View File

@ -285,13 +285,13 @@ public class ProjectInfoServiceImpl implements IProjectInfoService {
List<ProjectProductInfo> newHardwareProductList = projectInfo.getHardwareProjectProductInfoList();
// 比较产品信息
logIndex = compareProductInfoList(logContent, logIndex, "配置硬件信息", oldHardwareProductList, newHardwareProductList);
logIndex = compareProductInfoList(logContent, logIndex, "配置终端信息", oldHardwareProductList, newHardwareProductList);
List<ProjectProductInfo> oldMaintenanceProductList = oldProjectInfo.getMaintenanceProjectProductInfoList();
List<ProjectProductInfo> newMaintenanceProductList = projectInfo.getMaintenanceProjectProductInfoList();
// 比较产品信息
logIndex = compareProductInfoList(logContent, logIndex, "配置硬件信息", oldMaintenanceProductList, newMaintenanceProductList);
logIndex = compareProductInfoList(logContent, logIndex, "配置服务信息", oldMaintenanceProductList, newMaintenanceProductList);
if (logSimpleIndex != logIndex) {
int index = logSimpleContent.length() + 1;
@ -369,7 +369,7 @@ public class ProjectInfoServiceImpl implements IProjectInfoService {
// 将旧列表和新列表转换为以 id 为键的 Map便于快速查找
Map<Long, ProjectProductInfo> oldMap = CollUtil.isEmpty(oldList) ? new HashMap<>() : oldList.stream()
.collect(Collectors.toMap(ProjectProductInfo::getId, product -> product));
Map<Long, ProjectProductInfo> newMap = CollUtil.isEmpty(newList) ? new HashMap<>() : newList.stream()
Map<Long, ProjectProductInfo> newMap = CollUtil.isEmpty(newList) ? new HashMap<>() : newList.stream().filter(item -> item.getId() != null)
.collect(Collectors.toMap(ProjectProductInfo::getId, product -> product));
//新增
List<String> addCode = CollUtil.isEmpty(newList) ? Collections.emptyList() : newList.stream().filter(item -> item.getId() == null).map(ProjectProductInfo::getProductBomCode).collect(Collectors.toList());

View File

@ -20,7 +20,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</resultMap>
<sql id="selectProductInfoVo">
select id, product_code, product_name, model, description, remark, created_at, updated_at, deleted_at,value,type,hz_code from product_info
select id, product_code, product_name, model, description, remark, created_at, updated_at, deleted_at,value,type,hz_code,catalogue_price,guidance_discount from product_info
</sql>
<select id="selectProductInfoList" parameterType="ProductInfo" resultMap="ProductInfoResult">
@ -68,6 +68,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
t1.created_at,
t1.updated_at,
t1.deleted_at ,
t1.catalogue_price,
t1.guidance_discount,
t2.serial_number
FROM
product_info t1 left join delivery_list t2 on t1.product_code=t2.product_code
@ -93,6 +95,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="productCode != null and productCode != ''">product_code,</if>
<if test="productName != null and productName != ''">product_name,</if>
<if test="cataloguePrice != null">catalogue_price,</if>
<if test="guidanceDiscount != null ">guidance_discount,</if>
<if test="model != null and model != ''">model,</if>
<if test="description != null">description,</if>
<if test="remark != null">remark,</if>
@ -104,6 +108,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="productCode != null and productCode != ''">#{productCode},</if>
<if test="productName != null and productName != ''">#{productName},</if>
<if test="cataloguePrice != null">#{cataloguePrice},</if>
<if test="guidanceDiscount != null ">#{guidanceDiscount},</if>
<if test="model != null and model != ''">#{model},</if>
<if test="description != null">#{description},</if>
<if test="remark != null">#{remark},</if>
@ -119,6 +125,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<trim prefix="SET" suffixOverrides=",">
<if test="productCode != null and productCode != ''">product_code = #{productCode},</if>
<if test="productName != null and productName != ''">product_name = #{productName},</if>
<if test="cataloguePrice != null">catalogue_price=#{cataloguePrice},</if>
<if test="guidanceDiscount != null ">guidance_discount=#{guidanceDiscount},</if>
<if test="model != null and model != ''">model = #{model},</if>
<if test="description != null">description = #{description},</if>
<if test="remark != null">remark = #{remark},</if>