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 { QuestionCircleOutlined } from '@ant-design/icons'
|
|
import asyncComponent from '@/utils/asyncComponent'
|
import './index.scss'
|
|
const ColorSketch = asyncComponent(() => import('@/mob/colorsketch'))
|
|
class BillCodeForm extends Component {
|
static propTpyes = {
|
card: PropTypes.object,
|
verify: PropTypes.object,
|
unionFields: PropTypes.array,
|
notes: PropTypes.array,
|
onChange: PropTypes.func
|
}
|
|
state = {
|
wxTemps: [],
|
miniTemps: [],
|
}
|
|
componentDidMount() {
|
let wxTemps = sessionStorage.getItem('wxTemplates')
|
let miniTemps = sessionStorage.getItem('wxMiniTemplates')
|
|
wxTemps = wxTemps ? JSON.parse(wxTemps) : []
|
miniTemps = miniTemps ? JSON.parse(miniTemps) : []
|
|
this.setState({wxTemps, miniTemps})
|
}
|
|
handleConfirm = () => {
|
const { verify } = this.props
|
|
let error = ''
|
if (verify.noteEnable === 'true' && !verify.noteCode) { // 开启短信时,需要模板编码
|
error = '开启短信时,需要选择短信模板!'
|
} else if (verify.accountdate === 'true' && !verify.accountfield) {
|
error = '开启账期时,需要选择验证公司!'
|
} else if (verify.wxNote === 'true') {
|
if (!verify.wxTemplateId) {
|
error = '开启公众号消息推送时,需要选择消息模板!'
|
} else if (verify.wxNoteLink === 'url' && !verify.wxNoteLinkUrl) {
|
error = '请填写网址!'
|
}
|
|
}
|
|
return error
|
}
|
|
onOptionChange = (value, key) => {
|
const { verify } = this.props
|
|
let _verify = {...verify, [key]: value}
|
|
if (_verify.noteEnable !== 'true') {
|
_verify.noteCode = ''
|
}
|
if (_verify.accountdate !== 'true') {
|
_verify.accountfield = ''
|
_verify.voucherdate = ''
|
}
|
if (_verify.wxNote !== 'true') {
|
_verify.wxTemplateId = ''
|
_verify.wxNoteLink = ''
|
_verify.wxNoteLinkUrl = ''
|
_verify.wxNoteLinkMenuId = ''
|
_verify.wxNoteCallback = 'false'
|
_verify.wxNoteKeys = null
|
}
|
|
this.props.onChange(_verify)
|
}
|
|
onNoteCodeChange = (val, option) => {
|
const { verify } = this.props
|
|
let _verify = {...verify, noteCode: val, noteId: option.props.id}
|
|
this.props.onChange(_verify)
|
}
|
|
onWxTemplateChange = (val, option) => {
|
const { verify } = this.props
|
|
let _verify = {...verify, wxTemplateId: val}
|
|
let keys = []
|
if (option.props.content) {
|
keys = option.props.content.match(/{{[a-zA-Z0-9]+\.DATA}}/g)
|
keys = keys.map(key => key.replace(/{{|\.DATA}}/g, ''))
|
}
|
|
let index = 1
|
_verify.wxNoteKeys = keys.map(key => {
|
let item = {
|
key: key,
|
color: '#000000',
|
readonly: false
|
}
|
if (key === 'first') {
|
item.value = 'first'
|
item.readonly = true
|
} else if (key === 'remark') {
|
item.value = 'remark'
|
item.readonly = true
|
} else {
|
item.value = 'p' + index
|
index++
|
}
|
|
return item
|
})
|
|
this.props.onChange(_verify)
|
}
|
|
onWxNoteKeyChange = (key, val) => {
|
let _verify = fromJS(this.props.verify).toJS()
|
|
_verify.wxNoteKeys = _verify.wxNoteKeys.map(m => {
|
if (m.key === key) {
|
m.value = val
|
}
|
|
return m
|
})
|
|
this.props.onChange(_verify)
|
}
|
|
onWxNoteColorChange = (key, val) => {
|
let _verify = fromJS(this.props.verify).toJS()
|
|
_verify.wxNoteKeys = _verify.wxNoteKeys.map(m => {
|
if (m.key === key) {
|
m.color = val
|
}
|
|
return m
|
})
|
|
this.props.onChange(_verify)
|
}
|
|
render() {
|
const { unionFields, verify, notes, card } = this.props
|
const { wxTemps } = this.state
|
const formItemLayout = {
|
labelCol: {
|
xs: { span: 24 },
|
sm: { span: 8 }
|
},
|
wrapperCol: {
|
xs: { span: 24 },
|
sm: { span: 16 }
|
}
|
}
|
|
return (
|
<Form {...formItemLayout}>
|
<Row gutter={24}>
|
{card.sqlType !== 'custom' && card.intertype !== 'inner' ? <Col span={8}>
|
<Form.Item label={
|
<Tooltip placement="bottomLeft" title={'默认sql执行顺序为自定义脚本之前'}>
|
<QuestionCircleOutlined className="mk-form-tip" />
|
默认sql
|
</Tooltip>
|
}>
|
<Radio.Group value={verify.default} onChange={(e) => {this.onOptionChange(e.target.value, 'default')}}>
|
<Radio value="true">执行</Radio>
|
<Radio value="false">不执行</Radio>
|
</Radio.Group>
|
</Form.Item>
|
</Col> : null}
|
{card.intertype !== 'inner' ? <Col span={8}>
|
<Form.Item label={'失效验证'}>
|
<Radio.Group value={verify.invalid} onChange={(e) => {this.onOptionChange(e.target.value, 'invalid')}}>
|
<Radio value="true">开启</Radio>
|
<Radio value="false">不开启</Radio>
|
</Radio.Group>
|
</Form.Item>
|
</Col> : null}
|
{card.intertype !== 'inner' ? <Col span={8}>
|
<Form.Item label={'账期验证'}>
|
<Radio.Group value={verify.accountdate} onChange={(e) => {this.onOptionChange(e.target.value, 'accountdate')}}>
|
<Radio value="true">开启</Radio>
|
<Radio value="false">不开启</Radio>
|
</Radio.Group>
|
</Form.Item>
|
</Col> : null}
|
{verify.accountdate === 'true' ? <Col span={8}>
|
<Form.Item label={'验证公司'} required>
|
<Select defaultValue={verify.accountfield || ''} onChange={(val) => {this.onOptionChange(val, 'accountfield')}}>
|
{unionFields.map(option =>
|
<Select.Option key={option.uuid} value={option.field}>
|
{option.label}
|
</Select.Option>
|
)}
|
</Select>
|
</Form.Item>
|
</Col> : null}
|
{verify.accountdate === 'true' ? <Col span={8}>
|
<Form.Item label={
|
<Tooltip placement="bottomLeft" title={'验证日期为空时,默认为当天。'}>
|
<QuestionCircleOutlined className="mk-form-tip" />
|
验证日期
|
</Tooltip>
|
}>
|
<Select allowClear defaultValue={verify.voucherdate || ''} onChange={(val) => {this.onOptionChange(val, 'voucherdate')}}>
|
{unionFields.map(option =>
|
<Select.Option key={option.uuid} value={option.field}>
|
{option.label}
|
</Select.Option>
|
)}
|
</Select>
|
</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.noteEnable} onChange={(e) => {this.onOptionChange(e.target.value, 'noteEnable')}}>
|
<Radio value="true">开启</Radio>
|
<Radio value="false">不开启</Radio>
|
</Radio.Group>
|
</Form.Item>
|
</Col>
|
{verify.noteEnable === '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>->应用服务->开发者中心->短信模板。</span>}>
|
<QuestionCircleOutlined className="mk-form-tip" />
|
短信模板
|
</Tooltip>
|
} required>
|
<Select value={verify.noteCode} onSelect={this.onNoteCodeChange}>
|
{notes.map(option =>
|
<Select.Option key={option.value} id={option.id} value={option.value}>
|
{option.name}
|
</Select.Option>
|
)}
|
</Select>
|
</Form.Item>
|
</Col> : null}
|
{verify.noteEnable === 'true' ? <Col span={8}>
|
<Form.Item label={
|
<Tooltip placement="bottomLeft" title={'实时发送最多同时发送5个用户,定时发送最多同时发送100个用户。'}>
|
<QuestionCircleOutlined className="mk-form-tip" />
|
发送方式
|
</Tooltip>
|
}>
|
<Radio.Group value={verify.noteType} onChange={(e) => {this.onOptionChange(e.target.value, 'noteType')}}>
|
<Radio value="Y">实时</Radio>
|
<Radio value="N">定时</Radio>
|
</Radio.Group>
|
</Form.Item>
|
</Col> : null}
|
{verify.noteEnable === 'true' ? <Col span={8}>
|
<Form.Item label={
|
<Tooltip placement="bottomLeft" title={'当向多个用户发送短信时,短信内容是否相同。'}>
|
<QuestionCircleOutlined className="mk-form-tip" />
|
短信内容
|
</Tooltip>
|
}>
|
<Radio.Group value={verify.noteTemp} 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.wxNote} onChange={(e) => {this.onOptionChange(e.target.value, 'wxNote')}}>
|
<Radio value="true">开启</Radio>
|
<Radio value="false">不开启</Radio>
|
</Radio.Group>
|
</Form.Item>
|
</Col>
|
{verify.wxNote === 'true' ? <Col span={8}>
|
<Form.Item label="消息模板" required>
|
<Select value={verify.wxTemplateId} onSelect={this.onWxTemplateChange}>
|
{wxTemps.map(option =>
|
<Select.Option key={option.template_id} content={option.content} value={option.template_id}>
|
{option.title}
|
</Select.Option>
|
)}
|
</Select>
|
</Form.Item>
|
</Col> : null}
|
{verify.wxNote === 'true' ? <Col span={8}>
|
<Form.Item label={
|
<Tooltip placement="bottomLeft" title={'是否将消息执行结果回传系统。'}>
|
<QuestionCircleOutlined className="mk-form-tip" />
|
消息回调
|
</Tooltip>
|
}>
|
<Radio.Group value={verify.wxNoteCallback || 'false'} onChange={(e) => {this.onOptionChange(e.target.value, 'wxNoteCallback')}}>
|
<Radio value="true">开启</Radio>
|
<Radio value="false">不开启</Radio>
|
</Radio.Group>
|
</Form.Item>
|
</Col> : null}
|
{verify.wxNote === 'true' ? <Col span={8}>
|
<Form.Item label={
|
<Tooltip placement="bottomLeft" title={'点击消息时的跳转地址。'}>
|
<QuestionCircleOutlined className="mk-form-tip" />
|
跳转链接
|
</Tooltip>
|
}>
|
<Radio.Group value={verify.wxNoteLink || ''} onChange={(e) => {this.onOptionChange(e.target.value, 'wxNoteLink')}}>
|
<Radio value="">无</Radio>
|
<Radio value="url">网址</Radio>
|
<Radio value="miniProgram">小程序</Radio>
|
</Radio.Group>
|
</Form.Item>
|
</Col> : null}
|
{verify.wxNoteLink === 'url' ? <Col span={8}>
|
<Form.Item label="网址" required>
|
<Input placeholder="" autoComplete="off" value={verify.wxNoteLinkUrl || ''} onChange={(e) => {this.onOptionChange(e.target.value, 'wxNoteLinkUrl')}}/>
|
</Form.Item>
|
</Col> : null}
|
{verify.wxNoteLink === 'miniProgram' ? <Col span={8}>
|
<Form.Item label={
|
<Tooltip placement="bottomLeft" title={`跳转至小程序指定菜单,空值默认跳转至小程序首页。`}>
|
<QuestionCircleOutlined className="mk-form-tip" />
|
菜单ID
|
</Tooltip>
|
}>
|
<Input placeholder="" autoComplete="off" value={verify.wxNoteLinkMenuId || ''} onChange={(e) => {this.onOptionChange(e.target.value, 'wxNoteLinkMenuId')}}/>
|
</Form.Item>
|
</Col> : null}
|
{verify.wxNote === 'true' && verify.wxNoteKeys ? verify.wxNoteKeys.map(item => <Col span={8} key={item.key}>
|
<Form.Item className="mk-note-keyword" label={item.key} required>
|
<Select value={item.value} disabled={item.readonly} onSelect={(val) => this.onWxNoteKeyChange(item.key, val)}>
|
<Select.Option value="p1">p1</Select.Option>
|
<Select.Option value="p2">p2</Select.Option>
|
<Select.Option value="p3">p3</Select.Option>
|
<Select.Option value="p4">p4</Select.Option>
|
<Select.Option value="p5">p5</Select.Option>
|
<Select.Option value="p6">p6</Select.Option>
|
<Select.Option value="p7">p7</Select.Option>
|
<Select.Option value="p8">p8</Select.Option>
|
<Select.Option value="p9">p9</Select.Option>
|
<Select.Option value="p10">p10</Select.Option>
|
</Select>
|
<ColorSketch value={item.color || '#ffffff'} onChange={(val, hex) => {this.onWxNoteColorChange(item.key, hex)}} />
|
</Form.Item>
|
</Col>) : null}
|
|
</Row>
|
</Form>
|
)
|
}
|
}
|
|
export default Form.create()(BillCodeForm)
|