import { connect } from 'dva'; import { Button, Row, Col, Form, Radio, Select, Table, Checkbox } from 'antd'; import { extendRule, initFilter, extendInclude, guid } from "../../../utils/common"; import EditComponent from '../../../baseComponents/EditComponent'; import _ from "lodash"; class ReworkPdtOrderPage extends EditComponent { constructor(props) { super(props); this.state = { data: {}, }; }; onAfterHeadDropDownSelect(params) { super.onAfterHeadDropDownSelect(params); let { value, record, colConfig, thisRef } = params ? params : {}; if (colConfig.field === 'Nav_PdtOrder.PDT_CODE') { const pdtOrderId = this.getFieldValue('PDT_ORDER_ID'); if (pdtOrderId) { const stateData = this.state.data; let json = initFilter(stateData.ORG_ID, '', 'CREATE_TIME', 1); extendRule(json, 'PDT_ORDER_ID', 1, pdtOrderId); extendRule(json, 'STATE', 1, 13); this.props.dispatch({ type: 'reworkPdtOrder/GetReworkSN', payload: json, onComplete: (ret) => { const data = []; if (ret && ret.length) { ret.forEach((t, index) => { data.push({ ID: guid(), SN_ID: t.ID, Nav_SN: t, ORG_ID: stateData.ORG_ID, ROW_NO: (index + 1) }) }); } this.setREWORK_QTY(data); this.setEditTableData({ editCode: 'sn', data: data, isAppend: false }); } }); _.remove(json.FilterGroup.Rules, (o) => { return o.Field === "STATE" }); extendInclude(json, 'Nav_Line.Nav_LineStages.Nav_Workstage'); this.props.dispatch({ type: 'reworkPdtOrder/GetReworkJobEntities', payload: json, onComplete: (ret) => { const data = []; if (ret && ret.length) { ret = _.uniqBy(ret, 'LINE_ID'); ret.forEach((t, index) => { if (t.LINE_ID) { let temp = data.filter(t1 => t1.EXT_PROCEDURE_CODE === t.Nav_Line.EXT_PROCEDURE_CODE)[0]; if (!temp) { temp = { ID: guid(), ORG_ID: stateData.ORG_ID, ROW_NO: (index + 1), IS_SELECTED: false } data.push(temp) } let tempLines = temp.CAN_SELECT_LINES ? temp.CAN_SELECT_LINES : ''; if (tempLines !== '') { tempLines += ','; } temp.CAN_SELECT_LINES = tempLines + (t.Nav_Line.ID + ':' + t.Nav_Line.NAME); } }); } this.setEditTableData({ editCode: 'workline', data, isAppend: false }); } }); this.setEditTableData({ editCode: 'workstage', data: [], isAppend: false }); } } } onRenderRowControl(params) { if (this.props.data && this.props.data.isReview) { params.colConfig.disabled = true; } else { params.colConfig.disabled = false; } const { editCode, colConfig, record, text, parentId, parentRecord } = params ? params : {}; if (editCode === 'workstage' && colConfig.field === 'Workstage') { if (record.Nav_Line && record.Nav_Line.Nav_LineStages && record.Nav_Line.Nav_LineStages.length) { const options = []; record.Nav_Line.Nav_LineStages.forEach(t => { options.push({ label: t.Nav_Workstage.NAME, value: t.STAGE_ID }); }); const values = record.DETAIL ? record.DETAIL.split(',') : []; return { if (e) { record.DETAIL = e.join(','); } else { record.DETAIL = null; } this.saveRowRecord({ record, editCode }); }} /> } return null; } else if (editCode === 'workline' && colConfig.field === 'Nav_Line.NAME') { if (record.CAN_SELECT_LINES) { const temps = record.CAN_SELECT_LINES.split(','); const options = []; temps.forEach(t => { if (t) { options.push({ label: t.split(':')[1], value: t.split(':')[0] }); } }); //const values = record.LINE_ID ? record.DETAIL.split(',') : []; return { const v = e.target.value; const oldV = record.LINE_ID; record.IS_SELECTED = true; record.LINE_ID = v; this.saveRowRecord({ record, editCode, onComplete: () => { if (oldV) { const workstageData = this.getEditTableData({ editCode: 'workstage' }); const tempData = []; workstageData.forEach(t => { if (t.LINE_ID !== oldV) { tempData.push(t); } }); this.setEditTableData({ editCode: 'workstage', data: tempData, isAppend: false, onComplete: () => { if (v) { this.getWorkstageByLine(v); } } }); } else if (v) { this.getWorkstageByLine(v); } } }); }} /> } return null; } return super.onRenderRowControl(params); } getWorkstageByLine = (lineId) => { const stateData = this.state.data; let json = initFilter(stateData.ORG_ID, '', '', 1); extendRule(json, 'ID', 1, lineId); extendInclude(json, 'Nav_LineStages.Nav_Workstage'); this.props.dispatch({ type: 'reworkPdtOrder/getWorkstageByLine', payload: json, onComplete: (ret) => { if (ret && ret.Nav_LineStages && ret.Nav_LineStages.length) { const stateData = this.state.data; const data = []; data.push({ ID: guid(), LINE_ID: ret.ID, REWORK_PDT_ORDER_ID: stateData.ID, ORG_ID: stateData.ORG_ID, Nav_Line: ret }) this.setEditTableData({ editCode: 'workstage', data, isAppend: true }); } } }); } getEditConfig(params) { var config = super.getEditConfig(params); if (this.props && this.props.data && this.props.data.isEdit) { if (config.columns && config.columns.length > 0) { var pdrOrderColumn = _.find(config.columns, (o) => { return o.field === "Nav_PdtOrder.PDT_CODE" }) if (pdrOrderColumn) { pdrOrderColumn.disabled = 'disabled'; } } } if (this.props.data && this.props.data.isReview) { if (config.btns && config.btns.length > 0) { _.forEach(config.btns, (btn) => { btn.disabled = 'disabled'; }) } if (config.columns && config.columns.length > 0) { _.forEach(config.columns, (column) => { column.disabled = 'disabled'; }) } } if ((config.editCode === 'work' || config.editCode === 'processDetail') && !this.props.data.isReview) { return {}; } return config; } onAfterAddRow(params) { super.onAfterAddRow(params); if (params.editCode === 'sn') { this.state.data.REWORK_QTY = this.state.data.REWORK_QTY + 1; } } onAfterDeleteRow(params) { super.onAfterDeleteRow(params); if (params.editCode === 'sn') { let sns = params.data; this.setREWORK_QTY(sns); } } setREWORK_QTY(data) { let newData = _.cloneDeep(this.state.data); newData.REWORK_QTY = data.length; let self = this; self.setState({ data: newData }) } } export default connect(({ login, loading, editPage, custom }) => ({ login, loading, editPage, custom }))(Form.create()(ReworkPdtOrderPage));