UNPKG

yylib-quick-mobile

Version:

yylib-quick-mobile

433 lines (427 loc) 17.5 kB
/** * Created By whh 2018/1/2 * */ import React, {Component} from 'react'; import {Button, Modal, NavBar, Icon, List, TextareaItem, Radio,Checkbox, Flex,WhiteSpace} from 'antd-mobile'; const CheckboxItem = Checkbox.CheckboxItem; const RadioItem = Radio.RadioItem; const Item = List.Item; import YYAssignRef from './../bpm/YYAssignRef'; import YYAddSignModal from './../bpm/YYAddSignModal'; import YYPicker from './../picker/YYPicker'; import YYNavBar from './../navBar/YYNavBar'; import YYForm from './../form/YYForm'; import YYIcon from './../icon/YYIcon'; import YYToast from './../toast/YYToast'; import YYRefer from './../refer/YYRefer'; import YYApproveHistory from './../bpm/YYApproveHistory'; import PropTypes from 'prop-types'; import classnames from 'classnames'; import {MODULE_URL} from '../../common/RestUrl'; //import ajax from '../../utils/ajax'; import './YYApprove.less'; class YYApprove extends React.Component { constructor(props) { super(props) this.state = { showApprove: this.props.showApprove,//是否显示审批 showApproveHistory: false,//是否显示审批历史 valueRadio: 0,//审批动作0,1,2,3 bohuiValueRadio: '提交人',//驳回选择项 showAssignRef: false,//是否显示指派参照 showAddsignRef: false,//是否显示改派参照 customTip: '同意!', PickerData:[],//审批动作 counterSignAble:false, jiaqianModal: false, taskId:"", countersign:"", } } componentDidMount() { this.getInfo(); } getInfo= () => { var ajax=window.YYUtils.Ajax; let {showApprove, userId, billId} = this.props; ajax.getText(MODULE_URL.getBpmId, {'billId': billId}, (getBpmIdTextData) => { var getBpmIdData = JSON.parse(getBpmIdTextData); if (getBpmIdData.success && getBpmIdData.success == true) { if (getBpmIdData.bpmId) { ajax.postText(MODULE_URL.beforeReject, { 'bpmId': getBpmIdData.bpmId, 'userId': userId }, (beforeRejectTextData) => { var beforeRejectData = JSON.parse(beforeRejectTextData); let PickerData = []; if (!beforeRejectData.success) { YYToast.info(beforeRejectData.msg,3); return; } if(beforeRejectData.rejectAble){ PickerData.push({label: '同意', value: 0},{label: '不同意且退回', value: 1}) } if(beforeRejectData.inPower && !beforeRejectData.rejectAble){ PickerData.push({label: '审核', value: 2}) } if(beforeRejectData.addsignAble){ PickerData.push({label: '改派', value: 3}) } let bohuiDate = [{label:'提交人',value:'提交人'}]; if(beforeRejectData.data&&beforeRejectData.data.array&&beforeRejectData.data.array.length>0){ for(let i=0;i<beforeRejectData.data.array.length;i++){ bohuiDate.push({ value:beforeRejectData.data.array[i].activityId, label:beforeRejectData.data.array[i].activityName, }) } } this.setState({ bpmId: getBpmIdData.bpmId, PickerData:PickerData, inPower: beforeRejectData.inPower, rejectAble: beforeRejectData.rejectAble,//审核 addsignAble: beforeRejectData.addsignAble,//改派 assignAble: beforeRejectData.assignAble,//指派 countersign : beforeRejectData["parenttaskid"]?beforeRejectData["parenttaskid"]:"",//判断是否为被加签任务 counterSignAble:beforeRejectData.addsigninPower && beforeRejectData["addAisnInfo"]["addlotAble"]?true:false,//判断是否为可加签任务 taskId:beforeRejectData.addsigninPower ? beforeRejectData["addAisnInfo"]["taskId"]:"", bohuiDate: bohuiDate, }) }) } else { YYToast.fail('没有审批历史', 2); } } else { YYToast.fail('查看审批记录失败,请检查参数', 2); } }) } componentWillReceiveProps(nextprops) { if (nextprops.showApprove !== this.state.showApprove) { this.setState({ showApprove: nextprops.showApprove }) } } //加签 addSign = () => { this.setState({ jiaqianModal:true }) } //审批前判断 beforeApprove = () => { var ajax=window.YYUtils.Ajax; let {valueRadio, assignAble,countersign} = this.state; let opttype = 1; if (valueRadio === 0) opttype = 1;//同意 else if (valueRadio === 1) opttype = 0;//驳回 let param = { opttype:opttype, taskid: countersign, comment: customTip, assignee: this.props.userId }; if (assignAble != null && assignAble == true && (valueRadio == 0 || valueRadio == 2)) { //assignAble指派为true,并且同意或者审核,判断显示指派情况 this.showAssign(); }else if(countersign!==""){//被加签人审批加签任务 ajax.postJSON(MODULE_URL.completeSignTask,param,(msg)=>{ this.setState({ rejectVisible:false }); if (msg.success && msg.success === true) { YYToast.success(msg.msg, 2) this.getInfo(); } else { YYToast.fail(msg.msg, 2) } if (this.props.onOk && typeof(this.props.onOk) == "function") { this.props.onOk(msg); } }) } else { this.doApprove([]); } } //审批操作 doApprove = (assign) => { let {userId, billId, billTypeId} = this.props; let {bpmId, valueRadio, bohuiValueRadio, addsingUser, customTip} = this.state;//bpmid,审批意见,驳回id,改派对象,审批语 let opinionContent = null; if (valueRadio == 0) opinionContent = "同意"; else if (valueRadio == 1) opinionContent = "不同意且退回"; else if (valueRadio == 2) opinionContent = "审核"; else if (valueRadio == 3) { opinionContent = "改派"; if (!addsingUser) { YYToast.info("请选择需要改派处!", 2); return; } } let approveObject = {}; approveObject = { userId: userId, bill: { billTypeId: billTypeId, billId: billId, bpmId: bpmId }, bpmId: bpmId, approveType: opinionContent, comment: customTip, delegateUser: addsingUser ? addsingUser.userId : null,//改派的用户Id activityId: bohuiValueRadio,//驳回id assignAble: (assign != null && assign.length > 0) ? true : false, assign: assign };//回调数据 this.onBpmApprove(approveObject); } //提交审批 onBpmApprove = (data) => { var ajax=window.YYUtils.Ajax; let url = ''; if (data.approveType == "同意" || data.approveType == "审核") { url = MODULE_URL.doApprove } else if (data.approveType == "改派") { url = MODULE_URL.delegateTaskCompletely } else if (data.approveType == "不同意且退回") { url = MODULE_URL.disApprove } ajax.postText(url, data, (text) => { var data = JSON.parse(text); if(data.success && data.success===true){ this.setState({ showApprove: false }) YYToast.success(data.msg,2); if (this.props.onBpmApprove) { this.props.onBpmApprove(true); } }else{ YYToast.info(data.msg,2); this.props.onBpmApprove(true); } }) } showApproveModal = () => { this.setState({ showApprove: false }) if (this.props.onCloseApprove) { this.props.onCloseApprove(); } } clickApproveHistory = () => { if(this.state.inPower){ this.setState({ showApprove: false, showApproveHistory: true }) }else{ YYToast.info('无查看权限',1) } } showApproveHistoryModal = () => { this.setState({ showApprove: true, showApproveHistory: false }) } bohuiOnChange = (valueList) => { let value = valueList[0]; this.setState({ bohuiValueRadio: value, }); } approveActionOnChange = (valueList) => { let value = valueList[0]; switch (value) { case 0: this.setState({customTip: '同意!'}); break; case 1: this.setState({customTip: '驳回!'}); break; case 2: this.setState({customTip: '已审核!'}); break; case 3: this.setState({customTip: '改派!'}); break; default: this.setState({customTip: '错误!'}); break; } this.setState({ valueRadio: value, }); } showAssign = () => { this.setState({ showAssignRef: true, }); } closeAssign = () => { this.setState({ showAssignRef: false, }); } comfirmAssign = (val) => { this.closeAssign(); console.log(val); this.doApprove([val]); } checkedAddsign = (user) => { this.closeAddsign(); console.log(user) this.setState({ addsingUser: user }) } showAddsign = () => { this.setState({ showAddsignRef: true, }); } closeAddsign = () => { this.setState({ showApprove: true, showAddsignRef: false, showApproveHistory: false, }); } customTipOnChange = (value) => { this.setState({ customTip: value, }); } render() { let {showApprove, showApproveHistory, PickerData,valueRadio, inPower, rejectAble, addsignAble, assignAble, bohuiValueRadio, bohuiDate, showAssignRef, customTip,counterSignAble,jiaqianModal,taskId} = this.state; let {userId, billId, billTypeId,orgId,form} = this.props; let radioText = null; let radioText0 = <Item disabled={true}>流程将继续</Item>; let radioText1 = <YYPicker value={[bohuiValueRadio]} data={bohuiDate} form={form} cols={1} label="流程将退回到" field="bohuiValueRadio" required={true} onOk={this.bohuiOnChange}/>; let radioText2 = <Item disabled={true}>流程继续流转,本项一般在会签时使用</Item>; let radioText3 = <div> <Item className="yy-item" arrow="horizontal" onClick={this.showAddsign} extra={this.state.addsingUser ? this.state.addsingUser.name : null}>当前任务改在</Item> <YYRefer referlabel="流程改派至" referName='Addsign' onOk={this.checkedAddsign} onClose={this.closeAddsign} multiMode={false} open={this.state.showAddsignRef} referCode='00081' referStyle='list' form={form}/></div>; switch (valueRadio) { case 0:radioText = radioText0;break; case 1:radioText = radioText1;break; case 2:radioText = radioText2;break; case 3:radioText = radioText3;break; default:radioText = valueRadio;break; } const YYApproveHistoryModal = inPower ? <Modal popup visible={showApproveHistory} maskClosable={false} animationType="slide-up" > <div className="yy-bpm-modal-body"> <YYNavBar className="no-border-navbar" mode="light" leftContent={<Icon type="left"/>} onLeftClick={this.showApproveHistoryModal}> 审批历史</YYNavBar> <YYApproveHistory userId={userId} billId={billId}/> </div> </Modal> : null; const AssignRef = showAssignRef ? <YYAssignRef visible={showAssignRef} type = {"approve"} billTypeId={billTypeId} bpmId = {this.state.bpmId} userId = {userId} comfirm = {this.comfirmAssign}/>:null; let counterSignRef = jiaqianModal ? <YYAddSignModal visible={jiaqianModal} type={"approve"} billTypeId={billTypeId} bpmId={this.state.bpmId} taskId={taskId} userId={userId} onClose={()=>{ this.setState({jiaqianModal:false}) }}/> : null; return ( <div className="yy-approve"> {AssignRef} {YYApproveHistoryModal} {counterSignRef} <Modal popup visible={showApprove} maskClosable={false} animationType="slide-up" > <div className="yy-bpm-modal-body"> <YYNavBar className="no-border-navbar" mode="light" leftContent={<Icon type="left"/>} onLeftClick={this.showApproveModal} rightContent={<Button type="ghost" size="small" inline disabled={!inPower} onClick={this.clickApproveHistory}>查看审批历史</Button>}> 审批</YYNavBar> <List> <YYPicker value={[valueRadio]} data={PickerData} form={form} cols={1} label="审批意见" field="valueRadio" required={true} disabled={PickerData.length<1} onOk={this.approveActionOnChange}/> {radioText} </List> <WhiteSpace /> <List> <TextareaItem title="审批语" placeholder={'请输入审批语'} value={customTip} onChange={this.customTipOnChange.bind(this)} rows={3}/> </List> <div className='yy-botton-bottom-group'> <Button className="yy-button-bottom-in" disabled={!counterSignAble} type="primary" onClick={this.addSign}>加签</Button> <Button className="yy-button-bottom-in" disabled={!inPower} type="primary" onClick={this.beforeApprove}>确定</Button> </div> </div> </Modal> </div> ) } ; } YYApprove.defaultProps = { userId: '', billId: ''//单据id } export default YYForm.create()(YYApprove);