/** * 转办+回收弹框 * 徐立 * 2020.4.8 * @param { boolean } visible model层显示控制变量 * @param { Function } handleCancel model层关闭控制函数 * @param { string } status 状态栏 存在以下状态 撤回 转办 回退 * @param { any } value 当前表单数据 * @param { Function } init 重置提交后数据源 */ import React, { Component } from 'react'; import { Modal } from 'antd'; import TrunTo from './trunTo'; import Recycle from './recycle'; import styles from './style.less'; import { confirm,openToast } from '../Notification'; import { connect } from 'dva'; @connect() export default class TurnToModel extends Component { constructor(props){ super(props) this.state = { reason : '', // 用户相关原因同步, user: '', // 用户选择移交人数据 loading: false, // 提交状态 } } /** * 同步用户选择移交用户数据 * @param { any } user 选中用户 */ asyncUser = (user) => { this.setState({ user }) } /** * 同步用户移交理由 * @param { string } value 输入值 */ asyncReasion = (value) => { this.setState({ reason: value }) } /** * 用于不同状态提交 */ handleOk = async () => { const { status,dispatch,value } = this.props const { reason } = this.state await this.setState({ loading: true }) if(status === '转办'){ // 发起转办提交处理 const { user } = this.state if(user){ dispatch({ type:'trunTo/turnsProcess', payload: { taskIds:[value.taskId], reason, turnsUserCode: user.stuNo }, callback: (val) => { openToast('success', '成功','当前流程已成功移交') this.props.init() this.setState({ loading: false }) } }) } else { openToast('info','错误','请选择移交人员') } } else if(status === '回退') { // 发起回退提交处理 dispatch({ type: 'trunTo/refuseProcess', payload: { taskIds:[value.taskId], reason }, callback: (val) => { openToast('success', '回退','当前流程已成功回退') this.props.init() this.setState({ loading: false }) } }) } else { console.log('缺乏匹配字段提交方法') } this.props.handleCancel() } recallConfim = () => { const { status,dispatch,value } = this.props confirm('撤回','是否撤回当前转办流程',()=>{ dispatch({ type:'trunTo/resetProcess', payload:{ taskIds:[value.taskId], }, callback:(val) => { openToast('success','成功','该转办流程已成功撤回') this.props.init() } }) this.props.handleCancel() },()=>{ this.props.handleCancel() }) } render() { const { visible, handleCancel, status, value, } = this.props const { loading } = this.state if(visible){ switch (status) { case '撤回': this.recallConfim() return <></> case '转办': return <Modal title={status} visible={visible} onOk={this.handleOk} onCancel={handleCancel} width={800} loading={loading} > <div className={styles.model_div} > <TrunTo asyncReasion={this.asyncReasion} asyncUser={this.asyncUser} value={value} /> </div> </Modal> case '回退': return <Modal title={status} visible={visible} onOk={this.handleOk} onCancel={handleCancel} width={800} loading={loading} > <div className={styles.model_div} > <Recycle asyncReasion={this.asyncReasion} value={value} /> </div> </Modal> default: console.log('缺乏匹配项') return <></> } } else { return <></> } } }