Ver código fonte

项目节列表,文件夹,删除调整

MaiXinRong 3 meses atrás
pai
commit
c140696be6
2 arquivos alterados com 25 adições e 11 exclusões
  1. 13 5
      app/controller/sub_proj_controller.js
  2. 12 6
      app/public/js/sub_project.js

+ 13 - 5
app/controller/sub_proj_controller.js

@@ -15,6 +15,14 @@ const path = require('path');
 module.exports = app => {
     class SubProjController extends app.BaseController {
 
+        async _loadCount(projectList){
+            for (const p of projectList) {
+                p.tender_count = await this.ctx.service.tender.count({ spid: p.id });
+                p.contract_count = await this.ctx.service.contract.count({ spid: p.id });
+                p.file_count = await this.ctx.service.file.count({ spid: p.id, is_deleted: 0 });
+            }
+        }
+
         /**
          * 概算投资
          *
@@ -29,11 +37,7 @@ module.exports = app => {
                 };
                 renderData.budgetStd = await ctx.service.budgetStd.getDataByProjectId(ctx.session.sessionProject.id);
                 renderData.projectList = await ctx.service.subProject.getSubProject(ctx.session.sessionProject.id, ctx.session.sessionUser.accountId, ctx.session.sessionUser.is_admin);
-                for (const p of renderData.projectList) {
-                    p.tender_count = await ctx.service.tender.count({ spid: p.id });
-                    p.contract_count = await ctx.service.contract.count({ spid: p.id });
-                    p.file_count = await ctx.service.file.count({ spid: p.id, is_deleted: 0 });
-                }
+                await this._loadCount(renderData.projectList);
                 renderData.tenderList = await ctx.service.tender.getManageTenderList(ctx.session.sessionProject.id);
                 const accountList = await ctx.service.projectAccount.getAllDataByCondition({
                     columns: ['id', 'name', 'company', 'role', 'enable', 'is_admin', 'account_group', 'mobile'],
@@ -62,6 +66,7 @@ module.exports = app => {
                 const data = JSON.parse(ctx.request.body.data);
                 if (!data.name || data.name.length > 100) throw '文件夹名称有误';
                 const result = await ctx.service.subProject.addFolder(data);
+                await this._loadCount(result);
                 ctx.body = { err: 0, msg: '', data: result };
             } catch (err) {
                 ctx.log(err);
@@ -74,6 +79,7 @@ module.exports = app => {
                 const data = JSON.parse(ctx.request.body.data);
                 if (!data.name || data.name.length > 100) throw '项目名称有误';
                 const result = await ctx.service.subProject.addSubProject(data);
+                await this._loadCount(result);
                 ctx.body = { err: 0, msg: '', data: result };
             } catch (err) {
                 ctx.log(err);
@@ -86,6 +92,7 @@ module.exports = app => {
                 const data = JSON.parse(ctx.request.body.data);
                 if (!data.drag_id || !data.drop_id) throw '提交数据错误';
                 const result = await ctx.service.subProject.dragTo(data);
+                await this._loadCount(result);
                 ctx.body = { err: 0, msg: '', data: result };
             } catch (err) {
                 ctx.log(err);
@@ -98,6 +105,7 @@ module.exports = app => {
                 const data = JSON.parse(ctx.request.body.data);
                 if (!data.id || !data.type) throw '提交数据错误';
                 const result = await ctx.service.subProject.move(data);
+                await this._loadCount(result);
                 ctx.body = { err: 0, msg: '', data: result };
             } catch (err) {
                 ctx.log(err);

+ 12 - 6
app/public/js/sub_project.js

@@ -58,15 +58,21 @@ $(document).ready(function() {
                 html.push(`<td>`);
                 if (canEdit) {
                     html.push('<button class="btn btn-outline-primary btn-sm ml-1" name="edit">编辑</button>');
-                    const delHint = node.tender_count > 0 ? '请先删除所有标段' : (node.contract_count > 0 ? '请先删除所有合同' : (node.file_count > 0 ? '请先删除所有资料归集文件' : ''));
-                    if (delHint) {
-                        html.push(`<button class="btn btn-outline-secondary btn-sm ml-1" data-toggle="tooltip" data-placement="top" data-original-title="${delHint}" name="del">删除</button>`);
-                    } else {
-                        html.push('<button class="btn btn-outline-danger btn-sm ml-1" name="del">删除</button>');
-                    }
                     html.push('<button class="btn btn-outline-primary btn-sm ml-1" name="up"><i class="fa fa-arrow-up"></i></button>');
                     html.push('<button class="btn btn-outline-primary btn-sm ml-1" name="down"><i class="fa fa-arrow-down"></i></button>');
                     html.push('<button class="btn btn-outline-primary btn-sm ml-1" name="top">顶层</button>');
+                    if (node.is_folder) {
+                        if (!node.children || node.children.length === 0) {
+                            html.push('<button class="btn btn-outline-danger btn-sm ml-1" name="del">删除</button>');
+                        }
+                    } else {
+                        const delHint = node.tender_count > 0 ? '请先删除所有标段' : (node.contract_count > 0 ? '请先删除所有合同' : (node.file_count > 0 ? '请先删除所有资料归集文件' : ''));
+                        if (delHint) {
+                            html.push(`<button class="btn btn-outline-secondary btn-sm ml-1" data-toggle="tooltip" data-placement="top" data-original-title="${delHint}" name="del">删除</button>`);
+                        } else {
+                            html.push('<button class="btn btn-outline-danger btn-sm ml-1" name="del">删除</button>');
+                        }
+                    }
                 }
                 html.push('</td>');
                 return html.join('');