Browse Source

报表签名最近使用列表功能

laiguoran 5 years ago
parent
commit
4e778445e0

+ 2 - 0
app/controller/report_controller.js

@@ -40,6 +40,7 @@ module.exports = app => {
                 const stageList = await ctx.service.stage.getValidStagesShort(tender.id);
                 const prjAccList = await ctx.service.projectAccount.getAllAccountByProjectId(tender.data.project_id);
                 const roleList = await ctx.service.signatureRole.getSignatureRolesByTenderId(tender.id);
+                const usedList = await ctx.service.signatureUsed.getSignatureUsedByTenderId(tender.id);
 
                 // const allTpls = await ctx.service.rptTpl.getAllTplByIds(tmpRptIds);
                 // for (const tpl of allTpls) {
@@ -103,6 +104,7 @@ module.exports = app => {
                     stage_list: JSON.stringify(stageList),
                     prj_account_list: JSON.stringify(prjAccList),
                     role_list: JSON.stringify(roleList),
+                    used_list: JSON.stringify(usedList),
                     tenderMenu,
                     preUrl: '/tender/' + tender.id,
                     measureType,

+ 18 - 0
app/controller/signature_controller.js

@@ -54,6 +54,24 @@ module.exports = app => {
             ctx.status = 201;
         }
 
+        /**
+         * 更新最近使用签名
+         *
+         * @param {Object} ctx - egg全局context
+         * @return {void}
+         */
+        async updateSignatureUsed(ctx) {
+            const params = JSON.parse(ctx.request.body.params);
+            const used_time = ctx.request.body.create_time;
+            const signused = await ctx.service.signatureUsed.updateUsed(params, used_time);
+            const signUsedList = await ctx.service.signatureUsed.getSignatureUsedByTenderId(params.tender_id);
+            // const rst = await ctx.service.signatureRole.createRole(params.name, params.bind_acc_id, params.prj_id, params.tender_id);
+            // console.log(rst);
+            ctx.body = { data: signUsedList };
+            // ctx.body = { data: { msg: 'test the network' } };
+            ctx.status = 201;
+        }
+
     }
 
     return ReportController;

+ 2 - 1
app/public/report/js/rpt_main.js

@@ -320,6 +320,7 @@ let zTreeOprObj = {
                     }
                     // zTreeOprObj.resetESignature(zTreeOprObj.currentRptPageRst);
                     rptSignatureHelper.buildSelectableAccount();
+                    rptSignatureHelper.buildSelectableAccountUsed();
                     rptSignatureHelper.buildRoleDom(ROLE_LIST);
                     me.showPage(1, canvas);
                 } else {
@@ -776,4 +777,4 @@ function getStageOrder() {
 
 function getStageTimes() {
     return current_stage_times;
-}
+}

+ 44 - 0
app/public/report/js/rpt_signature.js

@@ -65,6 +65,33 @@ let rptSignatureHelper = {
         accDiv.append(prj_accounts.join(''));
         accSelect.append(prj_sel_option_accounts.join(''));
     },
+    buildSelectableAccountUsed: function () {
+        //PRJ_ACCOUNT_LIST
+        //1. 清理所有选择项
+        // $("#project_account_select_div").empty();
+        let accDiv = $('#account_used_select_div');
+        accDiv.empty();
+
+        //2. 一个个加可选用户项
+        const prj_accounts = [];
+        for (let uidx = 0; uidx < USED_LIST.length; uidx++) {
+            const accIdx = PRJ_ACCOUNT_LIST.findIndex(function(item) {
+                return item.id === USED_LIST[uidx].uid;
+            });
+            if (accIdx === -1 || accIdx === undefined) {
+                continue;
+            }
+            const prjAccount = PRJ_ACCOUNT_LIST[accIdx];
+            let roleKey = prjAccount.role;
+            if (roleKey === '') {
+                roleKey = DFT_ROLE_NAME;
+            }
+            //push item
+            prj_accounts.push('<li class="add-sign-list-item"><a href="javascript:void(0)" onclick="rptSignatureHelper.createEsignatureByAccIdx(' + accIdx + ')" class="btn-link pull-right" title="添加" data-dismiss="modal"><i class="fa fa-plus"></i></a>' +
+                prjAccount.name + '-<small class="text-muted">' + roleKey + '</small></li>');
+        }
+        accDiv.append(prj_accounts.join(''));
+    },
     createEsignatureByAccIdx: function (accIdx) {
         rptSignatureHelper.createPreSelectedSignature(PRJ_ACCOUNT_LIST[accIdx], null);
     },
@@ -131,6 +158,23 @@ let rptSignatureHelper = {
             //.appendChild(pNode);
             //*/
             // 2.2 date-picker
+
+            // 更新最近使用名单
+            const params = {};
+            params.uid = userAcc.id;
+            params.prj_id = PROJECT_ID;
+            params.tender_id = TENDER_ID;
+            CommonAjax.postXsrfEx("/tender/report_api/updateSignatureUsed", params, 10000, true, getCookie('csrfToken'),
+                function(result){
+                    console.log(result);
+                    USED_LIST = result.data;
+                    rptSignatureHelper.buildSelectableAccountUsed();
+                }, function(err){
+                    // hintBox.unWaitBox();
+                }, function(ex){
+                    // hintBox.unWaitBox();
+                }
+            );
         }
     },
     cleanOldSignature: function (signature_name) {

+ 1 - 0
app/router.js

@@ -209,6 +209,7 @@ module.exports = app => {
     app.get('/getFileByUUID/:uuid/:rptName/:suffix', sessionAuth, 'reportController.getFileByUUID');
     // rptRouter.get('/getFileByUUID/:uuid/:rptName/:suffix', reportController.getFileByUUID);
     app.post('/tender/report_api/createSignatureRole', sessionAuth, 'signatureController.createSignatureRole');
+    app.post('/tender/report_api/updateSignatureUsed', sessionAuth, datetimeFill, 'signatureController.updateSignatureUsed');
     app.post('/tender/report_api/updateRoleRelationship', sessionAuth, 'signatureController.updateRoleRel');
     app.post('/tender/report_api/createRoleRelationship', sessionAuth, 'signatureController.createRoleRel');
     // 变更管理

+ 2 - 1
app/service/signature_used.js

@@ -28,6 +28,7 @@ module.exports = app => {
                 value: tenderId,
                 operate: '=',
             });
+            this.sqlBuilder.orderBy = [['used_time', 'desc']];
             // this.sqlBuilder.columns = ['id', 'uid', 'prj_id', 'tender_id', 'used_time'];
             const [sql, sqlParam] = this.sqlBuilder.build(this.tableName);
             const list = await this.db.query(sql, sqlParam);
@@ -52,7 +53,7 @@ module.exports = app => {
                         id: used.id,
                         used_time,
                     };
-                    rst = await this.transaction.insert(this.tableName, updateData);
+                    rst = await this.transaction.update(this.tableName, updateData);
                 }
                 await this.transaction.commit();
             } catch (ex) {

+ 1 - 0
app/view/report/index.ejs

@@ -211,6 +211,7 @@
     const STAGE_LIST = <%- stage_list %>;
     const PRJ_ACCOUNT_LIST = <%- prj_account_list %>;
     const ROLE_LIST = <%- role_list %>;
+    let USED_LIST = <%- used_list %>;
     const STAGE_STATUS = <%- stg_status %>;
     let STAGE_AUDIT = [];
     let ROLE_REL_LIST = [];

+ 1 - 2
app/view/report/rpt_all_popup.ejs

@@ -235,8 +235,7 @@
                     </div>
                     <div class="tab-pane fade" id="adst-3" role="tabpanel" aria-labelledby="contact-tab">
                         <div class="modal-height-300">
-                            <ul class="list-group">
-                            </ul>
+                            <ul class="list-group" id="account_used_select_div"></ul>
                         </div>
                     </div>
                 </div>