From c8804ceb1fe2dea76f9949c5ea04423876ee2c81 Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期五, 28 六月 2024 14:02:47 +0800 Subject: [PATCH] 2024-06-28 --- src/templates/zshare/verifycard/baseform/index.jsx | 133 ++++++++++++++++++++++++++++++++++---------- 1 files changed, 103 insertions(+), 30 deletions(-) diff --git a/src/templates/zshare/verifycard/baseform/index.jsx b/src/templates/zshare/verifycard/baseform/index.jsx index 6b3106f..71440ec 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,42 +25,30 @@ 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 => { - if (res.access_token) { - Api.wxNginxRequest(`cgi-bin/template/get_all_private_template?access_token=${res.access_token}`, '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') - } - }) + let wxTemps = sessionStorage.getItem('wxTemplates' + appId) + + if (appId && window.GLOB.nginx && !wxTemps) { + this.getTemps(appId) } else if (wxTemps) { wxTemps = JSON.parse(wxTemps) @@ -68,6 +56,35 @@ } else { this.resetTemps([]) } + } + + getTemps = (appId) => { + Api.wxAccessToken(appId).then(res => { + if (res.status && res.access_token) { + Api.wxNginxRequest(`cgi-bin/template/get_all_private_template?access_token=${res.access_token}`, '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}}', '') + } + + return true + }) + } else if (res.errcode && res.errmsg) { + message.warning(res.errcode + ': ' + res.errmsg) + } + + sessionStorage.setItem('wxTemplates' + appId, JSON.stringify(temps)) + + this.resetTemps(temps) + }) + } else { + message.warning(res.message || '寰俊鎺堟潈澶辫触锛�') + sessionStorage.setItem('wxTemplates' + appId, JSON.stringify([])) + } + }) } resetTemps = (wxTemps) => { @@ -169,6 +186,7 @@ delete _verify.pre_func } if (_verify.wxNote !== 'true') { + delete _verify.wxAppId delete _verify.wxTemplateId delete _verify.wxNoteLink delete _verify.wxNoteLinkUrl @@ -250,6 +268,45 @@ 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) => { let _verify = fromJS(this.props.verify).toJS() @@ -288,7 +345,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 }, @@ -635,6 +692,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}> -- Gitblit v1.8.0