瀏覽代碼

预付款微信通知

laiguoran 4 年之前
父節點
當前提交
b443992870
共有 5 個文件被更改,包括 89 次插入3 次删除
  1. 11 0
      app/const/sms_type.js
  2. 1 1
      app/const/wechat_template.js
  3. 25 0
      app/lib/wechat.js
  4. 51 1
      app/service/advance_audit.js
  5. 1 1
      app/view/profile/wechat.ejs

+ 11 - 0
app/const/sms_type.js

@@ -13,6 +13,7 @@ const smsConst = {
     BG: 'BG',
     XD: 'XD',
     TC: 'TC',
+    YFK: 'YFK',
 };
 const judgeConst = {
     approval: 1,
@@ -69,6 +70,16 @@ const smsType = {
             { title: '审批结果', value: 2 },
         ],
     },
+    YFK: {
+        name: '预付款',
+        path: '',
+        wechat: true,
+        sms: false,
+        children: [
+            { title: '需要我审批', value: 1 },
+            { title: '审批结果', value: 2 },
+        ],
+    },
 };
 
 module.exports = {

+ 1 - 1
app/const/wechat_template.js

@@ -21,7 +21,7 @@ const templateId = {
     ledger: 'ia3ObPVe_0A1GLVpU-jcDe1P6zVriJ36eAijeQvbpFM', // 台账和台账修订共用模板
     revise: 'ia3ObPVe_0A1GLVpU-jcDe1P6zVriJ36eAijeQvbpFM',
     material: 'Y9ov80rev3LHcoM2hOQE6jrK_5xZsqE-PZ0Z6HS9VGA',
-    advance: '',
+    advance: 'rgZHkyiLzrqaSGnQ2nSCCrOdUz2RJJZ_JA34L_MnQik',
 };
 const status = {
     check: '待审批',

+ 25 - 0
app/lib/wechat.js

@@ -162,6 +162,31 @@ class WX {
                             },
                         };
                         break;
+                    case wxConst.template.advance:
+                        templateId = wxConst.templateId.advance;
+                        remark = data.status === wxConst.status.check ? '微信暂无法在线审批' :
+                            (data.status === wxConst.status.success ? '审批已通过,查看审批结果' : '审批被退回,查看退回结果');
+                        msgData = {
+                            first: {
+                                value: '您好,预付款申请' + data.tips,
+                            },
+                            keyword1: {
+                                value: data.projectName,
+                            },
+                            keyword2: {
+                                value: data.tenderName,
+                            },
+                            keyword3: {
+                                value: data.qi,
+                            },
+                            keyword4: {
+                                value: data.tp ? data.tp.toString() : null,
+                            },
+                            remark: {
+                                value: remark + ',请登录PC端系统。',
+                            },
+                        };
+                        break;
                     default:break;
                 }
                 if (msgData !== '' && templateId) {

+ 51 - 1
app/service/advance_audit.js

@@ -3,6 +3,8 @@
 const auditConst = require('../const/audit').advance;
 const shenpiConst = require('../const/shenpi');
 const pushType = require('../const/audit').pushType;
+const smsTypeConst = require('../const/sms_type');
+const wxConst = require('../const/wechat_template.js');
 module.exports = app => {
     class AdvanceAudit extends app.BaseService {
         constructor(ctx) {
@@ -229,6 +231,16 @@ module.exports = app => {
                     id: audit.vid,
                     ...data,
                 });
+
+                // 微信模板通知
+                const advanceInfo = await this.ctx.service.advance.getDataById(vid);
+                const wechatData = {
+                    qi: advanceInfo.type === 0 ? '开工预付款第' + advanceInfo.order + '期' : '材料预付款第' + advanceInfo.order + '期',
+                    status: wxConst.status.check,
+                    tips: wxConst.tips.check,
+                    tp: parseFloat(advanceInfo.cur_amount),
+                };
+                await this.ctx.helper.sendWechat(audit.audit_id, smsTypeConst.const.YFK, smsTypeConst.judge.approval.toString(), wxConst.template.advance, wechatData);
                 await transaction.commit();
             } catch (err) {
                 await transaction.rollback();
@@ -265,6 +277,8 @@ module.exports = app => {
                 });
                 await transaction.insert(this.ctx.service.noticePush.tableName, records);
                 // 无下一审核人表示,审核结束
+
+                const advanceInfo = await this.ctx.service.advance.getDataById(advanceId);
                 if (nextAudit) {
                     // 流程至下一审批人
                     await transaction.update(this.tableName, { id: nextAudit.id, status: auditConst.status.checking, create_time: time });
@@ -274,12 +288,30 @@ module.exports = app => {
                         id: advanceId,
                         status: auditConst.status.checking,
                     });
+                    // 微信模板通知
+                    const wechatData = {
+                        qi: advanceInfo.type === 0 ? '开工预付款第' + advanceInfo.order + '期' : '材料预付款第' + advanceInfo.order + '期',
+                        status: wxConst.status.check,
+                        tips: wxConst.tips.check,
+                        tp: parseFloat(advanceInfo.cur_amount),
+                    };
+                    await this.ctx.helper.sendWechat(nextAudit.audit_id, smsTypeConst.const.YFK, smsTypeConst.judge.approval.toString(), wxConst.template.advance, wechatData);
                 } else {
                     await transaction.update(this.ctx.service.advance.tableName, {
                         id: advanceId,
                         status: checkData.checkType,
                         end_time: time,
                     });
+
+                    // 微信模板通知
+                    const users = this._.uniq(this._.concat(this._.map(auditors, 'audit_id'), advanceInfo.uid));
+                    const wechatData = {
+                        qi: advanceInfo.type === 0 ? '开工预付款第' + advanceInfo.order + '期' : '材料预付款第' + advanceInfo.order + '期',
+                        status: wxConst.status.success,
+                        tips: wxConst.tips.success,
+                        tp: parseFloat(advanceInfo.cur_amount),
+                    };
+                    await this.ctx.helper.sendWechat(users, smsTypeConst.const.YFK, smsTypeConst.judge.result.toString(), wxConst.template.advance, wechatData);
                 }
                 await transaction.commit();
             } catch (err) {
@@ -323,6 +355,16 @@ module.exports = app => {
                     status: checkData.checkType,
                     times: times + 1,
                 });
+                // 微信模板通知
+                const advanceInfo = await this.ctx.service.advance.getDataById(advanceId);
+                const users = this._.uniq(this._.concat(this._.map(auditors, 'audit_id'), advanceInfo.uid));
+                const wechatData = {
+                    qi: advanceInfo.type === 0 ? '开工预付款第' + advanceInfo.order + '期' : '材料预付款第' + advanceInfo.order + '期',
+                    status: wxConst.status.back,
+                    tips: wxConst.tips.back,
+                    tp: parseFloat(advanceInfo.cur_amount),
+                };
+                await this.ctx.helper.sendWechat(users, smsTypeConst.const.YFK, smsTypeConst.judge.result.toString(), wxConst.template.advance, wechatData);
                 // 拷贝新一次审核流程列表
                 await transaction.insert(this.tableName, auditors);
                 await transaction.commit();
@@ -380,7 +422,15 @@ module.exports = app => {
                     order: audit.order + 2,
                     status: auditConst.status.uncheck,
                 });
-
+                // 微信模板通知
+                const advanceInfo = await this.ctx.service.advance.getDataById(advanceId);
+                const wechatData = {
+                    qi: advanceInfo.type === 0 ? '开工预付款第' + advanceInfo.order + '期' : '材料预付款第' + advanceInfo.order + '期',
+                    status: wxConst.status.check,
+                    tips: wxConst.tips.check,
+                    tp: parseFloat(advanceInfo.cur_amount),
+                };
+                await this.ctx.helper.sendWechat(preAuditor.audit_id, smsTypeConst.const.YFK, smsTypeConst.judge.approval.toString(), wxConst.template.advance, wechatData);
                 await transaction.insert(this.tableName, newAuditors);
                 await transaction.commit();
             } catch (error) {

+ 1 - 1
app/view/profile/wechat.ejs

@@ -42,7 +42,7 @@
                                 <label class="col-auto col-form-label"><%= smsType[s].name %>
                                     <!--<a href="#sms-view" data-toggle="modal" data-target="#sms-view" class="ml-2"><i class="fa fa-info-circle"></i></a>-->
                                 </label>
-                                <div class="col-5">
+                                <div class="col-3">
                                     <% for (const c of smsType[s].children) { %>
                                     <div class="form-check ">
                                         <input class="form-check-input" id="<%= s %>_<%- c.value %>" type="checkbox" name="<%= s %>[]" value="<%= c.value %>" <% if (user_wxType !== null && user_wxType[s] !== undefined && user_wxType[s].indexOf(c.value.toString()) !== -1) { %>checked<% } %>>