| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155 | 
							- <!--删除标段-->
 
- <div class="modal fade" id="del-bg" data-backdrop="static">
 
-     <div class="modal-dialog" role="document">
 
-         <div class="modal-content">
 
-             <div class="modal-header">
 
-                 <h5 class="modal-title">确认删除变更</h5>
 
-             </div>
 
-             <div class="modal-body">
 
-                 <h5>删除后,数据无法恢复,请谨慎操作。</h5>
 
-             </div>
 
-             <form class="modal-footer" action="/tender/<%- tender.id %>/change/delete" method="post">
 
-                 <input type="hidden" name="cid" id="delete-cid" value="">
 
-                 <input type="hidden" name="_csrf_j" value="<%= ctx.csrf %>" />
 
-                 <button type="button" class="btn btn-secondary btn-sm" data-dismiss="modal">取消</button>
 
-                 <button type="submit" class="btn btn-danger btn-sm">确定删除</button>
 
-             </form>
 
-         </div>
 
-     </div>
 
- </div>
 
- <!--审批流程/结果-->
 
- <div class="modal fade" id="sp-list" data-backdrop="static">
 
-     <div class="modal-dialog modal-lg" role="document">
 
-         <div class="modal-content">
 
-             <div class="modal-header">
 
-                 <h5 class="modal-title">审批流程</h5>
 
-             </div>
 
-             <div class="modal-body">
 
-                 <div class="row">
 
-                     <div class="col-4 modal-height-500" style="overflow: auto">
 
-                         <div class="card mt-3">
 
-                             <ul class="list-group list-group-flush" id="auditor-list">
 
-                             </ul>
 
-                         </div>
 
-                     </div>
 
-                     <div class="col-8 modal-height-500" style="overflow: auto" id="audit-list">
 
-                     </div>
 
-                 </div>
 
-             </div>
 
-             <div class="modal-footer">
 
-                 <button type="button" class="btn btn-secondary btn-sm" data-dismiss="modal">关闭</button>
 
-             </div>
 
-         </div>
 
-     </div>
 
- </div>
 
- <% if (tender.user_id === ctx.session.sessionUser.accountId) { %>
 
- <!--弹出添加变更令-->
 
- <div class="modal fade" id="add-bj-modal" data-backdrop="static">
 
-     <div class="modal-dialog" role="document">
 
-         <div class="modal-content">
 
-             <div class="modal-header">
 
-                 <h5 class="modal-title">新建变更令</h5>
 
-             </div>
 
-             <div class="modal-body">
 
-                 <div class="form-group">
 
-                     <label>申请编号<b class="text-danger">*</b></label>
 
-                     <div class="input-group">
 
-                         <input type="text" class="form-control form-control-sm is-invalid" placeholder="请输入变更令号" value="变更申请编号" id="bj-code">
 
-                         <div class="input-group-append" id="autoCodeShow" <% if (codeRule.length === 0) { %>style="display: none"<% } %>>
 
-                             <button class="btn btn-sm btn-outline-secondary" type="button" title="自动编号" id="autoCode"><i class="fa fa-repeat"></i></button>
 
-                         </div>
 
-                         <div class="invalid-feedback" style="display: none" id="bjHint">您输入的编号已存在。</div>
 
-                     </div>
 
-                 </div>
 
-                 <% if (ctx.session.sessionProject.page_show.openChangePlan) { %>
 
-                     <div class="form-group">
 
-                         <label>关联变更方案</label>
 
-                         <select class="form-control form-control-sm" id="plan-code">
 
-                             <option></option>
 
-                             <% for (const cp of changePlanList) { %>
 
-                                 <% if (ctx.helper._.indexOf(apLists, cp.code) === -1) { %>
 
-                                     <option><%- cp.code %></option>
 
-                                 <% } %>
 
-                             <% } %>
 
-                         </select>
 
-                     </div>
 
-                     <input value="" type="hidden" id="bj-name">
 
-                 <% } else { %>
 
-                     <div class="form-group">
 
-                         <label>变更工程名称<b class="text-danger">*</b></label>
 
-                         <input class="form-control form-control-sm" value="" type="text" id="bj-name">
 
-                         <div class="invalid-feedback" style="display: none" id="name_error_msg">名称超过100个字,请缩减名称。</div>
 
-                     </div>
 
-                     <input type="hidden" value="" id="plan-code">
 
-                 <% } %>
 
-             </div>
 
-             <div class="modal-footer">
 
-                 <button type="button" class="btn btn-secondary btn-sm" data-dismiss="modal" id="addCancel">关闭</button>
 
-                 <a href="javascript: void(0)" class="btn btn-primary btn-sm" id="addOk">确认新建</a>
 
-             </div>
 
-         </div>
 
-     </div>
 
- </div>
 
- <!--设置-->
 
- <div class="modal fade" id="setting" data-backdrop="static">
 
-     <div class="modal-dialog" role="document">
 
-         <div class="modal-content">
 
-             <div class="modal-header">
 
-                 <h5 class="modal-title">变更令设置</h5>
 
-             </div>
 
-             <div class="modal-body">
 
-                 <ul class="nav nav-tabs mb-3" role="tablist">
 
-                     <li class="nav-item">
 
-                         <a class="nav-link active" data-toggle="tab" href="#bianhao" role="tab" aria-controls="home" aria-selected="true">编号规则</a>
 
-                     </li>
 
-                 </ul>
 
-                 <div class="tab-content">
 
-                     <div class="tab-pane active" id="bianhao">
 
-                         <h5>
 
-                             当前规则:
 
-                             <span id="preview">
 
-                                 <% if (codeRule && codeRule instanceof Array) { %>
 
-                                     <% const preview = []; %>
 
-                                     <% for (const rule of codeRule) { %>
 
-                                         <% preview.push(rule.preview); %>
 
-                                     <% } %>
 
-                                     <%- preview.join(tender.c_connector !== null && tender.c_connector !== '3' ? ruleConst.connectorString[tender.c_connector] : ''); %>
 
-                                 <% } %>
 
-                             </span>
 
-                         </h5>
 
-                         <h5 id="ruleParts">
 
-                             <% if (codeRule && codeRule instanceof Array) { %>
 
-                                 <% for (const rule of codeRule) { %>
 
-                                 <span class="badge badge-light" title="<%- ruleConst.ruleString[rule.rule_type] %>">
 
-                                     <span>
 
-                                         <%- rule.preview %>
 
-                                     </span>
 
-                                     <a href="javascript: void(0);" class="text-danger" title="移除"><i class="fa fa-remove"></i></a>
 
-                                 </span>
 
-                                 <% } %>
 
-                             <% } %>
 
-                         </h5>
 
-                         <h5 class="my-3">连接符</h5>
 
-                         <div class="form-group">
 
-                             <select class="form-control form-control-sm connector-change">
 
-                                 <option disabled selected>请选择</option>
 
-                                 <% for (const index in ruleConst.connectorString) { %>
 
-                                     <option value="<%- index %>" <% if (tender.c_connector !== null && tender.c_connector === parseInt(index)) { %>selected<% } %>><%- ruleConst.connectorString[index] %></option>
 
-                                 <% } %>
 
-                             </select>
 
-                         </div>
 
-                         <h5 class="my-3">添加新规则组件</h5>
 
-                         <div class="form-group">
 
-                             <select class="form-control form-control-sm rule-change">
 
-                                 <option disabled selected>请选择组件</option>
 
-                                 <% for (const index in ruleConst.ruleString) { %>
 
-                                 <option value="<%- index %>"><%- ruleConst.ruleString[index] %></option>
 
-                                 <% } %>
 
-                             </select>
 
-                         </div>
 
-                         <div class="form-group" id="format" style="display: none">
 
-                             <label>自动编号位数</label>
 
-                             <input min="3" class="form-control form-control-sm" step="1" max="6" value="3" type="number">
 
-                         </div>
 
-                         <div class="form-group" id="text" style="display: none">
 
-                             <label>起始编号</label>
 
-                             <input class="form-control form-control-sm" value="001" type="text">
 
-                         </div>
 
-                         <button class="btn btn-sm btn-outline-primary" id="addRule">添加组件</button>
 
-                     </div>
 
-                 </div>
 
-             </div>
 
-             <div class="modal-footer">
 
-                 <% if (tender.c_rule_first) { %><button type="button" class="btn btn-secondary btn-sm" data-dismiss="modal" id="changeFirst">暂时不需要</button><% } %>
 
-                 <button type="button" class="btn btn-secondary btn-sm" data-dismiss="modal" id="hide_modal" <% if (tender.c_rule_first) { %>style="display: none"<% } %>>关闭</button>
 
-                 <button type="button" class="btn btn-primary btn-sm" id="setRule">确定添加</button>
 
-             </div>
 
-         </div>
 
-     </div>
 
- </div>
 
- <!--批量上报变更令-->
 
- <div class="modal fade" id="batch-sb" data-backdrop="static" style="">
 
-     <div class="modal-dialog modal-lg" style="max-width:1100px;" role="document">
 
-         <div class="modal-content">
 
-             <div class="modal-header">
 
-                 <h5 class="modal-title">批量上报变更令</h5>
 
-                 <button type="button" class="close" data-dismiss="modal" aria-label="Close">
 
-                     <span aria-hidden="true">×</span>
 
-                 </button>
 
-             </div>
 
-             <div class="modal-body">
 
-                 <div class="row">
 
-                     <!-- 左侧变更令 -->
 
-                     <div class="col-6" >
 
-                         <div class="modal-height-500" style="overflow-y:auto;">
 
-                             <table class="table table-hover table-bordered">
 
-                                 <thead>
 
-                                 <tr>
 
-                                     <th width="15%" class="text-center"><div class="align-middle"><input id="select-all-uncheck" type="checkbox"></div></th>
 
-                                     <th width="40%">变更令编号</th>
 
-                                     <th width="">原审批流程</th>
 
-                                 </tr>
 
-                                 </thead>
 
-                                 <tbody id="uncheck_list">
 
-                                 </tbody>
 
-                             </table>
 
-                         </div>
 
-                     </div>
 
-                     <!-- 右侧新审批流程 -->
 
-                     <div class="col-6">
 
-                         <div class=" ml-auto">
 
-                             <div class="dropdown text-right" id="show-audit-select">
 
-                             </div>
 
-                             <div class="card mt-1">
 
-                                 <div class="card-header">
 
-                                     审批流程
 
-                                 </div>
 
-                                 <div class="modal-height-500" style="overflow-y:auto;">
 
-                                     <ul class="list-group list-group-flush" id="auditList">
 
-                                     </ul>
 
-                                 </div>
 
-                             </div>
 
-                         </div>
 
-                     </div>
 
-                 </div>
 
-                 <div class="alert alert-warning mt-2 mb-0">批量操作会覆盖原审批流程,请合理选择。</div>
 
-             </div>
 
-             <div class="modal-footer">
 
-                 <button type="button" class="btn btn-sm btn-secondary" data-dismiss="modal">取消</button>
 
-                 <button class="btn btn-sm btn-primary" id="batch_uncheck_btn">确定</button>
 
-             </div>
 
-         </div>
 
-     </div>
 
- </div>
 
- <!--批量上报变更令进度条modal-->
 
- <div class="modal fade" id="batch-sb-progress" data-backdrop="static" style="">
 
-     <div class="modal-dialog" role="document">
 
-         <div class="modal-content">
 
-             <div class="modal-header">
 
-                 <h5 class="modal-title">批量上报变更令</h5>
 
-             </div>
 
-             <div class="modal-body">
 
-                 <div class="progress">
 
-                     <div class="progress-tz-bar progress-bar progress-bar-striped progress-bar-animated" role="progressbar" style="width: 100%" aria-valuenow="100" aria-valuemin="0" aria-valuemax="100"></div>
 
-                 </div>
 
-                 <div class="mt-1 progress-tz-text">台账获取并处理中...</div>
 
-                 <div class="change-progress">
 
-                 </div>
 
-             </div>
 
-             <div class="modal-footer" style="display: none">
 
-                 <button class="btn btn-sm btn-primary" onclick="window.location.reload();">刷新页面</button>
 
-             </div>
 
-         </div>
 
-     </div>
 
- </div>
 
- <% } %>
 
- <!--批量审批变更令-->
 
- <div class="modal fade" id="batch-sp" data-backdrop="static" style="">
 
-     <div class="modal-dialog modal-lg" role="document">
 
-         <div class="modal-content">
 
-             <div class="modal-header">
 
-                 <h5 class="modal-title">批量审批变更令</h5>
 
-                 <button type="button" class="close" data-dismiss="modal" aria-label="Close">
 
-                     <span aria-hidden="true">×</span>
 
-                 </button>
 
-             </div>
 
-             <div class="modal-body">
 
-                 <div class="modal-height-500" style="overflow-y:auto;">
 
-                     <table class="table table-hover table-bordered">
 
-                         <thead>
 
-                         <tr>
 
-                             <th width="5%"><div class="align-middle text-center"><input type="checkbox" id="select-all-checking"></div></th>
 
-                             <th width="25%">变更令编号</th>
 
-                             <th width="">变更令名称</th>
 
-                             <th width="25%">批量编号</th>
 
-                         </tr>
 
-                         </thead>
 
-                         <tbody id="checking_list">
 
-                         </tbody>
 
-                     </table>
 
-                 </div>
 
-             </div>
 
-             <div class="modal-footer">
 
-                 <button type="button" class="btn btn-sm btn-secondary" data-dismiss="modal">取消</button>
 
-                 <button type="button" class="btn btn-sm btn-primary" id="batch_checking_btn">确定</button>
 
-             </div>
 
-         </div>
 
-     </div>
 
- </div>
 
- <!--批量审批变更令进度条modal-->
 
- <div class="modal fade" id="batch-sp-progress" data-backdrop="static" style="">
 
-     <div class="modal-dialog" role="document">
 
-         <div class="modal-content">
 
-             <div class="modal-header">
 
-                 <h5 class="modal-title">批量审批变更令</h5>
 
-             </div>
 
-             <div class="modal-body">
 
-                 <div class="progress">
 
-                     <div class="progress-tz-bar progress-bar progress-bar-striped progress-bar-animated" role="progressbar" style="width: 100%" aria-valuenow="100" aria-valuemin="0" aria-valuemax="100"></div>
 
-                 </div>
 
-                 <div class="mt-1 progress-tz-text">台账获取并处理中...</div>
 
-                 <div class="change-progress">
 
-                 </div>
 
-             </div>
 
-             <div class="modal-footer" style="display: none">
 
-                 <button class="btn btn-sm btn-primary" onclick="window.location.reload();">刷新页面</button>
 
-             </div>
 
-         </div>
 
-     </div>
 
- </div>
 
- <script>
 
-     const ruleType = <%- ruleType %>;
 
-     const ruleConst = JSON.parse('<%- JSON.stringify(ruleConst) %>');
 
-     let codeRule = JSON.parse('<%- JSON.stringify(codeRule) %>');
 
-     let connectorRule = '<%- tender.c_connector %>';
 
-     let cRuleFirst = '<%- tender.c_rule_first %>';
 
-     const tenderId = '<%- ctx.tender.id %>';
 
-     const auditConst = JSON.parse(unescape('<%- escape(JSON.stringify(auditConst)) %>'));
 
-     const auditType = JSON.parse('<%- JSON.stringify(auditType) %>');
 
-     $('#audit-list').on('click', 'a', function() {
 
-         const type = $(this).data('target')
 
-         const auditCard = $(this).parent().parent()
 
-         if (type === 'show') {
 
-             $(this).data('target', 'hide')
 
-             auditCard.find('.fold-card').slideDown('swing', () => {
 
-                 auditCard.find('#end-target').text($(this).data('idx') + '#')
 
-                 auditCard.find('#fold-btn').text('收起历史审核记录')
 
-             })
 
-         } else {
 
-             $(this).data('target', 'show')
 
-             auditCard.find('.fold-card').slideUp('swing', () => {
 
-                 auditCard.find('#end-target').text('1#')
 
-                 auditCard.find('#fold-btn').text('展开历史审核记录')
 
-             })
 
-         }
 
-     });
 
- </script>
 
- <script src="/public/js/moment/moment.min.js"></script>
 
- <script src="/public/js/decimal.min.js"></script>
 
- <script src="/public/js/zh_calc.js"></script>
 
- <script src="/public/js/path_tree.js"></script>
 
- <script src="/public/js/gcl_gather.js"></script>
 
- <script>
 
-     const shenpiConst = JSON.parse(unescape('<%- escape(JSON.stringify(shenpiConst)) %>'));
 
-     $(function () {
 
-         const intervalIds = {};
 
-         <% if (tender.user_id === ctx.session.sessionUser.accountId) { %>
 
-         let this_cid = null;
 
-         let shenpi_status = shenpiConst.sp_status.sqspr;
 
-         let accountList, accountGroup;
 
-         let uncheckList = [];
 
-         // 批量上报变更令部分
 
-         $('#batch-sb').on('show.bs.modal', function () {
 
-             postData(`/tender/${tenderId}/change/batch/fun`, { type: 'get_report_list' }, function (res) {
 
-                 let html = '';
 
-                 $('#select-all-uncheck').prop('checked', false);
 
-                 shenpi_status = res.shenpi_status;
 
-                 uncheckList = res.uncheckList;
 
-                 for (const l of res.uncheckList) {
 
-                     html += '<tr>' +
 
-                         `<td class="text-center"><input type="checkbox" value="${l.cid}"></td>` +
 
-                         `<td class=""><a href="/tender/${tenderId}/change/${l.cid}/information" target="_blank">${l.code}</a></td>` +
 
-                         '<td>' + setAuditList(l.auditList) +'</td>' +
 
-                         '</tr>';
 
-                 }
 
-                 $('#uncheck_list').html(html);
 
-                 if (res.uncheckList.length > 0) {
 
-                     $('#uncheck_list tr').eq(0).addClass('table-warning');
 
-                     this_cid = res.uncheckList[0].cid;
 
-                     makeSpList(res.uncheckList[0].auditList);
 
-                 } else {
 
-                     $('#uncheck_list tr').removeClass('table-warning');
 
-                     this_cid = null;
 
-                     makeSpList([]);
 
-                 }
 
-                 let showAuditSelectHtml = '';
 
-                 if (res.spGroupList && res.spGroupList.length > 0 && shenpi_status === shenpiConst.sp_status.gdspl) {
 
-                     let optionHtml = '';
 
-                     for (const g of res.spGroupList) { %>
 
-                         optionHtml += `<option value="${g.id}" ${res.uncheckList.length > 0 && g.id === res.uncheckList[0].sp_group ? 'selected' : ''}>${g.name}</option>`;
 
-                     }
 
-                     showAuditSelectHtml += '<div class="row">' +
 
-                         '<div class="col-7"></div>' +
 
-                     '<div class="col-5">' +
 
-                         '<select class="form-control form-control-sm change-sp-group">' + optionHtml + '</select>' +
 
-                     '</div></div>';
 
-                 } else {
 
-                     accountList = res.accountList;
 
-                     accountGroup = res.accountGroup;
 
-                     showAuditSelectHtml += getSelectAuditHtml('report');
 
-                 }
 
-                 $('#show-audit-select').html(showAuditSelectHtml);
 
-             })
 
-         });
 
-         function setAuditList(auditList) {
 
-             let html = [];
 
-             // 去除原报
 
-             if (auditList.length > 1) {
 
-                 for (const [i,a] of auditList.entries()) {
 
-                     if (i === 0) continue;
 
-                     const oneAuditNames = _.map(a, 'name');
 
-                     let names = oneAuditNames.join('、');
 
-                     if (oneAuditNames.length > 1) {
 
-                         names = (a[0].audit_type === auditType.key.and ? '(会)' : (a[0].audit_type === auditType.key.or ? '(或)' : '')) + names;
 
-                     }
 
-                     html.push(names);
 
-                 }
 
-             }
 
-             return html.join('-');
 
-         }
 
-         function getSelectAuditHtml(code) {
 
-             let divhtml = '';
 
-             accountGroup.forEach((group, idx) => {
 
-                 let didivhtml = '';
 
-                 if(group) {
 
-                     group.groupList.forEach(item => {
 
-                         didivhtml += '<dd class="border-bottom p-2 mb-0 " data-id="' + item.id + '" >\n' +
 
-                             '<p class="mb-0 d-flex"><span class="text-primary">' + item.name + '</span><span\n' +
 
-                             '                                                                                class="ml-auto">' + item.mobile + '</span></p>\n' +
 
-                             '                                                                    <span class="text-muted">' + item.role + '</span>\n' +
 
-                             '                                                                    </dd>\n';
 
-                     });
 
-                     divhtml += '<dt><a href="javascript: void(0);" class="acc-btn" data-groupid="' + idx + '" data-type="hide"><i class="fa fa-plus-square"></i></a> ' + group.groupName + '</dt>\n' +
 
-                         '                                                                <div class="dd-content" data-toggleid="' + idx + '">\n' + didivhtml +
 
-                         '                                                                </div>\n';
 
-                 }
 
-             });
 
-             const html =
 
-                 '                                                    <button class="btn btn-outline-primary btn-sm dropdown-toggle" type="button" id="' + code + '_dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">\n' +
 
-                 '                                                        添加审批流程\n' +
 
-                 '                                                    </button>\n' +
 
-                 '                                                    <div class="dropdown-menu dropdown-menu-right" id="' + code + '_dropdownMenu" aria-labelledby="' + code + '_dropdownMenuButton" style="width:220px">\n' +
 
-                 '                                                        <div class="mb-2 p-2"><input class="form-control form-control-sm gr-search"\n' +
 
-                 '                                                                                     placeholder="姓名/手机 检索" autocomplete="off" data-code="' + code + '"></div>\n' +
 
-                 '                                                        <dl class="list-unstyled book-list">\n' + divhtml +
 
-                 '                                                        </dl>\n' +
 
-                 '                                                    </div>\n';
 
-             return html;
 
-         }
 
-         // uncheckList tr  切换
 
-         $('#uncheck_list').on('click', 'tr', function () {
 
-             $('#uncheck_list tr').removeClass('table-warning');
 
-             $(this).addClass('table-warning');
 
-             this_cid = $(this).find('a').attr('href').split('/')[4];
 
-             makeSpList(uncheckList.find(l => l.cid === this_cid).auditList);
 
-         });
 
-         $('#uncheck_list').on('click', 'input[type="checkbox"]', function (e) {
 
-             e.stopPropagation();
 
-         });
 
-         // uncheckList tr全选
 
-         $('#select-all-uncheck').click(function () {
 
-             $('#uncheck_list tr').find('input[type="checkbox"]').prop('checked', $(this).prop('checked'));
 
-         });
 
-         let timer = null;
 
-         let oldSearchVal = null;
 
-         $('body').on('input propertychange', 'div[id$="_dropdownMenu"] .gr-search', function(e) {
 
-             oldSearchVal = e.target.value;
 
-             timer && clearTimeout(timer);
 
-             timer = setTimeout(() => {
 
-                 const newVal = $(this).val();
 
-                 const code = $(this).attr('data-code');
 
-                 let html = '';
 
-                 if (newVal && newVal === oldSearchVal) {
 
-                     accountList.filter(item => item && (item.name.indexOf(newVal) !== -1 || (item.mobile && item.mobile.indexOf(newVal) !== -1))).forEach(item => {
 
-                         html += `<dd class="border-bottom p-2 mb-0 " data-id="${item.id}" >
 
-                         <p class="mb-0 d-flex"><span class="text-primary">${item.name}</span><span
 
-                                 class="ml-auto">${item.mobile || ''}</span></p>
 
-                         <span class="text-muted">${item.role || ''}</span>
 
-                     </dd>`;
 
-                     });
 
-                     $('#' + code + '_dropdownMenu .book-list').empty();
 
-                     $('#' + code + '_dropdownMenu .book-list').append(html);
 
-                 } else {
 
-                     if (!$('#' + code + '_dropdownMenu .acc-btn').length) {
 
-                         accountGroup.forEach((group, idx) => {
 
-                             if (!group) return;
 
-                             html += `<dt><a href="javascript: void(0);" class="acc-btn" data-groupid="${idx}" data-type="hide"><i class="fa fa-plus-square"></i>
 
-                         </a> ${group.groupName}</dt>
 
-                         <div class="dd-content" data-toggleid="${idx}">`;
 
-                             group.groupList.forEach(item => {
 
-                                 // if (item.id !== changesUid) {
 
-                                 html += `<dd class="border-bottom p-2 mb-0 " data-id="${item.id}" >
 
-                                     <p class="mb-0 d-flex"><span class="text-primary">${item.name}</span><span
 
-                                             class="ml-auto">${item.mobile || ''}</span></p>
 
-                                     <span class="text-muted">${item.role || ''}</span>
 
-                                 </dd>`;
 
-                                 // }
 
-                             });
 
-                             html += '</div>';
 
-                         });
 
-                         $('#' + code + '_dropdownMenu .book-list').empty();
 
-                         $('#' + code + '_dropdownMenu .book-list').append(html);
 
-                     }
 
-                 }
 
-             }, 400);
 
-         });
 
-         // 添加审批流程按钮逻辑
 
-         $('body').on('click', 'div[id$="_dropdownMenu"] .book-list dt', function () {
 
-             const idx = $(this).find('.acc-btn').attr('data-groupid');
 
-             const type = $(this).find('.acc-btn').attr('data-type');
 
-             if (type === 'hide') {
 
-                 $(this).parent().find(`div[data-toggleid="${idx}"]`).show(() => {
 
-                     $(this).children().find('i').removeClass('fa-plus-square').addClass('fa-minus-square-o');
 
-                     $(this).find('.acc-btn').attr('data-type', 'show');
 
-                 })
 
-             } else {
 
-                 $(this).parent().find(`div[data-toggleid="${idx}"]`).hide(() => {
 
-                     $(this).children().find('i').removeClass('fa-minus-square-o').addClass('fa-plus-square');
 
-                     $(this).find('.acc-btn').attr('data-type', 'hide');
 
-                 })
 
-             }
 
-             return false;
 
-         });
 
-         // 添加到审批流程中
 
-         $('body').on('click', 'div[id$="_dropdownMenu"] dl dd', function () {
 
-             const id = parseInt($(this).data('id'));
 
-             if (!this_cid) {
 
-                 toastr.error('请选择变更令');
 
-                 return false;
 
-             }
 
-             if (id !== 0) {
 
-                 postData('/tender/' + tenderId + '/change/' + this_cid + '/information/audit/add', { auditorId: id }, (datas) => {
 
-                     makeSpList(datas);
 
-                     const index = uncheckList.findIndex(item => item.cid === this_cid);
 
-                     if (index !== -1) {
 
-                         uncheckList[index].auditList = datas;
 
-                         $('#uncheck_list tr').eq(index).children('td').eq(2).html(setAuditList(datas));
 
-                     }
 
-                 });
 
-             }
 
-         });
 
-         // 移除审批流程的审批人
 
-         $('body').on('click', '#auditList li a', function () {
 
-             const uid = $(this).parents('li').attr('data-auditid');
 
-             const li = $(this).parents('li');
 
-             const data = {
 
-                 auditorId: uid,
 
-             };
 
-             if (!this_cid) {
 
-                 toastr.error('请选择变更令');
 
-                 return false;
 
-             }
 
-             postData('/tender/' + tenderId + '/change/' + this_cid + '/information/audit/delete', data, (datas) => {
 
-                 li.remove();
 
-                 let liIndex = 1;
 
-                 $('#auditList li').each(function () {
 
-                     $(this).children('.col-auto').eq(0).text(liIndex);
 
-                     liIndex++;
 
-                 });
 
-                 const index = uncheckList.findIndex(item => item.cid === this_cid);
 
-                 if (index !== -1) {
 
-                     uncheckList[index].auditList = datas;
 
-                     $('#uncheck_list tr').eq(index).children('td').eq(2).html(setAuditList(datas));
 
-                 }
 
-             });
 
-         });
 
-         // 切换审批组
 
-         $('body').on('change', '.change-sp-group', function () {
 
-             const data = {
 
-                 type: 'change_sp_group',
 
-                 sp_group: parseInt($(this).val()),
 
-             }
 
-             if (!this_cid) {
 
-                 toastr.error('请选择变更令');
 
-                 return false;
 
-             }
 
-             if (!data.sp_group) {
 
-                 toastr.error('请选择固定审批组');
 
-                 return false;
 
-             }
 
-             console.log(data);
 
-             postData('/tender/' + tenderId + '/change/' + this_cid + '/information/audit/spgroup', data, (datas) => {
 
-                 makeSpList(datas);
 
-                 const index = uncheckList.findIndex(item => item.cid === this_cid);
 
-                 if (index !== -1) {
 
-                     uncheckList[index].auditList = datas;
 
-                     $('#uncheck_list tr').eq(index).children('td').eq(2).html(setAuditList(datas));
 
-                 }
 
-             });
 
-         });
 
-         function makeSpList(datas) {
 
-             const html = [];
 
-             // 如果是重新上报,添加到重新上报列表中
 
-             const auditorshtml = [];
 
-             if (datas.length > 0) {
 
-                 for (const [index,data] of datas.entries()) {
 
-                     if (index !== 0) {
 
-                         html.push('<li class="list-group-item d-flex" data-auditid="'+ data[0].uid +'">');
 
-                         html.push(`<div class="col-auto">${index}</div>`);
 
-                         html.push('<div class="col">');
 
-                         for (const auditor of data) {
 
-                             html.push(`<div class="d-inline-block mx-1" auditorId="${auditor.uid}"><i class="fa fa-user text-muted"></i> ${auditor.name} <small class="text-muted">${auditor.role}</small></div>`);
 
-                         }
 
-                         html.push('</div>');
 
-                         html.push('<div class="col-auto">');
 
-                         // todo 添加会签或签时
 
-                         if (data[0].audit_type !== auditType.key.common) {
 
-                             html.push(`<span class="badge badge-pill badge-${auditType.info[data[0].audit_type].class} badge-bg-small"><small>${auditType.info[data[0].audit_type].long}</small></span>`);
 
-                         }
 
-                         if (shenpi_status === shenpiConst.sp_status.sqspr || (shenpi_status === shenpiConst.sp_status.gdzs && index+1 !== datas.length)) {
 
-                             html.push('<a href="javascript: void(0)" class="text-danger pull-right">移除</a>');
 
-                         }
 
-                         html.push('</div>');
 
-                         html.push('</li>');
 
-                     }
 
-                 }
 
-             }
 
-             $('#auditList').html(html.join(''));
 
-         }
 
-         $('#batch_uncheck_btn').click(function () {
 
-             // 至少勾选一个
 
-             if ($('#uncheck_list input:checked').length === 0) {
 
-                 toastr.error('请至少勾选一个变更令');
 
-                 return false;
 
-             }
 
-             const cids = [];
 
-             $('#uncheck_list input:checked').each(function () {
 
-                 cids.push($(this).val());
 
-             });
 
-             $('#batch-sb').modal('hide');
 
-             $('#batch-sb-progress').modal('show');
 
-             $('#batch-sb-progress .progress-tz-bar').css('width', '0%');
 
-             $('#batch-sb-progress .modal-footer').hide();
 
-             setProgress($('#batch-sb-progress .progress-tz-bar'), 30, 'tz1');
 
-             $('#batch-sb-progress .progress-tz-text').text('台账数据获取中...').removeClass('text-success');
 
-             let changeListData;
 
-             let gclGatherData;
 
-             postData('/tender/' + tenderId + '/change/defaultBills', { form: 'batch' }, async function (result) {
 
-                 gclGatherModel.loadLedgerData(result.bills);
 
-                 gclGatherModel.loadPosData(result.pos);
 
-                 gclGatherData = gclGatherModel.gatherGclData();
 
-                 gclGatherData = _.filter(gclGatherData, function (item) {
 
-                     return item.leafXmjs && item.leafXmjs.length !== 0;
 
-                 });
 
-                 for (const ggd in gclGatherData) {
 
-                     if (gclGatherData[ggd].leafXmjs && gclGatherData[ggd].leafXmjs.length === 0) {
 
-                         gclGatherData.splice(ggd, 1);
 
-                     }
 
-                     gclGatherData[ggd].code = gclGatherData[ggd].b_code;
 
-                     let hadcid = 0;
 
-                     for (const xmj of gclGatherData[ggd].leafXmjs) {
 
-                         const changeLedger = _.find(result.changeLedgerList, { id: xmj.gcl_id });
 
-                         const changePos = _.find(result.changePosList, { id: xmj.mx_id, lid: xmj.gcl_id });
 
-                         if (changeLedger || changePos) {
 
-                             xmj.cid = 1;
 
-                             xmj.ccid = changeLedger ? changeLedger.ccid : changePos.ccid;
 
-                             hadcid = 1;
 
-                         }
 
-                     }
 
-                     if (hadcid !== 0) gclGatherData[ggd].cid = 1;
 
-                 }
 
-                 // console.log(gclGatherData);
 
-                 // 数组去重
 
-                 const dealBillList = result.dealBills;
 
-                 for (const db of gclGatherData) {
 
-                     const exist_index = dealBillList.findIndex(function (item) {
 
-                         return item.code === db.code && item.name === db.name && item.unit === db.unit && item.unit_price === db.unit_price;
 
-                     });
 
-                     if (exist_index !== -1) {
 
-                         dealBillList.splice(exist_index, 1);
 
-                     }
 
-                 }
 
-                 changeListData = gclGatherData.concat(dealBillList).sort(sortByCode);
 
-                 console.log(changeListData);
 
-                 stopProgress($('#batch-sb-progress .progress-tz-bar'), 'tz1');
 
-                 $('#batch-sb-progress .progress-tz-text').text('台账数据加载完成').addClass('text-success');
 
-                 $('#batch-sb-progress .change-progress').html('');
 
-                 for (const c of cids) {
 
-                     const cInfo = uncheckList.find(item => item.cid === c);
 
-                     if (cInfo) {
 
-                         $('#batch-sb-progress .change-progress').append(`<div id="change-${cInfo.cid}-progress"><div class="mt-3 progress">` +
 
-                             '<div class="progress-bar progress-bar-striped progress-bar-animated" role="progressbar" style="width: 0%" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100"></div>' +
 
-                     '</div>' +
 
-                     `<div class="mt-1">变更令 <b>${cInfo.code}</b> <span class="progress-change-text">上报处理中...</span></div></div>`);
 
-                         await checkAndChange(cInfo, changeListData, result.changeLedgerList);
 
-                     }
 
-                 }
 
-                 $('#batch-sb-progress .modal-footer').show();
 
-             });
 
-         });
 
-         <% } %>
 
-         let checkingList = [];
 
-         $('#batch-sp').on('show.bs.modal', function () {
 
-             postData(`/tender/${tenderId}/change/batch/fun`, { type: 'get_shenpi_list' }, function (res) {
 
-                 let html = '';
 
-                 $('#select-all-checking').prop('checked', false);
 
-                 checkingList = res.checkingList;
 
-                 for (const l of res.checkingList) {
 
-                     const finalHtml = l.is_finalAudit ? `<input type="text" class="form-control form-control-sm final_pcode_input" data-cid="${l.cid}" value="${l.p_code}" />` : '';
 
-                     html += '<tr>' +
 
-                         `<td class="text-center"><input type="checkbox" value="${l.cid}"></td>` +
 
-                         `<td class=""><a href="/tender/${tenderId}/change/${l.cid}/information" target="_blank">${l.code}</a></td>` +
 
-                         `<td>${l.name}</td>` +
 
-                         `<td>${finalHtml}</td>` +
 
-                         '</tr>';
 
-                 }
 
-                 $('#checking_list').html(html);
 
-             });
 
-         });
 
-         $('body').on('change', '.final_pcode_input', function () {
 
-             const cid = $(this).data('cid');
 
-             const cInfo = checkingList.find(item => item.cid === cid);
 
-             cInfo.p_code = $(this).val();
 
-         });
 
-         $('#checking_list').on('click', 'input[type="checkbox"]', function (e) {
 
-             e.stopPropagation();
 
-         });
 
-         // uncheckList tr全选
 
-         $('#select-all-checking').click(function () {
 
-             $('#checking_list tr').find('input[type="checkbox"]').prop('checked', $(this).prop('checked'));
 
-         });
 
-         $('#batch_checking_btn').click(function () {
 
-             // 至少勾选一个
 
-             if ($('#checking_list input:checked').length === 0) {
 
-                 toastr.error('请至少勾选一个变更令');
 
-                 return false;
 
-             }
 
-             const cids = [];
 
-             $('#checking_list input:checked').each(function () {
 
-                 cids.push($(this).val());
 
-             });
 
-             $('#batch-sp').modal('hide');
 
-             $('#batch-sp-progress').modal('show');
 
-             $('#batch-sp-progress .progress-tz-bar').css('width', '0%');
 
-             $('#batch-sp-progress .modal-footer').hide();
 
-             setProgress($('#batch-sp-progress .progress-tz-bar'), 30, 'tz2');
 
-             $('#batch-sp-progress .progress-tz-text').text('台账数据获取中...').removeClass('text-success');
 
-             let changeListData;
 
-             let gclGatherData;
 
-             postData('/tender/' + tenderId + '/change/defaultBills', { from: 'batch' }, async function (result) {
 
-                 gclGatherModel.loadLedgerData(result.bills);
 
-                 gclGatherModel.loadPosData(result.pos);
 
-                 gclGatherData = gclGatherModel.gatherGclData();
 
-                 gclGatherData = _.filter(gclGatherData, function (item) {
 
-                     return item.leafXmjs && item.leafXmjs.length !== 0;
 
-                 });
 
-                 for (const ggd in gclGatherData) {
 
-                     if (gclGatherData[ggd].leafXmjs && gclGatherData[ggd].leafXmjs.length === 0) {
 
-                         gclGatherData.splice(ggd, 1);
 
-                     }
 
-                     gclGatherData[ggd].code = gclGatherData[ggd].b_code;
 
-                     let hadcid = 0;
 
-                     for (const xmj of gclGatherData[ggd].leafXmjs) {
 
-                         const changeLedger = _.find(result.changeLedgerList, { id: xmj.gcl_id });
 
-                         const changePos = _.find(result.changePosList, { id: xmj.mx_id, lid: xmj.gcl_id });
 
-                         if (changeLedger || changePos) {
 
-                             xmj.cid = 1;
 
-                             xmj.ccid = changeLedger ? changeLedger.ccid : changePos.ccid;
 
-                             hadcid = 1;
 
-                         }
 
-                     }
 
-                     if (hadcid !== 0) gclGatherData[ggd].cid = 1;
 
-                 }
 
-                 // console.log(gclGatherData);
 
-                 // 数组去重
 
-                 const dealBillList = result.dealBills;
 
-                 for (const db of gclGatherData) {
 
-                     const exist_index = dealBillList.findIndex(function (item) {
 
-                         return item.code === db.code && item.name === db.name && item.unit === db.unit && item.unit_price === db.unit_price;
 
-                     });
 
-                     if (exist_index !== -1) {
 
-                         dealBillList.splice(exist_index, 1);
 
-                     }
 
-                 }
 
-                 changeListData = gclGatherData.concat(dealBillList).sort(sortByCode);
 
-                 console.log(changeListData);
 
-                 stopProgress($('#batch-sp-progress .progress-tz-bar'), 'tz2');
 
-                 $('#batch-sp-progress .progress-tz-text').text('台账数据加载完成').addClass('text-success');
 
-                 $('#batch-sp-progress .change-progress').html('');
 
-                 for (const c of cids) {
 
-                     const cInfo = checkingList.find(item => item.cid === c);
 
-                     if (cInfo) {
 
-                         $('#batch-sp-progress .change-progress').append(`<div id="change-${cInfo.cid}-progress"><div class="mt-3 progress">` +
 
-                             '<div class="progress-bar progress-bar-striped progress-bar-animated" role="progressbar" style="width: 0%" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100"></div>' +
 
-                             '</div>' +
 
-                             `<div class="mt-1">变更令 <b>${cInfo.code}</b> <span class="progress-change-text">审批处理中...</span></div></div>`);
 
-                         await checkAndChange(cInfo, changeListData, result.changeLedgerList, 'checking');
 
-                     }
 
-                 }
 
-                 $('#batch-sp-progress .modal-footer').show();
 
-             }, function (res) {
 
-             }, false);
 
-         });
 
-         let value = 0;
 
-         // let interval;
 
-         let stop = false;
 
-         function setProgress(_this, time = 50, name) {
 
-             let intervalId = setInterval(function () {
 
-                 if (value < 100) {
 
-                     value = parseInt(value) + 1;
 
-                     _this.css("width", value + "%").text(value + "%");
 
-                 } else if (value === 100) {
 
-                     value = parseInt(value) + 1;
 
-                     value = 30;
 
-                 }
 
-             }, time);
 
-             intervalIds[name] = intervalId;
 
-         }
 
-         function resetProgress(_this) {
 
-             _this.removeClass('bg-success');
 
-             _this.css("width", "0%").text("0%").attr('aria-valuenow', '0');
 
-         }
 
-         function failProgress(_this, name) {
 
-             if (intervalIds[name]) {
 
-                 _this.addClass('bg-danger');
 
-                 _this.css("width", "100%").text("失败");
 
-                 value = 0;
 
-                 stop = true;
 
-                 clearInterval(intervalIds[name]);
 
-                 intervalIds[name] = 0;
 
-             }
 
-         }
 
-         function stopProgress(_this, name) {
 
-             if (intervalIds[name]) {
 
-                 _this.addClass('bg-success');
 
-                 _this.css("width", "100%").text("100%");
 
-                 value = 0;
 
-                 stop = true;
 
-                 clearInterval(intervalIds[name]);
 
-                 intervalIds[name] = 0;
 
-             }
 
-         }
 
-         async function checkAndChange(cInfo, changeListData, changeLedgerList, status = 'uncheck') {
 
-             setProgress($(`#change-${cInfo.cid}-progress .progress-bar`), 30, `change-${cInfo.cid}`);
 
-             // 根据已添加的清单显示
 
-             if (cInfo.changeList.length > 0 && cInfo.changeList[0]) {
 
-                 const removeList = [];
 
-                 const updateList = [];
 
-                 const updateGclIdList = [];
 
-                 for (const [index,clinfo] of cInfo.changeList.entries()) {
 
-                     if (clinfo.lid != 0) {
 
-                         let listinfo = changeListData.find(function (item) {
 
-                             return (item.id !== undefined && item.id == clinfo.lid) || (item.id === undefined && item.leafXmjs !== undefined && item.leafXmjs.length !== 0 && item.leafXmjs[0].gcl_id == clinfo.lid);
 
-                         });
 
-                         if (listinfo === undefined || (clinfo.lid && clinfo.gcl_id && clinfo.lid !== clinfo.gcl_id)) {
 
-                             // 有可能这部分台账发生变化,此时要更新清单lid信息,防止数据丢失
 
-                             const newlistinfo = changeListData.find(function (item) {
 
-                                 return (item.id !== undefined && item.id == clinfo.gcl_id) || (item.id === undefined && item.leafXmjs !== undefined && item.leafXmjs.length !== 0 && _.find(item.leafXmjs, {gcl_id: clinfo.gcl_id }));
 
-                             });
 
-                             if ((listinfo === undefined && newlistinfo) || (listinfo && newlistinfo && !isObjEqual(listinfo, newlistinfo))) {
 
-                                 listinfo = newlistinfo;
 
-                                 updateList.push({id: clinfo.id, lid: newlistinfo.leafXmjs[0].gcl_id});
 
-                                 // 更新lid
 
-                                 cInfo.changeList[index].lid = newlistinfo.leafXmjs[0].gcl_id;
 
-                             }
 
-                         }
 
-                         if (listinfo === undefined) {
 
-                             // 针对旧数据获取清单信息
 
-                             listinfo = changeListData[clinfo.lid - 1];
 
-                             if (listinfo === undefined) {
 
-                                 removeList.push(clinfo);
 
-                                 break;
 
-                             }
 
-                         }
 
-                         const info = makePushBwmx(clinfo, listinfo, removeList, updateList);
 
-                         if (info) break;
 
-                         if (_.findIndex(changeLedgerList, { id: clinfo.gcl_id }) !== -1) {
 
-                             // 可能因为升降级关系:细目,分部分项等会发生变化,更新清单
 
-                             const updateInfo = {};
 
-                             if (info.code !== clinfo.xmj_code) {
 
-                                 updateInfo.xmj_code = info.code;
 
-                                 // changeList[index].xmj_code = info.code;
 
-                             }
 
-                             if (info.jldy !== clinfo.xmj_jldy) {
 
-                                 updateInfo.xmj_jldy = info.jldy;
 
-                                 // changeList[index].xmj_jldy = info.jldy;
 
-                             }
 
-                             if (info.dwgc !== clinfo.xmj_dwgc) {
 
-                                 updateInfo.xmj_dwgc = info.dwgc;
 
-                                 // changeList[index].xmj_dwgc = info.dwgc;
 
-                             }
 
-                             if (info.fbgc !== clinfo.xmj_fbgc) {
 
-                                 updateInfo.xmj_fbgc = info.fbgc;
 
-                                 // changeList[index].xmj_fbgc = info.fbgc;
 
-                             }
 
-                             if (info.fxgc !== clinfo.xmj_fxgc) {
 
-                                 updateInfo.xmj_fxgc = info.fxgc;
 
-                                 // changeList[index].xmj_fxgc = info.fxgc;
 
-                             }
 
-                             if (!_.isEmpty(updateInfo) && _.indexOf(updateGclIdList, clinfo.gcl_id) === -1) {
 
-                                 updateGclIdList.push(clinfo.gcl_id);
 
-                                 // updateInfo.gcl_id = info.id;
 
-                                 updateList.push({ row: updateInfo, where: { tid: tenderId, gcl_id: clinfo.gcl_id } });
 
-                                 break;
 
-                             }
 
-                         }
 
-                     }
 
-                 }
 
-                 await sleep(2000);
 
-                 if (updateList.length > 0 || removeList.length > 0) {
 
-                     failProgress($('#change-' + cInfo.cid + '-progress .progress-bar'), `change-${cInfo.cid}`);
 
-                     $('#change-' + cInfo.cid + '-progress .mt-1').addClass('text-danger');
 
-                     $('#change-' + cInfo.cid + '-progress .progress-change-text').text('清单数据发生变化,需要进入到详情页处理');
 
-                     return;
 
-                 }
 
-                 // 上报或审批变更令
 
-                 let ss = true;
 
-                 if (status === 'uncheck') {
 
-                     postDataWithAsync('/tender/' + tenderId + '/change/' + cInfo.cid + '/information/audit/start', {}, function () {
 
-                     }, function (res) {
 
-                         ss = false;
 
-                         failProgress($('#change-' + cInfo.cid + '-progress .progress-bar'), `change-${cInfo.cid}`);
 
-                         $('#change-' + cInfo.cid + '-progress .mt-1').addClass('text-danger');
 
-                         $('#change-' + cInfo.cid + '-progress .progress-change-text').text(res);
 
-                         return;
 
-                     }, false);
 
-                 } else {
 
-                     const pData = {
 
-                         change_id: cInfo.cid,
 
-                         w_code: cInfo.code,
 
-                         status: auditConst.status.checked,
 
-                         sdesc: '同意',
 
-                     }
 
-                     if (cInfo.is_finalAudit) {
 
-                         if (cInfo.p_code) {
 
-                             pData.p_code = cInfo.p_code;
 
-                             const postData2 = {
 
-                                 p_code: cInfo.p_code,
 
-                             };
 
-                             let returnflag = true;
 
-                             postDataWithAsync('/tender/' + tenderId + '/change/' + cInfo.cid + '/check/codeRepeat',postData2, function (result) {
 
-                             }, function (data) {
 
-                                 returnflag = false;
 
-                             });
 
-                             if (!returnflag) {
 
-                                 failProgress($('#change-' + cInfo.cid + '-progress .progress-bar'), `change-${cInfo.cid}`);
 
-                                 $('#change-' + cInfo.cid + '-progress .mt-1').addClass('text-danger');
 
-                                 $('#change-' + cInfo.cid + '-progress .progress-change-text').text('批复编号不能与其它变更令重复!');
 
-                                 return;
 
-                             }
 
-                         } else {
 
-                             failProgress($('#change-' + cInfo.cid + '-progress .progress-bar'), `change-${cInfo.cid}`);
 
-                             $('#change-' + cInfo.cid + '-progress .mt-1').addClass('text-danger');
 
-                             $('#change-' + cInfo.cid + '-progress .progress-change-text').text('变更令号(批复编号)不能为空!');
 
-                             return;
 
-                         }
 
-                     }
 
-                     postDataWithAsync('/tender/' + tenderId + '/change/approval', pData, function (result) {
 
-                     }, function (res) {
 
-                         ss = false;
 
-                         failProgress($('#change-' + cInfo.cid + '-progress .progress-bar'), `change-${cInfo.cid}`);
 
-                         $('#change-' + cInfo.cid + '-progress .mt-1').addClass('text-danger');
 
-                         $('#change-' + cInfo.cid + '-progress .progress-change-text').text(res);
 
-                         return;
 
-                     }, false);
 
-                 }
 
-                 if (ss) {
 
-                     stopProgress($('#change-' + cInfo.cid + '-progress .progress-bar'), `change-${cInfo.cid}`);
 
-                     $('#change-' + cInfo.cid + '-progress .mt-1').addClass('text-success');
 
-                     $('#change-' + cInfo.cid + '-progress .progress-change-text').text((status === 'uncheck' ? '上报' : '审批') + '成功');
 
-                 }
 
-             }
 
-         }
 
-         const postDataWithAsync = function (url, data, successCallback, errorCallBack, showWaiting = true) {
 
-             if (showWaiting) showWaitingView();
 
-             $.ajax({
 
-                 type:"POST",
 
-                 url: url,
 
-                 data: {'data': JSON.stringify(data)},
 
-                 dataType: 'json',
 
-                 cache: false,
 
-                 async: false,
 
-                 timeout: 60000,
 
-                 beforeSend: function(xhr) {
 
-                     let csrfToken = Cookies.get('csrfToken_j');
 
-                     xhr.setRequestHeader('x-csrf-token', csrfToken);
 
-                 },
 
-                 success: function(result){
 
-                     if (result.err === 0) {
 
-                         if (successCallback) {
 
-                             successCallback(result.data);
 
-                         }
 
-                     } else {
 
-                         toastr.error(result.msg);
 
-                         if (errorCallBack) {
 
-                             errorCallBack(result.msg);
 
-                         }
 
-                     }
 
-                     if (showWaiting) closeWaitingView();
 
-                 },
 
-                 error: function(jqXHR, textStatus, errorThrown){
 
-                     toastr.error('error: ' + textStatus + " " + errorThrown);
 
-                     if (errorCallBack) {
 
-                         errorCallBack();
 
-                     }
 
-                     if (showWaiting) closeWaitingView();
 
-                 }
 
-             });
 
-         };
 
-         function sleep(millisecond) {
 
-             return new Promise(resolve => {
 
-                 setTimeout(() => {
 
-                     resolve()
 
-                 }, millisecond)
 
-             })
 
-         }
 
-         function isObjEqual(o1,o2){
 
-             var props1 = Object.getOwnPropertyNames(o1);
 
-             var props2 = Object.getOwnPropertyNames(o2);
 
-             if (props1.length != props2.length) {
 
-                 return false;
 
-             }
 
-             for (var i = 0,max = props1.length; i < max; i++) {
 
-                 var propName = props1[i];
 
-                 if (o1[propName] !== o2[propName]) {
 
-                     return false;
 
-                 }
 
-             }
 
-             return true;
 
-         }
 
-         function makePushBwmx(clinfo, listinfo, removeList, updateList) {
 
-             let needUpdate = false;
 
-             const checkKey = ['name', 'code', 'unit', 'unit_price'];
 
-             const checkLeafKey = ['oamount', 'bwmx', 'code', 'dwgc', 'fbgc', 'fxgc', 'jldy'];
 
-             if (listinfo.leafXmjs !== undefined) {
 
-                 const leafInfo = listinfo.leafXmjs.find(function (item) {
 
-                     // const flag = (item.bwmx === undefined || item.bwmx === clinfo.bwmx || item.jldy === clinfo.bwmx) && item.gcl_id === clinfo.gcl_id && (!clinfo.mx_id || (item.mx_id && clinfo.mx_id && item.mx_id === clinfo.mx_id)) && (item.quantity !== null ? item.quantity === parseFloat(clinfo.oamount) : 0 === parseFloat(clinfo.oamount));
 
-                     const flag = item.gcl_id === clinfo.gcl_id && (!clinfo.mx_id || (item.mx_id && clinfo.mx_id && item.mx_id === clinfo.mx_id));
 
-                     if (flag && item.code === clinfo.xmj_code) {
 
-                         return flag && item.code === clinfo.xmj_code;
 
-                     }
 
-                     return flag;
 
-                 });
 
-                 if (leafInfo) {
 
-                     const oneUpdate = { id: clinfo.id };
 
-                     // 判断要不要更新名称,单位,原数量,单价
 
-                     checkKey.forEach(function (key) {
 
-                         if (listinfo[key] !== clinfo[key]) {
 
-                             oneUpdate[key] = listinfo[key];
 
-                             // clinfo[key] = listinfo[key];
 
-                             if (key === 'unit') {
 
-                                 const changeKey = ['oamount', 'oamount2', 'camount'];
 
-                                 changeKey.forEach(function (key) {
 
-                                     const value = ZhCalc.round(clinfo[key], findDecimal(listinfo[key]));
 
-                                     if (value !== clinfo[key]) {
 
-                                         oneUpdate[key] = value;
 
-                                         // clinfo[key] = value;
 
-                                     }
 
-                                 });
 
-                             }
 
-                             needUpdate = true;
 
-                         }
 
-                     });
 
-                     checkLeafKey.forEach(function (key) {
 
-                         // 只有数量是对比leafInfo,其它对比listinfo,且有些值需要重新计算
 
-                         if (key === 'oamount') {
 
-                             if (leafInfo.quantity !== clinfo[key]) {
 
-                                 oneUpdate[key] = leafInfo.quantity;
 
-                                 // clinfo[key] = leafInfo.quantity;
 
-                                 needUpdate = true;
 
-                             }
 
-                         } else if (key === 'bwmx') {
 
-                             if (leafInfo[key] !== undefined && leafInfo[key] !== clinfo[key]) {
 
-                                 oneUpdate[key] = leafInfo[key];
 
-                                 // clinfo[key] = leafInfo[key];
 
-                                 needUpdate = true;
 
-                             } else if (leafInfo[key] === undefined && leafInfo.jldy !== clinfo[key]) {
 
-                                 oneUpdate[key] = leafInfo.jldy;
 
-                                 // clinfo[key] = leafInfo.jldy;
 
-                                 needUpdate = true;
 
-                             }
 
-                         } else {
 
-                             if (leafInfo[key] !== clinfo['xmj_' + key]) {
 
-                                 oneUpdate['xmj_' + key] = leafInfo[key];
 
-                                 // clinfo['xmj_' + key] = leafInfo[key];
 
-                                 needUpdate = true;
 
-                             }
 
-                         }
 
-                     });
 
-                     if (needUpdate) {
 
-                         updateList.push(oneUpdate);
 
-                     }
 
-                 } else {
 
-                     removeList.push(clinfo);
 
-                     needUpdate = true;
 
-                 }
 
-             }
 
-             return needUpdate;
 
-         }
 
-         // 编号排序,多重判断
 
-         function sortByCode(a, b) {
 
-             let code1 = a.code.split('-');
 
-             let code2 = b.code.split('-');
 
-             let code1length = code1.length;
 
-             let code2length = code2.length;
 
-             for (let i = 0; i < code1length; i ++) {
 
-                 if (i+1 <= code2length) {
 
-                     if (code1[i] != code2[i]) {
 
-                         if (/^\d+$/.test(code1[i]) && /^\d+$/.test(code2[i])) {
 
-                             return parseInt(code1[i]) - parseInt(code2[i]);
 
-                         } else if (!/^\d+$/.test(code1[i]) && /^\d+$/.test(code2[i])) {
 
-                             return 1;
 
-                         } else if (/^\d+$/.test(code1[i]) && !/^\d+$/.test(code2[i])) {
 
-                             return -1;
 
-                         } else {
 
-                             const str1length = code1[i].length;
 
-                             const str2length = code2[i].length;
 
-                             for (let j = 0; j < str1length; j++) {
 
-                                 if (j+1 <= str2length) {
 
-                                     if (code1[i].charAt(j) != code2[i].charAt(j)) {
 
-                                         return code1[i].charAt(j).charCodeAt() - code2[i].charAt(j).charCodeAt();
 
-                                     }  else if (j+1 == str1length && code1[i].charAt(j) == code2[i].charAt(j)) {
 
-                                         if (str1length == str2length) {
 
-                                             return 0;
 
-                                         } else {
 
-                                             return str1length - str2length;
 
-                                         }
 
-                                     }
 
-                                 } else {
 
-                                     if (j+1 >= str1length) {
 
-                                         return 1;
 
-                                     } else {
 
-                                         return -1;
 
-                                     }
 
-                                 }
 
-                             }
 
-                         }
 
-                     } else if (i+1 == code1length && code1[i] == code2[i]) {
 
-                         if (code1length == code2length) {
 
-                             return 0;
 
-                         } else {
 
-                             return code1length - code2length;
 
-                         }
 
-                     }
 
-                 } else {
 
-                     if (i+1 >= code1length) {
 
-                         return 1;
 
-                     } else {
 
-                         return -1;
 
-                     }
 
-                 }
 
-             }
 
-         }
 
-     });
 
- </script>
 
 
  |