From 8e003c1a94d26cc4d477e7aa03593ccb4d7e6c61 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期五, 11 十月 2024 17:47:40 +0800
Subject: [PATCH] 2024-10-11

---
 src/templates/zshare/verifycard/baseform/index.jsx |  192 ++++++++++++++++++++++++++++++++++-------------
 1 files changed, 137 insertions(+), 55 deletions(-)

diff --git a/src/templates/zshare/verifycard/baseform/index.jsx b/src/templates/zshare/verifycard/baseform/index.jsx
index d67515e..cbfc412 100644
--- a/src/templates/zshare/verifycard/baseform/index.jsx
+++ b/src/templates/zshare/verifycard/baseform/index.jsx
@@ -1,7 +1,7 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
 import { fromJS } from 'immutable'
-import { Form, Row, Col, Select, Radio, Tooltip, Input } from 'antd'
+import { Form, Row, Col, Select, Radio, Tooltip, Input, message } from 'antd'
 import { QuestionCircleOutlined } from '@ant-design/icons'
 
 import Api from '@/api'
@@ -25,61 +25,65 @@
   state = {
     wxTemps: [],
     selectTemp: null,
-    miniTemps: []
+    WXApps: null
   }
 
   componentDidMount() {
-    let wxTemps = sessionStorage.getItem('wxTemplates')
+    const { appType, verify } = this.props
 
-    if (window.GLOB.WXAppID && window.GLOB.nginx && !wxTemps) {
-      Api.wxAccessToken().then(res => {
-        let wxtoken = res.oa_access_token || ''
-        // let minitoken = res.mini_access_token || ''
-  
-        if (wxtoken) {
-          Api.wxNginxRequest(`cgi-bin/template/get_all_private_template?access_token=${wxtoken}`, 'get').then(res => {
-            let temps = []
-            if (res.template_list) {
-              temps = res.template_list.filter(item => {
-                if (!item.primary_industry || sysTempsIds.includes(item.template_id)) return false
-                if (item.content) {
-                  item.content = item.content.replace('{{first.DATA}}\n', '').replace('\n{{remark.DATA}}', '')
-                }
+    let appId = window.GLOB.WXAppID || ''
 
-                return true
-              })
-            }
-            
-            sessionStorage.setItem('wxTemplates', JSON.stringify(temps))
-            localStorage.setItem('wxTemplates', JSON.stringify(temps))
+    if (window.GLOB.WXApps && !appType) {
+      let apps = window.GLOB.WXApps.filter(app => app.appType === 'public')
 
-            localStorage.removeItem('wxTemplates')
+      if (apps.length > 0) {
+        this.setState({WXApps: apps})
+      }
 
-            this.resetTemps(temps)
-          })
-        } else {
-          sessionStorage.setItem('wxTemplates', JSON.stringify([]))
-          localStorage.setItem('wxTemplates', JSON.stringify([]))
+      if (verify.wxAppId && apps.findIndex(item => item.appId === verify.wxAppId) > -1) {
+        appId = verify.wxAppId
+      }
+    }
 
-          localStorage.removeItem('wxTemplates')
-        }
-        // if (minitoken) {
-        //   Api.wxNginxRequest(`wxaapi/newtmpl/gettemplate?access_token=${minitoken}`, 'get').then(res => {
-        //     if (res.errmsg === 'ok' && res.data) {
-        //       sessionStorage.setItem('wxMiniTemplates', JSON.stringify(res.data))
-        //     } else {
-        //       sessionStorage.setItem('wxMiniTemplates', JSON.stringify([]))
-        //     }
-        //   })
-        // } else {
-        //   sessionStorage.setItem('wxMiniTemplates', JSON.stringify([]))
-        // }
-      })
+    let wxTemps = sessionStorage.getItem('wxTemplates' + appId)
+
+    if (appId && !wxTemps) {
+      if (verify.wxNote === 'true') {
+        this.getTemps(appId)
+      }
     } else if (wxTemps) {
       wxTemps = JSON.parse(wxTemps)
 
       this.resetTemps(wxTemps)
+    } else {
+      this.resetTemps([])
     }
+  }
+
+  getTemps = (appId) => {
+    // cgi-bin/template/get_all_private_template
+    Api.directRequest({
+      url: window.GLOB.baseurl + 'wechat/get_all_private_template?appid=' + appId,
+      method: 'get',
+    }).then(res => {
+      let temps = []
+      if (res.template_list) {
+        temps = res.template_list.filter(item => {
+          if (!item.content || item.content.length < 25 || sysTempsIds.includes(item.template_id)) return false
+          if (item.content) {
+            item.content = item.content.replace('{{first.DATA}}\n', '').replace('\n{{remark.DATA}}', '')
+          }
+
+          return true
+        })
+      } else if (res.errcode && res.errmsg) {
+        message.warning(res.errcode + ': ' + res.errmsg)
+      }
+      
+      sessionStorage.setItem('wxTemplates' + appId, JSON.stringify(temps))
+
+      this.resetTemps(temps)
+    })
   }
 
   resetTemps = (wxTemps) => {
@@ -102,14 +106,14 @@
         content: '璁㈠崟绫诲瀷锛歿{keyword1.DATA}}\n璁㈠崟鍙凤細{{keyword2.DATA}}\n璁㈠崟鐘舵�侊細{{keyword3.DATA}}',
         example: '璁㈠崟绫诲瀷锛氶��绉熺敵璇穃r\n璁㈠崟鍙凤細TZ16101909\r\n璁㈠崟鐘舵�侊細寰呭彇璐�'
       },
-      {
-        template_id: 'mk_category_temp',
-        title: '绫荤洰妯℃澘',
-        primary_industry: '',
-        deputy_industry: '',
-        content: '',
-        example: ''
-      }
+      // {
+      //   template_id: 'mk_category_temp',
+      //   title: '绫荤洰妯℃澘',
+      //   primary_industry: '',
+      //   deputy_industry: '',
+      //   content: '',
+      //   example: ''
+      // }
     ]
     
     let _wxTemps = [...wxTemps, ...sysTemps]
@@ -181,6 +185,7 @@
       delete _verify.pre_func
     }
     if (_verify.wxNote !== 'true') {
+      delete _verify.wxAppId
       delete _verify.wxTemplateId
       delete _verify.wxNoteLink
       delete _verify.wxNoteLinkUrl
@@ -197,6 +202,18 @@
     }
 
     this.props.onChange(_verify)
+
+    if (key === 'wxNote' && value === 'true' && window.GLOB.WXAppID) {
+      let wxTemps = sessionStorage.getItem('wxTemplates' + window.GLOB.WXAppID)
+
+      if (wxTemps) {
+        wxTemps = JSON.parse(wxTemps)
+
+        this.resetTemps(wxTemps)
+      } else {
+        this.getTemps(window.GLOB.WXAppID)
+      }
+    }
   }
 
   onNoteCodeChange = (val, option) => {
@@ -231,7 +248,7 @@
 
     let keys = []
     if (option.props.content) {
-      keys = option.props.content.match(/{{[a-zA-Z0-9]+\.DATA}}/g)
+      keys = option.props.content.match(/{{[a-zA-Z0-9_]+\.DATA}}/g)
       keys = keys.map(key => key.replace(/{{|\.DATA}}/g, ''))
     }
 
@@ -260,6 +277,45 @@
     this.setState({selectTemp})
 
     this.props.onChange(_verify)
+  }
+
+  onWxAppChange = (val) => {
+    const { verify } = this.props
+
+    let _verify = {...verify, wxAppId: val, wxNote: 'false'}
+
+    delete _verify.wxTemplateId
+    delete _verify.wxNoteLink
+    delete _verify.wxNoteLinkUrl
+    delete _verify.wxNoteMiniId
+    delete _verify.wxNoteLinkMenuId
+    delete _verify.wxNoteCallback
+    delete _verify.wxCustomTempId
+
+    _verify.wxNoteKeys = null
+    
+    if (this.state.selectTemp) {
+      this.setState({selectTemp: null})
+    }
+
+    let _verify_ = fromJS(_verify).toJS()
+    _verify_.wxNote = 'true'
+
+    this.props.onChange(_verify)
+
+    setTimeout(() => {
+      this.props.onChange(_verify_)
+
+      let wxTemps = sessionStorage.getItem('wxTemplates' + val)
+
+      if (wxTemps) {
+        wxTemps = JSON.parse(wxTemps)
+
+        this.resetTemps(wxTemps)
+      } else {
+        this.getTemps(val)
+      }
+    }, 20)
   }
 
   onWxNoteKeyChange = (key, val) => {
@@ -300,7 +356,7 @@
 
   render() {
     const { unionFields, verify, notes, emailCodes, card, appType, columns, fields } = this.props
-    const { wxTemps, selectTemp } = this.state
+    const { wxTemps, selectTemp, WXApps } = this.state
     const formItemLayout = {
       labelCol: {
         xs: { span: 24 },
@@ -337,6 +393,16 @@
   
         _columns.push(col)
       })
+    }
+
+    let miniable = ''
+    if (window.GLOB.WXApps) {
+      let apps = window.GLOB.WXApps.filter(app => app.appType === 'miniProgram')
+
+      if (apps.length > 1) {
+        miniable = apps.map(app => `${app.appId}锛�${app.appName}锛塦)
+        miniable = miniable.join('锛�')
+      }
     }
 
     return (
@@ -636,7 +702,7 @@
           <Col span={24}></Col>
           <Col span={8}>
             <Form.Item label={
-              <Tooltip placement="bottomLeft" title={'璇峰湪鏈嶅姟鍣ㄥ畬鎴愬叕浼楀彿閰嶇疆銆�'}>
+              <Tooltip placement="bottomLeft" title="璇峰湪鏈嶅姟鍣ㄥ畬鎴愬叕浼楀彿閰嶇疆銆�">
                 <QuestionCircleOutlined className="mk-form-tip" />
                 鍏紬鍙锋秷鎭�
               </Tooltip>
@@ -647,6 +713,22 @@
               </Radio.Group>
             </Form.Item>
           </Col>
+          {verify.wxNote === 'true' && WXApps ? <Col span={8}>
+            <Form.Item label={
+              <Tooltip placement="bottomLeft" title="璇烽�夋嫨鍙戦�佹秷鎭殑鍏紬鍙枫��">
+                <QuestionCircleOutlined className="mk-form-tip" />
+                鍏紬鍙�
+              </Tooltip>
+            } required>
+              <Select value={verify.wxAppId || window.GLOB.WXAppID} onSelect={this.onWxAppChange}>
+                {WXApps.map(option =>
+                  <Select.Option key={option.appId} value={option.appId}>
+                    {option.appName}
+                  </Select.Option>
+                )}
+              </Select>
+            </Form.Item>
+          </Col> : null}
           {verify.wxNote === 'true' ? <Col span={8}>
             <Form.Item label="娑堟伅妯℃澘" required>
               <Select value={verify.wxTemplateId} onSelect={this.onWxTemplateChange}>
@@ -692,7 +774,7 @@
           </Col> : null}
           {verify.wxNoteLink === 'miniProgram' ? <Col span={8}>
             <Form.Item label={
-              <Tooltip placement="top" title="鍙寚瀹氳烦杞皬绋嬪簭鐨処D锛屾湭璁剧疆鏃堕粯璁や娇鐢ㄩ厤缃枃浠朵腑鐨勫皬绋嬪簭ID銆�">
+              <Tooltip placement="top" title={'鍙寚瀹氳烦杞皬绋嬪簭鐨処D锛屾湭璁剧疆鏃堕粯璁や娇鐢ㄩ厤缃枃浠朵腑鐨勫皬绋嬪簭ID銆�' + miniable}>
                 <QuestionCircleOutlined className="mk-form-tip" />
                 灏忕▼搴廔D
               </Tooltip>

--
Gitblit v1.8.0