import React from 'react'; import { connect } from 'dva'; import moment from 'moment'; import { Button, Row, Col, Form, Input,Select,Spin,Modal,Transfer,DatePicker ,message,Tree,Table,Tabs,Switch,Popconfirm,Upload,Icon ,InputNumber } from 'antd'; import { extend, extendRule, initFilter, initQueryFilter, getOnlyPropertyData, extendInclude, getDataFieldValue, setDataFieldValue, guid, empty, initFilterGroup, extendGroupRule, extendFilterGroup, } from "../../../utils/common"; import DropDownPagination from '../../common/DropDownPaginationEx'; import FormPage from '../../FormPage'; import Editor from 'react-umeditor'; import config from '../../../config'; const FormItem = Form.Item; const Option = Select.Option; const { TextArea } = Input; const TabPane = Tabs.TabPane; const TreeNode = Tree.TreeNode; class EmProposalEditPage extends React.Component { constructor(props) { super(props); this.state = { title:'方案建立', data: {}, oldData:{}, btns:[], processDetail:{}, hiddenFields:{}, treeData:[], treeSelectedKeys:[], isProcessChange:false, expandedKeys:[], sopVisible:false }; }; componentDidMount() { this.props.form.resetFields(); this.loadData(); } componentWillReceiveProps(NextProps) { const {data}=this.props; let {id}=data?data:{}; if(!id) id=''; if (NextProps.custom['emProposalEditClick'+id] ) { this.props.form.resetFields(); this.loadData(); this.props.dispatch({ type: 'custom/save', payload: { ['emProposalEditClick'+id]:false }, }); } } loadData=()=> { const {data,formId,login,dispatch}=this.props; const {id}=data?data:{}; if(id){ const json = initFilter(this.props.login.OrgId); extendRule(json, 'ID', 1, id); extendInclude(json,'Nav_Product.Nav_Mould'); extendInclude(json,'Nav_Product.Nav_TestFixture'); extendInclude(json,'Nav_ProposalProcess.Nav_Process'); extendInclude(json,'Nav_ProposalProcess.Nav_FQCWorkStage'); extendInclude(json,'Nav_ProposalProcess.Nav_PQCWorkStage'); extendInclude(json,'Nav_ProposalProcess.Nav_Details.Nav_Procedure'); extendInclude(json,'Nav_ProposalProcess.Nav_Details.Nav_Unit'); extendInclude(json,'Nav_ProposalProcess.Nav_Details.Nav_PQCWorkStage'); extendInclude(json,'Nav_Details.Nav_Product'); extendInclude(json,'Nav_ProposalSopFiles.Nav_ImgFile'); extendInclude(json,'Nav_EmCofirmUser'); this.props.dispatch({ type: 'EMemProposalEdit/getProposal', payload: json, onComplete: (ret) => { if(ret){ this.fillData(ret); } } }); } else { this.fillData({ ORG_ID:this.props.login.OrgId, EM_CONFIRM_USER_ID:this.props.login.userId, Nav_EmCofirmUser:{NAME:this.props.login.user?this.props.login.user.NAME:null} }); } if(this.props.data.isShow){ this.setState({ title:'查看方案', }) } if(formId){ const btnJson = initFilter(this.props.login.OrgId,'','NUM',0); extendRule(btnJson, 'PAGE_CUSTOM_FORM_ID', 1, formId); this.props.dispatch({ type: 'EMengineeringPlanEdit/getBtnList', payload: btnJson, onComplete: (ret) => { if(ret){ this.setState({ btns: ret, }); } } }); } }; fillData=(ret)=>{ if(!ret.Nav_Details||!ret.Nav_Details.length){ ret.Nav_Details=[ {ID:guid(),ORG_ID:this.props.login.OrgId,PROPOSAL_TYPE:1,DESCRIPTION:'A料'}, {ID:guid(),ORG_ID:this.props.login.OrgId,PROPOSAL_TYPE:2,DESCRIPTION:'B料'} ] }; if(ret&&ret.Nav_Details){ ret.Nav_Details.sort((x, y) => (x.PROPOSAL_TYPE > y.PROPOSAL_TYPE) ? 1 : -1) } const updateLoadFileList=[]; if(ret.Nav_ProposalSopFiles){ ret.Nav_ProposalSopFiles.map(t=>{ updateLoadFileList.push({ uid: t.ID, name: t.Nav_ImgFile?t.Nav_ImgFile.FILE_NAME:'未知文件', status: 'done', response: {Data:t.IMG_FILE_ID,file:t}, }); }); } this.setState({ data: ret, oldData:{...ret}, isProcessChange:false, processDetail:{}, treeSelectedKeys:[], expandedKeys:[], treeData:[], hiddenFields:{}, updateLoadFileList:updateLoadFileList, },()=>{ this.setProcesFieldVisiable(); this.getTreeData(); }); } fillLoadFileByProduct=(productId)=>{ const {data}=this.props; const {id}=data?data:{}; if(!id) { if(productId) { const json = initFilter(this.props.login.OrgId, '', 'CREATE_TIME', 0); extendInclude(json, 'Nav_ProposalSopFiles.Nav_ImgFile'); extendRule(json, 'PRODUCT_ID', 1, productId); extendRule(json, 'ENABLE_STATUS', 1, 0); this.props.dispatch({ type: 'EMemProposalEdit/getProposalList', payload: json, onComplete: (ret) => { if (ret && ret.length) { var tmp = ret[0]; const updateLoadFileList = []; if (tmp.Nav_ProposalSopFiles) { tmp.Nav_ProposalSopFiles.map(t => { updateLoadFileList.push({ uid: t.ID, name: t.Nav_ImgFile ? t.Nav_ImgFile.FILE_NAME : '未知文件', status: 'done', response: {Data: t.IMG_FILE_ID, file: t}, }); }); } this.setState({ updateLoadFileList: updateLoadFileList, }); } } }); } else{ this.setState({ updateLoadFileList: [], }); } } } getBtns=(code)=>{ if(this.props.data.isShow)return; if(this.state.btns){ return this.state.btns.map(item=>{ if(item.CODE==code) { if (item.BTN_TYPE == 1) { return ; } else if(item.BTN_TYPE==7){ if(item.CLICK_EVENT=='addNode'){ return ; } else if(item.CLICK_EVENT=='removeNode'){ return ; } } } }); } }; getUpdateData=()=>{ const data={...this.state.data}; if(this.state.processDetail&&this.state.processDetail.ID){ if(!data.Nav_ProposalProcess) { data.Nav_ProposalProcess = { ORG_ID: this.props.login.OrgId, ID: guid(), Nav_Details: [], }; }; if(!data.Nav_ProposalProcess.Nav_Details) { data.Nav_ProposalProcess.Nav_Details = []; }; let details=[]; data.Nav_ProposalProcess.Nav_Details.map(t=>{ if(t.ID!=this.state.processDetail.ID) { details.push(t); }; }); if(this.state.processDetail.ID){ details.push(this.state.processDetail); } data.Nav_ProposalProcess.Nav_Details=details; }; let updateData=getOnlyPropertyData(data); if(data.Nav_ProposalProcess){ updateData.Nav_ProposalProcess=getOnlyPropertyData( data.Nav_ProposalProcess); if(data.Nav_ProposalProcess.Nav_Details){ updateData.Nav_ProposalProcess.Nav_Details=[]; data.Nav_ProposalProcess.Nav_Details.map(t=>{ let tmp=getOnlyPropertyData(t); updateData.Nav_ProposalProcess.Nav_Details.push(tmp); }); } } if(data.Nav_Details) { updateData.Nav_Details = []; data.Nav_Details.map(t => { let tmp = getOnlyPropertyData(t); updateData.Nav_Details.push(tmp); }); } if(data.Nav_Product){ updateData.Nav_Product=data.Nav_Product; } if(this.state.updateLoadFileList) { updateData.Nav_ProposalSopFiles = []; this.state.updateLoadFileList.map(t => { if (t.response) { if (t.response.file) { updateData.Nav_ProposalSopFiles.push(getOnlyPropertyData(t.response.file)); } else if(t.response.Data) { updateData.Nav_ProposalSopFiles.push({ IMG_FILE_ID: t.response.Data, ORG_ID: this.props.login.OrgId, }); } } }); } return updateData; } handleOk = () => { const {form,dispatch,data} = this.props; const {getFieldValue, getFieldDecorator, validateFields, validateFieldsAndScroll, setFieldsValue} = form; validateFieldsAndScroll((errors, values) => { if (errors) return; let updateData=this.getUpdateData(); let isError=false; if(empty(getDataFieldValue(updateData,'CODE'))){ message.error('编号'); isError=true; } if(empty(getDataFieldValue(updateData,'NAME'))){ message.error('名称'); isError=true; } if(empty(getDataFieldValue(updateData,'Nav_Product.CODE'))){ message.error('请选择品号'); isError=true; } if(empty(getDataFieldValue(updateData,'Nav_Product.SPLIT_QTY'))){ message.error('请填写交货方式'); isError=true; } if(empty(getDataFieldValue(updateData,'Nav_Product.PCS_SIZE'))){ message.error('请填写单PCS尺寸'); isError=true; } if(empty(getDataFieldValue(updateData,'Nav_Product.SPLIT_LENGTH'))){ message.error('请填写拼版长'); isError=true; } if(empty(getDataFieldValue(updateData,'Nav_Product.SPLIT_WIDTH'))){ message.error('请填写拼版宽'); isError=true; } if (!updateData.Nav_ProposalProcess || !updateData.Nav_ProposalProcess.Nav_Details || updateData.Nav_ProposalProcess.Nav_Details.length == 0) { message.error('请填写工艺路线信息'); isError=true; }; if(updateData.Nav_Details){ updateData.Nav_Details.forEach((n,i)=>{ if(n.PROPOSAL_TYPE==0){ if(empty(getDataFieldValue(n,'PRODUCT_ID'))) { message.error('请选择材料'); isError=true; } } }); } if(updateData.Nav_ProposalProcess) { if (empty(getDataFieldValue(updateData, 'Nav_ProposalProcess.NAME', ''))) { message.error('请填写工艺路线名称'); isError = true; } if (empty(getDataFieldValue(updateData, 'Nav_ProposalProcess.CODE', ''))) { message.error('请填写工艺路线编号'); isError = true; } if (getDataFieldValue(updateData, 'Nav_ProposalProcess.FQC_AUTO_INSPEC', false) && getDataFieldValue(updateData, 'Nav_ProposalProcess.FQC_INSPEC_TYPE', 0) == 1 && getDataFieldValue(updateData, 'Nav_ProposalProcess.FQC_INSPEC_QTY', 0) == 0) { message.error('请填写送检数量'); isError = true; } if(updateData.Nav_ProposalProcess.Nav_Details){ updateData.Nav_ProposalProcess.Nav_Details.map(t=>{ if(t.PROCEDURE_ID==undefined|| t.PROCEDURE_ID==null||t.PROCEDURE_ID=='') { message.error('请填写工序' + t.NAME + '工序'); isError = true; }; if(t.UNIT_ID==undefined|| t.UNIT_ID==null||t.UNIT_ID=='') { message.error('请填写工序' + t.NAME + '单位'); isError = true; }; if (getDataFieldValue(t, 'PROCEDURE_TYPE', 0)==1 && empty(getDataFieldValue(t, 'ORDER_FIELD', 0))) { message.error('请填写工序'+t.NAME+'对应字段'); isError = true; }; if (getDataFieldValue(t, 'PQC_AUTO_INSPEC', false) && getDataFieldValue(t, 'PQC_INSPEC_TYPE', 0) == 1 && getDataFieldValue(t, 'PQC_INSPEC_QTY', 0) == 0) { message.error('请填写工序'+t.NAME+'送检数量'); isError = true; }; if (getDataFieldValue(t, 'PROCEDURE_TYPE', 0)==0 &&getDataFieldValue(t, 'CONVERT_RATIO', 0) ==0) { message.error('请填写工序'+t.NAME+'换算比率'); isError = true; }; }); } } if(isError)return; dispatch({ type: 'EMemProposalEdit/fullUpdate', payload: updateData, onComplete: (ret) => { if(ret) { if(data.close){ data.close(); } message.success('执行成功'); } } }); }) }; getInnerControl=({fieldType,data,field,defaultValue,extendData,inputDataApi,onSelectValue,onChange,inpuNavField,onFilter,disabled,inputLabelField,isNotToNum})=>{ if(fieldType==1){//文本 if(inputDataApi){ return } return {onChange(e,field)}} disabled={this.props.data.isShow||disabled} /> } else if(fieldType==2){//时间 } else if(fieldType==3){//下拉 const options = extendData ? extendData.split(',') : []; return } else if(fieldType==4){//单选 } else if(fieldType==5){//多选 return {onChange(e,field)}} disabled={this.props.data.isShow||disabled} /> } else if(fieldType==6){//长文本 return