Forráskód Böngészése

变更删除功能和审批位置排版调整

laiguoran 6 éve
szülő
commit
aae67a27db

+ 10 - 10
app/const/audit.js

@@ -136,7 +136,7 @@ const status = {
     uncheck: 1,     // 待上报
     checking: 2,    // 审批中
     checked: 3,     // 审批完成
-    checkNo: 4,     // 审批终止
+    // checkNo: 4,     // 审批终止
     back: 5,        // 重新上报
     backnew: 6,     // 退回
 };
@@ -144,7 +144,7 @@ const statusButton = [];
 statusButton[status.uncheck] = '上报';
 statusButton[status.checking] = '审批';
 statusButton[status.checked] = '';
-statusButton[status.checkNo] = '';
+// statusButton[status.checkNo] = '';
 statusButton[status.back] = '重新上报';
 statusButton[status.backnew] = '审批';
 
@@ -152,7 +152,7 @@ const statusButtonClass = [];
 statusButtonClass[status.uncheck] = 'btn-primary';
 statusButtonClass[status.checking] = 'btn-success';
 statusButtonClass[status.checked] = '';
-statusButtonClass[status.checkNo] = '';
+// statusButtonClass[status.checkNo] = '';
 statusButtonClass[status.back] = 'btn-warning';
 statusButtonClass[status.backnew] = 'btn-success';
 
@@ -160,7 +160,7 @@ const statusString = [];
 statusString[status.uncheck] = '';
 statusString[status.checking] = '审批中';
 statusString[status.checked] = '完成';
-statusString[status.checkNo] = '终止';
+// statusString[status.checkNo] = '终止';
 statusString[status.back] = '退回';
 statusString[status.backnew] = '退回';
 
@@ -168,7 +168,7 @@ const statusClass = [];
 statusClass[status.uncheck] = '';
 statusClass[status.checking] = 'text-warning';
 statusClass[status.checked] = 'text-success';
-statusClass[status.checkNo] = 'text-danger';
+// statusClass[status.checkNo] = 'text-danger';
 statusClass[status.back] = 'text-warning';
 statusClass[status.backnew] = 'text-warning';
 
@@ -179,7 +179,7 @@ const auditStatus = {
     uncheck: 1,     // 待审批
     checking: 2,    // 审批中或者原报人待上报
     checked: 3,     // 审批通过或者原报人上报完成
-    checkNo: 4,     // 审批终止
+    // checkNo: 4,     // 审批终止
     back: 5,       // 退回到原报人重新上报
     backnew: 6,    // 退回到上一个审批人
 };
@@ -188,7 +188,7 @@ const auditStatusString = [];
 auditStatusString[auditStatus.uncheck] = '待上报';
 auditStatusString[auditStatus.checking] = '审批中';
 auditStatusString[auditStatus.checked] = '审批通过';
-auditStatusString[auditStatus.checkNo] = '审批终止';
+// auditStatusString[auditStatus.checkNo] = '审批终止';
 auditStatusString[auditStatus.back] = '退回';
 auditStatusString[auditStatus.backnew] = '审批退回';
 
@@ -196,7 +196,7 @@ const auditStatusClass = [];
 auditStatusClass[auditStatus.uncheck] = '';
 auditStatusClass[auditStatus.checking] = 'text-warning';
 auditStatusClass[auditStatus.checked] = 'text-success';
-auditStatusClass[auditStatus.checkNo] = 'text-danger';
+// auditStatusClass[auditStatus.checkNo] = 'text-danger';
 auditStatusClass[auditStatus.back] = 'text-warning';
 auditStatusClass[auditStatus.backnew] = 'text-warning';
 
@@ -208,7 +208,7 @@ const filter = {
         uncheck: 5,
         checking: 2,
         checked: 3,
-        checkNo: 4,
+        // checkNo: 4,
     },
     statusString: [],
 };
@@ -216,7 +216,7 @@ filter.statusString[filter.status.pending] = '待处理';
 filter.statusString[filter.status.uncheck] = '待上报';
 filter.statusString[filter.status.checking] = '进行中';
 filter.statusString[filter.status.checked] = '已完成';
-filter.statusString[filter.status.checkNo] = '终止';
+// filter.statusString[filter.status.checkNo] = '终止';
 
 module.exports = {
     ledger,

+ 18 - 4
app/controller/change_controller.js

@@ -144,7 +144,6 @@ module.exports = app => {
          */
         async index(ctx) {
             try {
-                console.log(ctx);
                 await this._filterChanges(ctx);
             } catch (err) {
                 this.log(err);
@@ -455,7 +454,6 @@ module.exports = app => {
                     throw '上报失败';
                 }
                 if (ctx.request.body.changestatus !== undefined && parseInt(ctx.request.body.changestatus) === 2) {
-                    console.log('hello');
                     ctx.body = { err: 0, msg: '保存成功' };
                 } else {
                     ctx.redirect('/tender/' + ctx.session.sessionUser.tenderId + '/change');
@@ -477,7 +475,6 @@ module.exports = app => {
          */
         async approval(ctx) {
             try {
-                console.log(ctx.request.body);
                 const changeData = await ctx.service.change.getDataByCondition({cid: ctx.request.body.change_id});
                 if (!changeData) {
                     throw '变更令数据错误';
@@ -639,7 +636,6 @@ module.exports = app => {
             };
             try {
                 const data = JSON.parse(ctx.request.body.data);
-                console.log(data.id);
                 const fileInfo = await ctx.service.changeAtt.getDataById(data.id);
                 if (fileInfo !== undefined && fileInfo !== '') {
                     // 先删除文件
@@ -663,6 +659,24 @@ module.exports = app => {
 
             ctx.body = responseData;
         }
+
+        /**
+         * 删除变更令
+         * @param {Object} ctx - egg全局变量
+         * @return {void}
+         */
+        async delete(ctx) {
+            try {
+                const result = await ctx.service.change.delete(ctx.request.body.cid);
+                if (!result) {
+                    throw '删除变更令失败';
+                }
+                ctx.redirect(ctx.request.header.referer);
+            } catch (err) {
+                console.log(err);
+                ctx.redirect(ctx.request.header.referer);
+            }
+        }
     }
 
     return ChangeController;

+ 52 - 1
app/public/css/main.css

@@ -19,6 +19,22 @@ body {
   color:#333;
   font-weight: 600
 }
+.custom-file-sm,.custom-file-sm .custom-file-label{
+  height: calc(1.5em + .5rem + 2px);
+  padding-top: .25rem;
+  padding-bottom: .25rem;
+  padding-left: .5rem;
+}
+.custom-file-sm .custom-file-label:after{
+  height: calc(1.4em + .5rem + 2px);
+padding-top: .25rem;
+padding-bottom: .25rem;
+font-size: .875rem;
+}
+.custom-file-sm input{
+  height: calc(1.5em + .5rem + 2px);
+font-size: .875rem;
+}
 /*自定义css*/
 .in-1{padding-left:5px!important}
 .in-2{padding-left:21px!important}
@@ -57,7 +73,7 @@ body {
 .sjs-height-1,.sjs-height-2,.sjs-sh-1,.sjs-sh-2,.sjs-sh-3,.sjs-sh-4,.sjs-sh-5{
   overflow: hidden;
 }
-.sjs-height-4,.sjs-height-5,.sjs-height-6{
+.sjs-height-4,.sjs-height-5,.sjs-height-6,.sjs-option-height{
   overflow: auto;
 }
 .sjs-bottom{
@@ -148,6 +164,36 @@ body {
   border-right: 1px solid #ddd;
   width: 200px;
 }
+.side-fold{
+  position: absolute;
+  bottom:10px;
+  right:20px;
+}
+.min-side .side-fold{
+  position: absolute;
+  bottom:15px;
+  right:5px;
+  height: 20px
+}
+.min-side{
+  border-right: 1px solid #ddd;
+  margin-right:10px;
+  padding-right:15px;
+  position: relative;
+}
+.min-side .side-switch i{
+  font-size: 20px
+}
+.min-side .side-menu{
+  position: absolute;
+  left:-15px;
+  top:50px;
+  background:#fff;
+  width:150px;
+  border-right:1px solid #ddd;
+  border-bottom:1px solid #ddd;
+  box-shadow: 0 1px 3px rgba(0,0,0,.1);
+}
 .panel-content{
   padding:65px 0 0;
   position: relative;
@@ -158,6 +204,7 @@ body {
 }
 .panel-content .content-wrap{
   margin:0 15px 15px;
+  position: relative;
 }
 .panel-sidebar+.panel-content{
   padding: 65px 0 0 200px;
@@ -434,6 +481,10 @@ body {
 .nav-box .nav-list li{
   position: relative;
 }
+.contarl-box{
+  padding:1rem 2rem 1rem 2rem;
+  border-top:1px solid #ddd;
+}
 .nav-list li a{
   color: #333;
   display: block;

+ 6 - 1
app/public/js/change.js

@@ -224,6 +224,11 @@ $(document).ready(() => {
         $('#setting').modal('hide');
         postData('/tender/'+ $('#tenderId').val() +'/rule/first', '', function () {
         });
-    })
+    });
+
+    // 弹出删除变更框赋值
+    $('.delete-cid-modal').on('click', function () {
+        $('#delete-cid').val($(this).attr('cid'));
+    });
 
 });

+ 1 - 0
app/router.js

@@ -164,6 +164,7 @@ module.exports = app => {
     app.post('/change/upload/file', sessionAuth, 'changeController.uploadFile');
     app.get('/change/download/file/:id', sessionAuth, 'changeController.downloadFile');
     app.post('/change/delete/file', sessionAuth, 'changeController.deleteFile');
+    app.post('/tender/:id/change/delete', sessionAuth, tenderCheck, 'changeController.delete');
 
     app.post('/change/save', sessionAuth, 'changeController.save');
 

+ 34 - 0
app/service/change.js

@@ -9,6 +9,8 @@
  */
 
 const audit = require('../const/audit');
+const fs = require('fs');
+const path = require('path');
 
 module.exports = app => {
     class Change extends app.BaseService {
@@ -711,6 +713,38 @@ module.exports = app => {
             // }
             return changes;
         }
+
+        /**
+         * 查询可用的变更令
+         * @param { string } cid - 查询的清单
+         * @return {Promise<*>} - 可用的变更令列表
+         */
+        async delete(cid) {
+            // 初始化事务
+            this.transaction = await this.db.beginTransaction();
+            let result = false;
+            try {
+                // 先删除清单,审批人列表
+                await this.transaction.delete(this.ctx.service.changeAuditList.tableName, { cid });
+                await this.transaction.delete(this.ctx.service.changeAudit.tableName, { cid });
+                // 再删除附件和附件文件
+                const attList = await this.ctx.service.changeAtt.getAllDataByCondition({ where: { cid } });
+                if (attList.length !== 0) {
+                    for (const att of attList) {
+                        await fs.unlinkSync(path.join(this.app.baseDir, att.filepath));
+                    }
+                    await this.transaction.delete(this.ctx.service.changeAtt.tableName, { cid });
+                }
+                // 最后删除变更令
+                await this.transaction.delete(this.tableName, { cid });
+                await this.transaction.commit();
+                result = true;
+            } catch (e) {
+                await this.transaction.rollback();
+                result = false;
+            }
+            return result;
+        }
     }
     return Change;
 };

+ 2 - 1
app/view/change/index.ejs

@@ -30,7 +30,7 @@
                 <tr>
                     <th width="20%">变更令号</th><th width="30%">工程名称</th>
                     <th width="10%">变更类别</th><th width="10%">变更金额</th>
-                    <th width="10%">审批状态</th><th>审批进度</th>
+                    <th width="10%">审批状态</th><th>审批进度</th><th></th>
                 </tr>
                 </thead>
                 <tbody id="changeList">
@@ -66,6 +66,7 @@
                         <span class="<%- auditConst.auditStatusClass[c.changeAudit.status] %>"><%- auditConst.auditStatusString[c.changeAudit.status] %></span>
                     </td>
                     <% } %>
+                    <td><% if (c.status === auditConst.status.uncheck || c.status === auditConst.status.back) { %><a href="#del-bg" cid="<%= c.cid %>" data-toggle="modal" data-target="#del-bg" class="btn btn-outline-danger btn-sm delete-cid-modal">删除</a><% } %></td>
                 </tr>
                 <% } %>
                 </tbody>

+ 21 - 31
app/view/change/info.ejs

@@ -89,6 +89,25 @@
                 <li><a href="#files" aria-controls="files" data-toggle="tab"><span class="ml-3">附件</span></a></li>
             </ul>
         </div>
+        <div class="contarl-box">
+            <!--info状态区分-->
+            <% if (auditStatus === 1) { %>
+                <a href="#sub-ap" data-category="up_change" data-toggle="modal" data-target="#sub-ap" class="btn btn-primary btn-sm btn-block">上报审批</a>
+            <% } else if (auditStatus === 2) { %>
+                <a href="#sub-sp2" data-category="up_change" data-toggle="modal" data-target="#sub-sp2" class="btn btn-primary btn-sm btn-block">重新上报</a>
+            <% } else if (auditStatus === 3) { %>
+                <a href="#sp-list" data-toggle="modal" data-target="#sp-list" class="btn btn-outline-warning btn-sm btn-block text-muted">审批退回</a>
+            <% } else if (auditStatus === 4) { %>
+                <a href="#sp-list" data-toggle="modal" data-target="#sp-list" class="btn btn-outline-success btn-sm  btn-block">审批完成</a>
+            <% } else if (auditStatus === 5) { %>
+                <a href="#sp-list" data-toggle="modal" data-target="#sp-list" class="btn btn-outline-danger btn-sm  btn-block">审批终止</a>
+            <% } else if (auditStatus === 6) { %>
+                <a href="#sp-done" data-toggle="modal" data-target="#sp-done" class="btn btn-success btn-sm btn-block">审批通过</a>
+                <a href="#sp-back" data-toggle="modal" data-target="#sp-back" class="btn btn-warning btn-sm btn-block">审批退回</a>
+            <% } else if (auditStatus === 7) { %>
+                <a href="#sp-list" data-toggle="modal" data-target="#sp-list" class="btn btn-outline-secondary btn-sm btn-block">审批中</a>
+            <% } %>
+        </div>
     </div>
 </div>
 <div class="panel-content">
@@ -134,38 +153,9 @@
             <input id="tenderId" value="<%= tender.id %>" type="hidden">
             <input id="changeId" value="<%= change.cid %>" type="hidden">
             <!--info状态区分-->
-            <% if (auditStatus === 1) { %>
-            <div>
-                <button class="btn btn-sm btn-success pull-right" id="save_change">保存修改</button>
-                <a href="#sub-ap" data-category="up_change" data-toggle="modal" data-target="#sub-ap" class="btn btn-primary btn-sm pull-right">上报审批</a>
-                <!--<a href="#" class="btn btn-outline-danger btn-sm pull-right text-truncate" style="max-width: 100px;" title="删除 <%- change.code %>">删除 <%- change.code %></a>-->
-            </div>
-            <% } else if (auditStatus === 2) { %>
-            <div>
-                <button class="btn btn-sm btn-success pull-right" id="save_change">保存修改</button>
-                <a href="#sub-sp2" data-category="up_change" data-toggle="modal" data-target="#sub-sp2" class="btn btn-primary btn-sm pull-right">重新上报</a>
-                <!--<a href="#" class="btn btn-outline-danger btn-sm pull-right text-truncate" style="max-width: 100px;" title="删除 <%- change.code %>">删除 <%- change.code %></a>-->
-            </div>
-            <% } else if (auditStatus === 3) { %>
-            <div>
-                <a href="#sp-list" data-toggle="modal" data-target="#sp-list" class="btn btn-outline-warning btn-sm pull-right text-muted">审批退回</a>
-            </div>
-            <% } else if (auditStatus === 4) { %>
-            <div>
-                <a href="#sp-list" data-toggle="modal" data-target="#sp-list" class="btn btn-outline-success btn-sm pull-right">审批完成</a>
-            </div>
-            <% } else if (auditStatus === 5) { %>
-            <div>
-                <a href="#sp-list" data-toggle="modal" data-target="#sp-list" class="btn btn-outline-danger btn-sm pull-right">审批终止</a>
-            </div>
-            <% } else if (auditStatus === 6) { %>
-            <div>
-                <a href="#sp-done" data-toggle="modal" data-target="#sp-done" class="btn btn-success btn-sm pull-right">审批通过</a>
-                <a href="#sp-back" data-toggle="modal" data-target="#sp-back" class="btn btn-warning btn-sm pull-right">审批退回</a>
-            </div>
-            <% } else if (auditStatus === 7) { %>
+            <% if (auditStatus === 1 || auditStatus === 2) { %>
             <div>
-                <a href="#sp-list" data-toggle="modal" data-target="#sp-list" class="btn btn-outline-secondary btn-sm pull-right">审批中</a>
+                <button class="btn btn-sm btn-success pull-right" id="save_change"><i class="fa fa-save"></i> 保存修改</button>
             </div>
             <% } %>
         </div>

+ 9 - 9
app/view/change/info_modal.ejs

@@ -284,7 +284,7 @@
                                     <% } else if (al.usite !== 0 && al.status === 4) { %>
                                     <span class="text-danger pull-right">审批终止</span>
                                     <% } else if (al.usite !== 0 && (al.status === 5 || al.status === 6)) { %>
-                                    <span class="text-warning pull-right">审批退回 </span>
+                                    <span class="text-warning pull-right">审批退回 <% if (al.status === 5) {%><%= auditList3[time][0].name %><% } %></span>
                                     <% } %>
                                     <h5 class="card-title">
                                         <% if (al.usite === 0 && al.status === 2 ) { %>
@@ -366,7 +366,7 @@
                                 <% if (a.status === 2) { %>
                                     <div class="form-group">
                                         <label>审批意见<b class="text-danger">*</b></label>
-                                        <textarea class="form-control" name="sdesc"></textarea>
+                                        <textarea class="form-control" name="sdesc">同意</textarea>
                                         <input type="hidden" name="audit_id" value="<%= a.id %>">
                                         <% if (a.usort !== 0 && index+1 === auditList.length) { %>
                                         <!--终审填写批复编号-->
@@ -437,25 +437,25 @@
                                     <% if (a.status === 2) { %>
                                         <div class="form-group">
                                             <label>审批意见<b class="text-danger">*</b></label>
-                                            <textarea class="form-control" name="sdesc"></textarea>
+                                            <textarea class="form-control" name="sdesc">不同意</textarea>
                                             <input type="hidden" name="audit_id" value="<%= a.id %>">
                                         </div>
                                         <div class="alert alert-warning">
                                             <div class="form-check form-check-inline">
-                                                <input class="form-check-input" type="radio" name="status" id="change-back" value="5">
+                                                <input class="form-check-input" type="radio" name="status" id="change-back" value="5" <% if (index === 1) { %>checked<% } %>>
                                                 <label class="form-check-label" for="change-back">退回上报 <%= auditList[0].name %></label>
                                             </div>
                                             <% if (index !== 1) { %>
                                             <div class="form-check form-check-inline">
-                                                <input class="form-check-input" type="radio" name="status" id="chagne-backnew" value="6">
+                                                <input class="form-check-input" type="radio" name="status" id="chagne-backnew" value="6" <% if (index !== 1) { %>checked<% } %>>
                                                 <label class="form-check-label" for="chagne-backnew">退回上一审批人 <%= auditList[index-1].name %></label>
                                                 <input type="hidden" name="audit_last_id" value="<%= auditList[index-1].id %>">
                                             </div>
                                             <% } %>
-                                            <div class="form-check form-check-inline">
-                                                <input class="form-check-input" type="radio" name="status" id="change-stop" value="4">
-                                                <label class="form-check-label" for="change-stop">终止</label>
-                                            </div>
+                                            <!--<div class="form-check form-check-inline">-->
+                                                <!--<input class="form-check-input" type="radio" name="status" id="change-stop" value="4">-->
+                                                <!--<label class="form-check-label" for="change-stop">终止</label>-->
+                                            <!--</div>-->
                                         </div>
                                         <div class="alert alert-danger change-approval-stop" style="display: none">
                                             审批终止,将结束本次审批,本条变更令作废。

+ 19 - 0
app/view/change/modal.ejs

@@ -1,3 +1,22 @@
+<!--删除标段-->
+<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" value="<%= ctx.csrf %>" />
+                <button type="button" class="btn btn-secondary" data-dismiss="modal">取消</button>
+                <button type="submit" class="btn btn-danger">确定删除</button>
+            </form>
+        </div>
+    </div>
+</div>
 <% if (tender.user_id === uid) { %>
 <!--弹出添加变更令-->
 <div class="modal fade" id="add-bj" data-backdrop="static">