From 9c7881671df362f10b6f923a2652cafddffcf487 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期日, 03 十二月 2023 09:55:45 +0800
Subject: [PATCH] 2023-12-03

---
 src/templates/zshare/verifycard/baseform/index.jsx    |   80 +++++++++++++++
 src/tabviews/zshare/actionList/normalbutton/index.jsx |  154 ++++++++++++++++++++++++++++--
 src/templates/zshare/verifycard/index.jsx             |   20 +++
 3 files changed, 236 insertions(+), 18 deletions(-)

diff --git a/src/tabviews/zshare/actionList/normalbutton/index.jsx b/src/tabviews/zshare/actionList/normalbutton/index.jsx
index d6c0450..09a0e4c 100644
--- a/src/tabviews/zshare/actionList/normalbutton/index.jsx
+++ b/src/tabviews/zshare/actionList/normalbutton/index.jsx
@@ -2372,6 +2372,9 @@
     if (btn.verify.noteEnable === 'true') {
       this.sendMessage(btn.verify, id)
     }
+    if (btn.verify.emailEnable === 'true') {
+      this.sendEmail(btn.verify, id)
+    }
     if (btn.verify.wxNote === 'true') {
       if (btn.verify.wxTemplateId === 'mk_category_temp') {
         let verify = fromJS(btn.verify).toJS()
@@ -2550,8 +2553,8 @@
   sendMessage = (verify, id) => {
     let param = {
       func: 's_get_sms_local',
-      TypeCharOne: verify.noteTemp, // N涓嶅悓鍐呭锛孻鐩稿悓鍐呭
-      TypeCharTwo: verify.noteType, // N瀹氭椂锛孻瀹炴椂
+      TypeCharOne: verify.noteTemp || 'Y', // N涓嶅悓鍐呭锛孻鐩稿悓鍐呭
+      TypeCharTwo: verify.noteType || 'N', // N瀹氭椂锛孻瀹炴椂
       upid: id
     }
 
@@ -2570,9 +2573,9 @@
       }
 
       let _param = {
-        templatecode: verify.noteCode, // 妯℃澘缂栫爜
-        TypeCharOne: verify.noteTemp,  // N涓嶅悓鍐呭锛孻鐩稿悓鍐呭
-        ID: verify.noteId || ''        // 妯℃澘Id锛屾殏鏃舵湭浣跨敤
+        templatecode: verify.noteCode,        // 妯℃澘缂栫爜
+        TypeCharOne: verify.noteTemp || 'Y',  // N涓嶅悓鍐呭锛孻鐩稿悓鍐呭
+        ID: verify.noteId || ''               // 妯℃澘Id锛屾殏鏃舵湭浣跨敤
       }
 
       _param.submitdate = res.submitdate
@@ -2580,17 +2583,17 @@
       let limit = 5 // 瀹炴椂鏈�澶т负5鏉★紝瀹氭椂鏈�澶т负100鏉�
       let mobMap = new Map()
 
-      if (verify.noteType === 'N') {
+      if (verify.noteType === 'Y') {
+        _param.func = 's_get_sms_sso_realtime'
+      } else {
         _param.func = 's_get_sms_sso_timer'
         limit = 100
-      } else if (verify.noteType === 'Y') {
-        _param.func = 's_get_sms_sso_realtime'
       }
 
       let Ltext = []
       let error = false
 
-      if (verify.noteTemp === 'Y') {
+      if (verify.noteTemp !== 'N') {
         _param.p1 = res.p1 || ''
         _param.p2 = res.p2 || ''
         _param.p3 = res.p3 || ''
@@ -2606,7 +2609,7 @@
 
       res.send_data && res.send_data.forEach(item => {
         if (item.mob && !mobMap.has(item.mob) && Ltext.length < limit) {
-          if (verify.noteTemp === 'Y') {
+          if (verify.noteTemp !== 'N') {
             Ltext.push(`'${item.mob}'`)
           } else {
             let _p = `'${item.p1 || ''}','${item.p2 || ''}','${item.p3 || ''}','${item.p4 || ''}','${item.p5 || ''}','${item.mob}'`
@@ -2678,6 +2681,137 @@
     })
   }
 
+  sendEmail = (verify, id) => {
+    let param = {
+      func: 's_get_email_local',
+      TypeCharOne: verify.emailTemp || 'Y', // N涓嶅悓鍐呭锛孻鐩稿悓鍐呭
+      TypeCharTwo: verify.emailType || 'N', // N瀹氭椂锛孻瀹炴椂
+      upid: id
+    }
+
+    param.LText = Utils.formatOptions(Utils.getuuid())
+    param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
+    param.secretkey = Utils.encrypt(param.LText, param.timestamp)
+
+    Api.genericInterface(param).then(res => {
+      if (!res.status) {
+        notification.warning({
+          top: 92,
+          message: res.message,
+          duration: 5
+        })
+        return
+      }
+
+      let _param = {
+        msn_email_temp_no: verify.emailCode,   // 妯℃澘缂栫爜
+        TypeCharOne: verify.emailTemp || 'Y',  // N涓嶅悓鍐呭锛孻鐩稿悓鍐呭
+        ID: verify.emailId || ''               // 妯℃澘Id锛屾殏鏃舵湭浣跨敤
+      }
+
+      _param.submitdate = res.submitdate
+
+      let limit = 5 // 瀹炴椂鏈�澶т负5鏉★紝瀹氭椂鏈�澶т负100鏉�
+      let mobMap = new Map()
+
+      if (verify.emailType === 'Y') {
+        _param.func = 's_get_email_sso_realtime'
+      } else {
+        _param.func = 's_get_email_sso_timer'
+        limit = 100
+      }
+
+      let Ltext = []
+      let error = false
+
+      if (verify.emailTemp !== 'N') {
+        _param.p1 = res.p1 || ''
+        _param.p2 = res.p2 || ''
+        _param.p3 = res.p3 || ''
+        _param.p4 = res.p4 || ''
+        _param.p5 = res.p5 || ''
+
+        let _p = _param.p1 + _param.p2 + _param.p3 + _param.p4 + _param.p5
+
+        if (/\/|\.|.*鍏�.*浜.*涔�.*杩憒闈㈣瘯|閭�璇穦涓嬭浇|绾㈠寘|鎷涜仒|濂借瘎|璇勪环|鏀垮姟閫氱煡|缂磋垂|淇濋櫓|鑲$エ|閲戣瀺|鎴垮湴浜鏁欒偛|娓告垙|寰俊|Q/.test(_p)) {
+          error = true
+        }
+      }
+
+      res.send_data && res.send_data.forEach(item => {
+        if (item.email && !mobMap.has(item.email) && Ltext.length < limit) {
+          if (verify.emailTemp !== 'N') {
+            Ltext.push(`'${item.email}'`)
+          } else {
+            let _p = `'${item.p1 || ''}','${item.p2 || ''}','${item.p3 || ''}','${item.p4 || ''}','${item.p5 || ''}','${item.email}'`
+
+            if (/\/|\.|.*鍏�.*浜.*涔�.*杩憒闈㈣瘯|閭�璇穦涓嬭浇|绾㈠寘|鎷涜仒|濂借瘎|璇勪环|鏀垮姟閫氱煡|缂磋垂|淇濋櫓|鑲$エ|閲戣瀺|鎴垮湴浜鏁欒偛|娓告垙|寰俊|Q/.test(_p)) {
+              error = true
+            }
+
+            Ltext.push(_p)
+          }
+          mobMap.set(item.email, true)
+        }
+      })
+
+      if (error) {
+        notification.warning({
+          top: 92,
+          message: '娑堟伅涓惈鏈夐潪娉曞瓧绗�',
+          duration: 5
+        })
+        return
+      }
+
+      if (Ltext.length === 0) return
+
+      Ltext = Ltext.join(';')
+
+      _param.LText = window.btoa(window.encodeURIComponent(Ltext))
+      _param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
+      _param.secretkey = Utils.encrypt(_param.LText, _param.timestamp)
+
+      _param.rduri = 'https://sso.mk9h.cn/webapi/dostars'
+
+      _param.userid = 'bh0bapabtd45epsgra79segbch6c1ibk'
+      _param.LoginUID = 'bh0bapabtd45epsgra79segbch6c1ibk'
+
+      Api.genericInterface(_param).then(result => {
+        if (!result.status) {
+          notification.warning({
+            top: 92,
+            message: result.message,
+            duration: 5
+          })
+        }
+      }, (error) => {
+        if (error && error.ErrCode === 'LoginError') {
+          let param = {
+            func: 's_visitor_login',
+            timestamp: moment().format('YYYY-MM-DD HH:mm:ss'), 
+            SessionUid: 'bh0bapabtd45epsgra79segbch6c1ibk',
+            TypeCharOne: 'pc',
+            appkey: '202004041613277377A6A2456D34A4948AE84'
+          }
+
+          param.LText = md5(window.btoa('bh0bapabtd45epsgra79segbch6c1ibk' + param.timestamp))
+          param.secretkey = md5(param.LText + 'mingke' + param.timestamp)
+
+          let params = {
+            url: 'https://sso.mk9h.cn/webapi/dologon',
+            method: 'post',
+            data: JSON.stringify(param)
+          }
+
+          Api.directRequest(params)
+
+          return
+        }
+      })
+    })
+  }
+
   /**
    * @description 鎿嶄綔澶辫触鍚庡鐞�
    * 1銆佺姸鎬佺爜涓� E銆丯銆丗銆丯M 鏃讹紝鏄剧ず鐩稿簲鎻愮ず淇℃伅
diff --git a/src/templates/zshare/verifycard/baseform/index.jsx b/src/templates/zshare/verifycard/baseform/index.jsx
index 705262e..e9f2311 100644
--- a/src/templates/zshare/verifycard/baseform/index.jsx
+++ b/src/templates/zshare/verifycard/baseform/index.jsx
@@ -17,6 +17,7 @@
     verify: PropTypes.object,
     unionFields: PropTypes.array,
     notes: PropTypes.array,
+    emailCodes: PropTypes.array,
     appType: PropTypes.any,
     onChange: PropTypes.func
   }
@@ -129,6 +130,8 @@
     let error = ''
     if (verify.noteEnable === 'true' && !verify.noteCode) { // 寮�鍚煭淇℃椂锛岄渶瑕佹ā鏉跨紪鐮�
       error = '寮�鍚煭淇℃椂锛岄渶瑕侀�夋嫨鐭俊妯℃澘锛�'
+    } else if (verify.emailEnable === 'true' && !verify.emailCode) {
+      error = '寮�鍚偖浠跺彂閫佹椂锛岄渶瑕侀�夋嫨閭欢妯℃澘锛�'
     } else if (verify.printEnable === 'true' && !verify.printTempId) {
       error = '浣跨敤鍗曟嵁鎵撳嵃鏃讹紝闇�瑕侀�夋嫨鎵撳嵃妯℃澘锛�'
     } else if (verify.accountdate === 'true' && !verify.accountfield) {
@@ -155,6 +158,11 @@
 
     if (_verify.noteEnable !== 'true') {
       _verify.noteCode = ''
+      _verify.noteId = ''
+    }
+    if (_verify.emailEnable !== 'true') {
+      _verify.emailCode = ''
+      _verify.emailId = ''
     }
     if (_verify.printEnable !== 'true') {
       _verify.printTempId = ''
@@ -188,6 +196,14 @@
     const { verify } = this.props
 
     let _verify = {...verify, noteCode: val, noteId: option.props.id}
+
+    this.props.onChange(_verify)
+  }
+
+  onEmailCodeChange = (val, option) => {
+    const { verify } = this.props
+
+    let _verify = {...verify, emailCode: val, emailId: option.props.id}
 
     this.props.onChange(_verify)
   }
@@ -276,7 +292,7 @@
   }
 
   render() {
-    const { unionFields, verify, notes, card, appType, columns } = this.props
+    const { unionFields, verify, notes, emailCodes, card, appType, columns } = this.props
     const { wxTemps, selectTemp } = this.state
     const formItemLayout = {
       labelCol: {
@@ -385,7 +401,7 @@
                 鐭俊妯℃澘
               </Tooltip>
             } required>
-              <Select value={verify.noteCode} onSelect={this.onNoteCodeChange}>
+              <Select value={verify.noteCode || ''} onSelect={this.onNoteCodeChange}>
                 {notes.map(option =>
                   <Select.Option key={option.value} id={option.id} value={option.value}>
                     {option.name}
@@ -401,7 +417,7 @@
                 鍙戦�佹柟寮�
               </Tooltip>
             }>
-              <Radio.Group value={verify.noteType} onChange={(e) => {this.onOptionChange(e.target.value, 'noteType')}}>
+              <Radio.Group value={verify.noteType || 'N'} onChange={(e) => {this.onOptionChange(e.target.value, 'noteType')}}>
                 <Radio value="Y">瀹炴椂</Radio>
                 <Radio value="N">瀹氭椂</Radio>
               </Radio.Group>
@@ -414,7 +430,63 @@
                 鐭俊鍐呭
               </Tooltip>
             }>
-              <Radio.Group value={verify.noteTemp} onChange={(e) => {this.onOptionChange(e.target.value, 'noteTemp')}}>
+              <Radio.Group value={verify.noteTemp || 'Y'} onChange={(e) => {this.onOptionChange(e.target.value, 'noteTemp')}}>
+                <Radio value="Y">鐩稿悓</Radio>
+                <Radio value="N">涓嶅悓</Radio>
+              </Radio.Group>
+            </Form.Item>
+          </Col> : null}
+          <Col span={24}></Col>
+          <Col span={8}>
+            <Form.Item label={
+              <Tooltip placement="bottomLeft" title={'閫夋嫨鍙戦�侀偖浠舵椂锛岄渶瀹屽杽閭欢璁剧疆銆�'}>
+                <QuestionCircleOutlined className="mk-form-tip" />
+                鍙戦�侀偖浠�
+              </Tooltip>
+            }>
+              <Radio.Group value={verify.emailEnable} onChange={(e) => {this.onOptionChange(e.target.value, 'emailEnable')}}>
+                <Radio value="true">寮�鍚�</Radio>
+                <Radio value="false">涓嶅紑鍚�</Radio>
+              </Radio.Group>
+            </Form.Item>
+          </Col>
+          {verify.emailEnable === 'true' ? <Col span={8}>
+            <Form.Item label={
+              <Tooltip placement="bottomLeft" title={<span>閭欢妯℃澘娣诲姞鍦板潃锛�<a target="_blank" rel="noopener noreferrer" href="https://cloud.mk9h.cn/admin/index.html">浜戜腑蹇�</a>-&gt;搴旂敤鏈嶅姟-&gt;寮�鍙戣�呬腑蹇�-&gt;閭欢妯℃澘銆�</span>}>
+                <QuestionCircleOutlined className="mk-form-tip" />
+                閭欢妯℃澘
+              </Tooltip>
+            } required>
+              <Select value={verify.emailCode || ''} onSelect={this.onEmailCodeChange}>
+                {emailCodes.map(option =>
+                  <Select.Option key={option.value} id={option.id} value={option.value}>
+                    {option.name}
+                  </Select.Option>
+                )}
+              </Select>
+            </Form.Item>
+          </Col> : null}
+          {verify.emailEnable === 'true' ? <Col span={8}>
+            <Form.Item label={
+              <Tooltip placement="bottomLeft" title={'瀹炴椂鍙戦�佹渶澶氬悓鏃跺彂閫�5涓敤鎴凤紝瀹氭椂鍙戦�佹渶澶氬悓鏃跺彂閫�100涓敤鎴枫��'}>
+                <QuestionCircleOutlined className="mk-form-tip" />
+                鍙戦�佹柟寮�
+              </Tooltip>
+            }>
+              <Radio.Group value={verify.emailType || 'N'} onChange={(e) => {this.onOptionChange(e.target.value, 'emailType')}}>
+                <Radio value="Y">瀹炴椂</Radio>
+                <Radio value="N">瀹氭椂</Radio>
+              </Radio.Group>
+            </Form.Item>
+          </Col> : null}
+          {verify.emailEnable === 'true' ? <Col span={8}>
+            <Form.Item label={
+              <Tooltip placement="bottomLeft" title={'褰撳悜澶氫釜鐢ㄦ埛鍙戦�佺煭淇℃椂锛岀煭淇″唴瀹规槸鍚︾浉鍚屻��'}>
+                <QuestionCircleOutlined className="mk-form-tip" />
+                閭欢鍐呭
+              </Tooltip>
+            }>
+              <Radio.Group value={verify.emailTemp || 'Y'} onChange={(e) => {this.onOptionChange(e.target.value, 'emailTemp')}}>
                 <Radio value="Y">鐩稿悓</Radio>
                 <Radio value="N">涓嶅悓</Radio>
               </Radio.Group>
diff --git a/src/templates/zshare/verifycard/index.jsx b/src/templates/zshare/verifycard/index.jsx
index 26ce4cd..57ba2b9 100644
--- a/src/templates/zshare/verifycard/index.jsx
+++ b/src/templates/zshare/verifycard/index.jsx
@@ -42,6 +42,7 @@
     activeKey: 'base',
     appType: sessionStorage.getItem('appType'),
     notes: [],              // 鐭俊妯℃澘
+    emailCodes: [],         // 閭妯℃澘
     verify: {},
     fields: [],
     usefulfields: '',
@@ -571,9 +572,8 @@
     _verify.default = _verify.default || 'true'
     _verify.wxNote = _verify.wxNote || 'false'           // 鍏紬鍙锋秷鎭帹閫佹槸鍚﹀紑鍚�
     _verify.noteEnable = _verify.noteEnable || 'false'   // 鐭俊鍙戦�佹槸鍚﹀紑鍚�
+    _verify.emailEnable = _verify.emailEnable || 'false' // 閭欢鍙戦�佹槸鍚﹀紑鍚�
     _verify.printEnable = _verify.printEnable || 'false' // 鍗曟嵁鎵撳嵃鏄惁寮�鍚�
-    _verify.noteType = _verify.noteType || 'N'           // 鐭俊鍙戦�佹ā寮忥細Y锛堝疄鏃讹級銆丯锛堝畾鏃讹級
-    _verify.noteTemp = _verify.noteTemp || 'Y'           // 鐭俊鍙戦�佹ā鏉匡細Y锛堢浉鍚岋級銆丯锛堜笉鍚岋級
     _verify.preHandle = _verify.preHandle || 'false'     // 鎸夐挳棰勫鐞嗘槸鍚﹀紑鍚�
     _verify.invalid = _invalid
     _verify.uniques = _verify.uniques || []
@@ -1064,6 +1064,11 @@
         LText: window.btoa(window.encodeURIComponent(`select t.id,templatecode,'['+SignName+']'+describe as describe from (select * from bd_msn_sms_temp where  deleted=0 and TypeDesc='QX' and status=20 ) t inner join (select openid from susers where uid=@userid@) u on t.openid =t.openid`))
       },
       {
+        obj_name: 'emailCodes',
+        arr_field: 'msn_email_temp_no,remark,id',
+        LText: window.btoa(window.encodeURIComponent(`select t.id,t.msn_email_temp_no,t.remark from (select * from bd_msn_email_temp where deleted=0) t inner join (select openid from susers where uid=@userid@) u on t.openid=t.openid`))
+      },
+      {
         obj_name: 'scripts',
         arr_field: 'funcname,longparam',
         LText: window.btoa(window.encodeURIComponent(`Select distinct func+Remark as funcname,longparam, s.Sort from s_custom_script s inner join (select OpenID from sapp where ID=@Appkey@) p on s.openid = case when s.appkey='' then s.openid else p.OpenID end order by s.Sort`))
@@ -1102,6 +1107,13 @@
             return {
               name: item.describe,
               value: item.templatecode,
+              id: item.id
+            }
+          }),
+          emailCodes: res.emailCodes.map(item => {
+            return {
+              name: item.remark,
+              value: item.msn_email_temp_no,
               id: item.id
             }
           }),
@@ -1560,7 +1572,7 @@
 
   render() {
     const { card, columns } = this.props
-    const { activeKey, verifyInter, verify, fields, uniqueFields, uniqueColumns, unionFields, onceUniqueColumns, columnsFields, contrastColumns, customColumns, orderColumns, scriptsColumns, cbScriptsColumns, orderModular, orderModularDetail, voucher, voucherDetail, notes, appType } = this.state
+    const { activeKey, verifyInter, verify, fields, uniqueFields, uniqueColumns, unionFields, onceUniqueColumns, columnsFields, contrastColumns, customColumns, orderColumns, scriptsColumns, cbScriptsColumns, orderModular, orderModularDetail, voucher, voucherDetail, notes, emailCodes, appType } = this.state
     const formItemLayout = {
       labelCol: {
         xs: { span: 24 },
@@ -1582,7 +1594,7 @@
               {verify.default === 'false' ? <span className="count-tip"><ExclamationOutlined style={{color: 'orange'}}/></span> : null}
             </span>
           } key="base">
-            <BaseForm card={card} appType={appType} columns={columns} unionFields={unionFields} verify={verify} notes={notes} onChange={(verify) => this.setState({verify})} wrappedComponentRef={(inst) => this.baseForm = inst}/>
+            <BaseForm card={card} appType={appType} columns={columns} unionFields={unionFields} verify={verify} notes={notes} emailCodes={emailCodes} onChange={(verify) => this.setState({verify})} wrappedComponentRef={(inst) => this.baseForm = inst}/>
           </TabPane> : null}
           {verifyInter === 'system' ? <TabPane tab={
             <span>

--
Gitblit v1.8.0