项目新增静态60%,发货记录调整

master
wangjiuyun 2025-06-03 17:38:14 +08:00
parent 3480d55309
commit f598a903b5
9 changed files with 1166 additions and 135 deletions

View File

@ -95,11 +95,15 @@
},
{
field: 'orderCode',
title: '关联合同编号'
title: '关联合同编号',
},
{
field: 'orderName',
title: '关联合同名称'
title: '关联合同名称',
formatter:function (value,row){
return `<span style="color: #1686d8;cursor:pointer;" onclick="openOrderDeail('${row.orderId}')">${value}</span>`
},
},
{
field: 'deliveryCode',
@ -108,11 +112,12 @@
{
field: 'total',
title: '发货数量',
escape:true,
formatter: function(value, row, index) {
if (value){
return value
return `<span>${value}</span>`
}else{
return 0
return `<span style="color: red">0</span>`
}
}
},
@ -168,6 +173,20 @@
function doClose(index){
$.modal.close(index);
}
function openOrderDeail(value,row){
var options = {
title: "合同查看",
url: ctx + `manage/order/edit/${value}`,
maxmin: false,
full: false,
index:1000,
width: 1050,
callBack: doClose,
btn:false
};
window.localStorage.setItem('isOrderDetail',1)
$.modal.openOptions(options)
}
</script>
</body>
</html>

View File

@ -0,0 +1,484 @@
<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org">
<head>
<th:block th:include="include :: header('修改合同档案')"/>
<th:block th:include="include :: datetimepicker-css"/>
<style>
.hideTd {
display: none;
}
label[for="versionCode"] {
margin-right: 20px;
}
</style>
</head>
<body class="white-bg">
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
<form class="form-horizontal m" id="form-order-edit" th:object="${orderInfo}">
<h4 class="form-header h4">合同档案信息</h4>
<input name="id" th:field="*{id}" type="hidden">
<div class="col-xs-6">
<div class="form-group">
<label class="col-sm-4 control-label">项目编号:</label>
<div class="col-sm-8">
<input name="projectCode" th:field="*{projectCode}" class="form-control" type="text" disabled>
</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="orderCode" th:field="*{orderCode}" class="form-control" type="text" required disabled>
</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 disabled name="versionCode" th:field="*{versionCode}" class="form-control" type="number"
max="100" min="0" required>
</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 disabled name="orderName" th:field="*{orderName}" 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 is-required">合同类型:</label>
<div class="col-sm-8">
<select disabled name="orderType" class="form-control" th:with="type=${@dict.getType('order_type')}"
required>
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"
th:field="*{orderType}"></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">
<div class="input-group">
<input class="form-control" type="hidden" name="orderAgentCode" th:field="*{orderAgentCode}"/>
<input disabled class="form-control" name="orderAgentName" th:field="*{orderAgentName}"
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 disabled class="form-control" name="orderPartnerCode" type="hidden"
th:field="*{orderPartnerCode}">
<input disabled class="form-control" name="orderPartnerName" th:field="*{orderPartnerName}"
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 date">
<input disabled name="orderDate" th:value="${#dates.format(orderInfo.orderDate, 'yyyy-MM-dd')}"
class="form-control" placeholder="yyyy-MM-dd" type="text" required>
<span class="input-group-addon"><i class="fa fa-calendar"></i></span>
</div>
</div>
</div>
</div>
<div class="col-sm-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="customerName" th:field="*{customerName}" class="form-control" type="text"
required disabled>
<span class="input-group-addon"><i
class="fa fa-search"></i></span>
</div>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-4 control-label is-required">客户编码:</label>
<div class="col-sm-8">
<input disabled name="customerCode" th:field="*{customerCode}" class="form-control" type="text"
required>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-4 control-label is-required">客户联系人:</label>
<div class="col-sm-8">
<input name="customerContact" th:field="*{customerContact}" class="form-control"
type="text" required disabled>
</div>
</div>
</div>
<div class="col-sm-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" disabled>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-4 control-label is-required">客户电话:</label>
<div class="col-sm-8">
<input name="customerPhone" th:field="*{customerPhone}" class="form-control" type="text" required>
</div>
</div>
</div>
<div class="col-xs-12">
<div class="form-group">
<label class="col-sm-2 control-label">备注:</label>
<div class="col-sm-10">
<textarea name="remark" class="form-control">[[*{remark}]]</textarea>
</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="downloadTem()"><i
class="fa fa-download"> 下载模板</i></button>
<button type="button" class="btn btn-white btn-sm" onclick="importList()"><i class="fa fa-upload">
导入</i></button>
</div>
<div class="col-sm-12 select-table table-striped">
<table id="bootstrap-table"></table>
</div>
</div>
</form>
</div>
<th:block th:include="include :: footer"/>
<th:block th:include="include :: datetimepicker-js"/>
<script th:inline="javascript">
var prefix = ctx + "manage/order";
$("#form-order-edit").validate({
focusCleanup: true
});
function submitHandler() {
if ($.validate.form()) {
$.operate.save(prefix + "/edit", $('#form-order-edit').serialize());
} else {
$.modal.alertWarning("请完善表单必填项");
}
}
$("input[name='orderDate']").datetimepicker({
format: "yyyy-mm-dd",
minView: "month",
autoclose: true
});
function selectCustomer() {
var url = prefix + "/customer";
var options = {
title: '选择客户',
width: "680",
url: url,
height: '600',
callBack: doSubmitCustomer
};
$.modal.openOptions(options);
}
function selectAgent() {
var url = prefix + "/agent";
var options = {
title: '选择代表处',
width: "680",
url: url,
height: '600',
callBack: doSubmitAgent
};
$.modal.openOptions(options);
}
function selectPartner() {
var url = prefix + "/partner";
var options = {
title: '选择代理商',
width: "680",
url: url,
height: '600',
callBack: doSubmitPartner
};
$.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);
$('[name="orderAgentName"]').val(rows[0].agentName);
$.modal.close(index);
}
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);
$('[name="orderPartnerName"]').val(rows[0].partnerName);
$.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('orderId', $('[name="id"]').val())
var xhr = new XMLHttpRequest(); // 创建XMLHttpRequest对象
xhr.open('POST', prefix + '/list/importData', true); // 设置请求类型和URL
// 当请求完成时执行的回调函数
xhr.onload = function (res) {
let data = JSON.parse(res.currentTarget.response)
if (data.code === 0) {
$.modal.msgSuccess('导入成功');
$.operate.get(prefix + `/detail/` + $('[name="id"]').val(), function (res) {
$.table.destroy()
initTable(res.data)
})
// $.table.refresh();
} else {
$.modal.msgError(data.msg || '导入失败');
}
$('#uploadInput').val('')
};
// 当请求发生错误时执行的回调函数
xhr.onerror = function () {
console.log('上传过程中发生错误');
};
//
// // 发送数据到服务器
xhr.send(data);
});
$(function () {
initTable([[${orderInfo.orderListList}]])
parent.layer.style(parent.layer.index, {
width: '1100px',
height: '630px',
top: '30px',
left: '300px'
});
$('[name="versionCode"]').on('focus', function () {
$(this).blur()
})
changeOrderType()
});
function downloadTem() {
$.modal.loading("正在下载,请稍候...");
window.location.href = prefix + "/list/export"
$.modal.closeLoading();
// $.post(prefix + "/list/export", {}, function (result) {
// if (result.code == web_status.SUCCESS) {
// window.location.href = ctx + "common/download?fileName=" + encodeURI(result.msg) + "&delete=" + true;
// } else if (result.code == web_status.WARNING) {
// $.modal.alertWarning(result.msg)
// } else {
// $.modal.alertError(result.msg);
// }
// $.modal.closeLoading();
// })
}
function changeTotal(ele) {
let price = Number($(ele).parent().parent().find('.price').val()) || 0
let quantity = Number($(ele).parent().parent().find('.quantity').val()) || 0
let discount = $(ele).val() || 0
let res = Number((price * quantity * discount).toFixed(2))
$(ele).parent().parent().find('.amount').val(res)
}
function initTable(data) {
var options = {
data: data,
pagination: false,
showSearch: false,
showRefresh: false,
showToggle: false,
showColumns: false,
sidePagination: "client",
columns: [{
checkbox: false
},
{
field: 'index',
align: 'center',
title: "序号",
formatter: function (value, row, index) {
return $.table.serialNumber(index);
}
},
{
field: 'id',
align: 'center',
title: "id",
class: 'hideTd',
formatter: function (value, row, index) {
var html = $.common.sprintf("<input type='hidden' name='orderListList[%s].id' value='%s'>", index, value);
return html;
}
},
{
field: 'productCode',
align: 'center',
title: 'BOM编码',
formatter: function (value, row, index) {
var html = $.common.sprintf("<p ='' class='form-control-static'>%s</p>", value);
return html;
}
},
{
field: 'productName',
align: 'center',
title: '产品名称',
formatter: function (value, row, index) {
var html = $.common.sprintf("<p class='form-control-static'>%s</p>", value);
return html;
}
},
{
field: 'quantity',
align: 'center',
title: '数量',
formatter: function (value, row, index) {
var html = $.common.sprintf("<input readonly class='form-control quantity' type='text' name='orderListList[%s].quantity' value='%s' required>", index, value);
return html;
}
},
{
field: 'price',
align: 'center',
title: '单价',
formatter: function (value, row, index) {
var html = $.common.sprintf("<input readonly class='form-control price' type='text' name='orderListList[%s].price' value='%s' required>", index, value);
return html;
}
},
{
field: 'discount',
align: 'center',
title: '折扣',
width: 90,
formatter: function (value, row, index) {
var html = $.common.sprintf("<input readonly class='form-control discount' type='number' name='orderListList[%s].discount' value='%s' step='0.0001' max='1' min='0' required>", index, value);
return html;
}
},
{
field: 'amount',
align: 'center',
title: '总价',
formatter: function (value, row, index) {
var html = $.common.sprintf("<input readonly class='form-control amount' type='text' name='orderListList[%s].amount' value='%s' required>", index, value);
return html;
}
},
{
field: 'remark',
align: 'center',
title: '备注',
formatter: function (value, row, index) {
var html = $.common.sprintf("<input class='form-control' type='text' name='orderListList[%s].remark' value='%s'>", index, value);
return html;
}
}]
};
$.table.init(options);
$('.discount').on('change', function () {
changeTotal($(this))
})
$('.discount').on('focus', function () {
$(this).blur()
})
}
function changeOrderType() {
let orderType = $('[name="orderType"]').val()
if (orderType == 'zq') {
$('[name="orderPartnerName"]').removeAttr('required')
$('[name="orderPartnerName"]').parent().parent().parent().find('label').removeClass('is-required')
} else {
$('[name="orderPartnerName"]').attr('required', true)
$('[name="orderPartnerName"]').parent().parent().parent().find('label').addClass('is-required')
}
}
</script>
</body>
</html>

View File

@ -13,6 +13,7 @@
margin-right: 20px;
}
</style>
<body class="white-bg">
<div class="wrapper wrapper-content animated fadeInRight ibox-content">

View File

@ -7,7 +7,8 @@
.hideTd {
display: none;
}
label[for="versionCode"]{
label[for="versionCode"] {
margin-right: 20px;
}
</style>
@ -37,7 +38,8 @@
<div class="form-group">
<label class="col-sm-4 control-label is-required">版本号:</label>
<div class="col-sm-8">
<input name="versionCode" th:field="*{versionCode}" class="form-control" type="number" max="100" min="0" required>
<input name="versionCode" th:field="*{versionCode}" class="form-control" type="number" max="100"
min="0" required>
</div>
</div>
</div>
@ -54,7 +56,7 @@
<label class="col-sm-4 control-label is-required">合同类型:</label>
<div class="col-sm-8">
<select name="orderType" class="form-control" th:with="type=${@dict.getType('order_type')}"
onchange="changeOrderType()" required>
onchange="changeOrderType()" required>
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"
th:field="*{orderType}"></option>
</select>
@ -69,7 +71,7 @@
<input class="form-control" type="hidden" name="orderAgentCode" th:field="*{orderAgentCode}"/>
<input class="form-control" name="orderAgentName" th:field="*{orderAgentName}"
onclick="selectAgent()" required/>
<span class="input-group-addon" onclick="selectAgent()"><i class="fa fa-search"></i></span>
<span class="input-group-addon" onclick="selectAgent()"><i class="fa fa-search"></i></span>
</div>
</div>
</div>
@ -119,7 +121,7 @@
<label class="col-sm-4 control-label is-required">客户编码:</label>
<div class="col-sm-8">
<input readonly name="customerCode" th:field="*{customerCode}" class="form-control" type="text"
required >
required>
</div>
</div>
@ -191,7 +193,7 @@
function submitHandler() {
if ($.validate.form()) {
$.operate.save(prefix + "/edit", $('#form-order-edit').serialize());
}else{
} else {
$.modal.alertWarning("请完善表单必填项");
}
}
@ -208,7 +210,7 @@
title: '选择客户',
width: "680",
url: url,
height:'600',
height: '600',
callBack: doSubmitCustomer
};
@ -221,7 +223,7 @@
title: '选择代表处',
width: "680",
url: url,
height:'600',
height: '600',
callBack: doSubmitAgent
};
@ -234,7 +236,7 @@
title: '选择代理商',
width: "680",
url: url,
height:'600',
height: '600',
callBack: doSubmitPartner
};
@ -328,15 +330,16 @@
top: '30px',
left: '300px'
});
$('[name="versionCode"]').on('focus',function (){
$('[name="versionCode"]').on('focus', function () {
$(this).blur()
})
changeOrderType()
});
function downloadTem() {
$.modal.loading("正在下载,请稍候...");
window.location.href=prefix + "/list/export"
window.location.href = prefix + "/list/export"
$.modal.closeLoading();
// $.post(prefix + "/list/export", {}, function (result) {
// if (result.code == web_status.SUCCESS) {
@ -430,7 +433,7 @@
field: 'discount',
align: 'center',
title: '折扣',
width:90,
width: 90,
formatter: function (value, row, index) {
var html = $.common.sprintf("<input readonly class='form-control discount' type='number' name='orderListList[%s].discount' value='%s' step='0.0001' max='1' min='0' required>", index, value);
return html;
@ -455,7 +458,13 @@
var html = $.common.sprintf("<input class='form-control' type='text' name='orderListList[%s].remark' value='%s'>", index, value);
return html;
}
}]
}],
onPostBody: ()=>{
var isOrderDetail = window.localStorage.getItem('isOrderDetail')
if (isOrderDetail == 1) {
initReadonly()
}
}
};
$.table.init(options);
$('.discount').on('change', function () {
@ -466,17 +475,26 @@
})
}
function changeOrderType(){
let orderType=$('[name="orderType"]').val()
if(orderType=='zq'){
function changeOrderType() {
let orderType = $('[name="orderType"]').val()
if (orderType == 'zq') {
$('[name="orderPartnerName"]').removeAttr('required')
$('[name="orderPartnerName"]').parent().parent().parent().find('label').removeClass('is-required')
}else{
$('[name="orderPartnerName"]').attr('required',true)
} else {
$('[name="orderPartnerName"]').attr('required', true)
$('[name="orderPartnerName"]').parent().parent().parent().find('label').addClass('is-required')
}
}
function initReadonly() {
$('form').find('input').attr('disabled', true)
$('form').find('select').attr('disabled', true)
$('form').find('button').css('pointer-events', 'none')
$('form').find('span').css('pointer-events', 'none')
$('form').find('textarea').css('pointer-events', 'none')
window.localStorage.removeItem('isOrderDetail')
}
</script>
</body>
</html>

View File

@ -5,25 +5,67 @@
<th:block th:include="include :: datetimepicker-css"/>
</head>
<style>
body { font-family: "微软雅黑", Arial, sans-serif; }
table { border-collapse: collapse; width: 100%; margin-bottom: 20px; }
th, td { border: 1px solid #ccc; padding: 8px; }
th { background: #f5f5f5; }
.section-title { font-weight: bold; font-size: 18px; padding: 10px 0; }
.checkbox-group label { margin-right: 20px; }
.add-btn { background: #409eff; color: #fff; border: none; padding: 5px 10px; cursor: pointer; }
body {
font-family: "微软雅黑", Arial, sans-serif;
}
.checkbox-box{
table {
border-collapse: collapse;
width: 100%;
margin-bottom: 20px;
}
th, td {
border: 1px solid #ccc;
padding: 8px;
}
.is-required {
color: red;
}
th {
background: #f5f5f5;
}
.section-title {
font-weight: bold;
font-size: 18px;
padding: 10px 0;
}
.checkbox-group label {
margin-right: 20px;
}
.add-btn {
background: #409eff;
color: #fff;
border: none;
padding: 5px 10px;
cursor: pointer;
}
.checkbox-box {
display: flex;
flex-direction:row;
flex-direction: row;
gap: 10px;
}
.checkbox-box label{
.checkbox-box label {
display: flex;
flex-direction:row;
flex-direction: row;
gap: 5px;
align-items: center;
}
.shortTd {
width: 100px;
}
.middleTd {
width: 150px;
}
</style>
<body class="white-bg">
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
@ -31,73 +73,90 @@
<div class="section-title">项目信息</div>
<table>
<tr>
<td>项目编码*</td>
<td><input type="text" name="project_code" class="form-control" value="V00001"></td>
<td>项目名称*</td>
<td><input type="text" name="project_name" class="form-control" value="广州市天河区公安分局"></td>
<td class="shortTd">项目编码<span class="is-required">*</span></td>
<td colspan="2"><input type="text" name="project_code" class="form-control"></td>
<td class="middleTd">项目名称<span class="is-required">*</span></td>
<td colspan="2"><input type="text" name="project_name" class="form-control"
></td>
</tr>
<tr>
<td>客户名称*</td>
<td><input type="text" name="customer_name" class="form-control" value="北京安兰技术有限公司"></td>
<td>行业*</td>
<td class="shortTd">客户名称<span class="is-required">*</span></td>
<td><input name="customerName" class="form-control" type="text" required
onclick="selectCustomer()">
<input name="customerCode" class="form-control" type="hidden"></td>
<td class="shortTd">行业<span class="is-required">*</span></td>
<td>
<select name="industry" class="form-control">
<option>政府</option>
<option>企业</option>
<select name="orderType" class="form-control" th:with="type=${@dict.getType('industry_code')}"
onchange="changeOrderType()" required>
<option value="">请选择合项目阶段</option>
<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 id="element1">
<select name="province" class="form-control">
</select>
</td>
</tr>
<tr>
<td>项目阶段*</td>
<td>项目阶段<span class="is-required">*</span></td>
<td>
<select name="project_stage" class="form-control">
<option>初步报价</option>
<option>实施阶段</option>
<select name="orderType" class="form-control"
th:with="type=${@dict.getType('project_stage')}"
onchange="changeOrderType()" required>
<option value="">请选择合项目阶段</option>
<option th:each="dict : ${type}" th:text="${dict.dictLabel}"
th:value="${dict.dictValue}"></option>
</select>
</td>
<td>项目把握度*</td>
<td>项目把握度<span class="is-required">*</span></td>
<td>
<select name="project_confidence" class="form-control">
<select name="project_confidence" class="form-control" required>
<option>A</option>
<option>B</option>
<option>C</option>
<option>D</option>
</select>
</td>
<td>汇智支撑人员</td>
<td><input name="peopleName" class="form-control" type="text"
onclick="selectPeople()">
<input name="peopleCode" class="form-control" type="hidden"></td>
</tr>
<tr>
<td>运作机构</td>
<td>
<select name="operation_org" class="form-control">
<option>代理商</option>
<select name="orderType" class="form-control"
th:with="type=${@dict.getType('operate_institution')}"
onchange="changeOrderType()">
<option value="">请选择运作机构</option>
<option th:each="dict : ${type}" th:text="${dict.dictLabel}"
th:value="${dict.dictValue}"></option>
</select>
</td>
<td>代理商</td>
<td><input type="text" name="agent" value="合肥思佳网络科技有限公司" class="form-control"></td>
</tr>
<tr>
<td>预计金额RMB</td>
<td><input type="text" name="budget" value="1258958.00" class="form-control"></td>
<td>预计下单时间</td>
<td><input type="date" name="order_date" value="2025-07-28" class="form-control"></td>
</tr>
<tr>
<td>汇智支援人员</td>
<td><input type="text" name="support_person" value="陈畅" class="form-control"></td>
<td>联系方式</td>
<td><input type="text" name="contact" value="文韬豪:15196975107" class="form-control"></td>
</tr>
<tr>
<td>预计发货时间</td>
<td><input type="date" name="delivery_date" value="2025-07-28" class="form-control"></td>
<td>层地*</td>
<td>代理商<span class="is-required">*</span></td>
<td>
<select name="location" class="form-control">
<option>安徽</option>
</select>
<input name="orderPartnerName" class="form-control" type="text" required
onclick="selectPartner()">
<input name="orderPartnerCode" class="form-control" type="hidden">
</td>
<td>联系方式</td>
<td><input type="text" name="contact" class="form-control"></td>
</tr>
<tr>
<td>预计金额RMB<span class="is-required">*</span></td>
<td><input type="text" name="budget" class="form-control" required></td>
<td>预计下单时间</td>
<td><input name="orderDate" class="form-control" placeholder="yyyy-MM-dd" autocomplete="false"></td>
<td>预计发货时间</td>
<td><input name="deliveryDate" class="form-control" placeholder="yyyy-MM-dd" autocomplete="false"></td>
</tr>
<tr>
<td>竞争对手</td>
<td colspan="3" class="checkbox-group">
<td colspan="5" class="checkbox-group">
<div class="checkbox-box">
<label><input type="checkbox" name="competitor" value="华为">华为</label>
<label><input type="checkbox" name="competitor" value="锐捷">锐捷</label>
@ -106,26 +165,29 @@
<label><input type="checkbox" name="competitor" value="曙云">曙云</label>
</div>
其它:<input type="text" name="competitor_other" class="form-control">
<div>
其它:<input type="text" name="competitor_other" class="form-control" style="width: 400px">
</div>
</td>
</tr>
<tr>
<td>关键技术问题</td>
<td colspan="3"><input type="text" name="key_tech_issue" style="width:98%;"
value="512+1存储不能选配让其紫光计算机选购" class="form-control"></td>
<td colspan="5"><input type="text" name="key_tech_issue" style="width:98%;"
class="form-control"></td>
</tr>
<tr>
<td>项目描述*</td>
<td colspan="3"><textarea name="project_desc" style="width:98%;" rows="2" class="form-control">(项目背景,项目描述)</textarea>
<td>项目简述<span class="is-required">*</span></td>
<td colspan="5"><textarea name="project_desc" style="width:98%;" rows="2"
class="form-control" required></textarea>
</td>
</tr>
</table>
<div class="section-title">配置信息</div>
<table>
<table id="ruanjian">
<tr>
<th colspan="5">添加软件
<button type="button" class="add-btn">+</button>
<th colspan="5" >添加软件
<button type="button" class="add-btn" onclick="addRuanjian()">+</button>
</th>
</tr>
<tr>
@ -135,39 +197,28 @@
<th>数量</th>
<th>备注</th>
</tr>
<tr>
<td>1</td>
<td></td>
<td></td>
<td>100</td>
<td></td>
</tr>
<tr>
<th colspan="5">添加硬件
<button type="button" class="add-btn">+</button>
</th>
</tr>
<tr>
<th>序号</th>
<th>硬件编码</th>
<th>硬件型号</th>
<th>数量</th>
<th>备注</th>
</tr>
<tr>
<td>1</td>
<td>9801A3H0</td>
<td>C5523V</td>
<td>100</td>
<td></td>
</tr>
<tr>
<td colspan="5">
服务器配置<br>
H3C C5523V 桌面云终端-Intel 6核2.9GHz/8GB DDR4/256GB
SSD/4*USB3.0/4*USB2.0/1*HDMI/1*VGA/1*1000M/WiFi6
</td>
</tr>
<tbody>
</tbody>
</table>
<table>
<th>
<th colspan="5" onclick="addYingjian()">添加硬件
<button type="button" class="add-btn">+</button>
</th>
</th>
<th>
<th>序号</th>
<th>硬件编码</th>
<th>硬件型号</th>
<th>数量</th>
<th>备注</th>
</th>
<tbody>
</tbody>
<tr>
<td colspan="4">是否国产</td>
<td>
@ -197,6 +248,8 @@
</div>
<th:block th:include="include :: footer"/>
<th:block th:include="include :: datetimepicker-js"/>
<th:block th:include="include :: jquery-cxselect-js"/>
<script th:inline="javascript">
var prefix = ctx + "sip/project"
$("#form-product-add").validate({
@ -209,25 +262,110 @@
}
}
$("input[name='estimatedOrderTime']").datetimepicker({
format: "yyyy-mm-dd",
minView: "month",
autoclose: true
});
$("input[name='estimatedDeliverTime']").datetimepicker({
format: "yyyy-mm-dd",
minView: "month",
autoclose: true
});
$(function (){
$(function () {
parent.layer.style(parent.layer.index, {
height: '700px',
width: '1100px',
height: '630px',
top: '30px',
left: '300px'
top: '0',
left: '240px'
});
var urlChina = '/cnarea/select';
$.cxSelect.defaults.url = urlChina;
$('#element1').cxSelect({
selects: ['province'],
nodata: 'none'
});
$("input[name='orderDate']").datetimepicker({
format: "yyyy-mm-dd",
minView: "month",
autoclose: true
});
$("input[name='deliveryDate']").datetimepicker({
format: "yyyy-mm-dd",
minView: "month",
autoclose: true
});
})
function selectCustomer() {
var url = prefix + "/selectCustomer";
var options = {
title: '选择客户',
width: "680",
url: url,
height: '600',
callBack: doSubmitCustomer
};
$.modal.openOptions(options);
}
function selectPartner() {
var url = prefix + "/selectPartner";
var options = {
title: '选择代理商',
width: "680",
height: '600',
url: url,
callBack: doSubmitPartner
};
$.modal.openOptions(options);
}
function selectPeople() {
var url = prefix + "/selectPeople";
var options = {
title: '选择代理商',
width: "680",
height: '600',
url: url,
callBack: doSubmitPeople
};
$.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);
$.modal.close(index);
}
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);
$('[name="orderPartnerName"]').val(rows[0].partnerName);
$.modal.close(index);
}
function doSubmitPeople(index, layero) {
var rows = layero.find("iframe")[0].contentWindow.getSelections();
if (rows.length == 0) {
$.modal.alertWarning("请选择一个代理商");
return;
}
$('[name="peopleCode"]').val(rows[0].userId);
$('[name="peopleName"]').val(rows[0].userName);
$.modal.close(index);
}
// 添加软件
function addRuanjian(){
let length= $('#ruanjian tbody').find('tr').length
let tr=$(`<tr><td>${length+1}</td><td><input type="text" required></td><td><input type="text" required></td><td><input type="text" required></td><td><input type="text" required></td></tr>`)
$('#ruanjian tbody').append(tr)
}
</script>
</body>
</html>

View File

@ -55,19 +55,38 @@
</li>
<li>
<label>行业:</label>
<input type="text" name="customerName"/>
<select name="orderType" class="form-control"
th:with="type=${@dict.getType('industry_code')}"
onchange="changeOrderType()" required>
<option value="">请选择合项目阶段</option>
<option th:each="dict : ${type}" th:text="${dict.dictLabel}"
th:value="${dict.dictValue}"></option>
</select>
</li>
<li>
<li id="element1">
<label>属地:</label>
<input type="text" name="province"/>
<select name="province" class="province form-control m-b" data-first-title="选择省">
<option value="">请选择</option>
</select>
</li>
<li>
<label>项目阶段:</label>
<input type="text" name="projectStage"/>
<select name="orderType" class="form-control"
th:with="type=${@dict.getType('project_stage')}"
onchange="changeOrderType()" required>
<option value="">请选择合项目阶段</option>
<option th:each="dict : ${type}" th:text="${dict.dictLabel}"
th:value="${dict.dictValue}"></option>
</select>
</li>
<li>
<label>项目把握度:</label>
<input type="text" name="projectGraspDegree"/>
<select name="timeType" onchange="changeTimeType()" value="0">
<option value="0">A</option>
<option value="1">B</option>
<option value="2">C</option>
<option value="2">D</option>
</select>
</li>
<li>
<label>汇智支撑:</label>
@ -129,6 +148,8 @@
</div>
</div>
<th:block th:include="include :: footer"/>
<th:block th:include="include :: jquery-cxselect-js"/>
<script th:inline="javascript">
var editFlag = [[${@permission.hasPermi('sip:product:edit')}]];
var removeFlag = [[${@permission.hasPermi('sip:product:remove')}]];
@ -226,7 +247,13 @@
$.table.init(options);
initSrot()
changeTimeType()
var urlChina = '/cnarea/select';
$.cxSelect.defaults.url = urlChina;
$('#element1').cxSelect({
selects: ['province'],
nodata: 'none'
});
layui.use('laydate', function () {
var laydate = layui.laydate;
var startDate = laydate.render({

View File

@ -0,0 +1,137 @@
<!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>
<style>
.select-list li {
display: inline-block;
}
.select-list li label {
width: 88px !important;
}
</style>
<body class="gray-bg">
<div class="container-div">
<div class="row">
<div class="col-sm-12 search-collapse">
<form id="formId">
<div class="select-list">
<ul>
<li>
<label>客户编码:</label>
<input type="text" name="customerCode"/>
</li>
<li>
<label>客户名称:</label>
<input type="text" name="customerName"/>
</li>
<li>
<label>联系人:</label>
<input type="text" name="contactPerson"/>
</li>
<li>
<label>联系电话:</label>
<input type="text" name="contactPhone"/>
</li>
<li>
<label>所属行业:</label>
<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>
</li>
<li style="width: 46%;text-align: right;">
<a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i
class="fa fa-search"></i>&nbsp;搜索</a>
<a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset()"><i
class="fa fa-refresh"></i>&nbsp;重置</a>
</li>
</ul>
</div>
</form>
</div>
<div class="col-sm-12 select-table table-striped">
<table id="bootstrap-table"></table>
</div>
</div>
</div>
<th:block th:include="include :: footer"/>
<script>
var prefix = ctx + "system/customer";
$(function () {
var options = {
url: prefix + "/list",
showSearch: true,
showColumns: false,
showToggle: false,
showPageGo: true,
showRefresh: false,
search: false,
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: '所属行业',
formatter:(value,row)=>{
const arr=[]
$('[name="industryType"] option').each((index,item)=>{
arr.push({
text:$(item).text(),
value:$(item).val()
})
})
return arr.find((ele)=>ele.value==value)?.text
}
},
{
field: 'remark',
title: '备注'
},
]
};
$.table.init(options);
});
function getSelections() {
var rows = $('#bootstrap-table').bootstrapTable('getSelections');
return rows;
}
</script>
</body>
</html>

View File

@ -0,0 +1,111 @@
<!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>
<style>
.select-list li{
display: inline-block;
}
.select-list li label{
width: 88px !important;
}
</style>
<body class="gray-bg">
<div class="container-div">
<div class="row">
<div class="col-sm-12 search-collapse">
<form id="formId">
<div class="select-list">
<ul>
<li>
<label>代理商编码:</label>
<input type="text" name="partnerCode"/>
</li>
<li>
<label>代理商名称:</label>
<input type="text" name="partnerName"/>
</li>
<li>
<label>认证级别:</label>
<select name="level" th:with="type=${@dict.getType('identify_level')}">
<option value="">所有</option>
<option th:each="dict : ${type}" th:text="${dict.dictLabel}"
th:value="${dict.dictValue}"></option>
</select>
</li>
<li>
<a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i
class="fa fa-search"></i>&nbsp;搜索</a>
<a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset()"><i
class="fa fa-refresh"></i>&nbsp;重置</a>
</li>
</ul>
</div>
</form>
</div>
<div class="col-sm-12 select-table table-striped">
<table id="bootstrap-table"></table>
</div>
</div>
</div>
<th:block th:include="include :: footer"/>
<script>
var prefix = ctx + "system/partner";
$(function () {
var options = {
url: prefix + "/list",
showSearch: true,
showColumns: false,
showToggle: false,
showPageGo: true,
showRefresh: false,
search: false,
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

@ -0,0 +1,96 @@
<!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>
<style>
.select-list li {
display: inline-block;
}
.select-list li label {
width: 88px !important;
}
</style>
<body class="gray-bg">
<div class="container-div">
<div class="row">
<div class="col-sm-12 search-collapse">
<form id="formId">
<div class="select-list">
<ul>
<li>
<label>代理商编码:</label>
<input type="text" name="partnerCode"/>
</li>
<li>
<label>代理商名称:</label>
<input type="text" name="partnerName"/>
</li>
<li>
<label>认证级别:</label>
<select name="level" th:with="type=${@dict.getType('identify_level')}">
<option value="">所有</option>
<option th:each="dict : ${type}" th:text="${dict.dictLabel}"
th:value="${dict.dictValue}"></option>
</select>
</li>
<li>
<a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i
class="fa fa-search"></i>&nbsp;搜索</a>
<a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset()"><i
class="fa fa-refresh"></i>&nbsp;重置</a>
</li>
</ul>
</div>
</form>
</div>
<div class="col-sm-12 select-table table-striped">
<table id="bootstrap-table"></table>
</div>
</div>
</div>
<th:block th:include="include :: footer"/>
<script>
var prefix = ctx + "system/user";
$(function () {
var options = {
url: prefix + "/list",
showSearch: true,
showColumns: false,
showToggle: false,
showPageGo: true,
showRefresh: false,
search: false,
params: {},
columns: [{
radio: true
},
{
field: 'userName',
title: '人员名称'
},
{
field: 'phonenumber ',
title: '人员电话'
},
{
field: 'dept.deptName',
title: '所属部门'
},
]
};
$.table.init(options);
});
function getSelections() {
var rows = $('#bootstrap-table').bootstrapTable('getSelections');
return rows;
}
</script>
</body>
</html>