|
@@ -43,14 +43,25 @@
|
|
|
</div>
|
|
|
<div class="modal-height-500" style="overflow: auto">
|
|
|
<ul class="list-group list-group-flush" id="auditors">
|
|
|
- <% for (let i = 0, iLen = ctx.stage.auditorList.length; i < iLen; i++) { %>
|
|
|
- <li class="list-group-item" auditorId="<%- ctx.stage.auditorList[i].aid %>">
|
|
|
- <% if ((ctx.tender.info.shenpi.stage === shenpiConst.sp_status.sqspr ||
|
|
|
- (ctx.tender.info.shenpi.stage === shenpiConst.sp_status.gdzs && i+1 !== iLen)) && ctx.session.sessionUser.accountId === ctx.stage.user_id && !ctx.tender.isTourist) { %>
|
|
|
- <a href="javascript: void(0)" class="text-danger pull-right">移除</a>
|
|
|
- <% } %>
|
|
|
- <span><%- ctx.stage.auditorList[i].order %> <%- ctx.stage.auditorList[i].name %></span>
|
|
|
- <small class="text-muted"><%- ctx.stage.auditorList[i].role %></small>
|
|
|
+ <% for (let i = 0, iLen = ctx.stage.auditorGroups.length; i < iLen; i++) { %>
|
|
|
+ <li class="list-group-item d-flex" auditorId="<%- ctx.stage.auditorGroups[i][0].aid %>">
|
|
|
+ <div class="col-auto"><%- i+1 %></div>
|
|
|
+ <div class="col">
|
|
|
+ <% for (const auditor of ctx.stage.auditorGroups[i]) { %>
|
|
|
+ <div class="d-inline-block mx-1" auditorId="<%- auditor.aid %>">
|
|
|
+ <i class="fa fa-user text-muted"></i> <%- auditor.name %> <small class="text-muted"><%- auditor.role %></small>
|
|
|
+ </div>
|
|
|
+ <% } %>
|
|
|
+ </div>
|
|
|
+ <div class="col-auto">
|
|
|
+ <% if (ctx.stage.auditorGroups[i][0].audit_type !== auditType.key.common) { %>
|
|
|
+ <span class="badge badge-pill badge-<%- auditType.info[ctx.stage.auditorGroups[i][0].audit_type].class %> badge-bg-small"><small><%- auditType.info[ctx.stage.auditorGroups[i][0].audit_type].long%></small></span>
|
|
|
+ <% } %>
|
|
|
+ <% if ((ctx.tender.info.shenpi.stage === shenpiConst.sp_status.sqspr ||
|
|
|
+ (ctx.tender.info.shenpi.stage === shenpiConst.sp_status.gdzs && i+1 !== iLen)) && ctx.session.sessionUser.accountId === ctx.stage.user_id && !ctx.tender.isTourist) { %>
|
|
|
+ <a href="javascript: void(0)" class="text-danger pull-right">移除</a>
|
|
|
+ <% } %>
|
|
|
+ </div>
|
|
|
</li>
|
|
|
<% } %>
|
|
|
</ul>
|
|
@@ -68,9 +79,8 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
<% } %>
|
|
|
-
|
|
|
<% } %>
|
|
|
-<% if(ctx.stage && (ctx.stage !== auditConst.status.uncheck)) { %>
|
|
|
+<% if(ctx.stage && (ctx.stage.status !== auditConst.status.uncheck)) { %>
|
|
|
<!--审批流程/结果-->
|
|
|
<div class="modal fade" id="sp-list" data-backdrop="static">
|
|
|
<div class="modal-dialog modal-lg" role="document">
|
|
@@ -92,22 +102,40 @@
|
|
|
<ul class="list-group list-group-flush auditors-list" id="auditors-list">
|
|
|
<% ctx.stage.auditors2.forEach((item, idx) => { %>
|
|
|
<% if (idx === 0) { %>
|
|
|
- <li class="list-group-item" data-auditorId="<%- item.aid %>">
|
|
|
- <i class="fa fa fa-play-circle fa-rotate-90"></i> <%- item.name %>
|
|
|
- <small class="text-muted"><%- item.role %></small>
|
|
|
- <span class="pull-right">原报</span>
|
|
|
+ <li class="list-group-item d-flex justify-content-between align-items-center">
|
|
|
+ <span class="mr-1"><i class="fa fa fa-play-circle fa-rotate-90"></i></span>
|
|
|
+ <span class="text-muted">
|
|
|
+ <% for (const u of item) { %>
|
|
|
+ <small class="d-inline-block text-dark mx-1" title="<%- u.role %>" data-auditorId="<%- u.aid %>"><%- u.name %></small>
|
|
|
+ <% } %>
|
|
|
+ </span>
|
|
|
+ <span class="badge badge-light badge-pill ml-auto"><small>原报</small></span>
|
|
|
</li>
|
|
|
<% } else if(idx === ctx.stage.auditors2.length -1 && idx !== 0) { %>
|
|
|
- <li class="list-group-item" data-auditorId="<%- item.aid %>">
|
|
|
- <i class="fa fa fa-stop-circle"></i> <%- item.name %>
|
|
|
- <small class="text-muted"><%- item.role %></small>
|
|
|
- <span class="pull-right">终审</span>
|
|
|
+ <li class="list-group-item d-flex justify-content-between align-items-center">
|
|
|
+ <span class="mr-1"><i class="fa fa fa-stop-circle"></i></span>
|
|
|
+ <span class="text-muted">
|
|
|
+ <% for (const u of item) { %>
|
|
|
+ <small class="d-inline-block text-dark mx-1" title="<%- u.role %>" data-auditorId="<%- u.aid %>"><%- u.name %></small>
|
|
|
+ <% } %>
|
|
|
+ </span>
|
|
|
+ <span class="badge badge-light badge-pill ml-auto"><small>终审</small></span>
|
|
|
+ <% if (item[0].audit_type !== auditType.key.common) { %>
|
|
|
+ <div class="li-subscript"><span class="badge badge-pill badge-<%- auditType.info[item[0].audit_type].class %> p-1 badge-bg-small"><small><%- auditType.info[item[0].audit_type].short %></small></span></div>
|
|
|
+ <% } %>
|
|
|
</li>
|
|
|
<% } else {%>
|
|
|
- <li class="list-group-item" data-auditorId="<%- item.aid %>">
|
|
|
- <i class="fa fa-chevron-circle-down"></i> <%- item.name %>
|
|
|
- <small class="text-muted"><%- item.role %></small>
|
|
|
- <span class="pull-right"><%= ctx.helper.transFormToChinese(idx) %>审</span>
|
|
|
+ <li class="list-group-item d-flex justify-content-between align-items-center">
|
|
|
+ <span class="mr-1"><i class="fa fa-chevron-circle-down"></i></span>
|
|
|
+ <span class="text-muted">
|
|
|
+ <% for (const u of item) { %>
|
|
|
+ <small class="d-inline-block text-dark mx-1" title="<%- u.role %>" data-auditorId="<%- u.aid %>"><%- u.name %></small>
|
|
|
+ <% } %>
|
|
|
+ </span>
|
|
|
+ <span class="badge badge-light badge-pill ml-auto"><small><%= ctx.helper.transFormToChinese(idx) %>审</small></span>
|
|
|
+ <% if (item[0].audit_type !== auditType.key.common) { %>
|
|
|
+ <div class="li-subscript"><span class="badge badge-pill badge-<%- auditType.info[item[0].audit_type].class %> p-1 badge-bg-small"><small><%- auditType.info[item[0].audit_type].short %></small></span></div>
|
|
|
+ <% } %>
|
|
|
</li>
|
|
|
<% } %>
|
|
|
<% }) %>
|
|
@@ -115,7 +143,7 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="col-8 modal-height-500" style="overflow: auto">
|
|
|
- <% ctx.stage.auditHistory.forEach((auditors, idx) => { %>
|
|
|
+ <% ctx.stage.auditHistory.forEach((his, idx) => { %>
|
|
|
<!-- 展开/收起历史流程 -->
|
|
|
<% if(idx === ctx.stage.auditHistory.length - 1 && ctx.stage.auditHistory.length !== 1) { %>
|
|
|
<div class="text-right">
|
|
@@ -125,125 +153,90 @@
|
|
|
<div class="<%- idx < ctx.stage.auditHistory.length - 1 ? 'fold-card' : '' %>">
|
|
|
<div class="text-center text-muted"><%- idx+1 %>#</div>
|
|
|
<ul class="timeline-list list-unstyled mt-2 <% if (idx === ctx.stage.auditHistory.length - 1 && ctx.stage.auditHistory.length !== 1) { %>last-auditor-list<% } %>">
|
|
|
- <% auditors.forEach((auditor, index) => { %>
|
|
|
+ <% his.forEach((group, index) => { %>
|
|
|
<% if (index === 0) { %>
|
|
|
<li class="timeline-list-item pb-2">
|
|
|
<div class="timeline-item-date">
|
|
|
- <%- ctx.helper.formatDate(auditor.begin_time) %>
|
|
|
+ <%- group.beginYear %>
|
|
|
+ <span title="<%- group.beginTime %>"><%- group.beginDate %></span>
|
|
|
</div>
|
|
|
<div class="timeline-item-tail"></div>
|
|
|
- <div class="timeline-item-icon bg-success text-light">
|
|
|
- <i class="fa fa-caret-down"></i>
|
|
|
- </div>
|
|
|
+ <div class="timeline-item-icon bg-success text-light"><i class="fa fa-caret-down"></i></div>
|
|
|
<div class="timeline-item-content">
|
|
|
- <div class="card">
|
|
|
- <div class="card-body p-3">
|
|
|
- <div class="card-text">
|
|
|
- <p class="mb-1"><span
|
|
|
- class="h5"><%- ctx.stage.user.name %></span><span
|
|
|
- class="pull-right text-success"><%- idx !== 0 ? '重新' : '' %>上报审批</span>
|
|
|
- </p>
|
|
|
- <p class="text-muted mb-0"><%- ctx.stage.user.role %></p>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
+ <div class="py-1">
|
|
|
+ <span class="text-black-50">原报</span>
|
|
|
+ <span class="pull-right text-success"><%- idx !== 0 ? '重新' : '' %>上报审批</span>
|
|
|
</div>
|
|
|
- </div>
|
|
|
- </li>
|
|
|
- <li class="timeline-list-item pb-2 <% if (auditor.status === auditConst.status.uncheck && idx === ctx.stage.auditHistory.length - 1 && ctx.stage.auditHistory.length !== 1) { %>is_uncheck<% } %>">
|
|
|
- <div class="timeline-item-date">
|
|
|
- <%- ctx.helper.formatDate(auditor.end_time) %>
|
|
|
- </div>
|
|
|
- <% if(index < auditors.length - 1) { %>
|
|
|
- <div class="timeline-item-tail"></div>
|
|
|
- <% } %>
|
|
|
- <% if(auditor.status === auditConst.status.checked) { %>
|
|
|
- <div class="timeline-item-icon bg-success text-light">
|
|
|
- <i class="fa fa-check"></i>
|
|
|
- </div>
|
|
|
- <% } else if(auditor.status === auditConst.status.checkNo || auditor.status === auditConst.status.checkNoPre || auditor.status === auditConst.status.checkCancel) {%>
|
|
|
- <div class="timeline-item-icon bg-warning text-light">
|
|
|
- <i class="fa fa-level-up"></i>
|
|
|
- </div>
|
|
|
- <% } else if(auditor.status === auditConst.status.checking) { %>
|
|
|
- <div class="timeline-item-icon bg-warning text-light">
|
|
|
- <i class="fa fa-ellipsis-h"></i>
|
|
|
- </div>
|
|
|
- <% } else {%>
|
|
|
- <div class="timeline-item-icon bg-secondary text-light">
|
|
|
- </div>
|
|
|
- <% } %>
|
|
|
- <div class="timeline-item-content">
|
|
|
<div class="card">
|
|
|
- <div class="card-body p-3">
|
|
|
- <div class="card-text">
|
|
|
- <p class="mb-1"><span class="h5"><%- auditor.name %></span><span
|
|
|
- class="pull-right <%- auditConst.statusClass[auditor.status] %>"><%- auditConst.statusString[auditor.status] %></span>
|
|
|
- </p>
|
|
|
- <p class="text-muted mb-0"><%- auditor.role %></p>
|
|
|
+ <div class="card-body px-3 py-0">
|
|
|
+ <div class="card-text p-2 py-3 row">
|
|
|
+ <div class="col">
|
|
|
+ <span class="h6"><%- ctx.stage.user.name %></span>
|
|
|
+ <span class="text-muted ml-1"><%- ctx.stage.user.role %></span>
|
|
|
+ </div>
|
|
|
+ <div class="col">
|
|
|
+ <span class="pull-right text-success"><i class="fa fa-check-circle"></i></span>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</div>
|
|
|
-
|
|
|
- <!--审批意见-->
|
|
|
- <% if (auditor.opinion) { %>
|
|
|
- <div class="card-body p-3 border-top">
|
|
|
- <p style="margin: 0;"><%- auditor.opinion %></p>
|
|
|
- </div>
|
|
|
- <% } %>
|
|
|
</div>
|
|
|
</div>
|
|
|
</li>
|
|
|
- <% } else {%>
|
|
|
- <li class="timeline-list-item pb-2 <% if (auditor.status === auditConst.status.uncheck && idx === ctx.stage.auditHistory.length - 1 && ctx.stage.auditHistory.length !== 1) { %>is_uncheck<% } %>">
|
|
|
+ <% } %>
|
|
|
+ <li class="timeline-list-item pb-2 <% if (group.status === auditConst.status.uncheck && idx === ctx.stage.auditHistory.length - 1 && ctx.stage.auditHistory.length !== 1) { %>is_uncheck<% } %>">
|
|
|
+ <% if (group.endYear) { %>
|
|
|
<div class="timeline-item-date">
|
|
|
- <%- ctx.helper.formatDate(auditor.end_time) %>
|
|
|
+ <%- group.beginYear %>
|
|
|
+ <span title="<%- group.beginTime %>"><%- group.beginDate %></span>
|
|
|
</div>
|
|
|
- <% if(index < auditors.length - 1) { %>
|
|
|
+ <% } %>
|
|
|
+ <% if (index < his.length - 1) { %>
|
|
|
<div class="timeline-item-tail"></div>
|
|
|
<% } %>
|
|
|
- <% if(auditor.status === auditConst.status.checked) { %>
|
|
|
- <div class="timeline-item-icon bg-success text-light">
|
|
|
- <i class="fa fa-check"></i>
|
|
|
- </div>
|
|
|
- <% } else if(auditor.status === auditConst.status.checkNo || auditor.status === auditConst.status.checkNoPre || auditor.status === auditConst.status.checkCancel) {%>
|
|
|
- <div class="timeline-item-icon bg-warning text-light">
|
|
|
- <i class="fa fa-level-up"></i>
|
|
|
- </div>
|
|
|
- <% } else if(auditor.status === auditConst.status.checking) { %>
|
|
|
- <div class="timeline-item-icon bg-warning text-light">
|
|
|
- <i class="fa fa-ellipsis-h"></i>
|
|
|
- </div>
|
|
|
+ <% if (group.status === auditConst.status.checked) { %>
|
|
|
+ <div class="timeline-item-icon bg-success text-light"><i class="fa fa-check"></i></div>
|
|
|
+ <% } else if (group.status === auditConst.status.checkNo || group.status === auditConst.status.checkNoPre || group.status === auditConst.status.checkCancel) { %>
|
|
|
+ <div class="timeline-item-icon bg-warning text-light"><i class="fa fa-level-up"></i></div>
|
|
|
+ <% } else if (group.status === auditConst.status.checking) { %>
|
|
|
+ <div class="timeline-item-icon bg-warning text-light"><i class="fa fa-ellipsis-h"></i></div>
|
|
|
<% } else { %>
|
|
|
- <div class="timeline-item-icon bg-secondary text-light">
|
|
|
- </div>
|
|
|
+ <div class="timeline-item-icon bg-secondary text-light"></div>
|
|
|
<% } %>
|
|
|
<div class="timeline-item-content">
|
|
|
+ <div class="py-1">
|
|
|
+ <span class="text-black-50">
|
|
|
+ <%- (!group.is_final ? group.audit_order : '终') %>审
|
|
|
+ <% if (group.audit_type !== auditType.key.common) { %><span class="text-<%- auditType.info[group.audit_type].class %> "><%- auditType.info[group.audit_type].long %></span><% } %>
|
|
|
+ </span>
|
|
|
+ <span class="pull-right <%- auditConst.statusClass[group.status] %>"><%- auditConst.statusString[group.status] %></span>
|
|
|
+ </div>
|
|
|
<div class="card">
|
|
|
- <div class="card-body p-3">
|
|
|
- <div class="card-text">
|
|
|
- <p class="mb-1"><span class="h5"><%- auditor.name %></span>
|
|
|
- <span class="pull-right <%- auditConst.statusClass[auditor.status] %>">
|
|
|
- <%- auditor.status !== auditConst.status.uncheck ? auditConst.statusString[auditor.status] : ''%>
|
|
|
- <%- auditor.status === auditConst.status.checkNo ? ctx.stage.user.name : '' %>
|
|
|
- <%- auditor.status === auditConst.status.checkNoPre && auditor.sort - 1 > 0 ? ctx.helper._.find(auditors, { sort: auditor.sort - 1 }).name : '' %>
|
|
|
- </span>
|
|
|
- </p>
|
|
|
- <p class="text-muted mb-0"><%- auditor.role %></p>
|
|
|
+ <div class="card-body px-3 py-0">
|
|
|
+ <% for (const [i, auditor] of group.auditors.entries()) { %>
|
|
|
+ <div class="card-text p-2 py-3 row <%- ( i > 0 ? 'border-top' : '') %>">
|
|
|
+ <div class="col">
|
|
|
+ <span class="h6"><%- auditor.name %></span>
|
|
|
+ <span class="text-muted ml-1"><%- auditor.role %></span>
|
|
|
+ </div>
|
|
|
+ <div class="col">
|
|
|
+ <% if (auditor.status === auditConst.status.checked) { %>
|
|
|
+ <span class="pull-right text-success"><i class="fa fa-check-circle"></i></span>
|
|
|
+ <% } if (auditor.status === auditConst.status.checkNo || auditor.status === auditConst.status.checkNoPre || auditor.status === auditConst.status.checkCancel) { %>
|
|
|
+ <span class="pull-right text-warning"><i class="fa fa-share-square fa-rotate-270"></i></span>
|
|
|
+ <% } %>
|
|
|
+ </div>
|
|
|
+ <% if (auditor.opinion) { %>
|
|
|
+ <div class="col-12 py-1 bg-light"><i class="fa fa-commenting-o mr-1"></i><%- auditor.opinion%></div>
|
|
|
+ <% } %>
|
|
|
</div>
|
|
|
+ <% } %>
|
|
|
</div>
|
|
|
- <!--审批意见-->
|
|
|
- <% if (auditor.opinion) { %>
|
|
|
- <div class="card-body p-3 border-top">
|
|
|
- <p style="margin: 0;"><%- auditor.opinion %></p>
|
|
|
- </div>
|
|
|
- <% } %>
|
|
|
</div>
|
|
|
</div>
|
|
|
</li>
|
|
|
- <% } %>
|
|
|
<% }) %>
|
|
|
</ul>
|
|
|
</div>
|
|
|
-
|
|
|
<% }) %>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -260,7 +253,7 @@
|
|
|
</div>
|
|
|
<% } %>
|
|
|
<% if (ctx.stage && (ctx.stage.status === auditConst.status.checking || ctx.stage.status === auditConst.status.checkNoPre)) { %>
|
|
|
- <% if (ctx.stage.curAuditor && ctx.stage.curAuditor.aid === ctx.session.sessionUser.accountId) { %>
|
|
|
+ <% if (ctx.stage.curAuditorIds.indexOf(ctx.session.sessionUser.accountId) >= 0) { %>
|
|
|
<!--审批通过-->
|
|
|
<div class="modal fade sp-location-list" id="sp-done" data-backdrop="static">
|
|
|
<div class="modal-dialog modal-lg" role="document">
|
|
@@ -279,22 +272,41 @@
|
|
|
<ul class="list-group list-group-flush auditors-list">
|
|
|
<% ctx.stage.auditors2.forEach((item, idx) => { %>
|
|
|
<% if (idx === 0) { %>
|
|
|
- <li class="list-group-item" data-auditorId="<%- item.aid %>">
|
|
|
- <i class="fa fa fa-play-circle fa-rotate-90"></i> <%- item.name %>
|
|
|
- <small class="text-muted"><%- item.role %></small>
|
|
|
- <span class="pull-right">原报</span>
|
|
|
+ <li class="list-group-item d-flex justify-content-between align-items-center">
|
|
|
+ <span class="mr-1"><i class="fa fa fa-play-circle fa-rotate-90"></i></span>
|
|
|
+ <span class="text-muted">
|
|
|
+ <% for (const u of item) { %>
|
|
|
+ <small class="d-inline-block text-dark mx-1" title="<%- u.role %>" data-auditorId="<%- u.aid %>"><%- u.name %></small>
|
|
|
+ <% } %>
|
|
|
+ </span>
|
|
|
+ <span class="badge badge-light badge-pill ml-auto"><small>原报</small></span>
|
|
|
</li>
|
|
|
<% } else if(idx === ctx.stage.auditors2.length -1 && idx !== 0) { %>
|
|
|
- <li class="list-group-item" data-auditorId="<%- item.aid %>">
|
|
|
- <i class="fa fa fa-stop-circle"></i> <%- item.name %>
|
|
|
- <small class="text-muted"><%- item.role %></small>
|
|
|
- <span class="pull-right">终审</span>
|
|
|
+
|
|
|
+ <li class="list-group-item d-flex justify-content-between align-items-center">
|
|
|
+ <span class="mr-1"><i class="fa fa fa-stop-circle"></i></span>
|
|
|
+ <span class="text-muted">
|
|
|
+ <% for (const u of item) { %>
|
|
|
+ <small class="d-inline-block text-dark mx-1" title="<%- u.role %>" data-auditorId="<%- u.aid %>"><%- u.name %></small>
|
|
|
+ <% } %>
|
|
|
+ </span>
|
|
|
+ <span class="badge badge-light badge-pill ml-auto"><small>终审</small></span>
|
|
|
+ <% if (item[0].audit_type !== auditType.key.common) { %>
|
|
|
+ <div class="li-subscript"><span class="badge badge-pill badge-<%- auditType.info[item[0].audit_type].class %> p-1 badge-bg-small"><small><%- auditType.info[item[0].audit_type].short %></small></span></div>
|
|
|
+ <% } %>
|
|
|
</li>
|
|
|
<% } else {%>
|
|
|
- <li class="list-group-item" data-auditorId="<%- item.aid %>">
|
|
|
- <i class="fa fa-chevron-circle-down"></i> <%- item.name %>
|
|
|
- <small class="text-muted"><%- item.role %></small>
|
|
|
- <span class="pull-right"><%= ctx.helper.transFormToChinese(idx) %>审</span>
|
|
|
+ <li class="list-group-item d-flex justify-content-between align-items-center">
|
|
|
+ <span class="mr-1"><i class="fa fa-chevron-circle-down"></i></span>
|
|
|
+ <span class="text-muted">
|
|
|
+ <% for (const u of item) { %>
|
|
|
+ <small class="d-inline-block text-dark mx-1" title="<%- u.role %>" data-auditorId="<%- u.aid %>"><%- u.name %></small>
|
|
|
+ <% } %>
|
|
|
+ </span>
|
|
|
+ <span class="badge badge-light badge-pill ml-auto"><small><%= ctx.helper.transFormToChinese(idx) %>审</small></span>
|
|
|
+ <% if (item[0].audit_type !== auditType.key.common) { %>
|
|
|
+ <div class="li-subscript"><span class="badge badge-pill badge-<%- auditType.info[item[0].audit_type].class %> p-1 badge-bg-small"><small><%- auditType.info[item[0].audit_type].short %></small></span></div>
|
|
|
+ <% } %>
|
|
|
</li>
|
|
|
<% } %>
|
|
|
<% }) %>
|
|
@@ -302,7 +314,7 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="col-8 modal-height-500" style="overflow: auto">
|
|
|
- <% ctx.stage.auditHistory.forEach((auditors, idx) => { %>
|
|
|
+ <% ctx.stage.auditHistory.forEach((his, idx) => { %>
|
|
|
<!-- 展开/收起历史流程 -->
|
|
|
<% if(idx === ctx.stage.auditHistory.length - 1 && ctx.stage.auditHistory.length !== 1) { %>
|
|
|
<div class="text-right">
|
|
@@ -312,136 +324,97 @@
|
|
|
<div class="<%- idx < ctx.stage.auditHistory.length - 1 ? 'fold-card' : '' %>">
|
|
|
<div class="text-center text-muted"><%- idx+1 %>#</div>
|
|
|
<ul class="timeline-list list-unstyled mt-2 <% if (idx === ctx.stage.auditHistory.length - 1 && ctx.stage.auditHistory.length !== 1) { %>last-auditor-list<% } %>">
|
|
|
- <% auditors.forEach((auditor, index) => { %>
|
|
|
+ <% his.forEach((group, index) => { %>
|
|
|
<% if (index === 0) { %>
|
|
|
<li class="timeline-list-item pb-2">
|
|
|
<div class="timeline-item-date">
|
|
|
- <%- ctx.helper.formatDate(auditor.begin_time) %>
|
|
|
+ <%- group.beginYear %>
|
|
|
+ <span title="<%- group.beginTime %>"><%- group.beginDate %></span>
|
|
|
</div>
|
|
|
<div class="timeline-item-tail"></div>
|
|
|
- <div class="timeline-item-icon bg-success text-light">
|
|
|
- <i class="fa fa-caret-down"></i>
|
|
|
- </div>
|
|
|
+ <div class="timeline-item-icon bg-success text-light"><i class="fa fa-caret-down"></i></div>
|
|
|
<div class="timeline-item-content">
|
|
|
- <div class="card">
|
|
|
- <div class="card-body p-3">
|
|
|
- <div class="card-text">
|
|
|
- <p class="mb-1"><span
|
|
|
- class="h5"><%- ctx.stage.user.name %></span><span
|
|
|
- class="pull-right text-success"><%- idx !== 0 ? '重新' : '' %>上报审批</span>
|
|
|
- </p>
|
|
|
- <p class="text-muted mb-0"><%- ctx.stage.user.role %></p>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
+ <div class="py-1">
|
|
|
+ <span class="text-black-50">原报</span>
|
|
|
+ <span class="pull-right text-success"><%- idx !== 0 ? '重新' : '' %>上报审批</span>
|
|
|
</div>
|
|
|
- </div>
|
|
|
- </li>
|
|
|
- <li class="timeline-list-item pb-2 <% if (auditor.status === auditConst.status.uncheck && idx === ctx.stage.auditHistory.length - 1 && ctx.stage.auditHistory.length !== 1) { %>is_uncheck<% } %>">
|
|
|
- <div class="timeline-item-date">
|
|
|
- <%- ctx.helper.formatDate(auditor.end_time) %>
|
|
|
- </div>
|
|
|
- <% if(index < auditors.length - 1) { %>
|
|
|
- <div class="timeline-item-tail"></div>
|
|
|
- <% } %>
|
|
|
- <% if(auditor.status === auditConst.status.checked) { %>
|
|
|
- <div class="timeline-item-icon bg-success text-light">
|
|
|
- <i class="fa fa-check"></i>
|
|
|
- </div>
|
|
|
- <% } else if(auditor.status === auditConst.status.checkNo || auditor.status === auditConst.status.checkNoPre || auditor.status === auditConst.status.checkCancel) {%>
|
|
|
- <div class="timeline-item-icon bg-warning text-light">
|
|
|
- <i class="fa fa-level-up"></i>
|
|
|
- </div>
|
|
|
- <% } else if(auditor.status === auditConst.status.checking) { %>
|
|
|
- <div class="timeline-item-icon bg-warning text-light">
|
|
|
- <i class="fa fa-ellipsis-h"></i>
|
|
|
- </div>
|
|
|
- <% } else {%>
|
|
|
- <div class="timeline-item-icon bg-secondary text-light">
|
|
|
- </div>
|
|
|
- <% } %>
|
|
|
- <div class="timeline-item-content">
|
|
|
<div class="card">
|
|
|
- <div class="card-body p-3">
|
|
|
- <div class="card-text">
|
|
|
- <p class="mb-1"><span class="h5"><%- auditor.name %></span><span
|
|
|
- class="pull-right <%- auditConst.statusClass[auditor.status] %>"><%- auditConst.statusString[auditor.status] %></span>
|
|
|
- </p>
|
|
|
- <p class="text-muted mb-0"><%- auditor.role %></p>
|
|
|
+ <div class="card-body px-3 py-0">
|
|
|
+ <div class="card-text p-2 py-3 row">
|
|
|
+ <div class="col">
|
|
|
+ <span class="h6"><%- ctx.stage.user.name %></span>
|
|
|
+ <span class="text-muted ml-1"><%- ctx.stage.user.role %></span>
|
|
|
+ </div>
|
|
|
+ <div class="col">
|
|
|
+ <span class="pull-right text-success"><i class="fa fa-check-circle"></i></span>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</div>
|
|
|
- <!--审批意见-->
|
|
|
- <% if(auditor.status !== auditConst.status.uncheck) { %>
|
|
|
- <div class="card-body p-3 border-top">
|
|
|
- <% if (ctx.stage.times === idx + 1 && auditor.status === auditConst.status.checking) { %>
|
|
|
- <label>审批意见<b class="text-danger">*</b></label>
|
|
|
- <textarea class="form-control form-control-sm"
|
|
|
- name="opinion">同意</textarea>
|
|
|
- <% } else { %>
|
|
|
- <p style="margin: 0;"><%- auditor.opinion %></p>
|
|
|
- <% } %>
|
|
|
- </div>
|
|
|
- <% } %>
|
|
|
</div>
|
|
|
</div>
|
|
|
</li>
|
|
|
- <% } else {%>
|
|
|
- <li class="timeline-list-item pb-2 <% if (auditor.status === auditConst.status.uncheck && idx === ctx.stage.auditHistory.length - 1 && ctx.stage.auditHistory.length !== 1) { %>is_uncheck<% } %>">
|
|
|
+ <% } %>
|
|
|
+ <li class="timeline-list-item pb-2 <% if (group.status === auditConst.status.uncheck && idx === ctx.stage.auditHistory.length - 1 && ctx.stage.auditHistory.length !== 1) { %>is_uncheck<% } %>">
|
|
|
+ <% if (group.endYear) { %>
|
|
|
<div class="timeline-item-date">
|
|
|
- <%- ctx.helper.formatDate(auditor.end_time) %>
|
|
|
+ <%- group.beginYear %>
|
|
|
+ <span title="<%- group.beginTime %>"><%- group.beginDate %></span>
|
|
|
</div>
|
|
|
- <% if(index < auditors.length - 1) { %>
|
|
|
+ <% } %>
|
|
|
+ <% if (index < his.length - 1) { %>
|
|
|
<div class="timeline-item-tail"></div>
|
|
|
<% } %>
|
|
|
- <% if(auditor.status === auditConst.status.checked) { %>
|
|
|
- <div class="timeline-item-icon bg-success text-light">
|
|
|
- <i class="fa fa-check"></i>
|
|
|
- </div>
|
|
|
- <% } else if(auditor.status === auditConst.status.checkNo || auditor.status === auditConst.status.checkNoPre || auditor.status === auditConst.status.checkCancel) {%>
|
|
|
- <div class="timeline-item-icon bg-warning text-light">
|
|
|
- <i class="fa fa-level-up"></i>
|
|
|
- </div>
|
|
|
- <% } else if(auditor.status === auditConst.status.checking) { %>
|
|
|
- <div class="timeline-item-icon bg-warning text-light">
|
|
|
- <i class="fa fa-ellipsis-h"></i>
|
|
|
- </div>
|
|
|
+ <% if (group.status === auditConst.status.checked) { %>
|
|
|
+ <div class="timeline-item-icon bg-success text-light"><i class="fa fa-check"></i></div>
|
|
|
+ <% } else if (group.status === auditConst.status.checkNo || group.status === auditConst.status.checkNoPre || group.status === auditConst.status.checkCancel) { %>
|
|
|
+ <div class="timeline-item-icon bg-warning text-light"><i class="fa fa-level-up"></i></div>
|
|
|
+ <% } else if (group.status === auditConst.status.checking) { %>
|
|
|
+ <div class="timeline-item-icon bg-warning text-light"><i class="fa fa-ellipsis-h"></i></div>
|
|
|
<% } else { %>
|
|
|
- <div class="timeline-item-icon bg-secondary text-light">
|
|
|
- </div>
|
|
|
+ <div class="timeline-item-icon bg-secondary text-light"></div>
|
|
|
<% } %>
|
|
|
<div class="timeline-item-content">
|
|
|
+ <div class="py-1">
|
|
|
+ <span class="text-black-50">
|
|
|
+ <%- (!group.is_final ? group.audit_order : '终') %>审
|
|
|
+ <% if (group.audit_type !== auditType.key.common) { %><span class="text-<%- auditType.info[group.audit_type].class %> "><%- auditType.info[group.audit_type].long %></span><% } %>
|
|
|
+ </span>
|
|
|
+ <span class="pull-right <%- auditConst.statusClass[group.status] %>"><%- auditConst.statusString[group.status] %></span>
|
|
|
+ </div>
|
|
|
<div class="card">
|
|
|
- <div class="card-body p-3">
|
|
|
- <div class="card-text">
|
|
|
- <p class="mb-1"><span class="h5"><%- auditor.name %></span>
|
|
|
- <span class="pull-right <%- auditConst.statusClass[auditor.status] %>">
|
|
|
- <%- auditor.status !== auditConst.status.uncheck ? auditConst.statusString[auditor.status] : ''%>
|
|
|
- <%- auditor.status === auditConst.status.checkNo ? ctx.stage.user.name : '' %>
|
|
|
- <%- auditor.status === auditConst.status.checkNoPre && auditor.sort - 1 > 0 ? ctx.helper._.find(auditors, { sort: auditor.sort - 1 }).name : '' %>
|
|
|
- </span>
|
|
|
- </p>
|
|
|
- <p class="text-muted mb-0"><%- auditor.role %></p>
|
|
|
+ <div class="card-body px-3 py-0">
|
|
|
+ <% for (const [i, auditor] of group.auditors.entries()) { %>
|
|
|
+ <div class="card-text p-2 py-3 row <%- ( i > 0 ? 'border-top' : '') %>">
|
|
|
+ <div class="col">
|
|
|
+ <span class="h6"><%- auditor.name %></span>
|
|
|
+ <span class="text-muted ml-1"><%- auditor.role %></span>
|
|
|
+ </div>
|
|
|
+ <div class="col">
|
|
|
+ <% if (auditor.status === auditConst.status.checked) { %>
|
|
|
+ <span class="pull-right text-success"><i class="fa fa-check-circle"></i></span>
|
|
|
+ <% } if (auditor.status === auditConst.status.checkNo || auditor.status === auditConst.status.checkNoPre || auditor.status === auditConst.status.checkCancel) { %>
|
|
|
+ <span class="pull-right text-warning"><i class="fa fa-share-square fa-rotate-270"></i></span>
|
|
|
+ <% } else if (auditor.status === auditConst.status.checking) { %>
|
|
|
+ <span class="pull-right text-warning"><i class="fa fa-commenting"></i></span>
|
|
|
+ <% } %>
|
|
|
+ </div>
|
|
|
+ <% if (auditor.status !== auditConst.status.uncheck && auditor.opinion) { %>
|
|
|
+ <div class="col-12 py-1 bg-light"><i class="fa fa-commenting-o mr-1"></i><%- auditor.opinion%></div>
|
|
|
+ <% } %>
|
|
|
+ <% if (auditor.status === auditConst.status.checking && auditor.aid === ctx.session.sessionUser.accountId) { %>
|
|
|
+ <div class="col-12 py-1 bg-light">
|
|
|
+ <textarea class="form-control form-control-sm" name="opinion">同意</textarea>
|
|
|
+ </div>
|
|
|
+ <% } %>
|
|
|
</div>
|
|
|
- </div>
|
|
|
- <!--审批意见-->
|
|
|
- <% if(auditor.status !== auditConst.status.uncheck) { %>
|
|
|
- <div class="card-body p-3 border-top">
|
|
|
- <% if (ctx.stage.times === idx + 1 && auditor.status === auditConst.status.checking) { %>
|
|
|
- <label>审批意见<b class="text-danger">*</b></label>
|
|
|
- <textarea class="form-control form-control-sm"
|
|
|
- name="opinion">同意</textarea>
|
|
|
- <% } else { %>
|
|
|
- <p style="margin: 0;"><%- auditor.opinion %></p>
|
|
|
<% } %>
|
|
|
</div>
|
|
|
- <% } %>
|
|
|
</div>
|
|
|
</div>
|
|
|
</li>
|
|
|
- <% } %>
|
|
|
<% }) %>
|
|
|
</ul>
|
|
|
</div>
|
|
|
-
|
|
|
<% }) %>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -473,22 +446,41 @@
|
|
|
<ul class="list-group list-group-flush auditors-list">
|
|
|
<% ctx.stage.auditors2.forEach((item, idx) => { %>
|
|
|
<% if (idx === 0) { %>
|
|
|
- <li class="list-group-item" data-auditorId="<%- item.aid %>">
|
|
|
- <i class="fa fa fa-play-circle fa-rotate-90"></i> <%- item.name %>
|
|
|
- <small class="text-muted"><%- item.role %></small>
|
|
|
- <span class="pull-right">原报</span>
|
|
|
+ <li class="list-group-item d-flex justify-content-between align-items-center">
|
|
|
+ <span class="mr-1"><i class="fa fa fa-play-circle fa-rotate-90"></i></span>
|
|
|
+ <span class="text-muted">
|
|
|
+ <% for (const u of item) { %>
|
|
|
+ <small class="d-inline-block text-dark mx-1" title="<%- u.role %>" data-auditorId="<%- u.aid %>"><%- u.name %></small>
|
|
|
+ <% } %>
|
|
|
+ </span>
|
|
|
+ <span class="badge badge-light badge-pill ml-auto"><small>原报</small></span>
|
|
|
</li>
|
|
|
<% } else if(idx === ctx.stage.auditors2.length -1 && idx !== 0) { %>
|
|
|
- <li class="list-group-item" data-auditorId="<%- item.aid %>">
|
|
|
- <i class="fa fa fa-stop-circle"></i> <%- item.name %>
|
|
|
- <small class="text-muted"><%- item.role %></small>
|
|
|
- <span class="pull-right">终审</span>
|
|
|
+
|
|
|
+ <li class="list-group-item d-flex justify-content-between align-items-center">
|
|
|
+ <span class="mr-1"><i class="fa fa fa-stop-circle"></i></span>
|
|
|
+ <span class="text-muted">
|
|
|
+ <% for (const u of item) { %>
|
|
|
+ <small class="d-inline-block text-dark mx-1" title="<%- u.role %>" data-auditorId="<%- u.aid %>"><%- u.name %></small>
|
|
|
+ <% } %>
|
|
|
+ </span>
|
|
|
+ <span class="badge badge-light badge-pill ml-auto"><small>终审</small></span>
|
|
|
+ <% if (item[0].audit_type !== auditType.key.common) { %>
|
|
|
+ <div class="li-subscript"><span class="badge badge-pill badge-<%- auditType.info[item[0].audit_type].class %> p-1 badge-bg-small"><small><%- auditType.info[item[0].audit_type].short %></small></span></div>
|
|
|
+ <% } %>
|
|
|
</li>
|
|
|
<% } else {%>
|
|
|
- <li class="list-group-item" data-auditorId="<%- item.aid %>">
|
|
|
- <i class="fa fa-chevron-circle-down"></i> <%- item.name %>
|
|
|
- <small class="text-muted"><%- item.role %></small>
|
|
|
- <span class="pull-right"><%= ctx.helper.transFormToChinese(idx) %>审</span>
|
|
|
+ <li class="list-group-item d-flex justify-content-between align-items-center">
|
|
|
+ <span class="mr-1"><i class="fa fa-chevron-circle-down"></i></span>
|
|
|
+ <span class="text-muted">
|
|
|
+ <% for (const u of item) { %>
|
|
|
+ <small class="d-inline-block text-dark mx-1" title="<%- u.role %>" data-auditorId="<%- u.aid %>"><%- u.name %></small>
|
|
|
+ <% } %>
|
|
|
+ </span>
|
|
|
+ <span class="badge badge-light badge-pill ml-auto"><small><%= ctx.helper.transFormToChinese(idx) %>审</small></span>
|
|
|
+ <% if (item[0].audit_type !== auditType.key.common) { %>
|
|
|
+ <div class="li-subscript"><span class="badge badge-pill badge-<%- auditType.info[item[0].audit_type].class %> p-1 badge-bg-small"><small><%- auditType.info[item[0].audit_type].short %></small></span></div>
|
|
|
+ <% } %>
|
|
|
</li>
|
|
|
<% } %>
|
|
|
<% }) %>
|
|
@@ -496,7 +488,7 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="col-8 modal-height-500" style="overflow: auto">
|
|
|
- <% ctx.stage.auditHistory.forEach((auditors, idx) => { %>
|
|
|
+ <% ctx.stage.auditHistory.forEach((his, idx) => { %>
|
|
|
<!-- 展开/收起历史流程 -->
|
|
|
<% if(idx === ctx.stage.auditHistory.length - 1 && ctx.stage.auditHistory.length !== 1) { %>
|
|
|
<div class="text-right"><a href="javascript: void(0);" id="fold-btn" data-target="show"
|
|
@@ -505,176 +497,109 @@
|
|
|
<div class="<%- idx < ctx.stage.auditHistory.length - 1 ? 'fold-card' : '' %>">
|
|
|
<div class="text-center text-muted"><%- idx+1 %>#</div>
|
|
|
<ul class="timeline-list list-unstyled mt-2 <% if (idx === ctx.stage.auditHistory.length - 1 && ctx.stage.auditHistory.length !== 1) { %>last-auditor-list<% } %>">
|
|
|
- <% auditors.forEach((auditor, index) => { %>
|
|
|
+ <% his.forEach((group, index) => { %>
|
|
|
<% if (index === 0) { %>
|
|
|
<li class="timeline-list-item pb-2">
|
|
|
<div class="timeline-item-date">
|
|
|
- <%- ctx.helper.formatDate(auditor.begin_time) %>
|
|
|
+ <%- group.beginYear %>
|
|
|
+ <span title="<%- group.beginTime %>"><%- group.beginDate %></span>
|
|
|
</div>
|
|
|
<div class="timeline-item-tail"></div>
|
|
|
- <div class="timeline-item-icon bg-success text-light">
|
|
|
- <i class="fa fa-caret-down"></i>
|
|
|
- </div>
|
|
|
+ <div class="timeline-item-icon bg-success text-light"><i class="fa fa-caret-down"></i></div>
|
|
|
<div class="timeline-item-content">
|
|
|
- <div class="card">
|
|
|
- <div class="card-body p-3">
|
|
|
- <div class="card-text">
|
|
|
- <p class="mb-1"><span
|
|
|
- class="h5"><%- ctx.stage.user.name %></span><span
|
|
|
- class="pull-right text-success"><%- idx !== 0 ? '重新' : '' %>上报审批</span>
|
|
|
- </p>
|
|
|
- <p class="text-muted mb-0"><%- ctx.stage.user.role %></p>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
+ <div class="py-1">
|
|
|
+ <span class="text-black-50">原报</span>
|
|
|
+ <span class="pull-right text-success"><%- idx !== 0 ? '重新' : '' %>上报审批</span>
|
|
|
</div>
|
|
|
- </div>
|
|
|
- </li>
|
|
|
- <li class="timeline-list-item pb-2 <% if (auditor.status === auditConst.status.uncheck && idx === ctx.stage.auditHistory.length - 1 && ctx.stage.auditHistory.length !== 1) { %>is_uncheck<% } %>">
|
|
|
- <div class="timeline-item-date">
|
|
|
- <%- ctx.helper.formatDate(auditor.end_time) %>
|
|
|
- </div>
|
|
|
- <% if(index < auditors.length - 1) { %>
|
|
|
- <div class="timeline-item-tail"></div>
|
|
|
- <% } %>
|
|
|
- <% if(auditor.status === auditConst.status.checked) { %>
|
|
|
- <div class="timeline-item-icon bg-success text-light">
|
|
|
- <i class="fa fa-check"></i>
|
|
|
- </div>
|
|
|
- <% } else if(auditor.status === auditConst.status.checkNo || auditor.status === auditConst.status.checkNoPre || auditor.status === auditConst.status.checkCancel) {%>
|
|
|
- <div class="timeline-item-icon bg-warning text-light">
|
|
|
- <i class="fa fa-level-up"></i>
|
|
|
- </div>
|
|
|
- <% } else if(auditor.status === auditConst.status.checking) { %>
|
|
|
- <div class="timeline-item-icon bg-warning text-light">
|
|
|
- <i class="fa fa-ellipsis-h"></i>
|
|
|
- </div>
|
|
|
- <% } else {%>
|
|
|
- <div class="timeline-item-icon bg-secondary text-light">
|
|
|
- </div>
|
|
|
- <% } %>
|
|
|
- <div class="timeline-item-content">
|
|
|
<div class="card">
|
|
|
- <div class="card-body p-3">
|
|
|
- <div class="card-text">
|
|
|
- <p class="mb-1"><span class="h5"><%- auditor.name %></span><span
|
|
|
- class="pull-right <%- auditConst.statusClass[auditor.status] %>"><%- auditConst.statusString[auditor.status] %></span>
|
|
|
- </p>
|
|
|
- <p class="text-muted mb-0"><%- auditor.role %></p>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
-
|
|
|
- <!--审批意见-->
|
|
|
- <% if(auditor.times === ctx.stage.times && auditor.status !== auditConst.status.uncheck) { %>
|
|
|
- <div class="card-body p-3 border-top">
|
|
|
- <% if (ctx.stage.times === idx + 1 && auditor.status === auditConst.status.checking) { %>
|
|
|
- <label>审批意见<b class="text-danger">*</b></label>
|
|
|
- <textarea class="form-control form-control-sm"
|
|
|
- name="opinion">不同意</textarea>
|
|
|
- <% if (ctx.stage.curAuditor.aid === auditor.aid) { %>
|
|
|
- <div id="reject-process" class="alert alert-warning"
|
|
|
- style="margin-top: 15px;">
|
|
|
- <div class="form-check form-check-inline">
|
|
|
- <input class="form-check-input" type="radio" name="checkType"
|
|
|
- id="inlineRadio1" value="<%- auditConst.status.checkNo %>">
|
|
|
- <label class="form-check-label" for="inlineRadio1">退回原报
|
|
|
- <%- ctx.stage.user.name %></label>
|
|
|
+ <div class="card-body px-3 py-0">
|
|
|
+ <div class="card-text p-2 py-3 row">
|
|
|
+ <div class="col">
|
|
|
+ <span class="h6"><%- ctx.stage.user.name %></span>
|
|
|
+ <span class="text-muted ml-1"><%- ctx.stage.user.role %></span>
|
|
|
</div>
|
|
|
- <% if (auditor.order > 1 && auditor.aid !== auditors[0].aid) { %>
|
|
|
- <div class="form-check form-check-inline">
|
|
|
- <input class="form-check-input" type="radio" name="checkType"
|
|
|
- id="inlineRadio2"
|
|
|
- value="<%- auditConst.status.checkNoPre %>">
|
|
|
- <label class="form-check-label" for="inlineRadio2">退回上一审批人
|
|
|
- <%- auditors.find(item => item.sort === auditor.sort-1).name %>
|
|
|
- </label>
|
|
|
+ <div class="col">
|
|
|
+ <span class="pull-right text-success"><i class="fa fa-check-circle"></i></span>
|
|
|
</div>
|
|
|
- <% } %>
|
|
|
</div>
|
|
|
- <% } %>
|
|
|
- <% } else if(auditor.status === auditConst.status.checked){ %>
|
|
|
- <p style="margin: 0;"><%- auditor.opinion %></p>
|
|
|
- <% } %>
|
|
|
</div>
|
|
|
- <% } %>
|
|
|
</div>
|
|
|
</div>
|
|
|
</li>
|
|
|
- <% } else {%>
|
|
|
- <li class="timeline-list-item pb-2 <% if (auditor.status === auditConst.status.uncheck && idx === ctx.stage.auditHistory.length - 1 && ctx.stage.auditHistory.length !== 1) { %>is_uncheck<% } %>">
|
|
|
+ <% } %>
|
|
|
+ <li class="timeline-list-item pb-2 <% if (group.status === auditConst.status.uncheck && idx === ctx.stage.auditHistory.length - 1 && ctx.stage.auditHistory.length !== 1) { %>is_uncheck<% } %>">
|
|
|
+ <% if (his.endYear) { %>
|
|
|
<div class="timeline-item-date">
|
|
|
- <%- ctx.helper.formatDate(auditor.end_time) %>
|
|
|
+ <%- group.beginYear %>
|
|
|
+ <span title="<%- group.beginTime %>"><%- group.beginDate %></span>
|
|
|
</div>
|
|
|
- <% if(index < auditors.length - 1) { %>
|
|
|
+ <% } %>
|
|
|
+ <% if (index < his.length - 1) { %>
|
|
|
<div class="timeline-item-tail"></div>
|
|
|
<% } %>
|
|
|
- <% if(auditor.status === auditConst.status.checked) { %>
|
|
|
- <div class="timeline-item-icon bg-success text-light">
|
|
|
- <i class="fa fa-check"></i>
|
|
|
- </div>
|
|
|
- <% } else if(auditor.status === auditConst.status.checkNo || auditor.status === auditConst.status.checkNoPre || auditor.status === auditConst.status.checkCancel) {%>
|
|
|
- <div class="timeline-item-icon bg-warning text-light">
|
|
|
- <i class="fa fa-level-up"></i>
|
|
|
- </div>
|
|
|
- <% } else if(auditor.status === auditConst.status.checking) { %>
|
|
|
- <div class="timeline-item-icon bg-warning text-light">
|
|
|
- <i class="fa fa-ellipsis-h"></i>
|
|
|
- </div>
|
|
|
+ <% if (group.status === auditConst.status.checked) { %>
|
|
|
+ <div class="timeline-item-icon bg-success text-light"><i class="fa fa-check"></i></div>
|
|
|
+ <% } else if (group.status === auditConst.status.checkNo || group.status === auditConst.status.checkNoPre || group.status === auditConst.status.checkCancel) { %>
|
|
|
+ <div class="timeline-item-icon bg-warning text-light"><i class="fa fa-level-up"></i></div>
|
|
|
+ <% } else if (group.status === auditConst.status.checking) { %>
|
|
|
+ <div class="timeline-item-icon bg-warning text-light"><i class="fa fa-ellipsis-h"></i></div>
|
|
|
<% } else { %>
|
|
|
- <div class="timeline-item-icon bg-secondary text-light">
|
|
|
- </div>
|
|
|
+ <div class="timeline-item-icon bg-secondary text-light"></div>
|
|
|
<% } %>
|
|
|
<div class="timeline-item-content">
|
|
|
+ <div class="py-1">
|
|
|
+ <span class="text-black-50">
|
|
|
+ <%- (!group.is_final ? group.audit_order : '终') %>审
|
|
|
+ <% if (group.audit_type !== auditType.key.common) { %><span class="text-<%- auditType.info[group.audit_type].class %> "><%- auditType.info[group.audit_type].long %></span><% } %>
|
|
|
+ </span>
|
|
|
+ <span class="pull-right <%- auditConst.statusClass[group.status] %>"><%- auditConst.statusString[group.status] %></span>
|
|
|
+ </div>
|
|
|
<div class="card">
|
|
|
- <div class="card-body p-3">
|
|
|
- <div class="card-text">
|
|
|
- <p class="mb-1"><span class="h5"><%- auditor.name %></span>
|
|
|
- <span class="pull-right <%- auditConst.statusClass[auditor.status] %>">
|
|
|
- <%- auditor.status !== auditConst.status.uncheck ? auditConst.statusString[auditor.status] : ''%>
|
|
|
- <%- auditor.status === auditConst.status.checkNo ? ctx.stage.user.name : '' %>
|
|
|
- <%- auditor.status === auditConst.status.checkNoPre && auditor.sort - 1 > 0 ? ctx.helper._.find(auditors, { sort: auditor.sort - 1 }).name : '' %>
|
|
|
- </span>
|
|
|
- </p>
|
|
|
- <p class="text-muted mb-0"><%- auditor.role %></p>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <!--审批意见-->
|
|
|
- <% if(auditor.times === ctx.stage.times && auditor.status !== auditConst.status.uncheck) { %>
|
|
|
- <div class="card-body p-3 border-top">
|
|
|
- <% if (ctx.stage.times === idx + 1 && auditor.status === auditConst.status.checking) { %>
|
|
|
- <label>审批意见<b class="text-danger">*</b></label>
|
|
|
- <textarea class="form-control form-control-sm"
|
|
|
- name="opinion">不同意</textarea>
|
|
|
- <% if (ctx.stage.curAuditor.aid === auditor.aid) { %>
|
|
|
- <div id="reject-process" class="alert alert-warning"
|
|
|
- style="margin-top: 15px;">
|
|
|
- <div class="form-check form-check-inline">
|
|
|
- <input class="form-check-input" type="radio" name="checkType"
|
|
|
- id="inlineRadio1" value="<%- auditConst.status.checkNo %>">
|
|
|
- <label class="form-check-label" for="inlineRadio1">退回原报
|
|
|
- <%- ctx.stage.user.name %></label>
|
|
|
+ <div class="card-body px-3 py-0">
|
|
|
+ <% for (const [i, auditor] of group.auditors.entries()) { %>
|
|
|
+ <div class="card-text p-2 py-3 row <%- ( i > 0 ? 'border-top' : '') %>">
|
|
|
+ <div class="col">
|
|
|
+ <span class="h6"><%- auditor.name %></span>
|
|
|
+ <span class="text-muted ml-1"><%- auditor.role %></span>
|
|
|
+ </div>
|
|
|
+ <div class="col">
|
|
|
+ <% if (auditor.status === auditConst.status.checked) { %>
|
|
|
+ <span class="pull-right text-success"><i class="fa fa-check-circle"></i></span>
|
|
|
+ <% } if (auditor.status === auditConst.status.checkNo || auditor.status === auditConst.status.checkNoPre || auditor.status === auditConst.status.checkCancel) { %>
|
|
|
+ <span class="pull-right text-warning"><i class="fa fa-share-square fa-rotate-270"></i></span>
|
|
|
+ <% } else if (auditor.status === auditConst.status.checking) { %>
|
|
|
+ <span class="pull-right text-warning"><i class="fa fa-commenting"></i></span>
|
|
|
+ <% } %>
|
|
|
</div>
|
|
|
- <% if (auditor.order > 1 && auditor.aid !== auditors[0].aid) { %>
|
|
|
- <div class="form-check form-check-inline">
|
|
|
- <input class="form-check-input" type="radio" name="checkType"
|
|
|
- id="inlineRadio2"
|
|
|
- value="<%- auditConst.status.checkNoPre %>">
|
|
|
- <label class="form-check-label" for="inlineRadio2">退回上一审批人
|
|
|
- <%- auditors.find(item => item.sort === auditor.sort-1).name %>
|
|
|
- </label>
|
|
|
+ <% if (auditor.status !== auditConst.status.uncheck && auditor.opinion) { %>
|
|
|
+ <div class="col-12 py-1 bg-light"><i class="fa fa-commenting-o mr-1"></i><%- auditor.opinion%></div>
|
|
|
+ <% } %>
|
|
|
+ <% if (auditor.status === auditConst.status.checking && auditor.aid === ctx.session.sessionUser.accountId) { %>
|
|
|
+ <div class="col-12 py-1 bg-light">
|
|
|
+ <textarea class="form-control form-control-sm" name="opinion">不同意</textarea>
|
|
|
+ <div class="alert alert-warning mt-1 mb-0 p-2">
|
|
|
+ <div class="form-check form-check-inline">
|
|
|
+ <input class="form-check-input" type="radio" name="checkType" id="inlineRadio1" value="<%- auditConst.status.checkNo %>">
|
|
|
+ <label class="form-check-label" for="inlineRadio1">退回原报 <%- ctx.stage.user.name %></label>
|
|
|
+ </div>
|
|
|
+ <% if (auditor.audit_order > 1) { %>
|
|
|
+ <div class="form-check form-check-inline">
|
|
|
+ <input class="form-check-input" type="radio" name="checkType" id="inlineRadio2" value="<%- auditConst.status.checkNoPre %>">
|
|
|
+ <label class="form-check-label" for="inlineRadio2">退回上一审批人
|
|
|
+ <% const pre = his.find(x => { return x.audit_order === auditor.audit_order - 1}); %>
|
|
|
+ <% (pre.audit_type === auditType.key.common ? pre.auditors[0].name : `${pre.audit_order}审`)%>
|
|
|
+ </label>
|
|
|
+ </div>
|
|
|
+ <% } %>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
<% } %>
|
|
|
</div>
|
|
|
<% } %>
|
|
|
- <% } else { %>
|
|
|
- <p style="margin: 0;"><%- auditor.opinion %></p>
|
|
|
- <% } %>
|
|
|
-
|
|
|
</div>
|
|
|
- <% } %>
|
|
|
</div>
|
|
|
</div>
|
|
|
</li>
|
|
|
- <% } %>
|
|
|
<% }) %>
|
|
|
</ul>
|
|
|
</div>
|