|
@@ -54,170 +54,171 @@
|
|
|
<div class="col-4">
|
|
|
<div class="card mt-3">
|
|
|
<ul class="list-group list-group-flush">
|
|
|
- <li class="list-group-item">
|
|
|
- <i class="fa fa fa-play-circle fa-rotate-90"></i> <%- ctx.advance.user.name %>
|
|
|
- <small class="text-muted"><%- ctx.advance.user.role %></small><span
|
|
|
- class="pull-right">原报</span>
|
|
|
+ <% auditors.forEach((item, idx) => { %>
|
|
|
+ <% if (idx === 0) { %>
|
|
|
+ <li class="list-group-item" data-auditorId="<%- item.audit_id %>">
|
|
|
+ <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>
|
|
|
- <% for (let i = 0; i < ctx.advance.auditors2.length; i++) { %>
|
|
|
- <li class="list-group-item">
|
|
|
- <% if (i < ctx.advance.auditors2.length - 1) { %>
|
|
|
- <i class="fa fa-chevron-circle-down"></i> <%- ctx.advance.auditors2[i].name %>
|
|
|
- <small class="text-muted"><%- ctx.advance.auditors2[i].role %></small><span
|
|
|
- class="pull-right"><%= ctx.helper.transFormToChinese(i+1) %>审</span>
|
|
|
- <% } else { %>
|
|
|
- <i class="fa fa fa-stop-circle"></i> <%- ctx.advance.auditors2[i].name %> <small
|
|
|
- class="text-muted"><%- ctx.advance.auditors2[i].role %></small><span
|
|
|
- class="pull-right">终审</span>
|
|
|
- <% } %>
|
|
|
+ <% } else if(idx === auditors.length -1 && idx !== 0) { %>
|
|
|
+ <li class="list-group-item" data-auditorId="<%- item.audit_id %>">
|
|
|
+ <i class="fa fa fa-stop-circle"></i> <%- item.name %>
|
|
|
+ <small class="text-muted"><%- item.role %></small>
|
|
|
+ <span class="pull-right">终审</span>
|
|
|
+ </li>
|
|
|
+ <% } else {%>
|
|
|
+ <li class="list-group-item" data-auditorId="<%- item.audit_id %>">
|
|
|
+ <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>
|
|
|
<% } %>
|
|
|
+ <% }) %>
|
|
|
</ul>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="col-8 modal-height-500" style="overflow: auto">
|
|
|
- <% for (const ah of ctx.advance.auditHistory) { %>
|
|
|
- <div class="card mt-3">
|
|
|
- <ul class="list-group list-group-flush">
|
|
|
- <% for (let iA = 0; iA < ah.length; iA++) { %>
|
|
|
- <% if (iA === 0) { %>
|
|
|
- <li class="list-group-item">
|
|
|
- <h5 class="card-title">
|
|
|
- <i class="fa fa-play-circle fa-rotate-90 text-success"></i>
|
|
|
- <%- ctx.advance.user.name %> <small
|
|
|
- class="text-muted"><%- ctx.advance.user.role %></small><span
|
|
|
- class="pull-right">原报</span>
|
|
|
- </h5>
|
|
|
- <div class="ml-3">
|
|
|
- <span
|
|
|
- class="text-success"><small><%- ctx.helper.formatFullDate(ah[iA].create_time) %></small>
|
|
|
- <% if (ctx.advance.auditHistory.indexOf(ah) > 0) { %>重新<% } %>上报</span>
|
|
|
- </div>
|
|
|
- </li>
|
|
|
- <li class="list-group-item">
|
|
|
- <h5 class="card-title">
|
|
|
- <i
|
|
|
- class="fa <%if (iA === ah.length - 1) { %>fa-stop-circle<% } else { %>fa-chevron-circle-down<% } %> <%- auditConst.statusClass[ah[iA].status] %>"></i>
|
|
|
- <%- ah[iA].name %> <small class="text-muted"><%- ah[iA].role %></small><span
|
|
|
- class="pull-right"><%= ah[iA].sort === ah[iA].max_sort ? '终' : ctx.helper.transFormToChinese(ah[iA].sort) %>审</span>
|
|
|
- </h5>
|
|
|
- <div class="ml-3">
|
|
|
- <% if (ah[iA].status !== auditConst.status.uncheck) { %>
|
|
|
- <span
|
|
|
- class="<%- auditConst.statusClass[ah[iA].status] %>"><% if (ah[iA].status === auditConst.status.checked || ah[iA].status === auditConst.status.checkNo) { %><small><%- ctx.helper.formatFullDate(ah[iA].end_time) %></small>
|
|
|
- <% } %><%- auditConst.statusString[ah[iA].status]%><% if (ah[iA].status === auditConst.status.checkNo) { %>
|
|
|
- <%- ctx.advance.user.name %><% } %></span>
|
|
|
+ <% auditHistory.forEach((auditors, idx) => { %>
|
|
|
+ <!-- 收起历史流程 -->
|
|
|
+ <% if(idx > 0 && idx === 1) { %>
|
|
|
+ <div class="text-right"><a href="javascript: void(0);" id="fold-btn1">收起历史审批流程</a></div>
|
|
|
+ <% } %>
|
|
|
+
|
|
|
+ <div class="<%- idx < auditHistory.length - 1 ? 'fold-btn' : '' %>">
|
|
|
+ <div class="text-center text-muted" <%- idx === auditHistory.length - 1 ? `id="end-target"` : "" %> ><%- idx+1 %>#</div>
|
|
|
+ <ul class="timeline-list list-unstyled mt-2">
|
|
|
+ <% auditors.forEach((auditor, index) => { %>
|
|
|
+ <% if (index === 0) { %>
|
|
|
+ <li class="timeline-list-item pb-2">
|
|
|
+ <div class="timeline-item-date">
|
|
|
+ <%- ctx.helper.formatDate(auditor.create_time) %>
|
|
|
+ </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-content">
|
|
|
+ <div class="card">
|
|
|
+ <div class="card-body p-3">
|
|
|
+ <div class="card-text">
|
|
|
+ <p class="mb-1"><span
|
|
|
+ class="h5"><%- advance.user.name %></span><span
|
|
|
+ class="pull-right text-success"><%- idx !== 0 ? '重新' : '' %>上报审批</span>
|
|
|
+ </p>
|
|
|
+ <p class="text-muted mb-0"><%- advance.user.role %></p>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </li>
|
|
|
+ <li class="timeline-list-item pb-2">
|
|
|
+ <div class="timeline-item-date">
|
|
|
+ <%- ctx.helper.formatDate(auditor.end_time) %>
|
|
|
+ </div>
|
|
|
+ <% if(index < auditors.length - 1) { %>
|
|
|
+ <div class="timeline-item-tail"></div>
|
|
|
<% } %>
|
|
|
- <p class="card-text"><%- ah[iA].opinion %></p>
|
|
|
- </div>
|
|
|
- </li>
|
|
|
- <% } else if (iA === ah.length - 1) { %>
|
|
|
- <li class="list-group-item">
|
|
|
- <h5 class="card-title">
|
|
|
- <i class="fa fa-stop-circle <%- auditConst.statusClass[ah[iA].status] %>"></i>
|
|
|
- <%- ah[iA].name %> <small class="text-muted"><%- ah[iA].role %></small><span
|
|
|
- class="pull-right">终审</span>
|
|
|
- </h5>
|
|
|
- <div class="ml-3">
|
|
|
- <% if (ah[iA].status !== auditConst.status.uncheck) { %>
|
|
|
- <span
|
|
|
- class="<%- auditConst.statusClass[ah[iA].status] %>"><% if (ah[iA].status === auditConst.status.checked || ah[iA].status === auditConst.status.checkNo) { %><small><%- ctx.helper.formatFullDate(ah[iA].end_time) %></small>
|
|
|
- <% } %><%- auditConst.statusString[ah[iA].status]%><% if (ah[iA].status === auditConst.status.checkNo) { %>
|
|
|
- <%- ctx.advance.user.name %><% } %></span>
|
|
|
+ <% 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) {%>
|
|
|
+ <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>
|
|
|
<% } %>
|
|
|
- <p class="card-text"><%- ah[iA].opinion %></p>
|
|
|
- </div>
|
|
|
- </li>
|
|
|
- <% } else { %>
|
|
|
- <li class="list-group-item">
|
|
|
- <h5 class="card-title">
|
|
|
- <i
|
|
|
- class="fa <%if (iA === ah.length - 1) { %>fa-stop-circle<% } else { %>fa-chevron-circle-down<% } %> <%- auditConst.statusClass[ah[iA].status] %>"></i>
|
|
|
- <%- ah[iA].name %> <small class="text-muted"><%- ah[iA].role %></small><span
|
|
|
- class="pull-right"><%= ah[iA].sort === ah[iA].max_sort ? '终' : ctx.helper.transFormToChinese(ah[iA].sort) %>审</span>
|
|
|
- </h5>
|
|
|
- <div class="ml-3">
|
|
|
- <% if (ah[iA].status !== auditConst.status.uncheck) { %>
|
|
|
- <span
|
|
|
- class="<%- auditConst.statusClass[ah[iA].status] %>"><% if (ah[iA].status === auditConst.status.checked || ah[iA].status === auditConst.status.checkNo) { %><small><%- ctx.helper.formatFullDate(ah[iA].end_time) %></small>
|
|
|
- <% } %><%- auditConst.statusString[ah[iA].status]%><% if (ah[iA].status === auditConst.status.checkNo) { %>
|
|
|
- <%- ctx.advance.user.name %><% } %></span>
|
|
|
+ <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>
|
|
|
+ <!--审批意见-->
|
|
|
+ <div class="card-body p-3 border-top">
|
|
|
+ <% if (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">
|
|
|
+ <div class="timeline-item-date">
|
|
|
+ <%- ctx.helper.formatDate(auditor.end_time) %>
|
|
|
+ </div>
|
|
|
+ <% if(index < auditors.length - 1) { %>
|
|
|
+ <div class="timeline-item-tail"></div>
|
|
|
<% } %>
|
|
|
- <p class="card-text"><%- ah[iA].opinion %></p>
|
|
|
- </div>
|
|
|
- </li>
|
|
|
- <% } %>
|
|
|
- <% } %>
|
|
|
- </ul>
|
|
|
- </div>
|
|
|
- <% } %>
|
|
|
- <div class="card mt-3">
|
|
|
- <ul class="list-group list-group-flush">
|
|
|
- <li class="list-group-item">
|
|
|
- <h5 class="card-title">
|
|
|
- <i class="fa fa-play-circle fa-rotate-90 text-success"></i>
|
|
|
- <%- ctx.advance.user.name %> <small
|
|
|
- class="text-muted"><%- ctx.advance.user.role %></small><span
|
|
|
- class="pull-right">原报</span>
|
|
|
- </h5>
|
|
|
- <div class="ml-3">
|
|
|
- <span
|
|
|
- class="text-success"><small><%- ctx.helper.formatFullDate(ctx.advance.auditors[0].create_time) %></small>
|
|
|
- 上报</span>
|
|
|
- </div>
|
|
|
- </li>
|
|
|
- <% for (let iA = 0; iA < ctx.advance.auditors.length; iA++) { %>
|
|
|
- <% const auditors = ctx.advance.auditors; %>
|
|
|
- <li class="list-group-item">
|
|
|
- <% if (auditors[iA].status === auditConst.status.checked) { %>
|
|
|
- <h5 class="card-title">
|
|
|
- <i
|
|
|
- class="<%- (iA < auditors.length - 1 ? 'fa fa-chevron-circle-down text-success' : 'fa fa-stop-circle text-success') %>"></i>
|
|
|
- <%- auditors[iA].name %> <small
|
|
|
- class="text-muted"><%- auditors[iA].role %></small><span
|
|
|
- class="pull-right"><%= auditors[iA].sort === auditors[iA].max_sort ? '终' : ctx.helper.transFormToChinese(auditors[iA].sort) %>审</span>
|
|
|
- </h5>
|
|
|
- <div class="ml-3">
|
|
|
- <span
|
|
|
- class="text-success"><small><%- ctx.helper.formatFullDate(auditors[iA].end_time) %></small>
|
|
|
- 审批通过</span>
|
|
|
- <p class="card-text"><%- auditors[iA].opinion %></p>
|
|
|
- </div>
|
|
|
- <% } else if (auditors[iA].stauts == auditConst.status.checking) { %>
|
|
|
- <h5 class="card-title">
|
|
|
- <i
|
|
|
- class="<%- (iA < auditors.length - 1 ? 'fa fa-chevron-circle-down' : 'fa fa-stop-circle') %>"></i>
|
|
|
- <%- auditors[iA].name %> <small
|
|
|
- class="text-muted"><%- auditors[iA].role %></small><span
|
|
|
- class="pull-right"><%= auditors[iA].sort === auditors[iA].max_sort ? '终' : ctx.helper.transFormToChinese(auditors[iA].sort) %>审</span>
|
|
|
- </h5>
|
|
|
- <div class="ml-3">
|
|
|
- <span>审批中</span>
|
|
|
- <p class="card-text"><%- auditors[iA].opinion %></p>
|
|
|
- </div>
|
|
|
- <% } else { %>
|
|
|
- <h5 class="card-title">
|
|
|
- <i
|
|
|
- class="<%- (iA < auditors.length - 1 ? 'fa fa-chevron-circle-down' : 'fa fa-stop-circle') %>"></i>
|
|
|
- <%- auditors[iA].name %> <small
|
|
|
- class="text-muted"><%- auditors[iA].role %></small><span
|
|
|
- class="pull-right"><%= auditors[iA].sort === auditors[iA].max_sort ? '终' : ctx.helper.transFormToChinese(auditors[iA].sort) %>审</span>
|
|
|
- </h5>
|
|
|
- <div class="ml-3">
|
|
|
- <p class="card-text"><%- auditors[iA].opinion %></p>
|
|
|
- </div>
|
|
|
- <% } %>
|
|
|
- <% if (auditors[iA].status === auditConst.status.checked) { %>
|
|
|
- <% } else if (auditors[iA].status === auditConst.status.checking) { %>
|
|
|
- <div class="form-group">
|
|
|
- <label>审批意见<b class="text-danger">*</b></label>
|
|
|
- <textarea class="form-control form-control-sm" name="opinion">同意</textarea>
|
|
|
- </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) {%>
|
|
|
+ <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] %>"><%- auditor.status !== auditConst.status.uncheck ? auditConst.statusString[auditor.status] : ''%>
|
|
|
+ <%- auditor.status === auditConst.status.checkNo ? advance.user.name : '' %>
|
|
|
+ <%- auditor.status === auditConst.status.checkNoPre ? auditors[index-1].name : '' %>
|
|
|
+ </span>
|
|
|
+ </p>
|
|
|
+ <p class="text-muted mb-0"><%- auditor.role %></p>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <!--审批意见-->
|
|
|
+ <div class="card-body p-3 border-top">
|
|
|
+ <% if (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>
|
|
|
<% } %>
|
|
|
- </li>
|
|
|
- <% } %>
|
|
|
- </ul>
|
|
|
- </div>
|
|
|
+ <% }) %>
|
|
|
+ </ul>
|
|
|
+ </div>
|
|
|
+ <!-- 展开历史流程 -->
|
|
|
+ <% if(idx === auditHistory.length - 1) { %>
|
|
|
+ <div class="text-right"><a href="javascript: void(0);" id="fold-btn2" style="display: none;" data-target="<%- idx + 1 %>">展开历史审批流程</a></div>
|
|
|
+ <% } %>
|
|
|
+ <% }) %>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -1194,4 +1195,21 @@
|
|
|
if (!text) return null
|
|
|
return text.replace(/(\r\n)|(\n)/g, '<br/>').replace(/\s/g, ' ')
|
|
|
}
|
|
|
+
|
|
|
+ // 展开/收起历史审核记录
|
|
|
+ $('.modal-body #fold-btn1').click(function() {
|
|
|
+ $('.modal-body .fold-btn').slideUp('swing', () => {
|
|
|
+ $('.modal-body #end-target').text('1#')
|
|
|
+ $('.modal-body #fold-btn1').hide()
|
|
|
+ $('.modal-body #fold-btn2').show()
|
|
|
+ });
|
|
|
+ });
|
|
|
+ $('.modal-body #fold-btn2').click(function() {
|
|
|
+ const idx = $(this).data('target')
|
|
|
+ $('.modal-body .fold-btn').slideDown('swing', () => {
|
|
|
+ $('.modal-body #end-target').text(idx + '#')
|
|
|
+ $('.modal-body #fold-btn1').show()
|
|
|
+ $('.modal-body #fold-btn2').hide()
|
|
|
+ });
|
|
|
+ });
|
|
|
</script>
|