Selaa lähdekoodia

1. 权限,新增删除附件
2. 台账分解,删除附件功能

MaiXinRong 1 vuosi sitten
vanhempi
commit
2e782a5cb5

+ 5 - 0
app/const/account_permission.js

@@ -32,6 +32,7 @@ const permission = {
             { title: '批量设置材差清单', value: 4, show: false, hint: '开启该选项,当前账号可设置允许调差的清单', hintIcon: 'fa-question-circle' },
             { title: '变更意向', value: 5, show: false, hint: '开启该选项,变更立项可新建变更意向书', hintIcon: 'fa-question-circle' },
             { title: '查看项目管理报表数据', value: 6, hint: '开启该选项,当前账号在报表下可查看项目管理数据', hintIcon: 'fa-question-circle' },
+            { title: '删除附件', value: 7, hint: '开启该选项,可删除审批通过前自己上传的附件', hintIcon: 'fa-question-circle' },
         ],
         tips: '勾选「创建标段」该用户默认具有「新建标段」及标段内「台账分解」「创建台账修订」「创建计量期」「创建工程变更」的权限。',
     },
@@ -88,12 +89,16 @@ const PermissionCheck = {
         if (!permission) return false;
         switch (key) {
             case 'viewPmData': return permission && permission.tender ? permission.tender.indexOf('6') >= 0 : false;
+            case 'delFile': return permission && permission.tender ? permission.tender.indexOf('7') >= 0 : false;
             default: return false;
         }
     },
     viewPmData: function (permission) {
         return this.check(permission, 'viewPmData');
     },
+    delFile: function(permission) {
+        return this.check(permission, 'delFile');
+    }
 };
 // 用户重新发送权限默认值
 const noticeAgain = {

+ 2 - 0
app/controller/ledger_controller.js

@@ -23,6 +23,7 @@ const xlsx = require('js-xlsx');
 const stdConst = require('../const/standard');
 const sendToWormhole = require('stream-wormhole');
 const spreadSetting = require('../lib/spread_setting');
+const PermissionCheck = require('../const/account_permission').PermissionCheck;
 
 module.exports = app => {
 
@@ -153,6 +154,7 @@ module.exports = app => {
                     syncLedgerUrl: syncLedger ? `${ctx.app.config.url3f}/${syncLedger.pull_class}/sync-tz/${tender.id}` : '',
                     nodeType: stdConst.nodeType,
                     authMobile: pa.auth_mobile,
+                    deleteFilePermission: PermissionCheck.delFile(this.ctx.session.sessionUser.permission),
                 };
                 if ((tender.data.ledger_status === auditConst.status.uncheck || tender.data.ledger_status === auditConst.status.checkNo) && tender.data.user_id === ctx.session.sessionUser.accountId) {
                     // renderData.accountGroup = accountGroup;

+ 41 - 4
app/public/js/ledger.js

@@ -4695,6 +4695,31 @@ $(document).ready(function() {
           $(this).find('input:checkbox').prop("checked", isCheck);
       })
   });
+  $('body').on('click', 'a[name=att-delete]', function() {
+      const fid = this.getAttribute('file-id');
+      if (!fid) return;
+
+      const node = SpreadJsObj.getSelectObject(ledgerSpread.getActiveSheet());
+      const data = {id: fid};
+      postData('/tender/' + tender.id + '/ledger/delete/file', data, function (result) {
+          // 删除到attData中
+          const att_index = attData.findIndex(function (item) {
+              return item.id === parseInt(fid);
+          });
+          attData.splice(att_index, 1);
+          // 重新生成List
+
+          if ($('#alllist-table tr').length === 1) {
+              getAllList(parseInt($('#currentPage').text()) - 1);
+
+          } else {
+              getAllList(parseInt($('#currentPage').text()));
+          }
+          getNodeList(node.id);
+          $('#showAttachment').hide();
+          $('#showAttachment').attr('file-id', '');
+      });
+  })
 });
 // 生成当前节点列表
 function getNodeList(node) {
@@ -4702,12 +4727,18 @@ function getNodeList(node) {
   for(const att of attData) {
       if (node === att.lid) {
           // html += '<tr><td><a href="javascript:void(0)" file-id="'+ att.id +'">'+ att.filename + att.fileext +'</a></td><td>'+ att.username +'</td></tr>';
+          const delHtml = deleteFilePermission && parseInt(cur_uid) === att.uid
+              ? `<a class="ml-1 text-danger" href="javascript:void(0)" name="att-delete" file-id="${att.id}"><i class="fa fa-close" title="删除"></i></a>`
+              : '';
           html += `<tr>
           <td width="25"><input type="checkbox" class="check-file" file-id=${att.id}></td>
           <td>
           <div class="d-flex">
-              <a href="javascript:void(0)" class="pl-0 col-11 att-file-name" file-id=${att.id}>${att.filename}${att.fileext}</a>
-              <a href="/tender/${tender.id}/ledger/download/file/${att.id}" class="col-1 pl-0 att-file-btn"><i class="fa fa-download"></i></a>
+              <a href="javascript:void(0)" class="pl-0 col-10 att-file-name" file-id=${att.id}>${att.filename}${att.fileext}</a>
+              <div class="att-file-btn col-2">
+              <a href="/tender/${tender.id}/ledger/download/file/${att.id}" class="pl-0"><i class="fa fa-download"></i></a>
+              ${delHtml}
+              </div>
           </div>
           </td><td>${att.username}</td></tr>`
       }
@@ -4734,12 +4765,18 @@ function getAllList(currPageNum = 1) {
   currPageFileData = currPageAttData;
   let html = '';
   for(const att of currPageAttData) {
+      const delHtml = deleteFilePermission && parseInt(cur_uid) === att.uid
+          ? `<a class="ml-1 text-danger" href="javascript:void(0)" name="att-delete" file-id="${att.id}"><i class="fa fa-close" title="删除"></i></a>`
+          : '';
       html += `<tr>
       <td width="25"><input type="checkbox" class="check-file" file-id=${att.id}></td>
       <td>
       <div class="d-flex">
-          <a href="javascript:void(0)" class="pl-0 col-11 att-file-name" file-id=${att.id}>${att.filename}${att.fileext}</a>
-          <a href="/tender/${tender.id}/ledger/download/file/${att.id}" class="col-1 pl-0 att-file-btn"><i class="fa fa-download"></i></a>
+          <a href="javascript:void(0)" class="pl-0 col-10 att-file-name" file-id=${att.id}>${att.filename}${att.fileext}</a>
+          <div class="att-file-btn col-2">
+              <a href="/tender/${tender.id}/ledger/download/file/${att.id}" class="pl-0"><i class="fa fa-download"></i></a>
+              ${delHtml}
+          </div>
       </div>
       </td><td>${att.username}</td></tr>`
   }

+ 1 - 0
app/view/ledger/explode.ejs

@@ -356,6 +356,7 @@
 <script type="text/javascript">
     const readOnly = <%- ctx.tender.ledgerReadOnly %>;
     const contractExpr = <%- !!ctx.session.sessionProject.page_show.openContractExpr && tender.ledger_status === auditConst.status.checked %>;
+    const deleteFilePermission = <%- deleteFilePermission %>;
     const tender = JSON.parse('<%- JSON.stringify(tender) %>');
     const tenderInfo = JSON.parse(unescape('<%- escape(JSON.stringify(tenderInfo)) %>'));
     const thousandth = <%- ctx.tender.info.display.thousandth %>;