mh_jy_safe_web/src/components/CustomPages/EM/EmProposalEditPage.js
2025-08-25 10:08:30 +08:00

1296 lines
48 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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 <Button type={item.CSS} icon={item.ICON} style={{ 'marginLeft': '10px' }} key={item.ID} onClick={() => this.handleOk(false,false)}>{item.LABEL}</Button>;
}
else if(item.BTN_TYPE==7){
if(item.CLICK_EVENT=='addNode'){
return <Button type={item.CSS} icon={item.ICON} style={{ 'marginLeft': '10px' }} key={item.ID} onClick={() => this.addTreeNode()}>{item.LABEL}</Button>;
}
else if(item.CLICK_EVENT=='removeNode'){
return <Button type={item.CSS} icon={item.ICON} style={{ 'marginLeft': '10px' }} key={item.ID} onClick={() => this.removeTreeNode()}>{item.LABEL}</Button>;
}
}
}
});
}
};
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 <DropDownPagination inputDataApi={inputDataApi} fieldName={field} inpuNavField={inpuNavField} inputLabelField={inputLabelField}
data={data} onSelect={onSelectValue} disabled={this.props.data.isShow} onFilter={onFilter}/>
}
return <Input value={getDataFieldValue(data,field,defaultValue)} onChange={(e)=>{onChange(e,field)}} disabled={this.props.data.isShow||disabled} />
}
else if(fieldType==2){//时间
}
else if(fieldType==3){//下拉
const options = extendData ? extendData.split(',') : [];
return <Select value={getDataFieldValue(data,field,defaultValue)} onChange={(e)=>{onChange(e,field)}} disabled={this.props.data.isShow||disabled}>
{
options.map((item, key) => {
let paris = item.split(":");
return <Option key={key} value={isNotToNum?paris[1]: (+paris[1])}>{paris[0]}</Option>
})
}
</Select>
}
else if(fieldType==4){//单选
}
else if(fieldType==5){//多选
return <Switch checkedChildren="是" unCheckedChildren="否" checked={getDataFieldValue(data,field,defaultValue)} onChange={(e)=>{onChange(e,field)}} disabled={this.props.data.isShow||disabled} />
}
else if(fieldType==6){//长文本
return <TextArea rows={4} value={getDataFieldValue(data,field,defaultValue)} onChange={(e)=>{onChange(e,field)}} disabled={this.props.data.isShow||disabled}/>
}
else if(fieldType==7){//数值
return <InputNumber value={getDataFieldValue(data,field,defaultValue)} min={0} onChange={(e)=>{onChange(e,field)}} disabled={this.props.data.isShow||disabled}/>
}
else if(fieldType==8){//富文本编辑
return (<Editor ref="editor" icons={ [" undo redo | underline | ","forecolor backcolor "]}
value={getDataFieldValue(data,field,defaultValue)}
={(e)=>{onChange(e,field)}}/>)
}
return <Input value={getDataFieldValue(data,field,defaultValue)} onChange={(e)=>{onChange(e,field)}} disabled={this.props.data.isShow||disabled}/>
}
getControl=(params)=>{
const {form, location, dispatch, match,loading} = this.props;
const {getFieldValue, getFieldDecorator, validateFields, validateFieldsAndScroll, setFieldsValue} = form;
if(this.state.hiddenFields&&this.state.hiddenFields[params.field])return;
const formItemLayout = params.formItemLayout?params.formItemLayout:{
labelCol: { span: 6 },
wrapperCol: { span: 14 },
};
return <Col key={params.field} span={params.span?params.span:12}>
<Form.Item
label={<>{ params.isRequery?<span style={{color:'red'}}>*</span>:null}{params.label}</>}
{...formItemLayout}
>
{this.getInnerControl(params)}
</Form.Item>
</Col>
};
showFields=(data)=>{
if(data) {
return data.map(item => {
return this.getControl(item);
});
}
};
showTreeNode=(data)=>{
if(!data||data.length==0)
return;
// data.sort((x, y) => (x['NUM']&&y['NUM']?
// ((parseInt(x['NUM'])&&parseInt( y['NUM']))?((parseInt(x['NUM']) >parseInt( y['NUM']))?1:-1):((x['NUM']>y['NUM'])? 1 : -1)):(x['NUM']?-1:1)));
return data.map((item) => {
if (item) {
let title=item.title;
return (
<TreeNode title={title} key={item.ID.toString()} data={item} isLeaf={!(item.Children&&item.Children.length)}>
{this.showTreeNode(item.Children)}}
</TreeNode>
);
};
});
};
showSelectedTreeNode=()=>{
const node=this.state.selectedTreeNode;
if(node){
return node.title;
}
return '空';
};
doSelectTreeNode=(node)=>{
let processDetail={};
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);
};
});
details.push(this.state.processDetail);
data.Nav_ProposalProcess.Nav_Details=details;
};
if(data.Nav_ProposalProcess&&data.Nav_ProposalProcess.Nav_Details&&node){
data.Nav_ProposalProcess.Nav_Details.map(t=>{
if(t.ID===node.ID) {
processDetail = t;
}
});
}
this.setState({
selectedTreeNode: node,
data:data,
processDetail:processDetail,
treeSelectedKeys:node?[node.ID.toString()]:[],
},()=>{
this.setProcesDetailFieldVisiable();
});
};
onSelectTreeNode = (selectedKeys, e) => {
const node= e.node.props.data;
this.doSelectTreeNode(this.state.selectedTreeNode&&node.ID==this.state.selectedTreeNode.ID?null:node);
};
doSelectNodeById=(data,id)=>{
if(data){
data.map(t=>{
if(t.ID===id){
this.doSelectTreeNode(t);
}
else if(t.Children){
this.doSelectNodeById(t.Children,id);
}
});
}
};
addTreeNode=()=> {
const data={...this.state.data};
const processDetailData = {
ORG_ID: this.props.login.OrgId,
ID: guid(),
NAME:'新增节点',
NUM:99999,
TYPE:0,
PRO_TYPE:0,
PARENT_ID: this.state.selectedTreeNode&&this.state.selectedTreeNode.ID ? this.state.selectedTreeNode.ID : null,
};
if (!data.Nav_ProposalProcess) {
data.Nav_ProposalProcess = {
ORG_ID: this.props.login.OrgId,
};
};
if (!data.Nav_ProposalProcess.Nav_Details) {
data.Nav_ProposalProcess.Nav_Details = [];
}
let num=0;
data.Nav_ProposalProcess.Nav_Details.forEach((n,i)=>{
if(n.NUM&&n.NUM>num) {
num = n.NUM;
}
});
num++;
processDetailData.NUM=num;
data.Nav_ProposalProcess.Nav_Details.push(processDetailData);
this.setState({
data:data,
isProcessChange:true,
expandedKeys:[processDetailData.PARENT_ID],
},()=>{
this.getTreeData(()=>{
this.doSelectNodeById(this.state.treeData,processDetailData.ID);
this.setState({
expandedKeys:[],
});
});
});
};
removeTreeNode=()=>{
if(this.state.selectedTreeNode){
const tmp={...this.state.data};
if(tmp.Nav_ProposalProcess&&tmp.Nav_ProposalProcess.Nav_Details) {
const result=[];
tmp.Nav_ProposalProcess.Nav_Details.map(t=>{
if(t.ID!=this.state.selectedTreeNode.ID){
result.push(t);
};
});
tmp.Nav_ProposalProcess.Nav_Details=result;
};
this.setState({
data:tmp,
isProcessChange:true,
processDetail:{},
},()=>{
this.getTreeData(()=>{
if(this.state.treeData&&this.state.treeData.length>0) {
this.doSelectTreeNode(this.state.treeData[0]);
}
else{
this.doSelectTreeNode(null);
}
});
});
};
};
doGetTreeNode=(data,parentNode,list, parentId)=>{
if(data){
let tmp=[];
data.map(item=>{
if(item.PARENT_ID===parentId){
if(this.state.processDetail&&this.state.processDetail.ID&&item.ID==this.state.processDetail.ID){
tmp.push(this.state.processDetail);
}
else {
tmp.push(item);
}
};
});
if(tmp.length>0){
tmp.sort((x, y) => (parseInt( x.NUM) > parseInt( y.NUM)) ? 1 : -1);
const result=[];
tmp.map(t=>{
const node= {
title:t.NAME?(t.NUM+'/'+ t.NAME):(t.Nav_Procedure==null?'新增节点':( t.NUM+'/'+ t.Nav_Procedure.NAME)),
ID:t.ID,
};
result.push(node);
this.doGetTreeNode(data,node,list,t.ID);
});
if(parentNode){
parentNode.Children=result;
}else{
result.map(t=>{
list.push(t);
});
};
};
};
};
getTreeData=(complete)=>{
const treeData=[];
if(this.state.data.Nav_ProposalProcess&&this.state.data.Nav_ProposalProcess.Nav_Details) {
this.doGetTreeNode(this.state.data.Nav_ProposalProcess.Nav_Details,null,treeData,null);
};
this.setState({
treeData:treeData,
},()=>{
if (typeof complete === 'function') {
complete(treeData);
};
});
};
setProcesFieldVisiable=()=>{
const data =this.state.data;
const hiddenFields={...this.state.hiddenFields};
const isFqc= getDataFieldValue(data,'Nav_ProposalProcess.IS_FQC',false);
const autoInspec=getDataFieldValue(data,'Nav_ProposalProcess.FQC_AUTO_INSPEC',false);
hiddenFields['Nav_ProposalProcess.FQC_TYPE']=!isFqc;
hiddenFields['Nav_ProposalProcess.Nav_FQCWorkStage.NAME']=!isFqc;
hiddenFields['Nav_ProposalProcess.FQC_AUTO_INSPEC']=!isFqc;
hiddenFields['Nav_ProposalProcess.FQC_INSPEC_TYPE']=!(isFqc&&autoInspec);
hiddenFields['Nav_ProposalProcess.FQC_INSPEC_QTY']=!(isFqc&&autoInspec);
hiddenFields['Nav_ProposalProcess.FQC_INSPEC_QTY_OVER']=!(isFqc&&autoInspec);
this.setState({
hiddenFields:hiddenFields,
});
};
setProcesDetailFieldVisiable=()=>{
const data =this.state.processDetail;
const hiddenFields={...this.state.hiddenFields};
const type=getDataFieldValue(data,'PROCEDURE_TYPE',0);
const isPqc= getDataFieldValue(data,'IS_PQC',false);
const autoInspec=getDataFieldValue(data,'PQC_AUTO_INSPEC',false);
const isProType=getDataFieldValue(data,'PRO_TYPE',0);
hiddenFields['PQC_TYPE']=!isPqc;
hiddenFields['Nav_PQCWorkStage.NAME']=!isPqc;
hiddenFields['PQC_AUTO_INSPEC']=!isPqc;
hiddenFields['PQC_INSPEC_TYPE']=!(isPqc&&autoInspec);
hiddenFields['PQC_INSPEC_QTY']=!(isPqc&&autoInspec);
hiddenFields['PQC_INSPEC_QTY_OVER']=!(isPqc&&autoInspec);
hiddenFields['ORDER_FIELD']=type!=1;
hiddenFields['PRO_TYPE']=type!=0;
hiddenFields['TIME_UNIT']=type!=0;
hiddenFields['CONVERT_RATIO']=type!=0;
hiddenFields['STANDARD_TIME']=type!=0;
hiddenFields['IS_PQC']=type!=0;
hiddenFields['BOOK_BAD']=type!=0||isProType==0;
this.setState({
hiddenFields:hiddenFields,
});
};
doSelectProcess=(ret)=>{
const data = {...this.state.data};
data['PROPOSAL_PROCESS_ID'] = ret ? ret.ID : null;
data['Nav_ProposalProcess'] = ret;
this.setState({
data: data,
isProcessChange: true,
processDetail: {},
}, () => {
this.setProcesFieldVisiable();
this.getTreeData(() => {
if (this.state.treeData && this.state.treeData.length > 0) {
this.doSelectTreeNode(this.state.treeData[0]);
}
else {
this.doSelectTreeNode(null);
}
});
});
}
selectProcess=(id)=> {
if(id) {
const json = initFilter(this.props.login.OrgId, '', 'NUM', 0);
json['Keyword'] = this.state.data.ID;
json['Parameter1'] = id;
this.props.dispatch({
type: 'EMemProposalEdit/getProposalProcess',
payload: json,
onComplete: (ret) => {
this.doSelectProcess(ret);
}
});
}
else{
this.doSelectProcess(null);
}
}
handleSopClick= async function (recordId,ids){
await this.props.dispatch({
type: 'custom/save',
payload: {
['sopViewClick'+recordId]:true,
},
});
};
handleSopShowModal = (file) => {
this.setState({
sopData:{ids:file.response.Data,id:file.response.Data},
sopVisible: true
},()=>{
this.handleSopClick(file.response.Data,file.response.Data);
});
};
handleSopCloseModal = () => {
this.setState({
sopVisible: false
});
};
resetPcs=(data)=>{
const splitQty= getDataFieldValue(data,'Nav_Product.SPLIT_QTY');
if(data.Nav_Details&&data.Nav_Details.length){
data.Nav_Details.forEach((n,i)=>{
if(n.SET&&splitQty){
n.PCS= n.SET*splitQty;
}else{
n.PCS= 0;
}
});
}
}
render() {
const {form, location, dispatch, match,loading} = this.props;
const {getFieldValue, getFieldDecorator, validateFields, validateFieldsAndScroll, setFieldsValue} = form;
const {data,processDetail}=this.state;
const onHeadRowChange=(e,field)=>{
if(e==null||e==undefined)return;
const value=e.target&&e.target.value?e.target.value:(typeof e ==='object'?null:e);
const tmp = {...this.state.data};
setDataFieldValue(tmp,field,value);
if(field=='Nav_Product.SPLIT_QTY') {
this.resetPcs(tmp);
}
this.setState({
data: tmp,
},()=>{
if(field=='Nav_ProposalProcess.IS_FQC'||field=='Nav_ProposalProcess.FQC_AUTO_INSPEC'){
this.setProcesFieldVisiable();
}
});
};
const onProcessDetailChange=(e,field)=>{
if(e==null||e==undefined)return;
const value=e.target&&e.target.value?e.target.value:(typeof e ==='object'?null:e);
let tmp = {...this.state.processDetail};
setDataFieldValue(tmp,field,value);
this.setState({
processDetail: tmp,
},()=>{
if(field=='NUM'){
this.getTreeData();
};
if(field=='IS_PQC'||field=='PQC_AUTO_INSPEC'||field=='PROCEDURE_TYPE'||field=='PRO_TYPE'){
this.setProcesDetailFieldVisiable();
};
});
};
const onWorkstageFilter=({params})=>{
extendRule(params,'TYPE',1,2);
};
const onSelectFQCWorkstage=(param)=>{
const paramData = param.data;
if (paramData && paramData.length > 0||param.isClear) {
const tmp = {...this.state.data};
const workstageId=paramData && paramData.length > 0?paramData[0]:null;
const workstageName=paramData && paramData.length > 0?paramData[1]:'';
setDataFieldValue(tmp,'Nav_ProposalProcess.FQC_WORKSTAGE_ID',workstageId);
setDataFieldValue(tmp,'Nav_ProposalProcess.Nav_FQCWorkStage.NAME',workstageName);
this.setState({
data: tmp,
});
};
};
const onSelectPQCWorkstage=(param)=>{
const paramData = param.data;
if (paramData && paramData.length > 0||param.isClear) {
let tmp = {...this.state.processDetail};
const workstageId=paramData && paramData.length > 0?paramData[0]:null;
const workstageName=paramData && paramData.length > 0?paramData[1]:'';
setDataFieldValue(tmp,'PQC_WORKSTAGE_ID',workstageId);
setDataFieldValue(tmp,'Nav_PQCWorkStage.NAME',workstageName);
this.setState({
processDetail: tmp,
});
};
};
const onSelectPQCProdure=(param)=>{
const paramData = param.data;
const record=param.record;
if (paramData && paramData.length > 0||param.isClear) {
let tmp = {...this.state.processDetail};
const prcedureId=paramData && paramData.length > 0?paramData[0]:null;
const prcedureName=paramData && paramData.length > 0?paramData[1]:'';
setDataFieldValue(tmp,'PROCEDURE_ID',prcedureId);
setDataFieldValue(tmp,'Nav_Procedure.NAME',prcedureName);
setDataFieldValue(tmp,'NAME',prcedureName);
if(record){
const fields=['PROCEDURE_TYPE','ORDER_FIELD','PRO_TYPE','BOOK_BAD','CONVERT_RATIO','STANDARD_TIME','TIME_UNIT','UNIT_ID','Nav_Unit.NAME',
'PQC_AUTO_INSPEC','PQC_INSPEC_TYPE','PQC_INSPEC_QTY','PQC_INSPEC_QTY_OVER','IS_PQC','PQC_TYPE','PQC_WORKSTAGE_ID','REMARK',
'Nav_PQCWorkStage.NAME','EXT_PROCEDURE_CODE'];
fields.forEach((n,i)=>{
setDataFieldValue(tmp,n, getDataFieldValue( record,n));
});
}
this.setState({
processDetail: tmp,
},()=>{
this.setProcesDetailFieldVisiable();
});
};
};
const onSelectUnit=(param)=>{
const paramData = param.data;
const record=param.record;
if (paramData && paramData.length > 0||param.isClear) {
let tmp = {...this.state.processDetail};
const unitId=paramData && paramData.length > 0?paramData[0]:null;
const unitName=paramData && paramData.length > 0?paramData[1]:'';
setDataFieldValue(tmp,'UNIT_ID',unitId);
setDataFieldValue(tmp,'Nav_Unit.NAME',unitName);
this.setState({
processDetail: tmp,
},()=>{
this.setProcesDetailFieldVisiable();
});
};
};
const onSelectProduct=({record,isClear})=>{
let tmp = {...this.state.data};
setDataFieldValue(tmp,'Nav_Product.CODE', getDataFieldValue( record,'CODE'));
setDataFieldValue(tmp,'Nav_Product.NAME', getDataFieldValue( record,'NAME'));
setDataFieldValue(tmp,'Nav_Product.DESCRIPTION_1', getDataFieldValue( record,'DESCRIPTION_1'));
setDataFieldValue(tmp,'PRODUCT_ID', getDataFieldValue( record,'ID'));
setDataFieldValue(tmp,'Nav_Product.SPLIT_QTY', getDataFieldValue( record,'SPLIT_QTY'));
setDataFieldValue(tmp,'Nav_Product.PCS_SIZE', getDataFieldValue( record,'PCS_SIZE'));
setDataFieldValue(tmp,'Nav_Product.SPLIT_LENGTH', getDataFieldValue( record,'SPLIT_LENGTH'));
setDataFieldValue(tmp,'Nav_Product.SPLIT_WIDTH', getDataFieldValue( record,'SPLIT_WIDTH'));
setDataFieldValue(tmp,'Nav_Product.Nav_Mould.NAME', getDataFieldValue( record,'Nav_Mould.NAME'));
setDataFieldValue(tmp,'Nav_Product.MOULD_ID', getDataFieldValue( record,'MOULD_ID'));
setDataFieldValue(tmp,'Nav_Product.THICKNESS', getDataFieldValue( record,'THICKNESS'));
setDataFieldValue(tmp,'Nav_Product.METAL_THICKNESS', getDataFieldValue( record,'METAL_THICKNESS'));
setDataFieldValue(tmp,'Nav_Product.PRINTING_INK', getDataFieldValue( record,'PRINTING_INK'));
setDataFieldValue(tmp,'Nav_Product.ZH_PRINTING_INK', getDataFieldValue( record,'ZH_PRINTING_INK'));
setDataFieldValue(tmp,'Nav_Product.NUMERICAL_CONTROL', getDataFieldValue( record,'NUMERICAL_CONTROL'));
setDataFieldValue(tmp,'Nav_Product.HEAT_CONDUCTION', getDataFieldValue( record,'HEAT_CONDUCTION'));
setDataFieldValue(tmp,'Nav_Product.WITHSTAND_VOLTAGE', getDataFieldValue( record,'WITHSTAND_VOLTAGE'));
this.resetPcs(tmp);
this.setState({
data: tmp,
},()=>{
this.selectProcess(record?record.PROCESS_ID:null);
});
this.fillLoadFileByProduct(getDataFieldValue( record,'ID'));
};
const onSelectMould=({record})=>{
let tmp = {...this.state.data};
setDataFieldValue(tmp,'Nav_Product.Nav_Mould.NAME', getDataFieldValue( record,'NAME'));
setDataFieldValue(tmp,'Nav_Product.MOULD_ID', getDataFieldValue( record,'ID'));
this.setState({
data: tmp,
});
};
const onSelectTestFixture=({record})=>{
let tmp = {...this.state.data};
setDataFieldValue(tmp,'Nav_Product.Nav_TestFixture.NAME', getDataFieldValue( record,'NAME'));
setDataFieldValue(tmp,'Nav_Product.TEST_FIXTURE_ID', getDataFieldValue( record,'ID'));
this.setState({
data: tmp,
});
};
const onSelectProcess=({record})=>{
this.selectProcess(record?record.ID:null);
};
const onProductFilter=({params})=>{
let group=initFilterGroup(false);
extendGroupRule(group,'PRODUCT_TYPE',1,0);
extendGroupRule(group,'PRODUCT_TYPE',1,1);
extendFilterGroup(params,group);
extendInclude(params,'Nav_Mould');
};
const productFields=[
{fieldType:1,data:data,label:'编号', field:'CODE', isRequery:true,onChange:onHeadRowChange},
{fieldType:1,data:data,label:'名称', field:'NAME', isRequery:true,onChange:onHeadRowChange},
{fieldType: 1,data: data,label: '品号',field: 'Nav_Product.CODE',defaultValue: '',inputLabelField:'CODE',isRequery:true,inputDataApi: 'FM/Product/OrderPaged',onSelectValue: onSelectProduct,onFilter:onProductFilter},
{fieldType:1,data:data,label:'品名', field:'Nav_Product.NAME',defaultValue:'',disabled:true},
{fieldType:6,data:data,label:'长描述', field:'Nav_Product.DESCRIPTION_1',defaultValue:'',disabled:true},
{fieldType:7,data:data,label:'交货方式', field:'Nav_Product.SPLIT_QTY',isRequery:true,onChange:onHeadRowChange},
{fieldType:1,data:data,label:'单PCS尺寸', field:'Nav_Product.PCS_SIZE',isRequery:true,onChange:onHeadRowChange},
{fieldType:7,data:data,label:'拼版长', field:'Nav_Product.SPLIT_LENGTH',isRequery:true,onChange:onHeadRowChange},
{fieldType:7,data:data,label:'拼版宽', field:'Nav_Product.SPLIT_WIDTH', isRequery:true,onChange:onHeadRowChange},
{fieldType:1,data:data,label:'板厚', field:'Nav_Product.THICKNESS', onChange:onHeadRowChange},
{fieldType:1,data:data,label:'铜箔厚度', field:'Nav_Product.METAL_THICKNESS', onChange:onHeadRowChange},
{fieldType:1,data:data,label:'导热', field:'Nav_Product.HEAT_CONDUCTION', onChange:onHeadRowChange},
{fieldType:3,data:data,label:'阻焊油墨', field:'Nav_Product.ZH_PRINTING_INK', onChange:onHeadRowChange,isNotToNum:true,extendData:'空:,白油:白油,黑油:黑油,高反:高反,绿色:绿色,哑光:哑光,黑色:黑色'},
{fieldType:3,data:data,label:'文字油墨', field:'Nav_Product.PRINTING_INK', onChange:onHeadRowChange,isNotToNum:true, extendData:'空:,镂空:镂空,灰色:灰色,黑色:黑色,蓝色:蓝色,黄色:黄色,白色:白色'},
{fieldType: 1,data: data,label: '模具',field: 'Nav_Product.Nav_Mould.NAME',defaultValue: '',inputDataApi: 'FM/Product/OrderPaged', onSelectValue: onSelectMould,onFilter:({params})=>{extendRule(params,'PRODUCT_TYPE',1,4);extendRule(params,'ENABLE_STATUS',1,0);}},
{fieldType:1,data:data,label:'数控', field:'Nav_Product.NUMERICAL_CONTROL', onChange:onHeadRowChange},
{fieldType: 1,data: data,label: '测试架',field: 'Nav_Product.Nav_TestFixture.NAME',defaultValue: '',inputDataApi: 'FM/Product/OrderPaged', onSelectValue: onSelectTestFixture,onFilter:({params})=>{extendRule(params,'PRODUCT_TYPE',1,5);extendRule(params,'ENABLE_STATUS',1,0);}},
{fieldType:3,data:data,label:'耐压', field:'Nav_Product.WITHSTAND_VOLTAGE', onChange:onHeadRowChange,isNotToNum:true, extendData:'空:,AC≥1000V:AC≥1000V,AC≥1500V:AC≥1500V,AC≥1240V:AC≥1240V,AC≥1600V:AC≥1600V,AC>=1200V:AC>=1200V,AC≥2000V:AC≥2000V,AC≥3500V:AC≥3500V,AC≥5000V:AC≥5000V,AC≥300V:AC≥300V,AC≥500V:AC≥500V'},
{fieldType: 1,data: data,label: '工艺路线',field: 'Nav_ProposalProcess.Nav_Process.NAME',defaultValue: '',inputDataApi: 'FM/Process/OrderPaged',onSelectValue: onSelectProcess,onFilter:({params})=>{extendRule(params,'ENABLE_STATUS',1,0);}},
{fieldType: 1,data: data,label: '编制人',field: 'EM_CONFIRM_USER_NAME',defaultValue: '', onChange:onHeadRowChange},
{fieldType:3,data:data,label:'启用标志',field:'ENABLE_STATUS',defaultValue:0,extendData:'启用:0,不启用:1',onChange:onHeadRowChange},
]
const processFields=[
{fieldType:1,data:data,label:'工艺路线名称', field:'Nav_ProposalProcess.NAME',defaultValue:'',isRequery:true,onChange:onHeadRowChange},
{fieldType:1,data:data,label:'工艺路线代码',field:'Nav_ProposalProcess.CODE',defaultValue:'',isRequery:true,onChange:onHeadRowChange},
{fieldType:5,data:data,label:'成品检验',field:'Nav_ProposalProcess.IS_FQC',defaultValue:false,onChange:onHeadRowChange},
{fieldType:3,data:data,label:'检验方式',field:'Nav_ProposalProcess.FQC_TYPE',defaultValue:null,extendData:'全检:0,抽检:1',onChange:onHeadRowChange},
{fieldType: 1,data: data,label: '成检中心',field: 'Nav_ProposalProcess.Nav_FQCWorkStage.NAME',defaultValue: '',inputDataApi: 'FM/WorkStage/OrderPaged',onSelectValue: onSelectFQCWorkstage,inpuNavField:'ID,NAME',onFilter:onWorkstageFilter},
{fieldType:5,data:data,label:'自动送检',field:'Nav_ProposalProcess.FQC_AUTO_INSPEC',defaultValue:false,onChange:onHeadRowChange},
{fieldType:3,data:data,label:'自动送检方式',field:'Nav_ProposalProcess.FQC_INSPEC_TYPE',defaultValue:null,extendData:'全部:0,批量:1',onChange:onHeadRowChange},
{fieldType:7,data:data,label:'送检数量',field:'Nav_ProposalProcess.FQC_INSPEC_QTY',defaultValue:0,onChange:onHeadRowChange},
{fieldType:5,data:data,label:'是否检验溢出',field:'Nav_ProposalProcess.FQC_INSPEC_QTY_OVER',defaultValue:false,onChange:onHeadRowChange},
{fieldType:5,data:data,label:'QA检验',field:'Nav_ProposalProcess.IS_QA',defaultValue:false,onChange:onHeadRowChange},
]
const processDetailFields=[
{fieldType: 1,data: processDetail,label: '工序',field: 'Nav_Procedure.NAME',defaultValue: '',inputDataApi: 'FM/Procedure/OrderPaged',onSelectValue: onSelectPQCProdure,inpuNavField:'ID,NAME,Nav_PQCWorkStage.NAME,Nav_Unit.NAME'},
{fieldType:3,data:processDetail,label:'工序类型',field:'PROCEDURE_TYPE',defaultValue:0,onChange:onProcessDetailChange,extendData:'实际工序:0,显示工序:1,打印工序:2'},
{fieldType:3,data:processDetail,label:'工序类别',field:'PRO_TYPE',defaultValue:false,onChange:onProcessDetailChange,extendData:'计划工序:0,报工工序:1,计划且报工:2'},
{fieldType:1,data:processDetail,label:'显示字段', field:'ORDER_FIELD',defaultValue:'',onChange:onProcessDetailChange},
{fieldType:7,data:processDetail,label:'换算比率',field:'CONVERT_RATIO',defaultValue:1,isRequery:true,onChange:onProcessDetailChange},
{fieldType:7,data:processDetail,label:'标准工时',field:'STANDARD_TIME',defaultValue:1,onChange:onProcessDetailChange},
{fieldType:5,data:processDetail,label:'可报异常',field:'BOOK_BAD',defaultValue:false,onChange:onProcessDetailChange},
{fieldType:3,data:processDetail,label:'工时单位',field:'TIME_UNIT',defaultValue:0,onChange:onProcessDetailChange,extendData:'小时:0,分钟:1,秒:2'},
{fieldType: 1,data: processDetail,label: '单位',field: 'Nav_Unit.NAME',defaultValue: '',inputDataApi: 'FM/Unit/OrderPaged',isRequery:true,onSelectValue: onSelectUnit,inpuNavField:'ID,NAME'},
{fieldType:5,data:processDetail,label:'PQC检验',field:'IS_PQC',defaultValue:false,onChange:onProcessDetailChange},
{fieldType:3,data:processDetail,label:'检验方式',field:'PQC_TYPE',defaultValue:null,extendData:'全检:0,抽检:1',onChange:onProcessDetailChange},
{fieldType:1,data: processDetail,label: '检验中心',field: 'Nav_PQCWorkStage.NAME',defaultValue: '',inputDataApi: 'FM/WorkStage/OrderPaged',onSelectValue: onSelectPQCWorkstage,inpuNavField:'ID,NAME',onFilter:onWorkstageFilter},
{fieldType:5,data:processDetail,label:'自动送检',field:'PQC_AUTO_INSPEC',defaultValue:false,onChange:onProcessDetailChange},
{fieldType:3,data:processDetail,label:'自动送检方式',field:'PQC_INSPEC_TYPE',defaultValue:null,extendData:'全部:0,批量:1',onChange:onProcessDetailChange},
{fieldType:7,data:processDetail,label:'送检数量',field:'PQC_INSPEC_QTY',defaultValue:0,onChange:onProcessDetailChange},
{fieldType:5,data:processDetail,label:'是否检验溢出',field:'PQC_INSPEC_QTY_OVER',defaultValue:null,onChange:onProcessDetailChange},
{fieldType:1,data:processDetail,label:'外部工序编号',field:'EXT_PROCEDURE_CODE',defaultValue:'',onChange:onProcessDetailChange},
{fieldType:7,data:processDetail,label:'工艺顺序',field:'NUM',defaultValue:0,onChange:onProcessDetailChange},
{fieldType:8,data:processDetail,label:'备注',field:'REMARK',defaultValue:'',onChange:onProcessDetailChange,span:24,formItemLayout:{
labelCol: { span: 3 },
wrapperCol: { span: 17 },
}},
]
const that=this;
const uploadSopProps = {
name: 'file',
action: config.serviceHost('api/PF/File/UploadFileToImage'),
data:{OrgId:this.props.login.OrgId},
fileList:this.state.updateLoadFileList,
onPreview:function(file){
that.handleSopShowModal(file);
},
onChange(info) {
that.setState({
updateLoadFileList:info.fileList,
});
if (info.file.status !== 'uploading') {
// that.setState({
// updateLoadFileList:info.fileList,
// });
}
if (info.file.status === 'done') {
message.success(`${info.file.name} file uploaded successfully`);
} else if (info.file.status === 'error') {
message.error(`${info.file.name} file upload failed.`);
}
},
};
const onChangeDetailFields=(record,field,value)=>{
const data = {...this.state.data};
if(data.Nav_Details){
data.Nav_Details.map(t=>{
if(t.ID==record.ID){
if(field=='SET'){
const splitQty=getDataFieldValue(data,'Nav_Product.SPLIT_QTY');
if(splitQty*value) {
setDataFieldValue(t, 'PCS', splitQty * value);
}
else {
setDataFieldValue(t, 'PCS', 0);
}
}
setDataFieldValue(t,field,value);
}
})
};
this.setState({
data:data,
});
}
const colDetailField=(field, text, record, index)=>{
if(record.PROPOSAL_TYPE==0){//材料
if('DESCRIPTION'==field) {
const onSelectValue = ({record:selectRecord}) => {
const data = {...this.state.data};
if (data.Nav_Details) {
data.Nav_Details.map(t => {
if (t.ID == record.ID) {
const fields = ['LENGTH', 'WIDTH'];
fields.forEach((n, i) => {
setDataFieldValue(t, n, getDataFieldValue(selectRecord, n));
});
setDataFieldValue(t, 'PRODUCT_ID', getDataFieldValue(selectRecord, 'ID'));
setDataFieldValue(t, 'DESCRIPTION', getDataFieldValue(selectRecord, 'NAME'));;
}
})
};
this.setState({
data: data,
});
}
return this.getInnerControl({
fieldType: 1, data: record, field: 'DESCRIPTION', defaultValue: '', inputDataApi: 'FM/Product/OrderPaged',
onSelectValue: onSelectValue, onFilter: ({params}) => {
extendRule(params, 'PRODUCT_TYPE', 1, 2);
}
})
}
if(field=='PCS'||field=='SET'||field=='SPLIT_QTY'){
return ;
}
return getDataFieldValue(record,field);
}
if('DESCRIPTION'==field)
{
return record.DESCRIPTION;
}
else{
return this.getInnerControl({fieldType:7,data:record,field:field,onChange:(e,field)=>{onChangeDetailFields(record,field,e)}});
}
return getDataFieldValue(record,field);
}
const detailColumns=[
{title: '', dataIndex: '', key: '',render: (text, record, index)=>{return colDetailField('DESCRIPTION',text,record,index)}},
{title: '长度', dataIndex: '', key: '', render: (text, record, index)=>{return colDetailField('LENGTH',text,record,index)}},
{title: '宽度', dataIndex: '', key: '',render: (text, record, index)=>{return colDetailField('WIDTH',text,record,index)}},
{title: 'PCS/拼版', dataIndex: 'PCS', key: 'PCS', },
{title: 'SET/拼版', dataIndex: '', key: '', render: (text, record, index)=>{return colDetailField('SET',text,record,index)}},
{title: '可切割数', dataIndex: '', key: '', render: (text, record, index)=>{return colDetailField('SPLIT_QTY',text,record,index)}},
]
const formItemLayout = {
labelCol: {span: 6},
wrapperCol: {span: 14},
};
return (
<Spin spinning={loading.global}>
<Form>
<Modal visible={this.state.sopVisible} maskClosable={false} onCancel={this.handleSopCloseModal} footer={false} width={"86%"}>
<FormPage formCode={'WO012'} data={this.state.sopData}/>
</Modal>
<Row style={{ 'marginTop': '20px' }}>
{
this.showFields(productFields)
}
<Col span={12}>
<Form.Item
label={'SOP'}
{...formItemLayout}
>
<Upload {...uploadSopProps}>
<Button disabled={this.props.data.isShow}>
<Icon type="upload" /> 上传SOP文件
</Button>
</Upload>
</Form.Item>
</Col>
<Col span={12}>
<Form.Item
label={'备注'}
{...formItemLayout}
>
<TextArea rows={4} value={data.REMARK} placeholder={'请输入备注'} disabled={this.props.data.isShow} onChange={(e)=>{ onHeadRowChange(e,'REMARK')}} />
</Form.Item>
</Col>
</Row>
<Row style={{ 'marginTop': '20px' }}>
<Col style={{ textAlign: 'right' }}>
{
this.getBtns('save')
}
{
this.getBtns('saveAndConfirm')
}
</Col>
</Row>
<Row style={{ 'marginTop': '20px' }}>
<Table
rowKey="ID"
pagination={false}
dataSource={this.state.data.Nav_Details}
columns={detailColumns}
/>
</Row>
<Row style={{ 'marginTop': '20px' }}>
<Tabs defaultActiveKey="1" >
<TabPane tab="工艺路线明细" key="1">
<Row style={{ 'marginTop': '10px' }}>
{
this.showFields(processFields)
}
</Row>
<Row style={{ 'marginTop': '10px' }}>
<Col span={8}>
<div>
{
this.getBtns('addNode')
}
{
this.getBtns('removeNode')
}
{
this.getBtns('clearSelect')
}
</div>
<div style={{ 'marginTop': '10px', 'marginBottom': '10px'}}>
<label >当前选中<span style={{ 'fontSize': 'large'}}>{this.showSelectedTreeNode()}</span></label>
</div>
<div>
<Tree showLine onSelect={this.onSelectTreeNode} selectedKeys={this.state.treeSelectedKeys} >
{this.showTreeNode(this.state.treeData)}
</Tree>
</div>
</Col>
<Col span={16}>
{
this.state.processDetail.ID&&this.showFields(processDetailFields)
}
</Col>
</Row>
</TabPane>
</Tabs>
</Row>
</Form>
</Spin>
);
}
}
EmProposalEditPage.propTypes = {
};
export default connect(({ login, loading, EMemProposalEdit,custom }) => ({ login, loading, EMemProposalEdit,custom }))(Form.create()(EmProposalEditPage));