diff --git a/ruoyi-admin/src/main/resources/templates/project/info/add.html b/ruoyi-admin/src/main/resources/templates/project/info/add.html index 8d7d0aa7..c2733382 100644 --- a/ruoyi-admin/src/main/resources/templates/project/info/add.html +++ b/ruoyi-admin/src/main/resources/templates/project/info/add.html @@ -334,6 +334,8 @@ function submitHandler() { if ($.validate.form()) { $.operate.save(prefix + "/add", $('#form-product-add').serialize()); + }else{ + $.modal.alertWarning("请完善表单"); } } diff --git a/ruoyi-admin/src/main/resources/templates/project/info/edit.html b/ruoyi-admin/src/main/resources/templates/project/info/edit.html index f9266a17..4c6e8ac4 100644 --- a/ruoyi-admin/src/main/resources/templates/project/info/edit.html +++ b/ruoyi-admin/src/main/resources/templates/project/info/edit.html @@ -371,6 +371,8 @@ function submitHandler() { if ($.validate.form()) { $.operate.save(prefix + "/edit", $('#form-product-add').serialize()); + }else{ + $.modal.alertWarning("请完善表单"); } } diff --git a/ruoyi-admin/src/main/resources/templates/project/info/project.html b/ruoyi-admin/src/main/resources/templates/project/info/project.html index 45833749..74529426 100644 --- a/ruoyi-admin/src/main/resources/templates/project/info/project.html +++ b/ruoyi-admin/src/main/resources/templates/project/info/project.html @@ -34,6 +34,10 @@ .highlightRow { color: red; } + + .disableBtnfalse { + color: #ccc; + } </style> <body class="gray-bg"> <div class="container-div"> @@ -57,7 +61,7 @@ <li> <label>项目阶段:</label> <select name="projectStage" class="form-control" - th:with="type=${@dict.getType('project_stage')}" required> + th:with="type=${@dict.getType('project_stage')}"> <option value="">请选择合项目阶段</option> <option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option> @@ -74,7 +78,7 @@ </li> <li> <label>行业:</label> - <div id="industryTypeBox" style="float: right"> + <div id="industryTypeBox" style="float: right"> <select name="industryType" class="form-control" required> <option value="">请先选择BG</option> </select> @@ -186,7 +190,7 @@ formatter: (value, row, index) => { if (row.highlight) { return `<span class="highlight">${value}</span>` - }else{ + } else { return `<span>${value}</span>` } } @@ -210,9 +214,9 @@ field: 'industryType', title: '行业', formatter: function (value, row, index) { - if(row.bgProperty=='YYS'){ + if (row.bgProperty == 'YYS') { return $.table.selectDictLabel([[${@dict.getType('bg_yys')}]], value); - }else{ + } else { return $.table.selectDictLabel([[${@dict.getType('bg_hsys')}]], value); } @@ -225,7 +229,7 @@ { field: 'projectGraspDegree', title: '项目把握度', - width:30 + width: 30 }, { field: 'projectStage', @@ -266,7 +270,7 @@ formatter: function (value, row, index) { var actions = []; actions.push('<a class="btn btn-success btn-xs mb5' + editFlag + '" href="javascript:void(0)" onclick="$.operate.editFull(\'' + row.id + '\')"><i class="fa fa-edit"></i>项目详情</a> '); - actions.push('<a class="btn btn-success btn-xs mb5' + editFlag + '" href="javascript:void(0)" onclick=`openOrder(${row})`><i class="fa fa-refresh"></i>生成订单</a> '); + actions.push('<a class="btn btn-success btn-xs mb5' + editFlag + '" href="javascript:void(0)" onclick="openOrder(' + row.id + ',' + row.canGenerate + ')" name="disableBtn' + row.canGenerate + '"><i class="fa fa-refresh"></i>生成订单</a> '); actions.push('<a class="btn btn-danger btn-xs mb5' + removeFlag + '" href="javascript:void(0)" onclick="$.operate.remove(\'' + row.id + '\')"><i class="fa fa-remove"></i>删除</a>'); return actions.join(''); } @@ -368,6 +372,7 @@ $('#laydate-endTime').attr('name', 'updateTimeEnd') } } + function changeBg() { if ($('[name="bgProperty"]').val() != 'YYS') { let datas = [[${@dict.getType('bg_hysy')}]] @@ -397,6 +402,31 @@ } + function openOrder(id, canAdd) { + if (!canAdd) { + $.modal.alertWarning("该项目已存在订单"); + return + } + var options = { + title: "新建订单", + url: ctx + `project/order/add`, + maxmin: false, + full: true, + index: 1000, + width: 1050, + yes: function (index, layero) { + let body = parent.layer.getChildFrame('body', index) + if ($(body.find('#form-product-add').get(0)).validate().form()) { + $.operate.save(prefix + "/add", body.find('#form-product-add').serialize(), function () { + parent.layer.close(index) + }); + } + }, + }; + window.localStorage.setItem('projcetDataId', id) + $.modal.openOptions(options) + } + </script> </body> </html> \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/templates/project/order/add.html b/ruoyi-admin/src/main/resources/templates/project/order/add.html index 20a62260..5ebb4927 100644 --- a/ruoyi-admin/src/main/resources/templates/project/order/add.html +++ b/ruoyi-admin/src/main/resources/templates/project/order/add.html @@ -85,6 +85,7 @@ <td class="shortTd">项目编号<span class="is-required">*</span></td> <td> <input name="projectId" class="form-control" type="hidden"> + <input name="orderId" class="form-control" type="hidden"> <input type="text" name="projectCode" placeholder="请选择" class="form-control" onclick="searchProject()"> </td> @@ -129,6 +130,7 @@ <td>联系方式<span class="is-required">*</span></td> <td><input name="businessPhone" class="form-control" type="text" required></td> </tr> + <tr> <td>合同编号<span class="is-required">*</span></td> <td><input type="text" name="orderCode" class="form-control" readonly placeholder="自动生成"> @@ -218,6 +220,15 @@ </select> </td> </tr> + <tr> + <td>进货商联系人</td> + <td><input name="partnerPeople" class="form-control" type="text"></td> + <td>Email</td> + <td><input type="text" name="partnerEmail" + class="form-control"></td> + <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"> @@ -383,11 +394,39 @@ function submitHandler() { if ($.validate.form()) { $.operate.save(prefix + "/add", $('#form-product-add').serialize()); + }else{ + $.modal.alertWarning("请完善表单"); } } + function initProjcet() { + let id = window.localStorage.getItem('projcetDataId') + if (!id) { + return + } + window.localStorage.removeItem('projcetDataId') + $.operate.get(ctx + `sip/project/query/${id}`, function (res) { + let data = res.data + $('#projectNameBox').text(data.projectName) + $('[name="customerCode"]').val(data.customerCode); + $('[name="customerName"]').val(data.customerName); + $('[name="projectCode"]').val(data.projectCode); + $('[name="projectId"]').val(data.id); + $('[name="projectName"]').val(data.projectName); + $('[name="bgProperty"]').val(data.bgProperty); + $('[name="agentName"]').val(data.agentName); + $('[name="agentCode"]').val(data.agentCode); + changeBg() + $('[name="industryType"]').val(data.industryType); + initProjectList() + }) + + + } + $(function () { initProductList() + initProjcet() $("input[name='estimatedOrderTime']").datetimepicker({ format: "yyyy-mm-dd", minView: "month", @@ -459,7 +498,7 @@ function doSubmitProject(index, layero) { var rows = layero.find("iframe")[0].contentWindow.getSelections(); if (rows.length == 0) { - $.modal.alertWarning("请选择一个用户"); + $.modal.alertWarning("请选择一个项目"); return; } $('#projectNameBox').text(rows[0].projectName) @@ -486,6 +525,9 @@ $('[name="partnerCode"]').val(rows[0].partnerCode); $('[name="partnerName"]').val(rows[0].partnerName); $('[name="level"]').val(rows[0].level); + $('[name="partnerPeople"]').val(rows[0].contactPerson); + $('[name="partnerPhone"]').val(rows[0].contactPhone); + $.modal.close(index); } @@ -534,7 +576,7 @@ ${softwareProjectProductInfoList.map((ele) => { <td><input value="${data.catalogueAllPrice || ''}" name="softwareProjectProductInfoList[${length}].catalogueAllPrice" type="number" class="form-control catalogueAllPrice" placeholder="自动计算" required readonly></td> <td><input value="${data.remark || ''}" name="softwareProjectProductInfoList[${length}].remark" type="text" class="form-control" ></td> -<td><span style="cursor:pointer;color: ff5722" class="delRow">删除</span></td> +<td><span style="cursor:pointer;color: #1686d8" class="delRow">删除</span></td> </tr>`) $('#productTable tbody').append(tr) @@ -571,7 +613,7 @@ ${hardwareProjectProductInfoList.map((ele) => { <td><input value="${data.catalogueAllPrice || ''}" name="hardwareProjectProductInfoList[${length}].catalogueAllPrice" type="number" class="form-control catalogueAllPrice" placeholder="自动计算" required readonly></td> <td><input value="${data.remark || ''}" name="hardwareProjectProductInfoList[${length}].remark" type="text" class="form-control" ></td> -<td><span style="cursor:pointer;color: ff5722" class="delRow">删除</span></td> +<td><span style="cursor:pointer;color: #1686d8" class="delRow">删除</span></td> </tr>`) $('#productTable2 tbody').append(tr) @@ -608,7 +650,7 @@ ${maintenanceProjectProductInfoList.map((ele) => { <td><input value="${data.catalogueAllPrice || ''}" name="maintenanceProjectProductInfoList[${length}].catalogueAllPrice" type="number" class="form-control catalogueAllPrice" placeholder="自动计算" required readonly></td> <td><input value="${data.remark || ''}" name="maintenanceProjectProductInfoList[${length}].remark" type="text" class="form-control" ></td> -<td><span style="cursor:pointer;color: ff5722" class="delRow">删除</span></td> +<td><span style="cursor:pointer;color: #1686d8" class="delRow">删除</span></td> </tr>`) $('#productTable3 tbody').append(tr) @@ -790,7 +832,7 @@ ${maintenanceProjectProductInfoList.map((ele) => { const file = event.target.files[0]; let data = new FormData() data.append('file', file) - data.append('projectId', $('[name="projectId"]').val()) + data.append('orderId', $('[name="orderId"]').val()) var xhr = new XMLHttpRequest(); // 创建XMLHttpRequest对象 xhr.open('POST', prefix + '/importContractData', true); // 设置请求类型和URL @@ -799,9 +841,7 @@ ${maintenanceProjectProductInfoList.map((ele) => { let data = JSON.parse(res.currentTarget.response) if (data.code === 0) { $.modal.msgSuccess('导入成功'); - data.data.forEach((row) => { - addFile(row) - }) + addFile(data.data) } else { $.modal.msgError(data.msg || '导入失败'); } @@ -818,21 +858,30 @@ ${maintenanceProjectProductInfoList.map((ele) => { }); function importList() { - if (!$('[name="projectId"]').val()) { - $.modal.alertWarning("请先选择项目"); - return - } $('#uploadInput').click() } - function addFile() { + function addFile(data) { + let length = $('#fileBox tbody').find('tr').length + let filterArr = ['fileName', 'createBy', 'uploadTime'] + let keys = Object.keys(data).filter((ele) => filterArr.indexOf(ele) < 0) let tr = $(` <tr> -<td></td> -<td></td> -<td></td> +<td> +${ + keys.map((ele) => { + return `<input type="hidden" name="contractFileList[${length}].${ele}" value="${data[ele] || ''}">` + }).join('') + } +<input value="${data.fileName || ''}" name="contractFileList[${length}].fileName" readonly class="form-control"></td> +<td><input value="${data.createByName || ''}" name="contractFileList[${length}].createBy" readonly class="form-control"></td> +<td><input value="${data.uploadTime || ''}" name="contractFileList[${length}].uploadTime" readonly class="form-control" ></td> +<td><span style="cursor:pointer;color: #1686d8;margin-right: 5px;" onclick="preview('${data.filePath}')">预览</span><span style="cursor:pointer;color: #1686d8;margin-right: 5px;" onclick="downFile('${data.filePath}')">下载</span><span style="cursor:pointer;color: #dd242a" class="delfile">删除</span></td> </tr>`) $('#fileBox tbody').append(tr) + $('.delfile').on('click', function () { + $(this).parent().parent().remove() + }) } @@ -853,6 +902,18 @@ ${maintenanceProjectProductInfoList.map((ele) => { }) : '' }) } + + function downFile(filePath) { + $.operate.get(prefix + `/file/download?filePath=${filePath}`, function (res) { + window.location.href = res.data + }) + } + + function preview(filePath) { + $.operate.get(prefix + `/file/download?filePath=${filePath}`, function (res) { + window.open(res.data) + }) + } </script> </body> </html> \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/templates/project/order/edit.html b/ruoyi-admin/src/main/resources/templates/project/order/edit.html index 60d0f2ef..21fb1800 100644 --- a/ruoyi-admin/src/main/resources/templates/project/order/edit.html +++ b/ruoyi-admin/src/main/resources/templates/project/order/edit.html @@ -1,214 +1,924 @@ <!DOCTYPE html> -<html lang="zh" xmlns:th="http://www.thymeleaf.org" > +<html lang="zh" xmlns:th="http://www.thymeleaf.org"> <head> - <th:block th:include="include :: header('修改订单管理')" /> - <th:block th:include="include :: datetimepicker-css" /> + <th:block th:include="include :: header('新增项目管理')"/> + <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; + } + + .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; + gap: 10px; + } + + .checkbox-box label { + display: flex; + flex-direction: row; + gap: 5px; + align-items: center; + } + + .shortTd { + width: 100px; + } + + input, textarea, .productTable td { + position: relative; + } + + [name="bgProperty"], #industryTypeBox select { + pointer-events: none; + } + + #projectNameBox { + margin-left: 20px; + display: inline-block; + } +</style> <body class="white-bg"> - <div class="wrapper wrapper-content animated fadeInRight ibox-content"> - <form class="form-horizontal m" id="form-order-edit" th:object="${projectOrderInfo}"> - <input name="id" th:field="*{id}" type="hidden"> - <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="projectId" th:field="*{projectId}" 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">地市:</label> - <div class="col-sm-8"> - <input name="city" th:field="*{city}" class="form-control" type="text"> - </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"> - <input name="businessPerson" th:field="*{businessPerson}" class="form-control" type="text"> - </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"> - <input name="businessEmail" th:field="*{businessEmail}" class="form-control" type="text"> - </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"> - <input name="businessPhone" th:field="*{businessPhone}" class="form-control" type="text"> - </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"> - <input name="orderCode" th:field="*{orderCode}" class="form-control" type="text"> - </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"> - <input name="shipmentAmount" th:field="*{shipmentAmount}" class="form-control" type="text"> - </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"> - <input name="actualPurchaseAmount" th:field="*{actualPurchaseAmount}" class="form-control" type="text"> - </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"> - <div class="input-group date"> - <input name="orderEndTime" th:value="${#dates.format(projectOrderInfo.orderEndTime, 'yyyy-MM-dd')}" class="form-control" placeholder="yyyy-MM-dd" type="text"> - <span class="input-group-addon"><i class="fa fa-calendar"></i></span> - </div> - </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"> - <div class="input-group date"> - <input name="deliveryTime" th:value="${#dates.format(projectOrderInfo.deliveryTime, 'yyyy-MM-dd')}" class="form-control" placeholder="yyyy-MM-dd" type="text"> - <span class="input-group-addon"><i class="fa fa-calendar"></i></span> - </div> - </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"> - <input name="companyDelivery" th:field="*{companyDelivery}" class="form-control" type="text"> - </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"> - <input name="notifier" th:field="*{notifier}" class="form-control" type="text"> - </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"> - <input name="notifierEmail" th:field="*{notifierEmail}" class="form-control" type="text"> - </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"> - <input name="notifierPhone" th:field="*{notifierPhone}" class="form-control" type="text"> - </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"> - <input name="duty" th:field="*{duty}" class="form-control" type="text"> - </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"> - <input name="dutyEmail" th:field="*{dutyEmail}" class="form-control" type="text"> - </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"> - <input name="dutyPhone" th:field="*{dutyPhone}" class="form-control" type="text"> - </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"> - <input name="orderChannel" th:field="*{orderChannel}" class="form-control" type="text"> - </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"> - <input name="partnerCode" th:field="*{partnerCode}" class="form-control" type="text"> - </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"> - <input name="supplier" th:field="*{supplier}" class="form-control" type="text"> - </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"> - <input name="remark" th:field="*{remark}" class="form-control" type="text"> - </div> - </div> - </div> - </form> - </div> - <th:block th:include="include :: footer" /> - <th:block th:include="include :: datetimepicker-js" /> - <script th:inline="javascript"> - var prefix = ctx + "project/order"; - $("#form-order-edit").validate({ - focusCleanup: true - }); +<div class="wrapper wrapper-content animated fadeInRight ibox-content"> + <form id="form-product-add" th:object="${projectOrderInfo}"> + <div class="section-title">编辑订单<span id="projectNameBox"></span></div> + <table> + <tr> + <td class="shortTd">项目编号<span class="is-required">*</span></td> + <td> + <input name="projectId" class="form-control" type="hidden" th:field="*{projectId}"> + <input name="id" class="form-control" type="hidden" th:field="*{id}"> + <input type="text" name="projectCode" th:field="*{projectCode}" placeholder="请选择" + class="form-control" + onclick="searchProject()"> + </td> + <td class="shortTd">项目名称<span class="is-required">*</span></td> + <td><input type="text" name="projectName" + class="form-control" placeholder="选择项目后带入" th:field="*{projectName}" readonly></td> + <td class="shortTd">最终客户<span class="is-required">*</span></td> + <td><input name="customerName" class="form-control" th:field="*{customerName}" type="text" readonly + placeholder="选择项目后带入" + required> + <input name="customerCode" class="form-control" th:field="*{customerCode}" type="hidden"></td> + </tr> + <tr> + <td>BG<span class="is-required">*</span></td> + <td> + <select name="bgProperty" class="form-control" th:field="*{bgProperty}" + th:with="type=${@dict.getType('bg_type')}" + readonly required> + <option value="">请选择BG</option> + <option th:each="dict : ${type}" th:text="${dict.dictLabel}" + th:value="${dict.dictValue}"></option> + </select> + </td> + <td>行业<span class="is-required">*</span></td> + <td id="industryTypeBox"> + <select name="industryType" class="form-control" + required readonly> + <option value="">请先选择BG</option> + </select> + </td> + <td>代表处<span class="is-required">*</span></td> + <td colspan="3"> + <input name="agentName" class="form-control" th:field="*{agentName}" type="text" readonly required> + <input name="agentCode" class="form-control" th:field="*{agentCode}" type="hidden"> + </td> + </tr> + <tr> + <td>进货商商务接口人姓名<span class="is-required">*</span></td> + <td><input type="text" name="businessPerson" th:field="*{businessPerson}" class="form-control" required> + </td> + <td>Email</td> + <td><input type="text" name="businessEmail" th:field="*{businessEmail}" + class="form-control"></td> + <td>联系方式<span class="is-required">*</span></td> + <td><input name="businessPhone" class="form-control" th:field="*{businessPhone}" type="text" required> + </td> + </tr> - function submitHandler() { - if ($.validate.form()) { - $.operate.save(prefix + "/edit", $('#form-order-edit').serialize()); - } + <tr> + <td>合同编号<span class="is-required">*</span></td> + <td><input type="text" name="orderCode" th:field="*{orderCode}" class="form-control" readonly + placeholder="自动生成"> + </td> + <td>币种<span class="is-required">*</span></td> + <td> + <select name="currencyType" th:field="*{currencyType}" class="form-control" + th:with="type=${@dict.getType('currency_type')}" + 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><input name="shipmentAmount" th:field="*{shipmentAmount}" class="form-control" type="number" + required></td> + </tr> + <tr> + <td>实际进货金额<span class="is-required">*</span></td> + <td><input type="number" name="actualPurchaseAmount" th:field="*{actualPurchaseAmount}" + class="form-control" required> + </td> + <td>执行单有效截止时间<span class="is-required">*</span></td> + <td colspan="3"> + <input name="orderEndTime" class="form-control" th:field="*{orderEndTime}" placeholder="yyyy-MM-dd" + required> + </td> + </tr> + <tr> + + <td>要求到货时间<span class="is-required">*</span></td> + <td> + <input name="deliveryTime" class="form-control" th:field="*{deliveryTime}" placeholder="yyyy-MM-dd" + required> + </td> + <td>公司直发</td> + <td colspan="3"> + <select name="companyDelivery" class="form-control" th:field="*{companyDelivery}" + th:with="type=${@dict.getType('company_delivery')}" + required> + <option value="">请选择</option> + <option th:each="dict : ${type}" th:text="${dict.dictLabel}" + th:value="${dict.dictValue}"></option> + </select> + </td> + </tr> + <tr> + <td>通知人<span class="is-required">*</span></td> + <td><input type="text" name="notifier" class="form-control" th:field="*{notifier}" required> + </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> + </tr> + <tr> + <td>汇智责任人</td> + <td><input name="dutyName" class="form-control" type="text" + onclick="selectPeople()"> + <input name="duty" class="form-control" th:field="*{dutyName}" type="hidden"></td> + <td>Email</td> + <td><input type="text" name="dutyEmail" th:field="*{dutyEmail}" + class="form-control"></td> + <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}" + onclick="selectPartner()" required></td> + <td>进货商代码<span class="is-required">*</span></td> + <td><input type="text" name="partnerCode" th:field="*{partnerCode}" + class="form-control" readonly placeholder="选择后带入" required></td> + <td>进货商类型<span class="is-required">*</span></td> + <td> + <select name="level" class="form-control" readonly :placeholder="选择后带入" th:field="*{level}" + th:with="type=${@dict.getType('identify_level')}" style="pointer-events: none"> + <option th:each="dict : ${type}" th:text="${dict.dictLabel}" + th:value="${dict.dictValue}"></option> + </select> + </td> + </tr> + <tr> + <td>进货商联系人</td> + <td><input name="partnerPeople" class="form-control" type="text" th:field="*{partnerPeople}"></td> + <td>Email</td> + <td><input type="text" name="partnerEmail" th:field="*{partnerEmail}" + class="form-control"></td> + <td>联系方式<span class="is-required">*</span></td> + <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="*{remark}"> + </td> + </tr> + <tr> + <td>其他特别说明</td> + <td colspan="5"> + <input name="remark" class="form-control" type="text" th:field="*{remark}"> + </td> + </tr> + </table> + + <div class="layui-tab"> + <ul class="layui-tab-title"> + <li class="layui-this" lay-id="11">配置信息</li> + <li lay-id="22">审批信息</li> + <li lay-id="33">备货信息</li> + <li lay-id="44">物流信息</li> + <li lay-id="55">合同信息</li> + </ul> + <div class="layui-tab-content"> + <div class="layui-tab-item layui-show"> + <div class="section-title">配置信息</div> + <h3>软件</h3> + <button type="button" class="add-btn" onclick="addProduct({})">添加</button> + <table id="productTable" class="productTable"> + <thead> + <tr> + <th>序号</th> + <th>产品编号</th> + <th>产品型号</th> + <th>描述</th> + <th>数量</th> + <th style="width: 90px">目录单价(RMB)</th> + <th style="width: 90px">指导折扣</th> + <th style="width: 90px">折扣</th> + <th style="width: 90px">单价(RMB)</th> + <th style="width: 120px">总价(RMB)</th> + <th style="width: 120px">目录总价(RMB)</th> + <th>备注</th> + <th style="width: 60px">操作</th> + </tr> + </thead> + <tbody> + </tbody> + </table> + <h3>硬件</h3> + <button type="button" class="add-btn" onclick="addProduct2({})">添加</button> + <table id="productTable2" class="productTable"> + <thead> + <tr> + <th>序号</th> + <th>产品编号</th> + <th>产品型号</th> + <th>描述</th> + <th>数量</th> + <th style="width: 90px">目录单价(RMB)</th> + <th style="width: 90px">指导折扣</th> + <th style="width: 90px">折扣</th> + <th style="width: 90px">单价(RMB)</th> + <th style="width: 120px">总价(RMB)</th> + <th style="width: 120px">目录总价(RMB)</th> + <th>备注</th> + <th style="width: 60px">操作</th> + </tr> + </thead> + <tbody> + </tbody> + </table> + <h3>维保</h3> + <button type="button" class="add-btn" onclick="addProduct3({})">添加</button> + <table id="productTable3" class="productTable"> + <thead> + <tr> + <th>序号</th> + <th>产品编号</th> + <th>产品型号</th> + <th>描述</th> + <th>数量</th> + <th style="width: 90px">目录单价(RMB)</th> + <th style="width: 90px">指导折扣</th> + <th style="width: 90px">折扣</th> + <th style="width: 90px">单价(RMB)</th> + <th style="width: 120px">总价(RMB)</th> + <th style="width: 120px">目录总价(RMB)</th> + <th>备注</th> + <th style="width: 60px">操作</th> + </tr> + </thead> + <tbody> + </tbody> + </table> + </div> + <div class="layui-tab-item">内容-2</div> + <div class="layui-tab-item">内容-3</div> + <div class="layui-tab-item">内容-4</div> + <div class="layui-tab-item"> + <div class="row"> + <input id="uploadInput" type="file" accept=".pdf" 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 class="col-sm-12 select-table table-striped"> + <table id="fileBox"> + <thead> + <tr> + <th>合同名称</th> + <th>上传人</th> + <th>上传时间</th> + <th>操作</th> + </tr> + </thead> + <tbody></tbody> + </table> + </div> + </div> + </div> + </div> + </div> + </div> + + </form> +</div> +<th:block th:include="include :: footer"/> +<th:block th:include="include :: datetimepicker-js"/> +<th:block th:include="include :: layui"/> +<th:block th:include="include :: jquery-cxselect-js"/> + +<script th:inline="javascript"> + var prefix = ctx + "project/order" + $("#form-product-add").validate({ + focusCleanup: true + }); + var softwareProjectProductInfoList = [] + var hardwareProjectProductInfoList = [] + var maintenanceProjectProductInfoList = [] + + function initProductList() { + let data = { + pageSize: 100000, + pageNum: 1, + isTable: 0, } + $.operate.post(ctx + 'system/product/list', {...data, type: '1'}, function (res) { + softwareProjectProductInfoList = res.rows + let softwareProjectProductInfoListAll = [[${projectOrderInfo.softwareProjectProductInfoList}]] || [] + softwareProjectProductInfoListAll.forEach((ele) => { + addProduct(ele) + }) + }) + $.operate.post(ctx + 'system/product/list', {...data, type: '2'}, function (res) { + hardwareProjectProductInfoList = res.rows + let hardwareProjectProductInfoListAll = [[${projectOrderInfo.hardwareProjectProductInfoList}]] || [] + hardwareProjectProductInfoListAll.forEach((ele) => { + addProduct2(ele) + }) + }) + $.operate.post(ctx + 'system/product/list', {...data, type: '11,22'}, function (res) { + maintenanceProjectProductInfoList = res.rows + let maintenanceProjectProductInfoListAll = [[${projectOrderInfo.maintenanceProjectProductInfoList}]] || [] + maintenanceProjectProductInfoListAll.forEach((ele) => { + addProduct3(ele) + }) + }) + ([[${projectOrderInfo.contractFileList}]] || []).forEach((ele) => { + addFile(ele) + }) + } + + function submitHandler() { + if ($.validate.form()) { + $.operate.save(prefix + "/edit", $('#form-product-add').serialize()); + }else{ + $.modal.alertWarning("请完善表单"); + } + } + + $(function () { + initProductList() + $("input[name='estimatedOrderTime']").datetimepicker({ + format: "yyyy-mm-dd", + minView: "month", + autoclose: true + }); + $("input[name='estimatedDeliverTime']").datetimepicker({ + format: "yyyy-mm-dd", + minView: "month", + autoclose: true + }); + layui.use('element', function () { + var element = layui.element; + }); + var urlChina = '/cnarea/select'; + $.cxSelect.defaults.url = urlChina; + $('#element1').cxSelect({ + selects: ['province', 'city'], + nodata: 'none' + + }); $("input[name='orderEndTime']").datetimepicker({ format: "yyyy-mm-dd", minView: "month", autoclose: true }); - $("input[name='deliveryTime']").datetimepicker({ format: "yyyy-mm-dd", minView: "month", autoclose: true }); - </script> + initData() + }) + + function searchProject() { + var url = prefix + "/selectProject"; + var options = { + title: '选择客户', + width: "680", + url: url, + height: '600', + callBack: doSubmitProject + }; + $.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 doSubmitProject(index, layero) { + var rows = layero.find("iframe")[0].contentWindow.getSelections(); + if (rows.length == 0) { + $.modal.alertWarning("请选择一个项目"); + return; + } + $('#projectNameBox').text(rows[0].projectName) + $('[name="customerCode"]').val(rows[0].customerCode); + $('[name="customerName"]').val(rows[0].customerName); + $('[name="projectCode"]').val(rows[0].projectCode); + $('[name="projectId"]').val(rows[0].id); + $('[name="projectName"]').val(rows[0].projectName); + $('[name="bgProperty"]').val(rows[0].bgProperty); + $('[name="agentName"]').val(rows[0].agentName); + $('[name="agentCode"]').val(rows[0].agentCode); + changeBg() + $('[name="industryType"]').val(rows[0].industryType); + initProjectList() + $.modal.close(index); + } + + function doSubmitPartner(index, layero) { + var rows = layero.find("iframe")[0].contentWindow.getSelections(); + if (rows.length == 0) { + $.modal.alertWarning("请选择一个代理商"); + return; + } + $('[name="partnerCode"]').val(rows[0].partnerCode); + $('[name="partnerName"]').val(rows[0].partnerName); + $('[name="level"]').val(rows[0].level); + $('[name="partnerPeople"]').val(rows[0].contactPerson); + $('[name="partnerPhone"]').val(rows[0].contactPhone); + + + $.modal.close(index); + } + + function initData() { + changeBg() + } + + function doSubmitPeople(index, layero) { + var rows = layero.find("iframe")[0].contentWindow.getSelections(); + if (rows.length == 0) { + $.modal.alertWarning("请选择一个代理商"); + return; + } + $('[name="duty"]').val(rows[0].userId); + $('[name="dutyName"]').val(rows[0].userName); + $('[name="dutyPhone"]').val(rows[0].phonenumber); + $('[name="dutyEmail"]').val(rows[0].email); + + + $.modal.close(index); + } + + + // 添加软件 + function addProduct(data) { + let length = $('#productTable tbody').find('tr').length + let tr = $(` +<tr> +<td class="indexBox">${length + 1}</td> +<td class="layui-form"><input type="hidden" name="softwareProjectProductInfoList[${length}].id" value="${data.id || ''}"><select name="softwareProjectProductInfoList[${length}].productBomCode" value="${data.productBomCode || ''}" required class="form-control productBomCode" lay-search="" lay-filter="productCode1"> +${softwareProjectProductInfoList.map((ele) => { + return `<option value="${ele.productCode}">${ele.productCode}</option>` + }).join('') + } +</select></td> +<td class="layui-form"><select name="softwareProjectProductInfoList[${length}].model" required class="form-control model" lay-search="" lay-filter="productModel1"> +${softwareProjectProductInfoList.map((ele) => { + return `<option value="${ele.model}">${ele.model}</option>` + }).join('') + } +</select></td> +<td><textarea name="softwareProjectProductInfoList[${length}].productDesc" required class="form-control productDesc" placeholder="自动带入" readonly>${softwareProjectProductInfoList[0]?.description || ''}</textarea></td> +<td><input value="${data.quantity || ''}" name="softwareProjectProductInfoList[${length}].quantity" type="number" class="form-control quantity" step="1" required></td> +<td><input value="${data.cataloguePrice || ''}" name="softwareProjectProductInfoList[${length}].cataloguePrice" type="text" class="form-control cataloguePrice" required></td> +<td><input value="${data.guidanceDiscount || ''}" name="softwareProjectProductInfoList[${length}].guidanceDiscount" type="number" class="form-control guidanceDiscount" min="0" max="1" step="0.1" required></td> +<td><input value="${data.discount || ''}" name="softwareProjectProductInfoList[${length}].discount" type="number" class="form-control discount" min="0" max="1" step="0.1" required></td> +<td><input value="${data.price || ''}" name="softwareProjectProductInfoList[${length}].price" type="number" class="form-control price" placeholder="自动计算" required readonly></td> +<td><input value="${data.allPrice || ''}" name="softwareProjectProductInfoList[${length}].allPrice" type="number" class="form-control allPrice" placeholder="自动计算" required readonly></td> +<td><input value="${data.catalogueAllPrice || ''}" name="softwareProjectProductInfoList[${length}].catalogueAllPrice" type="number" class="form-control catalogueAllPrice" placeholder="自动计算" required readonly></td> +<td><input value="${data.remark || ''}" name="softwareProjectProductInfoList[${length}].remark" type="text" class="form-control" ></td> + +<td><span style="cursor:pointer;color: #1686d8" class="delRow">删除</span></td> + +</tr>`) + $('#productTable tbody').append(tr) + initSearchProduct('1') + initPrice() + } + + function addProduct2(data) { + let length = $('#productTable2 tbody').find('tr').length + let tr = $(` +<tr> +<td class="indexBox">${length + 1}</td> +<td class="layui-form"><input type="hidden" name="hardwareProjectProductInfoList[${length}].id" value="${data.id || ''}"><select name="hardwareProjectProductInfoList[${length}].productBomCode" required class="form-control productBomCode" lay-search="" lay-filter="productCode2" value="${data.productBomCode || ''}"> +${hardwareProjectProductInfoList.map((ele) => { + return `<option value="${ele.productCode}">${ele.productCode}</option>` + }).join('') + } + +</select></td> +<td class="layui-form"><select name="hardwareProjectProductInfoList[${length}].model" required class="form-control model" lay-search="" lay-filter="productModel2" value="${data.model || ''}"> +${hardwareProjectProductInfoList.map((ele) => { + return `<option value="${ele.model}">${ele.model}</option>` + }).join('') + } + +</select></td> +<td><textarea name="hardwareProjectProductInfoList[${length}].productDesc" required class="form-control productDesc" placeholder="自动带入" readonly>${data.id ? data.productDesc : (hardwareProjectProductInfoList[0]?.description || '')}</textarea></td> +<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" type="text" class="form-control cataloguePrice" required></td> +<td><input value="${data.guidanceDiscount || ''}" name="hardwareProjectProductInfoList[${length}].guidanceDiscount" type="number" class="form-control guidanceDiscount" min="0" max="1" step="0.1" required></td> +<td><input value="${data.discount || ''}" name="hardwareProjectProductInfoList[${length}].discount" type="number" class="form-control discount" min="0" max="1" step="0.1" required></td> +<td><input value="${data.price || ''}" name="hardwareProjectProductInfoList[${length}].price" type="number" class="form-control price" placeholder="自动计算" required readonly></td> +<td><input value="${data.allPrice || ''}" name="hardwareProjectProductInfoList[${length}].allPrice" type="number" class="form-control allPrice" placeholder="自动计算" required readonly></td> +<td><input value="${data.catalogueAllPrice || ''}" name="hardwareProjectProductInfoList[${length}].catalogueAllPrice" type="number" class="form-control catalogueAllPrice" placeholder="自动计算" required readonly></td> +<td><input value="${data.remark || ''}" name="hardwareProjectProductInfoList[${length}].remark" type="text" class="form-control" ></td> + +<td><span style="cursor:pointer;color: #1686d8" class="delRow">删除</span></td> + +</tr>`) + $('#productTable2 tbody').append(tr) + initSearchProduct('2') + initPrice() + } + + function addProduct3(data) { + let length = $('#productTable3 tbody').find('tr').length + let tr = $(` +<tr> +<td class="indexBox">${length + 1}</td> +<td class="layui-form"><input type="hidden" name="maintenanceProjectProductInfoList[${length}].id" value="${data.id || ''}"><select name="maintenanceProjectProductInfoList[${length}].productBomCode" required class="form-control productBomCode" lay-search="" lay-filter="productCode3" value="${data.productBomCode || ''}"> +${maintenanceProjectProductInfoList.map((ele) => { + return `<option value="${ele.productCode}">${ele.productCode}</option>` + }).join('') + } + +</select></td> +<td class="layui-form"><select name="maintenanceProjectProductInfoList[${length}].model" required class="form-control model" lay-search="" lay-filter="productModel3"> +${maintenanceProjectProductInfoList.map((ele) => { + return `<option value="${ele.model}">${ele.model}</option>` + }).join('') + } + +</select></td> +<td><textarea name="maintenanceProjectProductInfoList[${length}].productDesc" required class="form-control productDesc" placeholder="自动带入" readonly>${maintenanceProjectProductInfoList[0]?.description || ''}</textarea></td> +<td><input name="maintenanceProjectProductInfoList[${length}].quantity" type="number" class="form-control quantity" step="1" required value="${data.quantity || ''}" ></td> +<td><input value="${data.cataloguePrice || ''}" name="maintenanceProjectProductInfoList[${length}].cataloguePrice" type="text" class="form-control cataloguePrice" required></td> +<td><input value="${data.guidanceDiscount || ''}" name="maintenanceProjectProductInfoList[${length}].guidanceDiscount" type="number" class="form-control guidanceDiscount" min="0" max="1" step="0.1" required></td> +<td><input value="${data.discount || ''}" name="maintenanceProjectProductInfoList[${length}].discount" type="number" class="form-control discount" min="0" max="1" step="0.1" required></td> +<td><input value="${data.price || ''}" name="maintenanceProjectProductInfoList[${length}].price" type="number" class="form-control price" placeholder="自动计算" required readonly></td> +<td><input value="${data.allPrice || ''}" name="maintenanceProjectProductInfoList[${length}].allPrice" type="number" class="form-control allPrice" placeholder="自动计算" required readonly></td> +<td><input value="${data.catalogueAllPrice || ''}" name="maintenanceProjectProductInfoList[${length}].catalogueAllPrice" type="number" class="form-control catalogueAllPrice" placeholder="自动计算" required readonly></td> +<td><input value="${data.remark || ''}" name="maintenanceProjectProductInfoList[${length}].remark" type="text" class="form-control" ></td> + +<td><span style="cursor:pointer;color: #1686d8" class="delRow">删除</span></td> + +</tr>`) + $('#productTable3 tbody').append(tr) + initSearchProduct('11,22') + initPrice() + } + + function addLog() { + let length = $('#workLog tbody').find('tr').length + let tr = $(` +<tr> +<td>${length + 1}</td> +<td><textarea type="text" name="projectWorkProgressList[${length}].workContent" class="form-control" required></textarea></td> +<td><input type="text" class="form-control" placeholder="保存后自动填入" readonly></td> +<td><input type="text" class="form-control" placeholder="保存后自动填入" readonly></td> +</tr>`) + $('#workLog tbody').append(tr) + + } + + function initSearchProduct() { + layui.use(function () { + var form = layui.form + form.render() + + form.on('select(productCode1)', function (data) { + searchProduct(data.value, 'code', data.elem) + }) + form.on('select(productCode2)', function (data) { + searchProduct(data.value, 'code', data.elem) + }) + form.on('select(productCode3)', function (data) { + searchProduct(data.value, 'code', data.elem) + }) + form.on('select(productModel1)', function (data) { + searchProduct(data.value, 'model', data.elem) + }) + form.on('select(productModel2)', function (data) { + searchProduct(data.value, 'model', data.elem) + }) + form.on('select(productModel3)', function (data) { + searchProduct(data.value, 'model', data.elem) + }) + $('.layui-input').on('mouseout', function () { + $(this).blur() + }) + }) + $('.productTable .delRow').on('click', function () { + let ele = $(this) + $.modal.confirm('是否确认删除', function () { + $(ele).parent().parent().remove() + $('#productTable tbody tr').each((index, item) => { + $(item).find('.indexBox').text(index + 1) + }) + $('#productTable2 tbody tr').each((index, item) => { + $(item).find('.indexBox').text(index + 1) + }) + $('#productTable3 tbody tr').each((index, item) => { + $(item).find('.indexBox').text(index + 1) + }) + + }); + }) + } + + function searchProduct(val, type, ele) { + let selectObj = {} + let listName = $(ele).attr('name') + if (type == 'code') { + if (listName.indexOf('softwareProjectProductInfoList') > -1) { + selectObj = softwareProjectProductInfoList.find((ele) => ele.productCode == val) + } else if (listName.indexOf('hardwareProjectProductInfoList') > -1) { + selectObj = hardwareProjectProductInfoList.find((ele) => ele.productCode == val) + } else if (listName.indexOf('maintenanceProjectProductInfoList') > -1) { + selectObj = maintenanceProjectProductInfoList.find((ele) => ele.productCode == val) + } + $(ele).parent().parent().find('.model+div').find('.layui-input').val(selectObj.model) + $(ele).parent().parent().find('.model').val(selectObj.model) + } else { + if (listName.indexOf('softwareProjectProductInfoList') > -1) { + selectObj = softwareProjectProductInfoList.find((ele) => ele.model == val) + } else if (listName.indexOf('hardwareProjectProductInfoList') > -1) { + selectObj = hardwareProjectProductInfoList.find((ele) => ele.model == val) + } else if (listName.indexOf('maintenanceProjectProductInfoList') > -1) { + selectObj = maintenanceProjectProductInfoList.find((ele) => ele.model == val) + } + $(ele).parent().parent().find('.productBomCode+div').find('.layui-input').val(selectObj.model) + $(ele).parent().parent().find('.productBomCode').val(selectObj.productCode) + } + $(ele).parent().parent().find('.productDesc').val(selectObj.description) + } + + function initPrice() { + $('.productTable .quantity').on('input', function () { + let num = $(this).val() + let priceVal = $(this).parent().parent().find('.price').val() + let cateVal = $(this).parent().parent().find('.cataloguePrice').val() + if (priceVal && num) { + $(this).parent().parent().find('.allPrice').val((num * priceVal).toFixed(2)) + } + if (cateVal && num) { + $(this).parent().parent().find('.catalogueAllPrice').val((num * cateVal).toFixed(2)) + } + }) + $('.productTable .cataloguePrice').on('input', function () { + let val = $(this).val() + $(this).parent().parent().find('.price').val(val) + let quantity = $(this).parent().parent().find('.quantity').val() + if (quantity && val) + $(this).parent().parent().find('.catalogueAllPrice').val((val * quantity).toFixed(2)) + }) + $('.productTable .guidanceDiscount').on('input', function () { + let val = $(this).val() + let cataloguePrice = $(this).parent().parent().find('.cataloguePrice').val() + $(this).parent().parent().find('.discount').val(val) + $(this).parent().parent().find('.price').val((cataloguePrice * val).toFixed(2)) + let price = $(this).parent().parent().find('.price').val() + let quantity = $(this).parent().parent().find('.quantity').val() + if (price && quantity) { + $(this).parent().parent().find('.allPrice').val((price * quantity).toFixed(2)) + } + }) + $('.productTable .discount').on('input', function () { + let discount = $(this).val() + let val = $(this).parent().parent().find('.cataloguePrice').val() + $(this).parent().parent().find('.price').val((val * discount).toFixed(2)) + }) + $('.productTable .price').change('input', function () { + let val = $(this).val() + let num = $(this).parent().parent().find('.quantity').val() + $(this).parent().parent().find('.allPrice').val((val * num).toFixed(2)) + }) + } + + function changeBg() { + if ($('[name="bgProperty"]').val() != 'YYS') { + let datas = [[${@dict.getType('bg_hysy')}]] + let str = `` + datas.forEach((ele) => { + str += `<option value="${ele.dictValue}">${ele.dictLabel}</option> ` + }) + $('#industryTypeBox').html(` + <select name="industryType" class="form-control" readonly required> + <option value="">请选择行业</option> + ${str} + </select> + `) + } else { + let datas = [[${@dict.getType('bg_yys')}]] + let str = `` + datas.forEach((ele) => { + str += `<option value="${ele.dictValue}">${ele.dictLabel}</option> ` + }) + $('#industryTypeBox').html(` + <select name="industryType" class="form-control" required readonly> + <option value="">请选择行业</option> + ${str} + </select> + `) + } + } + + function downloadTem() { + var xhr = new XMLHttpRequest(); // 创建XMLHttpRequest对象 + if (!$('[name="orderChannel"]').val()) { + $.modal.alertWarning("请先选择下单通路"); + return + } + if ($('[name="orderChannel"]').val() == 1) { + window.location.href = prefix + "/contract/export?fileName=文件111.xlsx" + } else { + window.location.href = prefix + "/contract/export?fileName=文件222.xlsx" + } + + $.modal.closeLoading() + } + + 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 + '/importContractData', true); // 设置请求类型和URL + // 当请求完成时执行的回调函数 + xhr.onload = function (res) { + let data = JSON.parse(res.currentTarget.response) + if (data.code === 0) { + $.modal.msgSuccess('导入成功'); + addFile(data.data) + } else { + $.modal.msgError(data.msg || '导入失败'); + } + $('#uploadInput').val('') + + }; + + // 当请求发生错误时执行的回调函数 + xhr.onerror = function () { + console.log('上传过程中发生错误'); + }; + // // 发送数据到服务器 + xhr.send(data); + }); + + function importList() { + $('#uploadInput').click() + } + + function addFile(data) { + let length = $('#fileBox tbody').find('tr').length + let filterArr = ['fileName', 'createBy', 'uploadTime'] + let keys = Object.keys(data).filter((ele) => filterArr.indexOf(ele) < 0) + let tr = $(` +<tr> +<td> +${ + keys.map((ele) => { + return `<input type="hidden" name="contractFileList[${length}].${ele}" value="${data[ele] || ''}">` + }).join('') + } +<input value="${data.fileName || ''}" name="contractFileList[${length}].fileName" readonly class="form-control"></td> +<td><input value="${data.createByName || ''}" name="contractFileList[${length}].createBy" readonly class="form-control"></td> +<td><input value="${data.uploadTime || ''}" name="contractFileList[${length}].uploadTime" readonly class="form-control" ></td> +<td><span style="cursor:pointer;color: #1686d8;margin-right: 5px;" onclick="preview('${data.filePath}')">预览</span><span style="cursor:pointer;color: #1686d8;margin-right: 5px;" onclick="downFile('${data.filePath}')">下载</span><span style="cursor:pointer;color: #dd242a" class="delfile">删除</span></td> +</tr>`) + $('#fileBox tbody').append(tr) + $('.delfile').on('click', function () { + $(this).parent().parent().remove() + }) + + } + + function initProjectList() { + let id = $('[name="projectId"]').val() + $.operate.get(ctx + `sip/project/query/${id}`, function (res) { + $('#productTable tbody').html('') + $('#productTable2 tbody').html('') + $('#productTable3 tbody').html('') + res.data.softwareProjectProductInfoList ? res.data.softwareProjectProductInfoList.forEach((ele) => { + addProduct(ele) + }) : '' + res.data.hardwareProjectProductInfoList ? res.data.hardwareProjectProductInfoList.forEach((ele) => { + addProduct2(ele) + }) : '' + res.data.maintenanceProjectProductInfoList ? res.data.maintenanceProjectProductInfoList.forEach((ele) => { + addProduct3(ele) + }) : '' + }) + } + + function downFile(filePath) { + $.operate.get(prefix + `/file/download?filePath=${filePath}`, function (res) { + window.location.href = res.data + }) + } + + function preview(filePath) { + $.operate.get(prefix + `/file/download?filePath=${filePath}`, function (res) { + window.open(res.data) + }) + } +</script> </body> </html> \ No newline at end of file