Commit a68770c46e6f6ed8d3efa58f275f55585a8a25df
1 parent
d624af2a
排产
Showing
54 changed files
with
16356 additions
and
123 deletions
Too many changes to show.
To preserve performance only 6 of 54 files are displayed.
src/components/AuditInformation/AuditInformation.js
0 → 100644
| 1 | +/* eslint-disable no-const-assign,prefer-destructuring */ | |
| 2 | +/** | |
| 3 | + * Created by mar105 on 2019-01-04. | |
| 4 | + */ | |
| 5 | +// , Switch, Icon | |
| 6 | +import React, { Component } from 'react'; | |
| 7 | +import { Form } from '@ant-design/compatible'; | |
| 8 | +import '@ant-design/compatible/assets/index.css'; | |
| 9 | +import { Layout, Spin, Tabs, Avatar, message, Select, Input, Button } from 'antd'; | |
| 10 | +import * as commonFunc from './../Common/commonFunc';/* 通用单据方法 */ /* 通用单据方法 */ | |
| 11 | +import StaticEditTable from '../Common/CommonTable';/* 可编辑表格 */ | |
| 12 | +import styles from './../../index.less'; | |
| 13 | +import CommonView from './../Common/CommonView'; | |
| 14 | +import CommonBase from './../Common/CommonBase';/* 获取配置及数据 */ | |
| 15 | +import * as commonUtils from './../../utils/utils';/* 通用方法 */ | |
| 16 | +import * as commonBusiness from './../Common/commonBusiness';/* 单据业务功能 */ | |
| 17 | +import commonConfig from './../../utils/config'; | |
| 18 | +import * as commonServices from './../../services/services';/* 服务类 */ | |
| 19 | + | |
| 20 | +const { TabPane } = Tabs; | |
| 21 | +const { Option } = Select; | |
| 22 | +const { Content } = Layout; | |
| 23 | + | |
| 24 | +class AuditInformation extends Component { | |
| 25 | + constructor(props) { | |
| 26 | + super(props); | |
| 27 | + this.state = {}; | |
| 28 | + } | |
| 29 | + componentWillReceiveProps(nextProps) { | |
| 30 | + const { | |
| 31 | + formData, currentId, checkData, app, | |
| 32 | + } = nextProps; | |
| 33 | + let { masterConfig, canSendMsg } = nextProps; | |
| 34 | + const { userinfo } = app; | |
| 35 | + if (commonUtils.isEmptyArr(masterConfig) && formData.length > 0) { | |
| 36 | + const sId = currentId !== undefined ? currentId : ''; | |
| 37 | + /* 数据Id */ | |
| 38 | + masterConfig = formData.filter(item => !item.bGrd)[0]; | |
| 39 | + const checkConfig = formData.filter(item => item.bGrd && item.sTbName === 'sysbillcheckresult')[0]; | |
| 40 | + const checkColumn = commonFunc.getHeaderConfig(checkConfig); | |
| 41 | + this.handleGetData(masterConfig, checkConfig); | |
| 42 | + this.props.onSaveState({ | |
| 43 | + masterConfig, sId, pageLoading: false, checkConfig, checkColumn, checked: true, canSendMsg: false, | |
| 44 | + }); | |
| 45 | + } else if (commonUtils.isNotEmptyArr(checkData) && (JSON.stringify(this.props.checkData) !== JSON.stringify(checkData))) { | |
| 46 | + const iIndex = checkData.findIndex(item => item.sResult !== '1' && item.sResult !== '2' && item.sCheckPersonId === userinfo.sId); | |
| 47 | + if (iIndex > -1) { | |
| 48 | + canSendMsg = true; | |
| 49 | + } | |
| 50 | + this.props.onSaveState({ canSendMsg }); | |
| 51 | + } | |
| 52 | + } | |
| 53 | + | |
| 54 | + shouldComponentUpdate(nextProps) { | |
| 55 | + const { checkColumn, masterConfig } = nextProps; | |
| 56 | + return commonUtils.isNotEmptyArr(checkColumn) || commonUtils.isNotEmptyObject(masterConfig); | |
| 57 | + } | |
| 58 | + /** 获取主表数据 */ | |
| 59 | + handleGetData = async (masterConfig, checkConfig) => { | |
| 60 | + const { currentId } = this.props; /* 当前页签数据 */ | |
| 61 | + const sId = currentId !== undefined ? currentId : ''; | |
| 62 | + await this.props.handleGetDataOne({ name: 'master', configData: masterConfig, condition: { sId, pageSize: '', pageNum: '' } }); | |
| 63 | + const { masterData } = this.props; | |
| 64 | + if (!commonUtils.isEmptyObject(checkConfig) && !commonUtils.isEmptyObject(masterData)) { | |
| 65 | + this.props.handleGetDataSet({ | |
| 66 | + name: 'check', configData: checkConfig, condition: { sSqlCondition: { sBillId: masterData.sBillId } }, | |
| 67 | + }); | |
| 68 | + } | |
| 69 | + }; | |
| 70 | + handleForm = (form) => { | |
| 71 | + this.form = form; | |
| 72 | + }; | |
| 73 | + handleSelectChange = (value) => { | |
| 74 | + let iReply = 1; | |
| 75 | + if (value === 'approve') { | |
| 76 | + iReply = 1; | |
| 77 | + } else if (value === 'refuse') { | |
| 78 | + iReply = 0; | |
| 79 | + } | |
| 80 | + this.props.onSaveState({ iReply }); | |
| 81 | + }; | |
| 82 | + handleSwitchChange = (value) => { | |
| 83 | + this.props.onSaveState({ checked: value }); | |
| 84 | + }; | |
| 85 | + handleSubmit = async () => { | |
| 86 | + const { | |
| 87 | + sModelsId, masterData, masterConfig, checkConfig, | |
| 88 | + } = this.props; | |
| 89 | + let { iReply } = this.props; | |
| 90 | + const sReply = document.getElementById('sReply').value; | |
| 91 | + iReply = commonUtils.isEmptyNumber(iReply) ? 1 : iReply; | |
| 92 | + const url = `${commonConfig.server_host}business/getProData?sModelsId=${sModelsId}`; | |
| 93 | + const value = { | |
| 94 | + sProName: 'Sp_System_ReplyCheckMsg', | |
| 95 | + paramsMap: { | |
| 96 | + sMsgGuid: masterData.sId, | |
| 97 | + sBillGuid: masterData.sBillId, | |
| 98 | + iReply, | |
| 99 | + sReply, | |
| 100 | + }, | |
| 101 | + }; | |
| 102 | + const returnData = (await commonServices.postValueService(this.props.app.token, value, url)).data; | |
| 103 | + if (returnData.code === 1) { | |
| 104 | + if (returnData.dataset.rows[0].dataSet.outData[0].sCode === 1) { | |
| 105 | + this.handleGetData(masterConfig, checkConfig); | |
| 106 | + message.success(returnData.msg); | |
| 107 | + } else { | |
| 108 | + message.error(returnData.dataset.rows[0].dataSet.outData[0].sReturn); | |
| 109 | + } | |
| 110 | + } else { /* 失败 */ | |
| 111 | + this.props.getServiceError(returnData); | |
| 112 | + } | |
| 113 | + }; | |
| 114 | + render() { | |
| 115 | + const { pageLoading, masterData } = this.props; | |
| 116 | + const imgSrc = commonBusiness.handleAddIcon(masterData); | |
| 117 | + return ( | |
| 118 | + <Spin spinning={pageLoading}> | |
| 119 | + <WorkOrderComponent | |
| 120 | + {...this.props} | |
| 121 | + {...this.state} | |
| 122 | + onReturnForm={this.handleForm} | |
| 123 | + onSelectChange={this.handleSelectChange} | |
| 124 | + onSwitchChange={this.handleSwitchChange} | |
| 125 | + onSubmit={this.handleSubmit} | |
| 126 | + imgSrc={imgSrc} | |
| 127 | + /> | |
| 128 | + </Spin> | |
| 129 | + ); | |
| 130 | + } | |
| 131 | +} | |
| 132 | + | |
| 133 | +const WorkOrderComponent = Form.create({ | |
| 134 | + mapPropsToFields(props) { | |
| 135 | + const { masterData } = props; | |
| 136 | + const obj = commonFunc.mapPropsToFields(masterData, Form); | |
| 137 | + return obj; | |
| 138 | + }, | |
| 139 | +})((props) => { | |
| 140 | + const { | |
| 141 | + form, onReturnForm, onSelectChange, onSubmit, checked, | |
| 142 | + } = props; | |
| 143 | + /* 回带表单 */ | |
| 144 | + onReturnForm(form); | |
| 145 | + const propsType = { | |
| 146 | + ...props, | |
| 147 | + onChange: props.onMasterChange, | |
| 148 | + }; | |
| 149 | + const style = checked ? 'block' : 'none'; | |
| 150 | + /* | |
| 151 | + <div style={{ padding: '10px 12px' }}>显示审核记录: | |
| 152 | + <Switch | |
| 153 | + checkedChildren={<Icon type="check" />} | |
| 154 | + unCheckedChildren={<Icon type="close" />} | |
| 155 | + onChange={onSwitchChange} | |
| 156 | + /> | |
| 157 | + </div> | |
| 158 | + */ | |
| 159 | + return ( | |
| 160 | + <Form> | |
| 161 | + <Layout> | |
| 162 | + <Layout id="AudiInfomation" className={styles.clayout} style={{ padding: '90px 0 0 0' }}> | |
| 163 | + <Content className={styles.content} > | |
| 164 | + <div className="bill-search-group" > | |
| 165 | + <CommonView {...propsType} /> | |
| 166 | + </div> | |
| 167 | + <div id="slaveTabs" className={styles.bShow} style={{ overflow: 'auto', display: style }}> | |
| 168 | + <div> | |
| 169 | + <Avatar src={props.imgSrc} /> | |
| 170 | + </div> | |
| 171 | + <Tabs tabBarStyle={{ paddingLeft: '10px' }} > | |
| 172 | + <TabPane tab="审批信息" key={3} > | |
| 173 | + <StaticEditTable {...commonBusiness.getTableTypes('check', props)} footer="hidden" /> | |
| 174 | + </TabPane> | |
| 175 | + </Tabs> | |
| 176 | + </div> | |
| 177 | + { props.canSendMsg ? ( | |
| 178 | + <div style={{ paddingLeft: '13px', width: '30%' }}> | |
| 179 | + <span style={{ height: '40px', lineHeight: '40px' }}>回答内容:</span> | |
| 180 | + <Select defaultValue="approve" onChange={onSelectChange}> | |
| 181 | + <Option value="approve">批准</Option> | |
| 182 | + <Option value="refuse">拒绝</Option> | |
| 183 | + </Select> | |
| 184 | + </div>) : '' | |
| 185 | + } | |
| 186 | + { props.canSendMsg ? (<Input id="sReply" addonBefore="备注:" style={{ paddingLeft: '13px', width: '30%' }} />) : ''} | |
| 187 | + { props.canSendMsg ? ( | |
| 188 | + <div style={{ marginTop: '8px', paddingLeft: '13px' }}> | |
| 189 | + <Button type="primary" htmlType="submit" onClick={onSubmit}>发送</Button> | |
| 190 | + </div>) : ''} | |
| 191 | + </Content> | |
| 192 | + </Layout> | |
| 193 | + </Layout> | |
| 194 | + </Form> | |
| 195 | + ); | |
| 196 | +}); | |
| 197 | + | |
| 198 | +export default CommonBase(AuditInformation); | ... | ... |
src/components/Common/CommonCalculator.js
0 → 100644
| 1 | +/* eslint-disable function-paren-newline */ | |
| 2 | +import React, { Component } from 'react'; | |
| 3 | +import { Form } from '@ant-design/compatible'; | |
| 4 | +import '@ant-design/compatible/assets/index.css'; | |
| 5 | +import { Row, Col, Button } from 'antd'; | |
| 6 | +import * as commonUtils from '../../utils/utils'; | |
| 7 | +import commonConfig from '../../utils/config'; | |
| 8 | +import * as commonFunc from './commonFunc'; | |
| 9 | +import styles from '../../index.less'; | |
| 10 | + | |
| 11 | +const FormItem = Form.Item; | |
| 12 | + | |
| 13 | +class CommonCalculatorComponent extends Component { | |
| 14 | + constructor(props) { | |
| 15 | + super(props); | |
| 16 | + this.state = { | |
| 17 | + }; | |
| 18 | + } | |
| 19 | + /** 渲染前只执行一次 */ | |
| 20 | + componentWillMount() { | |
| 21 | + this.assignmentWillProps(this.props); | |
| 22 | + } | |
| 23 | + | |
| 24 | + componentWillReceiveProps(nextProps) { | |
| 25 | + this.assignmentWillProps(nextProps); | |
| 26 | + } | |
| 27 | + | |
| 28 | + assignmentWillProps = (props) => { | |
| 29 | + this.setState({ disabled: props.enabled === undefined ? true : !props.enabled }); | |
| 30 | + } | |
| 31 | + | |
| 32 | + handleClick = (e, child) => { | |
| 33 | + this.props.onButtonChange('calculator', child); | |
| 34 | + } | |
| 35 | + | |
| 36 | + handleField = () => { | |
| 37 | + this.props.onField(); | |
| 38 | + }; | |
| 39 | + | |
| 40 | + render() { | |
| 41 | + const { disabled } = this.state; /* 中文部分 */ | |
| 42 | + const { masterConfig, gdsformconst, gdsjurisdiction } = this.props; | |
| 43 | + const gdsconfigformslave = commonUtils.isNotEmptyObject(masterConfig) ? masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '') : []; | |
| 44 | + const barContent = []; | |
| 45 | + const button = JSON.parse(JSON.stringify(commonConfig.jsqData)); | |
| 46 | + button.forEach((btn) => { | |
| 47 | + const btnConfig = commonFunc.getConfig('', btn.sName, gdsconfigformslave, gdsformconst, gdsjurisdiction, btn.showName); | |
| 48 | + if (btnConfig.bVisible) { | |
| 49 | + barContent.push( | |
| 50 | + <Col span={5} key={btn.sName}> | |
| 51 | + <Button disabled={disabled} onClick={e => this.handleClick(e, btn.showName)}> | |
| 52 | + {btnConfig.showName} | |
| 53 | + </Button> | |
| 54 | + </Col>); | |
| 55 | + } | |
| 56 | + }); | |
| 57 | + return ( | |
| 58 | + <FormItem className={styles.subForm} style={{ marginTop: 0 }}> | |
| 59 | + <Row type="flex" justify="space-between"> | |
| 60 | + <Col span={5}> | |
| 61 | + <Button disabled={disabled} onClick={e => this.handleClick(e, 1)}>1</Button> | |
| 62 | + <Button disabled={disabled} onClick={e => this.handleClick(e, 4)}>4</Button> | |
| 63 | + <Button disabled={disabled} onClick={e => this.handleClick(e, 7)}>7</Button> | |
| 64 | + <Button disabled={disabled} onClick={e => this.handleClick(e, 0)}>0</Button> | |
| 65 | + <Button disabled={disabled} onClick={e => this.handleClick(e, '(')}>(</Button> | |
| 66 | + <Button disabled={disabled} onClick={e => this.handleClick(e, '>=')}>>=</Button> | |
| 67 | + </Col> | |
| 68 | + <Col span={5}> | |
| 69 | + <Button disabled={disabled} onClick={e => this.handleClick(e, 2)}>2</Button> | |
| 70 | + <Button disabled={disabled} onClick={e => this.handleClick(e, 5)}>5</Button> | |
| 71 | + <Button disabled={disabled} onClick={e => this.handleClick(e, 8)}>8</Button> | |
| 72 | + <Button disabled={disabled} onClick={e => this.handleClick(e, '00')}>00</Button> | |
| 73 | + <Button disabled={disabled} onClick={e => this.handleClick(e, ')')}>)</Button> | |
| 74 | + <Button disabled={disabled} onClick={e => this.handleClick(e, '<=')}><=</Button> | |
| 75 | + </Col> | |
| 76 | + <Col span={5}> | |
| 77 | + <Button disabled={disabled} onClick={e => this.handleClick(e, 3)}>3</Button> | |
| 78 | + <Button disabled={disabled} onClick={e => this.handleClick(e, 6)}>6</Button> | |
| 79 | + <Button disabled={disabled} onClick={e => this.handleClick(e, 9)}>9</Button> | |
| 80 | + <Button disabled={disabled} onClick={e => this.handleClick(e, '.')}>.</Button> | |
| 81 | + <Button disabled={disabled} onClick={e => this.handleClick(e, '>')}>></Button> | |
| 82 | + <Button disabled={disabled} onClick={e => this.handleClick(e, '=')}>=</Button> | |
| 83 | + </Col> | |
| 84 | + <Col span={5}> | |
| 85 | + <Button disabled={disabled} onClick={e => this.handleClick(e, '+')}>+</Button> | |
| 86 | + <Button disabled={disabled} onClick={e => this.handleClick(e, '-')}>-</Button> | |
| 87 | + <Button disabled={disabled} onClick={e => this.handleClick(e, '*')}>*</Button> | |
| 88 | + <Button disabled={disabled} onClick={e => this.handleClick(e, '/')}>/</Button> | |
| 89 | + <Button disabled={disabled} onClick={e => this.handleClick(e, '<')}><</Button> | |
| 90 | + <Button disabled={disabled} onClick={e => this.handleClick(e, '<>')}>< ></Button> | |
| 91 | + </Col> | |
| 92 | + </Row> | |
| 93 | + | |
| 94 | + <Row type="flex" justify="space-between"> | |
| 95 | + {barContent} | |
| 96 | + <Col span={5}> | |
| 97 | + <Button disabled={disabled} onClick={this.handleField}>验证</Button> | |
| 98 | + </Col> | |
| 99 | + </Row> | |
| 100 | + </FormItem> | |
| 101 | + ); | |
| 102 | + } | |
| 103 | +} | |
| 104 | + | |
| 105 | +export default CommonCalculatorComponent; | ... | ... |
src/components/Common/CommonImportDataEvent.js
0 → 100644
| 1 | +/* eslint-disable array-callback-return,no-undef,prefer-destructuring */ | |
| 2 | +import React, { Component } from 'react'; | |
| 3 | +import { message } from 'antd'; | |
| 4 | +import commonConfig from '../../utils/config'; | |
| 5 | +import * as commonUtils from '../../utils/utils'; /* 通用方法 */ | |
| 6 | +import * as commonServices from './../../services/services'; /* 服务类 */ | |
| 7 | +import * as commonFunc from '../Common/commonFunc'; | |
| 8 | + | |
| 9 | +// const { confirm } = Modal; | |
| 10 | + | |
| 11 | +export default (ChildComponent) => { | |
| 12 | + return class extends Component { | |
| 13 | + constructor(props) { | |
| 14 | + super(props); | |
| 15 | + this.state = {}; | |
| 16 | + this.form = {}; | |
| 17 | + /* 表单对象 */ | |
| 18 | + } | |
| 19 | + componentWillReceiveProps(nextProps) { | |
| 20 | + const { isReceive, formData, app } = nextProps; | |
| 21 | + | |
| 22 | + if (!isReceive && formData.length > 0) { | |
| 23 | + const templateConfig = formData.filter(item => item.bGrd); | |
| 24 | + let selectOptions = '{'; | |
| 25 | + templateConfig.forEach((item, i) => { | |
| 26 | + if (i !== 0) { selectOptions = selectOptions.concat(','); } | |
| 27 | + selectOptions = selectOptions.concat(`"${item.sId}"`).concat(':').concat(`"${item.showName}"`); | |
| 28 | + }); | |
| 29 | + selectOptions = selectOptions.concat('}'); | |
| 30 | + | |
| 31 | + const importConfigTypes = []; | |
| 32 | + | |
| 33 | + const DataTemplate = commonFunc.showMessage(app.commonConst, 'DataTemplate');/* 数据模板 */ | |
| 34 | + const BtnUploadCheck = commonFunc.showMessage(app.commonConst, 'BtnUploadCheck');/* 上传校验 */ | |
| 35 | + const importData = commonFunc.showMessage(app.commonConst, 'importData');/* 导入数据 */ | |
| 36 | + const BtnExportTemplate = commonFunc.showMessage(app.commonConst, 'BtnExportTemplate');/* 导出模板 */ | |
| 37 | + importConfigTypes.push(commonFunc.getImitateGdsconfigTypes(DataTemplate, 'sMasterId', 'sMasterId', false, 'const', selectOptions, false)); | |
| 38 | + importConfigTypes.push(commonFunc.getImitateGdsconfigTypes(BtnUploadCheck, 'btnUpload', '', false, '', '', true)); | |
| 39 | + importConfigTypes.push(commonFunc.getImitateGdsconfigTypes(importData, 'btnSave', '', false, '', '', false)); | |
| 40 | + importConfigTypes.push(commonFunc.getImitateGdsconfigTypes(BtnExportTemplate, 'btnExport', '', false, '', '', false)); | |
| 41 | + | |
| 42 | + const currConfig = {}; | |
| 43 | + currConfig.rowGdsconfig = [{ gdsconfigformslave: importConfigTypes }]; | |
| 44 | + | |
| 45 | + const masterData = {}; | |
| 46 | + masterData.handleType = ''; | |
| 47 | + masterData.sId = commonUtils.createSid(); | |
| 48 | + | |
| 49 | + this.props.onSaveState({ | |
| 50 | + masterData, | |
| 51 | + templateConfig, | |
| 52 | + isReceive: true, | |
| 53 | + masterConfig: currConfig, | |
| 54 | + pageLoading: false, | |
| 55 | + enabled: true, | |
| 56 | + }); | |
| 57 | + this.handleGetChangeData({ name: 'importMenu' }, 'importMenu'); | |
| 58 | + } | |
| 59 | + } | |
| 60 | + | |
| 61 | + shouldComponentUpdate(nextProps, nextState) { | |
| 62 | + let flag = true; | |
| 63 | + /* 追加弹出框数值回填放行判断ppopupPane */ | |
| 64 | + if (nextProps.sTabId === nextProps.app.currentPane.key || ((nextProps.app.ppopupPane !== undefined | |
| 65 | + && nextProps.app.ppopupPane.mainConfig !== undefined) | |
| 66 | + ? nextProps.sTabId === nextProps.app.ppopupPane.mainConfig.key : false)) { | |
| 67 | + if (nextState.disabled !== this.state.disabled) { | |
| 68 | + return true; | |
| 69 | + } | |
| 70 | + flag = true; | |
| 71 | + } else { | |
| 72 | + flag = false; | |
| 73 | + } | |
| 74 | + return flag; | |
| 75 | + } | |
| 76 | + | |
| 77 | + /** 表单回带 */ | |
| 78 | + handleForm = (form) => { | |
| 79 | + this.form = form; | |
| 80 | + }; | |
| 81 | + /** 主表控件是否全部显示 */ | |
| 82 | + handleToggle = () => { | |
| 83 | + const { expand } = this.props; | |
| 84 | + this.props.onSaveState({ expand: !expand }); | |
| 85 | + }; | |
| 86 | + /* save */ | |
| 87 | + handleValidateSave = async () => { | |
| 88 | + const { | |
| 89 | + token, sModelsId, sJurisdictionClassifyId, sUserId, treeSaveParams, app, | |
| 90 | + } = this.props; | |
| 91 | + const value = {}; | |
| 92 | + if ((commonUtils.isEmptyArr(sJurisdictionClassifyId) || commonUtils.isEmptyArr(sUserId)) && commonUtils.isEmptyArr(treeSaveParams)) { | |
| 93 | + message.warn(commonFunc.showMessage(app.commonConst, 'NotEmptyJurisdictionGroup')); | |
| 94 | + return; | |
| 95 | + } | |
| 96 | + value.data = treeSaveParams; | |
| 97 | + const dataUrl = `${commonConfig.server_host}/sysjurisdiction/addSysjurisdiction?sModelsId=${sModelsId}`; | |
| 98 | + const dataReturn = (await commonServices.postValueService(token, value, dataUrl)).data; | |
| 99 | + /* 成功的话返回数据 */ | |
| 100 | + if (dataReturn.code === 1) { /* 成功 */ | |
| 101 | + message.success(dataReturn.msg); | |
| 102 | + return dataReturn; | |
| 103 | + } else { /* 失败 */ | |
| 104 | + this.props.getServiceError(dataReturn); | |
| 105 | + return false; | |
| 106 | + } | |
| 107 | + } | |
| 108 | + | |
| 109 | + /* get */ | |
| 110 | + handleGetChangeData = async (params, urlKey) => { | |
| 111 | + const { app, sModelsId } = this.props; | |
| 112 | + const { token } = app; | |
| 113 | + const { name, gdsconfigformmasterId } = params; // name, | |
| 114 | + let dataUrl = '';// ImportMenu | |
| 115 | + if (urlKey === 'importMenu') { // yw_获取导入模板菜单 | |
| 116 | + dataUrl = `${commonConfig.server_host}import/getImportMenu?sModelsId=${sModelsId}`; | |
| 117 | + } else if (urlKey === 'exportTemplet') { // yw_导出将要导入的模板execl | |
| 118 | + dataUrl = `${commonConfig.server_host}import/exportTemplet?gdsconfigformmasterId=${gdsconfigformmasterId}&token=${token}`; | |
| 119 | + } | |
| 120 | + const dataReturn = (await commonServices.getService(token, dataUrl)).data; | |
| 121 | + if (dataReturn.code === 1) { | |
| 122 | + const returnData = dataReturn.dataset.rows; | |
| 123 | + this.props.onSaveState({ [`${name}Data`]: returnData }); | |
| 124 | + } else { | |
| 125 | + this.props.getServiceError(dataReturn); | |
| 126 | + } | |
| 127 | + } | |
| 128 | + | |
| 129 | + /* post */ | |
| 130 | + handlePostData = async (params, urlKey) => { | |
| 131 | + const { app, sModelsId } = this.props; | |
| 132 | + const { token } = app; | |
| 133 | + const { | |
| 134 | + name, gdsconfigformmasterId, file, execlData, sTableName, | |
| 135 | + } = params; // name, | |
| 136 | + let dataUrl = ''; | |
| 137 | + const value = {}; | |
| 138 | + if (urlKey === 'checkExcel') { // yw_校验导入模板数据 | |
| 139 | + value.gdsconfigformmasterId = gdsconfigformmasterId; | |
| 140 | + value.file = file; | |
| 141 | + dataUrl = `${commonConfig.server_host}import/checkExcel?sModelsId=${sModelsId}`; | |
| 142 | + } else if (urlKey === 'addImport') { | |
| 143 | + dataUrl = `${commonConfig.server_host}import/addImport?sModelsId=${sModelsId}`; | |
| 144 | + value.sTableName = sTableName; | |
| 145 | + value.execlData = execlData; | |
| 146 | + } | |
| 147 | + const dataReturn = (await commonServices.postValueService(token, value, dataUrl)).data; | |
| 148 | + if (dataReturn.code === 1) { | |
| 149 | + if (urlKey === 'checkExcel') { | |
| 150 | + const returnData = dataReturn.dataset.rows; | |
| 151 | + const allInitArr = []; | |
| 152 | + const allInitMap = new Map(); | |
| 153 | + this.handleAllCheckKeys(allInitArr, allInitMap, returnData); | |
| 154 | + this.props.onSaveState({ [`${name}Data`]: returnData, treeAllCheckKeys: allInitArr, treeAllNodes: allInitMap }); | |
| 155 | + } else if (urlKey === 'addImport') { | |
| 156 | + this.props.onSaveState({ nocanbeInsertData: [], canbeInsertData: [] }); | |
| 157 | + message.info(dataReturn.msg); | |
| 158 | + } | |
| 159 | + } else { | |
| 160 | + this.props.getServiceError(dataReturn); | |
| 161 | + } | |
| 162 | + } | |
| 163 | + | |
| 164 | + /** 修改主表数据 */ | |
| 165 | + handleMasterChange = (name, sFieldName, changeValue, sId, dropDownData) => { | |
| 166 | + const addState = this.props.onChange(name, sFieldName, changeValue, sId, dropDownData, true); | |
| 167 | + const gdsconfigformmasterId = {}; | |
| 168 | + const { templateConfig } = this.props; | |
| 169 | + if (sFieldName === 'sMasterId') { | |
| 170 | + addState.gdsconfigformmasterId = changeValue[sFieldName]; | |
| 171 | + const iIndex = templateConfig.findIndex(item => item.sId === changeValue[sFieldName]); | |
| 172 | + const configTypes = [];// importMenuData | |
| 173 | + configTypes.push(commonFunc.getImitateGdsconfigTypes('原因', 'sReason', 'sReason', false, '', '', false)); | |
| 174 | + | |
| 175 | + const canbeInsertConfig = templateConfig[iIndex]; | |
| 176 | + const canbeInsertColumn = commonFunc.getHeaderConfig(canbeInsertConfig); | |
| 177 | + | |
| 178 | + const nocanbeInsertConfig = { gdsconfigformslave: configTypes.concat(templateConfig[iIndex].gdsconfigformslave) }; | |
| 179 | + const nocanbeInsertColumn = commonFunc.getHeaderConfig(nocanbeInsertConfig); | |
| 180 | + | |
| 181 | + addState.nocanbeInsertConfig = nocanbeInsertConfig; | |
| 182 | + addState.nocanbeInsertColumn = nocanbeInsertColumn; | |
| 183 | + addState.canbeInsertConfig = canbeInsertConfig; | |
| 184 | + addState.canbeInsertColumn = canbeInsertColumn; | |
| 185 | + addState.nocanbeInsertData = []; | |
| 186 | + addState.canbeInsertData = []; | |
| 187 | + } | |
| 188 | + this.props.onSaveState({ gdsconfigformmasterId, ...addState }); | |
| 189 | + }; | |
| 190 | + | |
| 191 | + handleUploadChange = (sControlName, info) => { | |
| 192 | + /* 获取上传后的一些信息 */ | |
| 193 | + const { file } = info; | |
| 194 | + let { [`${sControlName}UploadInfo`]: uploads } = this.props; | |
| 195 | + if (commonUtils.isEmptyArr(uploads)) { | |
| 196 | + uploads = []; | |
| 197 | + uploads.push(file); | |
| 198 | + } else { | |
| 199 | + uploads.push(file); | |
| 200 | + } | |
| 201 | + this.props.onSaveState({ [`${sControlName}UploadInfo`]: uploads }); | |
| 202 | + }; | |
| 203 | + | |
| 204 | + /* 按钮点击功能 */ | |
| 205 | + handleBtnClick = (e, btnName) => { | |
| 206 | + const { | |
| 207 | + masterData, app, canbeInsertData, nocanbeInsertData, | |
| 208 | + } = this.props; | |
| 209 | + const { token } = app; | |
| 210 | + const { sMasterId, sTableName } = masterData; | |
| 211 | + if (btnName === 'btnExport') { | |
| 212 | + if (commonUtils.isNotEmptyObject(masterData) && commonUtils.isNotEmptyObject(sMasterId)) { | |
| 213 | + // window.location.href = `${commonConfig.server_host}import/exportTemplet?gdsconfigformmasterId=${sMasterId}&token=${token}`; | |
| 214 | + const url = `${commonConfig.server_host}import/exportTemplet?gdsconfigformmasterId=${sMasterId}&token=${token}`; | |
| 215 | + window.open(url); | |
| 216 | + } else { | |
| 217 | + const chooseImprtTemplete = commonFunc.showMessage(app.commonConst, 'chooseImprtTemplete');/* 请选择要导出的模板 */ | |
| 218 | + message.error(chooseImprtTemplete); | |
| 219 | + } | |
| 220 | + } else if (btnName === 'btnSave') { | |
| 221 | + if (commonUtils.isNotEmptyArr(nocanbeInsertData) && commonUtils.isNotEmptyArr(canbeInsertData) && commonUtils.isNotEmptyObject(sTableName) && nocanbeInsertData.length === canbeInsertData.length) { | |
| 222 | + this.handlePostData({ name: 'addImport', execlData: canbeInsertData, sTableName }, 'addImport'); | |
| 223 | + } else { | |
| 224 | + message.error(commonFunc.showMessage(app.commonConst, 'ErrorImport')); /* 有错误数据,不能导入 */ | |
| 225 | + } | |
| 226 | + } | |
| 227 | + }; | |
| 228 | + | |
| 229 | + /* 按钮点击功能 */ | |
| 230 | + handleShowUploadData = (response) => { | |
| 231 | + const { masterData } = this.props; | |
| 232 | + | |
| 233 | + if (response.code === 1) { | |
| 234 | + const returnData = response.dataset.rows[0]; | |
| 235 | + const { | |
| 236 | + nocanbeInsert, canbeInsert, sTableName, | |
| 237 | + } = returnData; | |
| 238 | + | |
| 239 | + masterData.sTableName = sTableName; | |
| 240 | + this.props.onSaveState({ | |
| 241 | + masterData, | |
| 242 | + nocanbeInsertData: nocanbeInsert.concat(canbeInsert), | |
| 243 | + canbeInsertData: canbeInsert, | |
| 244 | + }); | |
| 245 | + } else { | |
| 246 | + message.error(response.msg); | |
| 247 | + } | |
| 248 | + }; | |
| 249 | + | |
| 250 | + render() { | |
| 251 | + return ( | |
| 252 | + <ChildComponent | |
| 253 | + {...this.props} | |
| 254 | + {...this.state} | |
| 255 | + onReturnForm={this.handleForm} | |
| 256 | + onToggle={this.handleToggle} | |
| 257 | + onSubmit={this.handleValidateSave} | |
| 258 | + onDataChange={this.handleTableChange} | |
| 259 | + onChange={this.handleMasterChange} | |
| 260 | + onUploadChange={this.handleUploadChange} | |
| 261 | + onBtnClick={this.handleBtnClick} | |
| 262 | + onShowData={this.handleShowUploadData} | |
| 263 | + /> | |
| 264 | + ); | |
| 265 | + } | |
| 266 | + }; | |
| 267 | +}; | ... | ... |
src/components/Common/CommonJurisdictionNewEvent.js
0 → 100644
| 1 | +/* eslint-disable array-callback-return,no-undef,prefer-destructuring */ | |
| 2 | +import React, { Component } from 'react'; | |
| 3 | +import { Modal, message } from 'antd'; | |
| 4 | +import commonConfig from '../../utils/config'; | |
| 5 | +import * as commonBusiness from './commonBusiness'; /* 单据业务功能 */ | |
| 6 | +import * as commonUtils from '../../utils/utils'; /* 通用方法 */ | |
| 7 | +import * as commonServices from './../../services/services'; | |
| 8 | +import * as commonFunc from './commonFunc'; /* 服务类 */ | |
| 9 | + | |
| 10 | +const { confirm } = Modal; | |
| 11 | + | |
| 12 | +export default (ChildComponent) => { | |
| 13 | + return class extends Component { | |
| 14 | + constructor(props) { | |
| 15 | + super(props); | |
| 16 | + this.state = {}; | |
| 17 | + this.form = {}; | |
| 18 | + /* 表单对象 */ | |
| 19 | + } | |
| 20 | + | |
| 21 | + componentWillReceiveProps(nextProps) { | |
| 22 | + const { | |
| 23 | + formData, currentId, groupConfig, treeData, formRoute, | |
| 24 | + } = nextProps; | |
| 25 | + let { bReceived } = nextProps; | |
| 26 | + const sId = currentId !== undefined ? currentId : ''; | |
| 27 | + | |
| 28 | + if (commonUtils.isEmptyObject(groupConfig) && bReceived === undefined) { | |
| 29 | + const masterConfig = formData.filter(item => !item.bGrd)[0]; | |
| 30 | + this.handleGetChangeData({ name: 'tree' }, 'SysjurisdictionTree'); | |
| 31 | + bReceived = true; | |
| 32 | + const group = this.initColumnConfig('group', [ | |
| 33 | + this.imitateTableColumn('序号', 'iOrder', 'iOrder', 60), | |
| 34 | + this.imitateTableColumn('权限组', 'sName', 'sId', 350)]); | |
| 35 | + | |
| 36 | + | |
| 37 | + const userGroup = this.initColumnConfig('userGroup', [ | |
| 38 | + this.imitateTableColumn('序号', 'iOrder', 'iOrder', 60), | |
| 39 | + this.imitateTableColumn('组成员', 'sUserName', 'sUsersId', 350)]); | |
| 40 | + | |
| 41 | + const user = this.initColumnConfig('userView', [ | |
| 42 | + this.imitateTableColumn('序号', 'iOrder', 'iOrder', 60), | |
| 43 | + this.imitateTableColumn('用户', 'sUserName', 'sId', 120), | |
| 44 | + this.imitateTableColumn('权限组', 'sGroupName', 'sGroupName', 350)]); | |
| 45 | + | |
| 46 | + const groupUser = this.imitateTableColumnConfig('groupUser', [this.imitateTableColumn('所属分组', 'sGroupName', 'sGroupsId')]); | |
| 47 | + | |
| 48 | + const checkedNodes = this.imitateTableColumnConfig('checkedNodes', [this.imitateTableColumn('名称', 'showName', 'sId')]); | |
| 49 | + | |
| 50 | + const tree = this.imitateTableColumnConfig('tree', [this.imitateTableColumn('名称', 'showName', 'key')]); | |
| 51 | + | |
| 52 | + const search = this.imitateTableColumnConfig('search', [this.imitateTableColumn('名称', 'showName', 'sAllId', 300)]); | |
| 53 | + | |
| 54 | + let treeKeyName = 'key'; | |
| 55 | + if (formRoute === '/indexPage/systemPermission') { | |
| 56 | + treeKeyName = 'sId'; | |
| 57 | + } | |
| 58 | + this.props.onSaveState({ | |
| 59 | + masterConfig, | |
| 60 | + sId, | |
| 61 | + bReceived, | |
| 62 | + treeKeyName, | |
| 63 | + showLine: false, | |
| 64 | + // pageLoading: false, | |
| 65 | + ...tree, | |
| 66 | + ...group, | |
| 67 | + ...user, | |
| 68 | + ...userGroup, | |
| 69 | + ...groupUser, | |
| 70 | + ...checkedNodes, | |
| 71 | + ...search, | |
| 72 | + }); | |
| 73 | + } | |
| 74 | + if (commonUtils.isNotEmptyArr(treeData) && bReceived) { | |
| 75 | + this.handleGetChangeData({ name: 'group' }, 'GroupData'); | |
| 76 | + this.handleGetChangeData({ name: 'userView' }, 'UserData'); | |
| 77 | + this.props.onSaveState({ | |
| 78 | + bReceived: false, | |
| 79 | + pageLoading: false, | |
| 80 | + }); | |
| 81 | + } | |
| 82 | + } | |
| 83 | + | |
| 84 | + | |
| 85 | + shouldComponentUpdate(nextProps, nextState) { | |
| 86 | + let flag = true; | |
| 87 | + /* 追加弹出框数值回填放行判断ppopupPane */ | |
| 88 | + if (nextProps.sTabId === nextProps.app.currentPane.key || ((nextProps.app.ppopupPane !== undefined | |
| 89 | + && nextProps.app.ppopupPane.mainConfig !== undefined) | |
| 90 | + ? nextProps.sTabId === nextProps.app.ppopupPane.mainConfig.key : false)) { | |
| 91 | + if (nextState.disabled !== this.state.disabled) { | |
| 92 | + return true; | |
| 93 | + } | |
| 94 | + flag = true; | |
| 95 | + } else { | |
| 96 | + flag = false; | |
| 97 | + } | |
| 98 | + return flag; | |
| 99 | + } | |
| 100 | + | |
| 101 | + componentWillUpdate(nextProps) { | |
| 102 | + const { masterData, sModelsType, elemachineData } = nextProps; | |
| 103 | + if (sModelsType === 'element/teamInfo' && masterData !== undefined) { | |
| 104 | + if (commonUtils.isNotEmptyObject(elemachineData)) { | |
| 105 | + elemachineData.forEach((row, index) => { | |
| 106 | + if (row.sMachineId === masterData.sMachineId) { | |
| 107 | + elemachineData[index].bDefault = true; | |
| 108 | + } else { | |
| 109 | + elemachineData[index].bDefault = false; | |
| 110 | + } | |
| 111 | + }); | |
| 112 | + } | |
| 113 | + } | |
| 114 | + } | |
| 115 | + | |
| 116 | + | |
| 117 | + /** 表单回带 */ | |
| 118 | + handleForm = (form) => { | |
| 119 | + this.form = form; | |
| 120 | + }; | |
| 121 | + /** 主表控件是否全部显示 */ | |
| 122 | + handleToggle = () => { | |
| 123 | + const { expand } = this.props; | |
| 124 | + this.props.onSaveState({ expand: !expand }); | |
| 125 | + }; | |
| 126 | + | |
| 127 | + handleValidateSave = async () => { | |
| 128 | + const { | |
| 129 | + token, sModelsId, sJurisdictionClassifyId, sUserId, treeAllNodes, treeCheckedKeys = [], treeAllCheckKeys, | |
| 130 | + app, | |
| 131 | + } = this.props; | |
| 132 | + const value = {}; | |
| 133 | + if ((commonUtils.isEmptyArr(sJurisdictionClassifyId) && commonUtils.isEmptyArr(sUserId))) { | |
| 134 | + message.warn(commonFunc.showMessage(app.commonConst, 'NotEmptyJurisdictionGroup'));/* 组员,所属或权限组不能为空! */ | |
| 135 | + this.props.onSaveState({ | |
| 136 | + loading: false, | |
| 137 | + }); | |
| 138 | + return; | |
| 139 | + } | |
| 140 | + if (commonUtils.isNotEmptyArr(sJurisdictionClassifyId) && commonUtils.isEmptyArr(sUserId)) { | |
| 141 | + value.sJurisdictionClassifyId = sJurisdictionClassifyId[0]; | |
| 142 | + } else if (commonUtils.isNotEmptyArr(sUserId) && commonUtils.isEmptyArr(sJurisdictionClassifyId)) { | |
| 143 | + value.sUserId = sUserId[0]; | |
| 144 | + } else { | |
| 145 | + message.warn(commonFunc.showMessage(app.commonConst, 'NotEmptyGroup'));/* 组或者组员不能为空 */ | |
| 146 | + this.props.onSaveState({ | |
| 147 | + loading: false, | |
| 148 | + }); | |
| 149 | + return; | |
| 150 | + } | |
| 151 | + /* | |
| 152 | + if (commonUtils.isNotEmptyArr(treeCheckedKeys) && treeCheckedKeys.length === treeAllCheckKeys.length) { | |
| 153 | + message.warn('请选择不需要的权限!'); | |
| 154 | + return; | |
| 155 | + } | |
| 156 | + */ | |
| 157 | + const newCheckedKeys = []; /* 所有选中节点 */ | |
| 158 | + const saveData = []; | |
| 159 | + | |
| 160 | + // 取 选中数据 用-分割后的最后一个值 | |
| 161 | + const treeCheckedKeysNew = treeCheckedKeys.map((item) => { | |
| 162 | + const list = item.split('-'); | |
| 163 | + return list[list.length - 1]; | |
| 164 | + }); | |
| 165 | + | |
| 166 | + treeAllCheckKeys.forEach((key) => { | |
| 167 | + const iIndex = treeCheckedKeysNew.indexOf(key); | |
| 168 | + if (iIndex > -1) { | |
| 169 | + newCheckedKeys.push(key); | |
| 170 | + } | |
| 171 | + }); | |
| 172 | + newCheckedKeys.forEach((key) => { | |
| 173 | + const nodes = treeAllNodes.get(key); | |
| 174 | + saveData.push({ | |
| 175 | + sId: nodes.sId, | |
| 176 | + sParentId: nodes.sParentId, | |
| 177 | + // sKey: nodes[`${skeyName}`], | |
| 178 | + sKey: nodes.key, | |
| 179 | + sName: commonUtils.isNotEmptyObject(nodes) && commonUtils.isNotEmptyObject(nodes.sName) ? nodes.sName : '', | |
| 180 | + sAction: commonUtils.isNotEmptyObject(nodes) && commonUtils.isNotEmptyObject(nodes.sAction) ? nodes.sAction : '', | |
| 181 | + showName: nodes.showName, | |
| 182 | + }); | |
| 183 | + }); | |
| 184 | + | |
| 185 | + value.data = saveData; | |
| 186 | + value.sTreeAllKet = treeAllCheckKeys; | |
| 187 | + | |
| 188 | + const dataUrl = `${commonConfig.server_host}/sysjurisdictionNew/addSysjurisdictionNew?sModelsId=${sModelsId}`; | |
| 189 | + const dataReturn = (await commonServices.postValueService(token, value, dataUrl)).data; | |
| 190 | + /* 成功的话返回数据 */ | |
| 191 | + if (dataReturn.code === 1) { /* 成功 */ | |
| 192 | + message.success(dataReturn.msg); | |
| 193 | + this.props.onSaveState({ enabled: false, loading: false }); | |
| 194 | + return dataReturn; | |
| 195 | + } else { /* 失败 */ | |
| 196 | + this.props.getServiceError(dataReturn); | |
| 197 | + this.props.onSaveState({ | |
| 198 | + loading: false, | |
| 199 | + }); | |
| 200 | + return false; | |
| 201 | + } | |
| 202 | + } | |
| 203 | + | |
| 204 | + /** 点击修改按钮操作 */ | |
| 205 | + handleEdit = () => { | |
| 206 | + this.props.onSaveState({ enabled: true, loading: false }); | |
| 207 | + } | |
| 208 | + handleCancel = (obj) => { | |
| 209 | + // const { groupUserData } = this.props; | |
| 210 | + // const onGetChangeData = this.handleGetChangeData; | |
| 211 | + const onSaveStateOk = this.props.onSaveState; | |
| 212 | + confirm({ | |
| 213 | + title: obj.title, | |
| 214 | + onOk() { | |
| 215 | + // const sId = commonUtils.isNotEmptyArr(groupUserData) && groupUserData.length > 0 ? groupUserData[0].sId : ''; | |
| 216 | + onSaveStateOk({ enabled: false }); | |
| 217 | + // onGetChangeData({ name: 'authority', sId }, 'GroupAuthority'); | |
| 218 | + }, | |
| 219 | + onCancel() { | |
| 220 | + }, | |
| 221 | + }); | |
| 222 | + } | |
| 223 | + | |
| 224 | + handleGetSisformulaData = (masterConfig) => { | |
| 225 | + this.handleGetSlaveData('One', null, masterConfig); | |
| 226 | + } | |
| 227 | + | |
| 228 | + handleGetSlaveData = (getType, sName, currConfig) => { | |
| 229 | + const { currentId } = this.props; | |
| 230 | + /* 当前页签数据 */ | |
| 231 | + const sId = currentId !== undefined ? currentId : ''; | |
| 232 | + if (getType === 'One') { | |
| 233 | + this.props.handleGetDataOne({ | |
| 234 | + name: 'master', configData: currConfig, condition: { sId, pageSize: '', pageNum: '' }, | |
| 235 | + }); | |
| 236 | + } | |
| 237 | + if (getType === 'Set') { | |
| 238 | + this.props.handleGetDataSet({ | |
| 239 | + name: sName, configData: currConfig, condition: { sSqlCondition: { sParentId: sId } }, | |
| 240 | + }); | |
| 241 | + } | |
| 242 | + } | |
| 243 | + /* 获取分组列表 | |
| 244 | + yw_权限分配 | |
| 245 | + 获取分组列表 | |
| 246 | + 获取人员列表 | |
| 247 | + qx_获取权限树 | |
| 248 | + qx_根据组sId获取已选择权限 | |
| 249 | + qx_根据人sId获取已选择权限 | |
| 250 | + qx_根据组sId获取组人员 | |
| 251 | + 根据人员sId获取所属分组 | |
| 252 | + 保存组已选权限 | |
| 253 | + * */ | |
| 254 | + handleGetChangeData = async (params, urlKey) => { | |
| 255 | + const { app, sModelsId } = this.props; | |
| 256 | + const { token } = app; | |
| 257 | + const { name, sId, treeComponentName } = params; // name, | |
| 258 | + let dataUrl = ''; | |
| 259 | + if (urlKey === 'SysjurisdictionTree') { // 树结构 | |
| 260 | + dataUrl = `${commonConfig.server_host}sysjurisdictionNew/getSysjurisdictionTreeNew?sModelsId=${sModelsId}`; | |
| 261 | + } else if (urlKey === 'GroupData') { // 组 | |
| 262 | + dataUrl = `${commonConfig.server_host}sysjurisdictionNew/getGroupDataNew?sModelsId=${sModelsId}`; | |
| 263 | + } else if (urlKey === 'UserData') { // 用户 | |
| 264 | + dataUrl = `${commonConfig.server_host}sysjurisdictionNew/getUserDataNew?sModelsId=${sModelsId}`; | |
| 265 | + } else if (urlKey === 'UserGroupId') { // 组成员 | |
| 266 | + if (commonUtils.isNotEmptyObject(sId)) { | |
| 267 | + dataUrl = `${commonConfig.server_host}sysjurisdictionNew/getsUserGroupIdNew/${sId}?sModelsId=${sModelsId}`; | |
| 268 | + } | |
| 269 | + } else if (urlKey === 'GroupAuthority') { // 组权限 | |
| 270 | + if (commonUtils.isNotEmptyObject(sId)) { | |
| 271 | + dataUrl = `${commonConfig.server_host}sysjurisdictionNew/getHaveAuthorityGroupIdNew/${sId}?sModelsId=${sModelsId}`; | |
| 272 | + } | |
| 273 | + } else if (urlKey === 'UserAuthority') { // 用户所有权限查询 :用户权限,组权限 | |
| 274 | + if (commonUtils.isNotEmptyObject(sId)) { | |
| 275 | + dataUrl = `${commonConfig.server_host}sysjurisdictionNew/getHaveAuthorityUserIdNew/${sId}?sModelsId=${sModelsId}`; | |
| 276 | + } | |
| 277 | + } | |
| 278 | + if (commonUtils.isNotEmptyObject(dataUrl)) { | |
| 279 | + const dataReturn = (await commonServices.getService(token, dataUrl)).data; | |
| 280 | + if (commonUtils.isNotEmptyObject(dataReturn) && dataReturn.code === 1) { | |
| 281 | + const returnData = dataReturn.dataset.rows; | |
| 282 | + let addState = {}; | |
| 283 | + if (urlKey === 'SysjurisdictionTree') { // 树结构 | |
| 284 | + const allInitArr = []; | |
| 285 | + const allInitMap = new Map(); | |
| 286 | + this.handleAllCheckKeys(allInitArr, allInitMap, returnData); | |
| 287 | + this.props.onSaveState({ [`${name}Data`]: returnData, treeAllCheckKeys: allInitArr, treeAllNodes: allInitMap }); | |
| 288 | + } else if (urlKey === 'GroupData') { // 获取组后默认查询组权限,以及组成员 | |
| 289 | + this.props.onSaveState({ [`${name}Data`]: returnData }); | |
| 290 | + if (commonUtils.isNotEmptyArr(returnData)) { | |
| 291 | + this.handleTableSelectRowChange('group', [returnData[0].sId]); // 查询第一组成员 | |
| 292 | + } | |
| 293 | + } else if (urlKey === 'UserData') { // 获取成员后默认 成员自己的权限,以及成员所属组 | |
| 294 | + this.props.onSaveState({ [`${name}Data`]: returnData }); | |
| 295 | + // if (commonUtils.isNotEmptyArr(returnData)) { | |
| 296 | + // this.handleGetChangeData({ name: 'groupUser', sId: returnData[0].sId }, 'GroupUserId'); // 查询第一个成员归属组 | |
| 297 | + // } | |
| 298 | + } else if (urlKey === 'GroupAuthority' || urlKey === 'UserAuthority') { | |
| 299 | + let groupAuth = ''; | |
| 300 | + let groupAuthData = []; | |
| 301 | + if (commonUtils.isNotEmptyArr(returnData)) { | |
| 302 | + if (commonUtils.isNotEmptyObject(returnData[0])) { | |
| 303 | + groupAuth = commonUtils.isNotEmptyObject(returnData[0]) ? returnData[0].sKeys : []; | |
| 304 | + groupAuthData = commonUtils.isNotEmptyObject(groupAuth) ? groupAuth.split(',') : []; | |
| 305 | + } | |
| 306 | + } | |
| 307 | + addState = this.handleCheckedNodeForFunction(treeComponentName, groupAuthData); | |
| 308 | + this.props.onSaveState({ | |
| 309 | + [`${name}Data`]: returnData, userAuth: undefined, sJurisdictionClassifyId: sId, sUserId: undefined, ...addState, | |
| 310 | + }); | |
| 311 | + } else if (false && urlKey === 'UserAuthority') { | |
| 312 | + let gAuth = ''; | |
| 313 | + let groupAuthData = []; | |
| 314 | + let uAuth = ''; | |
| 315 | + let userAuthData = []; | |
| 316 | + if (commonUtils.isNotEmptyArr(returnData)) { | |
| 317 | + if (commonUtils.isNotEmptyObject(returnData[0])) { | |
| 318 | + const { groupAuth, userAuth } = returnData[0]; | |
| 319 | + if (commonUtils.isNotEmptyObject(groupAuth)) { | |
| 320 | + gAuth = groupAuth.sKeys; | |
| 321 | + groupAuthData = gAuth.split(','); | |
| 322 | + } | |
| 323 | + | |
| 324 | + if (commonUtils.isNotEmptyObject(userAuth)) { | |
| 325 | + uAuth = userAuth.sKeys; | |
| 326 | + userAuthData = uAuth.split(','); | |
| 327 | + } | |
| 328 | + } | |
| 329 | + } | |
| 330 | + addState = this.handleGroupForFunction(treeComponentName, groupAuthData, userAuthData); | |
| 331 | + this.props.onSaveState({ | |
| 332 | + [`${name}Data`]: returnData, userAuthData, sJurisdictionClassifyId: undefined, sUserId: sId, ...addState, | |
| 333 | + }); | |
| 334 | + } else { | |
| 335 | + this.props.onSaveState({ [`${name}Data`]: returnData }); | |
| 336 | + } | |
| 337 | + } else { | |
| 338 | + this.props.getServiceError(dataReturn); | |
| 339 | + } | |
| 340 | + } | |
| 341 | + } | |
| 342 | + | |
| 343 | + // 模拟 列 | |
| 344 | + imitateTableColumn = (title, dataIndex, key, width) => { | |
| 345 | + return { | |
| 346 | + title, dataIndex, key, width, | |
| 347 | + }; | |
| 348 | + } | |
| 349 | + // 模拟config的 gdsconfigformslave 配置 | |
| 350 | + imitateTableConfig = (title, dataIndex, width) => { | |
| 351 | + return { | |
| 352 | + bCanInput: false, | |
| 353 | + bFilter: false, | |
| 354 | + bFind: false, | |
| 355 | + bFirstEmpty: false, | |
| 356 | + bIsOther: false, | |
| 357 | + bNewRecord: false, | |
| 358 | + bNotEmpty: false, | |
| 359 | + bNotRepeat: false, | |
| 360 | + bReadonly: true, | |
| 361 | + bSum: false, | |
| 362 | + bTree: false, | |
| 363 | + bVisible: true, | |
| 364 | + iColValue: 1, | |
| 365 | + iFitWidth: width, | |
| 366 | + sBrandsId: '1111111111', | |
| 367 | + sChinese: title, | |
| 368 | + sChineseDropDown: '', | |
| 369 | + sControlName: 'BtnLast', | |
| 370 | + sId: commonUtils.createSid(), | |
| 371 | + sParentId: '11811781131121915102156308120', | |
| 372 | + sSubsidiaryId: '1111111111', | |
| 373 | + showName: title, | |
| 374 | + sName: dataIndex, | |
| 375 | + }; | |
| 376 | + } | |
| 377 | + // 根据模拟列,模拟列配置 | |
| 378 | + imitateTableColumnConfig = (name, columns) => { | |
| 379 | + const gdsconfigformslave = []; | |
| 380 | + columns.forEach((itmes) => { | |
| 381 | + gdsconfigformslave.push(this.imitateTableConfig(itmes.title, itmes.dataIndex, itmes.width)); | |
| 382 | + }); | |
| 383 | + const config = { bGrd: true, gdsconfigformslave }; | |
| 384 | + return { [`${name}Column`]: columns, [`${name}Config`]: config }; | |
| 385 | + } | |
| 386 | + | |
| 387 | + initColumnConfig = (name, columns) => { | |
| 388 | + const gdsconfigformslave = []; | |
| 389 | + columns.forEach((itmes) => { | |
| 390 | + gdsconfigformslave.push(this.imitateTableConfig(itmes.title, itmes.dataIndex, itmes.width)); | |
| 391 | + }); | |
| 392 | + const config = { bGrd: true, gdsconfigformslave }; | |
| 393 | + const newColumns = commonFunc.getHeaderConfig(config); | |
| 394 | + return { [`${name}Column`]: newColumns, [`${name}Config`]: config }; | |
| 395 | + } | |
| 396 | + | |
| 397 | + | |
| 398 | + /** 处理选择行发生改变 */ | |
| 399 | + handleTableSelectRowChange = (name, selectedRowKeys) => { | |
| 400 | + const addState = {}; | |
| 401 | + if (name === 'group') { | |
| 402 | + this.handleGetChangeData({ name: 'userGroup', sId: selectedRowKeys }, 'UserGroupId'); | |
| 403 | + this.handleGetChangeData({ name: 'master', sId: selectedRowKeys, treeComponentName: 'tree' }, 'GroupAuthority'); | |
| 404 | + addState.groupSelectedRowKeys = selectedRowKeys; | |
| 405 | + } else if (name === 'userView') { | |
| 406 | + // this.handleGetChangeData({ name: 'groupUser', sId: selectedRowKeys }, 'GroupUserId'); | |
| 407 | + this.handleGetChangeData({ name: 'master', sId: selectedRowKeys, treeComponentName: 'tree' }, 'UserAuthority'); | |
| 408 | + addState.userViewSelectedRowKeys = selectedRowKeys; | |
| 409 | + } else if (name === 'userGroup') { | |
| 410 | + this.handleGetChangeData({ name: 'master', sId: selectedRowKeys, treeComponentName: 'tree' }, 'UserAuthority'); | |
| 411 | + addState.userGroupSelectedRowKeys = selectedRowKeys; | |
| 412 | + } else if (name === 'groupUser') { | |
| 413 | + this.handleGetChangeData({ name: 'master', sId: selectedRowKeys, treeComponentName: 'tree' }, 'GroupAuthority'); | |
| 414 | + addState.groupUserSelectedRowKeys = selectedRowKeys; | |
| 415 | + } | |
| 416 | + this.props.onSaveState({ ...addState }); | |
| 417 | + } | |
| 418 | + | |
| 419 | + handleCheckBoxCheck = (componentName, checkedKeys) => { | |
| 420 | + this.handleCheckedForFunction(componentName, checkedKeys); | |
| 421 | + } | |
| 422 | + | |
| 423 | + /* 选择权限同时处理保存的数据以及将要展现的已选择权限 */ | |
| 424 | + handleCheckedForFunction = (componentName, checkedKeys) => { | |
| 425 | + const { | |
| 426 | + treeAllNodes, | |
| 427 | + } = this.props; | |
| 428 | + const data = []; | |
| 429 | + const checkedData = []; | |
| 430 | + if (commonUtils.isNotEmptyArr(treeAllNodes) && treeAllNodes.size > 0) { | |
| 431 | + const newCheckedKeys = []; | |
| 432 | + if (commonUtils.isNotEmptyArr(checkedKeys) && checkedKeys[0] !== null) { | |
| 433 | + checkedKeys.forEach((key, i) => { | |
| 434 | + if (checkedKeys.indexOf(key) === i) { | |
| 435 | + newCheckedKeys.push(key); | |
| 436 | + } | |
| 437 | + }); | |
| 438 | + newCheckedKeys.forEach((key) => { | |
| 439 | + const nodes = treeAllNodes.get(key); | |
| 440 | + if (commonUtils.isNotEmptyObject(nodes)) { | |
| 441 | + checkedData.push({ sId: nodes.sId, showName: nodes.showName }); | |
| 442 | + } | |
| 443 | + }); | |
| 444 | + } | |
| 445 | + this.props.onSaveState({ | |
| 446 | + [`${componentName}CheckedKeys`]: newCheckedKeys, | |
| 447 | + treeSaveParams: data, | |
| 448 | + checkedNodesData: checkedData, | |
| 449 | + }); | |
| 450 | + } | |
| 451 | + } | |
| 452 | + | |
| 453 | + /* 拿接口返回的节点进行选中 */ | |
| 454 | + handleCheckedNodeForFunction = (componentName, haveCheckedKeys) => { | |
| 455 | + // eslint-disable-next-line no-unused-vars | |
| 456 | + const { treeAllNodes, treeAllCheckKeys } = this.props; | |
| 457 | + const addState = {}; | |
| 458 | + const checkedData = []; | |
| 459 | + let checkKeys = []; | |
| 460 | + checkKeys = haveCheckedKeys; | |
| 461 | + // if (commonUtils.isNotEmptyArr(unCheckedKeys)) { | |
| 462 | + // for (const checkId of unCheckedKeys) { | |
| 463 | + // treeAllCheckKeys.forEach((key) => { | |
| 464 | + // if (checkId.includes(key)) { | |
| 465 | + // checkKeys.forEach((item, index) => { | |
| 466 | + // if (item === key) { | |
| 467 | + // checkKeys.splice(index, 1); | |
| 468 | + // } | |
| 469 | + // }); | |
| 470 | + // } | |
| 471 | + // }); | |
| 472 | + // } | |
| 473 | + // } | |
| 474 | + checkKeys.forEach((key) => { | |
| 475 | + const nodes = treeAllNodes.get(key); | |
| 476 | + if (commonUtils.isNotEmptyObject(nodes)) { | |
| 477 | + checkedData.push({ sId: nodes.sId, showName: nodes.showName }); | |
| 478 | + } | |
| 479 | + }); | |
| 480 | + addState[`${componentName}CheckedKeys`] = checkKeys; | |
| 481 | + addState.checkedNodesData = checkedData; | |
| 482 | + addState.disabledCheckedKeys = []; | |
| 483 | + return addState; | |
| 484 | + } | |
| 485 | + | |
| 486 | + | |
| 487 | + handleUnCheckedForFunction = (componentName, unCheckedKeys) => { | |
| 488 | + const { treeAllNodes, treeAllCheckKeys } = this.props; | |
| 489 | + const addState = {}; | |
| 490 | + const checkedData = []; | |
| 491 | + let checkKeys = []; | |
| 492 | + checkKeys = checkKeys.concat(treeAllCheckKeys); | |
| 493 | + | |
| 494 | + if (commonUtils.isNotEmptyArr(unCheckedKeys)) { | |
| 495 | + for (const checkId of unCheckedKeys) { | |
| 496 | + treeAllCheckKeys.forEach((key) => { | |
| 497 | + if (checkId.includes(key)) { | |
| 498 | + checkKeys.forEach((item, index) => { | |
| 499 | + if (item === key) { | |
| 500 | + checkKeys.splice(index, 1); | |
| 501 | + } | |
| 502 | + }); | |
| 503 | + } | |
| 504 | + }); | |
| 505 | + } | |
| 506 | + } | |
| 507 | + checkKeys.forEach((key) => { | |
| 508 | + const nodes = treeAllNodes.get(key); | |
| 509 | + if (commonUtils.isNotEmptyObject(nodes)) { | |
| 510 | + checkedData.push({ sId: nodes.sId, showName: nodes.showName }); | |
| 511 | + } | |
| 512 | + }); | |
| 513 | + addState[`${componentName}CheckedKeys`] = checkKeys; | |
| 514 | + addState.checkedNodesData = checkedData; | |
| 515 | + addState.disabledCheckedKeys = []; | |
| 516 | + return addState; | |
| 517 | + } | |
| 518 | + | |
| 519 | + handleGroupForFunction = (treeComponentName, groupAuthData, userAuthData) => { | |
| 520 | + const { treeAllNodes, treeAllCheckKeys } = this.props; | |
| 521 | + const addState = {}; | |
| 522 | + const checkedData = []; | |
| 523 | + let checkKeys = []; | |
| 524 | + let userAuthDataNew = []; | |
| 525 | + checkKeys = checkKeys.concat(treeAllCheckKeys); | |
| 526 | + if (commonUtils.isEmptyArr(userAuthData)) { /* 只有组权限 没有用户权限时 */ | |
| 527 | + userAuthDataNew = JSON.parse(JSON.stringify(groupAuthData)); /* 深拷贝 */ | |
| 528 | + userAuthData = userAuthDataNew; | |
| 529 | + } | |
| 530 | + if (commonUtils.isNotEmptyArr(userAuthData)) { | |
| 531 | + treeAllCheckKeys.forEach((key) => { | |
| 532 | + for (const checkId of userAuthData) { | |
| 533 | + if (checkId.includes(key)) { | |
| 534 | + checkKeys.forEach((item, index) => { | |
| 535 | + if (item === key) { | |
| 536 | + checkKeys.splice(index, 1); | |
| 537 | + } | |
| 538 | + }); | |
| 539 | + } | |
| 540 | + } | |
| 541 | + }); | |
| 542 | + checkKeys.forEach((key) => { | |
| 543 | + const nodes = treeAllNodes.get(key); | |
| 544 | + if (commonUtils.isNotEmptyObject(nodes)) { | |
| 545 | + checkedData.push({ sId: nodes.sId, showName: nodes.showName }); | |
| 546 | + } | |
| 547 | + }); | |
| 548 | + } | |
| 549 | + | |
| 550 | + let groupCheckKeys = []; | |
| 551 | + if (commonUtils.isNotEmptyArr(groupAuthData)) { | |
| 552 | + groupCheckKeys = groupCheckKeys.concat(treeAllCheckKeys); | |
| 553 | + treeAllCheckKeys.forEach((key) => { | |
| 554 | + for (const checkId of groupAuthData) { | |
| 555 | + if (checkId === key) { | |
| 556 | + groupCheckKeys.splice(groupCheckKeys.indexOf(key), 1); | |
| 557 | + } | |
| 558 | + } | |
| 559 | + }); | |
| 560 | + } else { | |
| 561 | + groupCheckKeys = treeAllCheckKeys; /* 组权限没有 */ | |
| 562 | + } | |
| 563 | + addState[`${treeComponentName}CheckedKeys`] = checkKeys.concat(groupCheckKeys); | |
| 564 | + addState.checkedNodesData = checkedData; | |
| 565 | + addState.disabledCheckedKeys = groupCheckKeys; | |
| 566 | + return addState; | |
| 567 | + }; | |
| 568 | + | |
| 569 | + handleAllCheckKeys = (arrObj, mapObj, returnData) => { | |
| 570 | + const { treeKeyName } = this.props; | |
| 571 | + returnData.forEach((item) => { | |
| 572 | + if (commonUtils.isNotEmptyArr(item.children) && item.children.length > 0) { | |
| 573 | + arrObj.push(item[`${treeKeyName}`]); | |
| 574 | + mapObj.set(item[`${treeKeyName}`], item); | |
| 575 | + this.handleAllCheckKeys(arrObj, mapObj, item.children); | |
| 576 | + } else { | |
| 577 | + arrObj.push(item[`${treeKeyName}`]); | |
| 578 | + mapObj.set(item[`${treeKeyName}`], item); | |
| 579 | + } | |
| 580 | + }); | |
| 581 | + }; | |
| 582 | + handleRefresh = () => { | |
| 583 | + this.handleGetChangeData({ name: 'tree' }, 'SysjurisdictionTree'); | |
| 584 | + this.handleGetChangeData({ name: 'group' }, 'GroupData'); | |
| 585 | + this.handleGetChangeData({ name: 'user' }, 'UserData'); | |
| 586 | + this.props.onSaveState({ | |
| 587 | + treeAllCheckKeys: undefined, | |
| 588 | + treeAllNodes: undefined, | |
| 589 | + }); | |
| 590 | + } | |
| 591 | + handleSearch = async (sSearchValue) => { | |
| 592 | + const { sModelsId } = this.props; | |
| 593 | + const url = `${commonConfig.server_host}gdsmodule/getGdsmoduleList?sModelsId=${sModelsId}&sName=${sSearchValue}`; | |
| 594 | + const dataReturn = (await commonServices.getService(this.props.app.token, url)).data; | |
| 595 | + if (dataReturn.code === 1) { | |
| 596 | + /* 数据查询成功 */ | |
| 597 | + this.props.onSaveState({ searchData: dataReturn.dataset.rows }); | |
| 598 | + } else { /* 失败 */ | |
| 599 | + this.props.getServiceError(dataReturn); | |
| 600 | + } | |
| 601 | + } | |
| 602 | + handleSetTreeOptionData = (name, optionName, value) => { | |
| 603 | + this.props.onSaveState({ [`${name}${optionName}Keys`]: value }); | |
| 604 | + } | |
| 605 | + | |
| 606 | + handleSearchTable = async (searchValue, type) => { | |
| 607 | + const { token, sModelsId } = this.props; | |
| 608 | + let dataUrl = ''; | |
| 609 | + if (commonUtils.isNotEmptyObject(type)) { | |
| 610 | + if (type === 'group') { | |
| 611 | + /* 组权限 */ | |
| 612 | + dataUrl = `${commonConfig.server_host}sysjurisdictionNew/getGroupDataNew?sSearchName=${searchValue}&sModelsId=${sModelsId}`; | |
| 613 | + } else if (type === 'userView') { /* 用户权限 */ | |
| 614 | + dataUrl = `${commonConfig.server_host}sysjurisdictionNew/getUserDataNew?sSearchName=${searchValue}&sModelsId=${sModelsId}`; | |
| 615 | + } | |
| 616 | + if (commonUtils.isNotEmptyObject(dataUrl)) { | |
| 617 | + const dataReturn = (await commonServices.getService(token, dataUrl)).data; | |
| 618 | + if (dataReturn.code === 1) { | |
| 619 | + const returnData = dataReturn.dataset.rows; | |
| 620 | + if (commonUtils.isNotEmptyArr(type)) { | |
| 621 | + this.props.onSaveState({ [`${type}Data`]: returnData }); | |
| 622 | + } | |
| 623 | + } | |
| 624 | + } | |
| 625 | + } | |
| 626 | + } | |
| 627 | + | |
| 628 | + /* 查询组权限 */ | |
| 629 | + handleSearchGroup = async (searchValue) => { | |
| 630 | + this.handleSearchTable(searchValue, 'group'); | |
| 631 | + } | |
| 632 | + | |
| 633 | + /* 查询用户权限 */ | |
| 634 | + handleSearchUser = async (searchValue) => { | |
| 635 | + this.handleSearchTable(searchValue, 'userView'); | |
| 636 | + } | |
| 637 | + /** 按钮操作事件 */ | |
| 638 | + handleButtonClick = (name, isFresh) => { | |
| 639 | + if (name.includes('BtnRepairGroup')) { | |
| 640 | + const { sJurisdictionClassifyId } = this.props; | |
| 641 | + if (commonUtils.isNotEmptyArr(sJurisdictionClassifyId)) { | |
| 642 | + const filterData = this.props.masterConfig.gdsconfigformslave.filter(item => (item.sControlName === name)); | |
| 643 | + const btnConfig = commonUtils.isNotEmptyArr(filterData) ? filterData[0] : {};// sButtonEnabled sButtonParam | |
| 644 | + console.log(333, btnConfig); | |
| 645 | + if (commonUtils.isNotEmptyObject(btnConfig) && commonUtils.isNotEmptyStr(btnConfig.sButtonParam)) { | |
| 646 | + /* 找到组配置 */ | |
| 647 | + const sToGroupConfig = this.props.masterConfig.gdsconfigformslave.filter(item => item.sName === 'sCopyToGroupName'); | |
| 648 | + console.log(332, sToGroupConfig); | |
| 649 | + if (commonUtils.isNotEmptyArr(sToGroupConfig)) { | |
| 650 | + this.props.onSaveState({ groupModalVisible: true, sToGroupConfig, sGroupId: sJurisdictionClassifyId }); /* 打开复制从窗体sJurisdictionClassifyId */ | |
| 651 | + } | |
| 652 | + } | |
| 653 | + } else { | |
| 654 | + message.error('请选择组权限'); | |
| 655 | + } | |
| 656 | + } else if (name.includes('BtnRepairUser')) { | |
| 657 | + const { userViewSelectedRowKeys } = this.props; | |
| 658 | + if (commonUtils.isNotEmptyArr(userViewSelectedRowKeys)) { | |
| 659 | + const filterData = this.props.masterConfig.gdsconfigformslave.filter(item => (item.sControlName === name)); | |
| 660 | + const btnConfig = commonUtils.isNotEmptyArr(filterData) ? filterData[0] : {};// sButtonEnabled sButtonParam | |
| 661 | + console.log(filterData, filterData); | |
| 662 | + if (commonUtils.isNotEmptyObject(btnConfig) && commonUtils.isNotEmptyStr(btnConfig.sButtonParam)) { | |
| 663 | + /* 找到组配置 */ | |
| 664 | + const sToUserConfig = this.props.masterConfig.gdsconfigformslave.filter(item => item.sName === 'sCopyToUserName'); | |
| 665 | + console.log(332, sToUserConfig); | |
| 666 | + if (commonUtils.isNotEmptyArr(sToUserConfig)) { | |
| 667 | + this.props.onSaveState({ userModalVisible: true, sToUserConfig }); | |
| 668 | + } | |
| 669 | + } | |
| 670 | + } else { | |
| 671 | + message.error('请选择用户权限'); | |
| 672 | + } | |
| 673 | + } else if (name === 'BtnOut') { | |
| 674 | + this.handleOut(); | |
| 675 | + } else if (name === 'BtnDesignFunction') { | |
| 676 | + this.handleDesignFunction(); | |
| 677 | + } else if (name === 'BtnRefresh') { | |
| 678 | + const { | |
| 679 | + slaveConfig, slavePagination, slaveFilterCondition, slaveOrderBy, | |
| 680 | + } = this.props; | |
| 681 | + this.props.onSaveState({ | |
| 682 | + clearArray: [], searchText: '', slaveSelectedRowKeys: [], slaveSelectedData: [], slaveInfoSelectedRowKeys: [], slaveInfoSelectedData: [], treeSelectedKeys: [], treeFilterCondition: [], loading: false, pageLoading: true, isFresh, | |
| 683 | + }); | |
| 684 | + if (slavePagination === undefined) return; | |
| 685 | + this.handleGetData(slaveConfig, slaveFilterCondition, slavePagination.current, slavePagination.pageSize, slaveOrderBy, true); /* 刷新方法 */ | |
| 686 | + // if (formRoute === '/indexPage/materialRequirementsPlanning') { | |
| 687 | + // if (commonUtils.isNotEmptyObject(slaveInfoConfig)) { | |
| 688 | + // this.handleGetDataInfo(slaveInfoConfig, slaveFilterCondition, 1); | |
| 689 | + // } | |
| 690 | + // } | |
| 691 | + /* 判断是否要加载过滤树数据 */ | |
| 692 | + const filterTreeConfigArr = slaveConfig.gdsconfigformslave.filter(item => item.bTree); | |
| 693 | + if (commonUtils.isNotEmptyArr(filterTreeConfigArr)) { | |
| 694 | + const filterTreeConfig = filterTreeConfigArr[0]; | |
| 695 | + this.handleGetFilterTreeData(filterTreeConfig, slaveFilterCondition, 1); | |
| 696 | + } | |
| 697 | + const { clearArray } = this.props; | |
| 698 | + if (!commonUtils.isEmpty(clearArray)) { | |
| 699 | + for (const item of clearArray) { | |
| 700 | + const { confirm, clearFilters } = item; | |
| 701 | + confirm(); | |
| 702 | + clearFilters(); | |
| 703 | + } | |
| 704 | + } | |
| 705 | + } else if (name === 'BtnOutJurisdiction') { | |
| 706 | + const { activeKey, app, sModelsId } = this.props; | |
| 707 | + const { userinfo, token } = app; | |
| 708 | + const { sBrandsId, sSubsidiaryId } = userinfo; | |
| 709 | + const sType = activeKey === '3' ? 'user' : 'group'; | |
| 710 | + const url = `${commonConfig.server_host}sysjurisdictionNew/exportSysjurisdiction/${sBrandsId}/${sSubsidiaryId}/${sType}?sModelsId=${sModelsId}&token=${token}`; | |
| 711 | + window.open(url); | |
| 712 | + } | |
| 713 | + }; | |
| 714 | + | |
| 715 | + handleProcedureCall = async (btnConfig, proName, proInParam, other) => { | |
| 716 | + const { app, sModelsId } = this.props; | |
| 717 | + const value = { sProName: proName, sProInParam: proInParam }; | |
| 718 | + if (other?.iFlag === 1) { | |
| 719 | + value.iFlag = 1; | |
| 720 | + } | |
| 721 | + const url = `${commonConfig.server_host}procedureCall/doGenericProcedureCall?sModelsId=${sModelsId}`; | |
| 722 | + const returnData = (await commonServices.postValueService(app.token, value, url)).data; | |
| 723 | + if (returnData.code === 1) { | |
| 724 | + message.success(returnData.msg); | |
| 725 | + // this.props.onButtonClick('BtnRefresh'); | |
| 726 | + // this.handleRefresh(); | |
| 727 | + this.handleGetChangeData({ name: 'group' }, 'GroupData'); | |
| 728 | + this.handleGetChangeData({ name: 'userView' }, 'UserData'); | |
| 729 | + this.props.onSaveState({ groupModalVisible: false, userModalVisible: false }); | |
| 730 | + } else { | |
| 731 | + this.props.getServiceError({ ...returnData, fn: () => this.handleProcedureCall(btnConfig, proName, proInParam, { iFlag: 1 }) }); | |
| 732 | + } | |
| 733 | + this.props.onSaveState({ loading: false }); | |
| 734 | + } | |
| 735 | + | |
| 736 | + handleCopyGroupModalOk =() => { | |
| 737 | + const { sJurisdictionClassifyId, masterData } = this.props; | |
| 738 | + const filterData = this.props.masterConfig.gdsconfigformslave.filter(item => (item.sControlName === 'BtnRepairGroup')); | |
| 739 | + const btnConfig = commonUtils.isNotEmptyArr(filterData) ? filterData[0] : {};// sButtonEnabled sButtonParam | |
| 740 | + if (commonUtils.isNotEmptyObject(btnConfig) && commonUtils.isNotEmptyStr(btnConfig.sButtonParam)) { | |
| 741 | + const inParams = []; | |
| 742 | + const addState = {}; | |
| 743 | + addState.key = 'group'; | |
| 744 | + const val = [{ | |
| 745 | + sGroupId: commonUtils.isNotEmptyArr(sJurisdictionClassifyId) ? sJurisdictionClassifyId[0] : '', | |
| 746 | + sToGroupId: commonUtils.isNotEmptyObject(masterData) && masterData.sCopyToGroupId, | |
| 747 | + }]; | |
| 748 | + addState.value = val; | |
| 749 | + inParams.push({ ...addState }); | |
| 750 | + this.handleProcedureCall(btnConfig, 'Sp_BtnEventCopyGroupJurisdiction', JSON.stringify({ params: inParams, changeValue: 'group' })); | |
| 751 | + } | |
| 752 | + }; | |
| 753 | + | |
| 754 | + handleCopyUserModalOk =() => { | |
| 755 | + const { userViewSelectedRowKeys, masterData } = this.props; | |
| 756 | + const filterData = this.props.masterConfig.gdsconfigformslave.filter(item => (item.sControlName === 'BtnRepairUser')); | |
| 757 | + const btnConfig = commonUtils.isNotEmptyArr(filterData) ? filterData[0] : {};// sButtonEnabled sButtonParam | |
| 758 | + if (commonUtils.isNotEmptyObject(btnConfig) && commonUtils.isNotEmptyStr(btnConfig.sButtonParam)) { | |
| 759 | + const inParams = []; | |
| 760 | + const addState = {}; | |
| 761 | + addState.key = 'user'; | |
| 762 | + const val = [{ | |
| 763 | + sUserId: commonUtils.isNotEmptyArr(userViewSelectedRowKeys) ? userViewSelectedRowKeys[0] : '', | |
| 764 | + sToUserId: commonUtils.isNotEmptyObject(masterData) && masterData.sCopyToUserId, | |
| 765 | + }]; | |
| 766 | + addState.value = val; | |
| 767 | + inParams.push({ ...addState }); | |
| 768 | + this.handleProcedureCall(btnConfig, 'Sp_BtnEventCopyUserJurisdiction', JSON.stringify({ params: inParams, changeValue: 'user' })); | |
| 769 | + } | |
| 770 | + }; | |
| 771 | + | |
| 772 | + handleModalCancel = (modelVisible) => { | |
| 773 | + this.props.onSaveState({ | |
| 774 | + [modelVisible]: false, | |
| 775 | + }); | |
| 776 | + }; | |
| 777 | + | |
| 778 | + render() { | |
| 779 | + const { masterData } = this.props; | |
| 780 | + const imgSrc = commonBusiness.handleAddIcon(masterData); | |
| 781 | + return ( | |
| 782 | + <ChildComponent | |
| 783 | + {...this.props} | |
| 784 | + {...this.state} | |
| 785 | + onReturnForm={this.handleForm} | |
| 786 | + onSubmit={this.handleValidateSave.bind(this, 'tree')} | |
| 787 | + onEdit={this.handleEdit} | |
| 788 | + onTableSelectRowChange={this.handleTableSelectRowChange} | |
| 789 | + onCancel={this.handleCancel} | |
| 790 | + imgSrc={imgSrc} | |
| 791 | + onToggle={this.handleToggle} | |
| 792 | + onTreeCheck={this.handleCheckBoxCheck} | |
| 793 | + onRefresh={this.handleRefresh} | |
| 794 | + onSearch={this.handleSearch} | |
| 795 | + onDoubleClick={this.handleDoubleClick} | |
| 796 | + onSetTreeOptionKeys={this.handleSetTreeOptionData} | |
| 797 | + onSearchTable={this.handleSearchTable} | |
| 798 | + onSearchGroup={this.handleSearchGroup} | |
| 799 | + onSearchUser={this.handleSearchUser} | |
| 800 | + onButtonClick={this.handleButtonClick} | |
| 801 | + onCopyGroupModalOk={this.handleCopyGroupModalOk} | |
| 802 | + onCopyUserModalOk={this.handleCopyUserModalOk} | |
| 803 | + onModalCance={this.handleModalCancel} | |
| 804 | + /> | |
| 805 | + ); | |
| 806 | + } | |
| 807 | + }; | |
| 808 | +}; | ... | ... |
src/components/Common/CommonProductionPlanEvent.js
0 → 100644
| 1 | +/* eslint-disable prefer-destructuring,no-await-in-loop,semi,no-unused-vars */ | |
| 2 | +import React, { Component } from 'react'; | |
| 3 | +import { message } from 'antd'; // Form, Modal, InputNumber | |
| 4 | +// import reactComponentDebounce from 'react-component-debounce'; | |
| 5 | +import moment from 'moment'; | |
| 6 | +import * as commonUtils from '../../utils/utils'; /* 通用方法 */ | |
| 7 | +import * as commonBusiness from './commonBusiness'; /* 单据业务功能 */ | |
| 8 | +import * as commonServices from '../../services/services'; /* 服务类 */ | |
| 9 | +import commonConfig from '../../utils/config'; | |
| 10 | +import * as commonFunc from './commonFunc'; /* 通用单据方法 */ | |
| 11 | + | |
| 12 | +/* | |
| 13 | +const { confirm } = Modal; | |
| 14 | +const FormItem = Form.Item; | |
| 15 | +const InputNumberA = reactComponentDebounce(800)(InputNumber); | |
| 16 | +*/ | |
| 17 | + | |
| 18 | +export default (ChildComponent) => { | |
| 19 | + return class extends Component { | |
| 20 | + constructor(props) { | |
| 21 | + super(props); | |
| 22 | + this.form = {}; /* 表单对象 */ | |
| 23 | + } | |
| 24 | + | |
| 25 | + componentWillReceiveProps(nextProps) { | |
| 26 | + const { | |
| 27 | + app, formData, currentId, masterData, searchSolution, sGroupByList, teamSelectedRowKeys, teamData, | |
| 28 | + } = nextProps; | |
| 29 | + const { teamFilterCondition } = this.props; | |
| 30 | + let { | |
| 31 | + isReceive, teamConfig, slaveConfig, slaveInfoConfig, | |
| 32 | + } = nextProps; | |
| 33 | + const { currentPane } = app; | |
| 34 | + const { otherCondition } = currentPane; | |
| 35 | + if (formData.length > 0 && commonUtils.isEmptyObject(teamConfig) && commonUtils.isEmptyArr(searchSolution)) { | |
| 36 | + isReceive = false; | |
| 37 | + const sId = currentId !== undefined ? currentId : ''; | |
| 38 | + const masterConfig = formData.filter(item => !item.bGrd && item.sTbName === 'eleteam')[0]; | |
| 39 | + | |
| 40 | + teamConfig = formData.filter(item => item.sTbName === 'Sp_Manufacture_ProductionPlanInfo_WorkCenter')[0]; | |
| 41 | + slaveConfig = formData.filter(item => item.sTbName === 'Sp_Manufacture_ProductionPlanInfo' && item.sGrd !== 'slaveInfo')[0]; | |
| 42 | + slaveInfoConfig = formData.filter(item => item.sTbName === 'Sp_Manufacture_ProductionPlanInfo' && item.sGrd === 'slaveInfo')[0]; | |
| 43 | + const productionPlanConfig = formData.filter(item => item.sTbName === 'MftProductionPlanSlave')[0]; | |
| 44 | + | |
| 45 | + const teamColumn = commonFunc.getHeaderConfig(teamConfig); | |
| 46 | + const slaveColumn = commonFunc.getHeaderConfig(slaveConfig); | |
| 47 | + const slaveInfoColumn = commonFunc.getHeaderConfig(slaveInfoConfig); | |
| 48 | + const productionPlanColumn = commonFunc.getHeaderConfig(productionPlanConfig); | |
| 49 | + | |
| 50 | + let currfilterCondition = []; | |
| 51 | + if (commonUtils.isNotEmptyObject(masterData) && !commonUtils.isEmpty(masterData.sSearchSolutionId) && commonUtils.isNotEmptyArr(searchSolution)) { | |
| 52 | + const iIndex = searchSolution.findIndex(item => item.sId === masterData.sSearchSolutionId); | |
| 53 | + if (iIndex > -1 && !commonUtils.isEmpty(searchSolution[iIndex].sCondition)) { | |
| 54 | + currfilterCondition = JSON.parse(searchSolution[iIndex].sCondition); | |
| 55 | + } | |
| 56 | + } | |
| 57 | + this.handleGetData('team', teamConfig, currfilterCondition, undefined, '', false, sGroupByList); | |
| 58 | + // this.handleGetData('slave', slaveConfig, [], undefined, '', false, undefined); | |
| 59 | + // this.handleGetData('slaveInfo', slaveInfoConfig, [], undefined, '', false, undefined); | |
| 60 | + | |
| 61 | + this.props.onSaveState({ | |
| 62 | + masterConfig, | |
| 63 | + teamConfig, | |
| 64 | + teamColumn, | |
| 65 | + slaveConfig, | |
| 66 | + slaveColumn, | |
| 67 | + slaveInfoConfig, | |
| 68 | + slaveInfoColumn, | |
| 69 | + productionPlanConfig, | |
| 70 | + productionPlanColumn, | |
| 71 | + sId, | |
| 72 | + pageLoading: false, | |
| 73 | + enabled: true, | |
| 74 | + dragPermission: false, | |
| 75 | + dragAndDropSwitch: false, | |
| 76 | + isReceive, | |
| 77 | + masterData: {}, | |
| 78 | + tableBtnEnabled: true, | |
| 79 | + // stateOption: objValue, | |
| 80 | + }); | |
| 81 | + } else if (commonUtils.isEmptyStr(teamSelectedRowKeys) && commonUtils.isEmptyArr(teamFilterCondition) && commonUtils.isNotEmptyArr(teamData) && !isReceive) { | |
| 82 | + let iIndex = -1; | |
| 83 | + if (otherCondition) { | |
| 84 | + iIndex = otherCondition.findIndex(item => item.bFilterName === 'sMachineId'); | |
| 85 | + } | |
| 86 | + if (iIndex !== -1) { | |
| 87 | + const newIndex = teamData.findIndex(item => item.sMachineId === otherCondition[iIndex].bFilterValue); | |
| 88 | + if (newIndex === -1) { | |
| 89 | + this.handleCallBack({ ...teamData[0] }); | |
| 90 | + } else { | |
| 91 | + this.handleCallBack({ ...teamData[newIndex] }); | |
| 92 | + } | |
| 93 | + } else { | |
| 94 | + this.handleCallBack({ ...teamData[0] }); | |
| 95 | + } | |
| 96 | + this.props.onSaveState({ isReceive: true }); | |
| 97 | + } else if (commonUtils.isEmptyStr(teamSelectedRowKeys) && commonUtils.isEmptyArr(currentPane.filterCondition) && commonUtils.isEmptyArr(teamFilterCondition) && commonUtils.isNotEmptyArr(teamData) && !isReceive) { | |
| 98 | + this.handleGetData('slave', slaveConfig, [], undefined, '', false, undefined); | |
| 99 | + // this.handleGetData('slaveInfo', slaveInfoConfig, [], undefined, '', false, undefined); | |
| 100 | + this.props.onSaveState({ isReceive: true, teamSelectedRowKeys: teamData[0].sId }); | |
| 101 | + } | |
| 102 | + } | |
| 103 | + | |
| 104 | + shouldComponentUpdate(nextProps) { | |
| 105 | + const { | |
| 106 | + slaveColumn, | |
| 107 | + } = nextProps; | |
| 108 | + return commonUtils.isNotEmptyArr(slaveColumn); | |
| 109 | + } | |
| 110 | + | |
| 111 | + componentDidUpdate(prevProps) { | |
| 112 | + const { | |
| 113 | + slaveSelectedRowKeys, moveEnabled, tableBtnEnabled, | |
| 114 | + } = prevProps; | |
| 115 | + if (commonUtils.isNotEmptyArr(slaveSelectedRowKeys) && !moveEnabled && tableBtnEnabled) { | |
| 116 | + this.props.onSaveState({ moveEnabled: true }); | |
| 117 | + } else if ((commonUtils.isEmptyArr(slaveSelectedRowKeys) && moveEnabled && tableBtnEnabled) || (moveEnabled && !tableBtnEnabled)) { | |
| 118 | + this.props.onSaveState({ moveEnabled: false }); | |
| 119 | + } | |
| 120 | + } | |
| 121 | + | |
| 122 | + onChangeMachine = async () => { | |
| 123 | + const { sModelsId, masterData, slaveInfoSelectedRowKeys } = this.props; | |
| 124 | + const url = `${commonConfig.server_host}business/getProData?sModelsId=${sModelsId}`; | |
| 125 | + const value = { | |
| 126 | + sProName: 'Sp_Manufacture_ProductionPlanInfo_ChangeMachine', | |
| 127 | + paramsMap: { | |
| 128 | + bSplit: masterData.bSplit, | |
| 129 | + iSplitNum: masterData.iSplitNum, | |
| 130 | + sMachineId: masterData.sMachineId, | |
| 131 | + sTeamId: masterData.sTeamId, | |
| 132 | + tStartDate: masterData.tStartDate, | |
| 133 | + sProInParam: JSON.stringify({ params: { key: 'slaveInfo', value: { sId: slaveInfoSelectedRowKeys } } }), | |
| 134 | + }, | |
| 135 | + }; | |
| 136 | + const dataReturn = (await commonServices.postValueService(this.props.app.token, value, url)).data; | |
| 137 | + if (dataReturn.code === 1) { | |
| 138 | + /* 数据查询成功 */ | |
| 139 | + this.handleRefresh(); | |
| 140 | + this.props.onSaveState({ isChangeMachine: false, masterData: { ...masterData, sMachineId: '', sTeamId: '' } }); | |
| 141 | + } else { /* 失败 */ | |
| 142 | + this.props.getServiceError(dataReturn); | |
| 143 | + } | |
| 144 | + } | |
| 145 | + | |
| 146 | + /** 获取表数据 */ | |
| 147 | + handleGetData = async (sName, slaveConfig, slaveFilterCondition, page, slaveOrderBy, clearSelectData, sGroupByListNew, nextProps, isWait) => { | |
| 148 | + const { app } = commonUtils.isEmpty(nextProps) ? this.props : nextProps; | |
| 149 | + const sGroupByList = sGroupByListNew !== undefined ? commonUtils.isEmptyArr(sGroupByListNew) ? null : sGroupByListNew : this.props.sGroupByList; | |
| 150 | + const conditonValues = app.currentPane.conditonValues; | |
| 151 | + const filterCondition = app.currentPane.filterCondition; | |
| 152 | + let bFilter = []; | |
| 153 | + if (!commonUtils.isEmptyArr(slaveFilterCondition)) { | |
| 154 | + slaveFilterCondition[0].bFilterName = slaveFilterCondition[0].bFilterName.replace('_pro', ''); | |
| 155 | + bFilter.push(...slaveFilterCondition); | |
| 156 | + } | |
| 157 | + if (!commonUtils.isEmptyArr(filterCondition)) { | |
| 158 | + bFilter.push(...filterCondition); | |
| 159 | + } | |
| 160 | + const addState = {}; | |
| 161 | + const pageNum = commonUtils.isEmpty(page) ? 1 : page; | |
| 162 | + addState.pageNum = pageNum; | |
| 163 | + addState.pageSize = ''; // commonConfig.pageSize; | |
| 164 | + if (sName === 'team' && commonUtils.isNotEmptyArr(filterCondition)) { | |
| 165 | + bFilter = []; | |
| 166 | + const addFilter = {}; | |
| 167 | + addFilter.bFilterName = `${filterCondition[0].bFilterName}_pro`; | |
| 168 | + addFilter.bFilterCondition = '='; | |
| 169 | + addFilter.bFilterValue = filterCondition[0].bFilterValue; | |
| 170 | + bFilter.push(addFilter); | |
| 171 | + } | |
| 172 | + const returnData = await this.props.handleGetDataSet({ | |
| 173 | + name: sName, | |
| 174 | + configData: slaveConfig, | |
| 175 | + condition: { | |
| 176 | + ...addState, bFilter, sFilterOrderBy: slaveOrderBy, sSqlCondition: conditonValues, sGroupList: sGroupByList, | |
| 177 | + }, | |
| 178 | + flag: true, | |
| 179 | + clearSelectData, | |
| 180 | + isWait, | |
| 181 | + }); | |
| 182 | + this.props.onSaveState({ Loading: false }); | |
| 183 | + if (isWait) { | |
| 184 | + return { ...returnData }; | |
| 185 | + } | |
| 186 | + }; | |
| 187 | + | |
| 188 | + // 搜索 查询 | |
| 189 | + handleGetSearchData = (config, filterCondition) => { | |
| 190 | + const { | |
| 191 | + teamConfig, sGroupByList, teamSelectedRowKeys, | |
| 192 | + } = this.props; | |
| 193 | + const iIndex = filterCondition.findIndex(item => item.bFilterName === 'sTeamId' && item.bFilterCondition === '=' && item.bFilterValue === teamSelectedRowKeys[0]); | |
| 194 | + const filter = []; | |
| 195 | + filterCondition.forEach((itme, i) => { | |
| 196 | + if (iIndex !== i) { filter.push(itme); } | |
| 197 | + }); | |
| 198 | + this.handleGetData('team', teamConfig, filter, undefined, '', false, sGroupByList); | |
| 199 | + }; | |
| 200 | + | |
| 201 | + handleGetSlaveData = (config, filterCondition) => { | |
| 202 | + const { | |
| 203 | + slaveConfig, slaveInfoConfig, teamData, teamSelectedRowKeys, | |
| 204 | + } = this.props; | |
| 205 | + const iIndex = filterCondition.findIndex(item => item.bFilterName === 'sTeamId' && item.bFilterCondition === '=' && item.bFilterValue === teamSelectedRowKeys[0]); | |
| 206 | + const filter = []; | |
| 207 | + filterCondition.forEach((itme, i) => { | |
| 208 | + if (iIndex !== i) { filter.push(itme); } | |
| 209 | + }); | |
| 210 | + | |
| 211 | + const addFilter = {}; | |
| 212 | + addFilter.bFilterName = 'sTeamId'; | |
| 213 | + addFilter.bFilterCondition = '='; | |
| 214 | + addFilter.bFilterValue = teamData[0].sId; | |
| 215 | + filter.push(addFilter); | |
| 216 | + | |
| 217 | + this.handleGetData('slave', slaveConfig, filter, undefined, undefined); | |
| 218 | + // this.handleGetData('slaveInfo', slaveInfoConfig, filter, undefined, undefined); | |
| 219 | + }; | |
| 220 | + | |
| 221 | + /** 主表控件是否全部显示 */ | |
| 222 | + handleToggle = () => { | |
| 223 | + const { expand } = this.props; | |
| 224 | + this.props.onSaveState({ expand: !expand }); | |
| 225 | + }; | |
| 226 | + | |
| 227 | + /** 表单回带 */ | |
| 228 | + handleForm = (form) => { | |
| 229 | + this.form = form; | |
| 230 | + }; | |
| 231 | + | |
| 232 | + /** toolbar保存 */ | |
| 233 | + handleSaveData = async (params) => { | |
| 234 | + const { | |
| 235 | + token, sModelsId, | |
| 236 | + } = this.props; | |
| 237 | + const returnData = await commonBusiness.saveData({ token, value: params, sModelsId }); | |
| 238 | + if (commonUtils.isNotEmptyObject(returnData)) { | |
| 239 | + this.handleRefresh(); | |
| 240 | + if (this.props.app.currentPane.refresh !== undefined) { | |
| 241 | + this.props.app.currentPane.refresh(); | |
| 242 | + } | |
| 243 | + return true; | |
| 244 | + } else { | |
| 245 | + return false; | |
| 246 | + } | |
| 247 | + }; | |
| 248 | + | |
| 249 | + /** 保存校验 */ | |
| 250 | + handleValidateSave = () => { | |
| 251 | + this.form.validateFields((err) => { | |
| 252 | + /* 验证通过与不通过走不同的流程 */ | |
| 253 | + if (err) { /* 验证失败 */ | |
| 254 | + /* 直接渲染显示错误提示 */ | |
| 255 | + for (const key of Object.keys(err)) { | |
| 256 | + message.error(err[key].errors[0].message); | |
| 257 | + } | |
| 258 | + } else { /* 验证成功 */ | |
| 259 | + const { | |
| 260 | + slaveConfig, slaveData, slaveDelData, app, productionPlanConfig, productionPlanDelData, tableBtnEnabled, charGanttData, bGantt, | |
| 261 | + slaveInfoData, slaveInfoDelData, | |
| 262 | + } = this.props; | |
| 263 | + const data = []; | |
| 264 | + if (commonUtils.isEmptyArr(slaveData)) { | |
| 265 | + message.error(commonFunc.showMessage(app.commonConst, 'slaveNotNull')); // 从表不能为空! | |
| 266 | + return; | |
| 267 | + } else { | |
| 268 | + /* 如果是甘特图视图,则进入甘特图视图保存逻辑 */ | |
| 269 | + if (bGantt && commonUtils.isNotEmptyObject(charGanttData)) { | |
| 270 | + const data = []; | |
| 271 | + const addState = {} | |
| 272 | + const charGanttDataFormate = []; | |
| 273 | + charGanttData.data.forEach((val) => { | |
| 274 | + val.start_date = moment(val.start_date).format('YYYY-MM-DD H:m'); | |
| 275 | + val.end_date = moment(val.end_date).format('YYYY-MM-DD H:m'); | |
| 276 | + charGanttDataFormate.push(val); | |
| 277 | + }) | |
| 278 | + addState.name = 'slave'; | |
| 279 | + addState.sTable = 'MftProductionPlanSlave'; | |
| 280 | + addState.column = charGanttDataFormate; | |
| 281 | + data.push(addState); | |
| 282 | + this.handleSaveData({ data, sClientType: '1' }); | |
| 283 | + return; | |
| 284 | + } | |
| 285 | + const productionPlanData = []; | |
| 286 | + const slaveFilter = slaveData.filter(item => item.sDivRowNew); | |
| 287 | + if (commonUtils.isNotEmptyArr(slaveFilter)) { | |
| 288 | + slaveFilter.forEach((item, i) => { | |
| 289 | + const index = slaveData.findIndex(itemS => itemS.sSlaveId === item.sSlaveId); | |
| 290 | + if (index <= slaveData.length) { | |
| 291 | + // slaveData[index].sDivRowNew = ''; | |
| 292 | + slaveData[index + 1].sDivRow = item.sDivRowNew; | |
| 293 | + slaveData[index + 1].sDivRowNew = ''; | |
| 294 | + } | |
| 295 | + }); | |
| 296 | + } | |
| 297 | + for (const item of slaveData) { | |
| 298 | + const { | |
| 299 | + sSlaveId, handleType, iOrder, tStartDate, sMemo, dAdjustHour, sDivRowNew, sDivRow, | |
| 300 | + } = item; | |
| 301 | + if (commonUtils.isEmptyObject(sDivRowNew)) { | |
| 302 | + const sIds = sSlaveId.split('-'); | |
| 303 | + sIds.forEach((newItem) => { | |
| 304 | + const addState = {}; | |
| 305 | + addState.sId = newItem; | |
| 306 | + if (commonUtils.isEmpty(iOrder)) { | |
| 307 | + message.error('序号必填!'); | |
| 308 | + return; | |
| 309 | + } | |
| 310 | + if (commonUtils.isEmpty(tStartDate)) { | |
| 311 | + message.error('时间必填!'); | |
| 312 | + return; | |
| 313 | + } | |
| 314 | + addState.iOrder = iOrder; | |
| 315 | + /* 20210406 zhuzong要求排程保存时候 必传iOrder,tStartDate,sMemo,dAdjustHour 四个参数 */ | |
| 316 | + addState.tStartDate = tStartDate; | |
| 317 | + // if (commonUtils.isNotEmptyObject(sMemo)) { | |
| 318 | + // addState.sMemo = sMemo; | |
| 319 | + // } | |
| 320 | + // if (dAdjustHour !== undefined) { | |
| 321 | + // addState.dAdjustHour = dAdjustHour; | |
| 322 | + // } | |
| 323 | + addState.sMemo = sMemo; | |
| 324 | + addState.dAdjustHour = dAdjustHour; | |
| 325 | + addState.handleType = handleType; | |
| 326 | + if (sDivRow) { | |
| 327 | + addState.sDivRow = sDivRow; | |
| 328 | + } else { | |
| 329 | + addState.sDivRow = ''; | |
| 330 | + } | |
| 331 | + productionPlanData.push(addState); | |
| 332 | + }); | |
| 333 | + } | |
| 334 | + } | |
| 335 | + data.push(commonBusiness.mergeData('productionPlan', productionPlanConfig.sTbName, productionPlanData, productionPlanDelData)); | |
| 336 | + data.push(commonBusiness.mergeData('slaveInfo', productionPlanConfig.sTbName, slaveInfoData, slaveInfoDelData)); | |
| 337 | + } | |
| 338 | + if (!commonBusiness.validateTable(slaveConfig, slaveData)) { | |
| 339 | + return; | |
| 340 | + } | |
| 341 | + // data.push(commonBusiness.mergeData('slave', 'MftProductionPlanSlave', slaveData, slaveDelData)); | |
| 342 | + this.handleSaveData({ data, sClientType: '1' }); | |
| 343 | + } | |
| 344 | + }); | |
| 345 | + }; | |
| 346 | + | |
| 347 | + /* 数据删除成功跳转到新路由即pane */ | |
| 348 | + handleDelDataSuccess = (props) => { | |
| 349 | + const { app } = props; | |
| 350 | + let { panes, currentPane } = app; | |
| 351 | + /* 删除单据后退出当前路由后,标签panes变化后的集合 */ | |
| 352 | + panes = panes.filter(pane => pane.key !== currentPane.key); | |
| 353 | + /* 跳转到panes集合的最后一个路由,因为panes集合一定含有主页路由所以panes的集合大于等于1 */ | |
| 354 | + currentPane = panes[panes.length - 1]; | |
| 355 | + this.props.onRemovePane(panes, currentPane); | |
| 356 | + }; | |
| 357 | + | |
| 358 | + /** 表格数据更改 */ | |
| 359 | + // name 不写完整的state名称作用为了要用到total // (name, changeValue, sId, dropDownData) | |
| 360 | + handleTableChange = async (name, sFieldName, changeValue, sId, dropDownData) => { | |
| 361 | + const { sModelsId } = this.props; | |
| 362 | + this.props.onDataChange(name, sFieldName, changeValue, sId, dropDownData, false); | |
| 363 | + if (name === 'slave') { | |
| 364 | + commonUtils.setStoreDropDownData(sModelsId, 'master', 'sTeamId', []); | |
| 365 | + if (sFieldName === 'iOrder') { | |
| 366 | + /* 修改汇总表数据后,slaveInfo表iOrder同步更改 */ | |
| 367 | + const { slaveInfoData, slaveData } = this.props; | |
| 368 | + const iIndex = slaveData.findIndex(item => item.sId === sId); | |
| 369 | + if (iIndex > -1) { | |
| 370 | + const tableDataRow = slaveData[iIndex]; | |
| 371 | + let childrenData = []; | |
| 372 | + childrenData = tableDataRow.childrenData; | |
| 373 | + if (commonUtils.isNotEmptyArr(childrenData)) { | |
| 374 | + childrenData.forEach((child) => { | |
| 375 | + const index = slaveInfoData.findIndex(item => item.sId === child.sId); | |
| 376 | + const addState = {}; | |
| 377 | + addState.handleType = 'update'; | |
| 378 | + addState.iOrder = tableDataRow.iOrder; | |
| 379 | + if (index > -1) { | |
| 380 | + slaveInfoData[index] = { ...slaveInfoData[index], ...addState } | |
| 381 | + } | |
| 382 | + }); | |
| 383 | + this.props.onSaveState({ slaveData, slaveInfoData }); | |
| 384 | + } | |
| 385 | + } | |
| 386 | + } | |
| 387 | + } | |
| 388 | + }; | |
| 389 | + // 打印 | |
| 390 | + handleBtnPrint = (sActiveId, checked) => { | |
| 391 | + const { | |
| 392 | + app, sModelsId, slaveConfig, slaveSelectedRowKeys, slaveFilterCondition, reportData, | |
| 393 | + } = this.props; | |
| 394 | + const { token } = app; | |
| 395 | + let slaveFilterConditionNew = slaveFilterCondition === undefined ? [] : [...slaveFilterCondition]; | |
| 396 | + | |
| 397 | + let sids = ''; | |
| 398 | + slaveSelectedRowKeys.forEach((item, i) => { | |
| 399 | + if (i === slaveSelectedRowKeys.length - 1) { | |
| 400 | + sids = `${sids}${item}`; | |
| 401 | + } else { | |
| 402 | + sids = `${sids}${item},`; | |
| 403 | + } | |
| 404 | + }); | |
| 405 | + if (sids !== '') { | |
| 406 | + slaveFilterConditionNew = []; | |
| 407 | + const sidsNew = commonUtils.isNotEmptyObject(sids) ? sids.replace(/-/g, ',') : ''; | |
| 408 | + const addFilter = {}; | |
| 409 | + addFilter.bFilterName = 'sId'; | |
| 410 | + addFilter.bFilterCondition = 'in'; | |
| 411 | + addFilter.bFilterValue = sidsNew; | |
| 412 | + slaveFilterConditionNew.push(addFilter); | |
| 413 | + } | |
| 414 | + | |
| 415 | + const queryFilter = {}; | |
| 416 | + queryFilter[slaveConfig.sId] = { bFilter: slaveFilterConditionNew }; | |
| 417 | + | |
| 418 | + const queryFilterJson = encodeURIComponent(JSON.stringify(queryFilter)); | |
| 419 | + /* 拿到打印报表名称 */ | |
| 420 | + let printReportName = 'report'; | |
| 421 | + if (commonUtils.isNotEmptyArr(reportData)) { | |
| 422 | + const iIndex = reportData.findIndex(item => item.sId === sActiveId); | |
| 423 | + if (iIndex > -1) { | |
| 424 | + printReportName = reportData[iIndex].sReportName; | |
| 425 | + } | |
| 426 | + } | |
| 427 | + const urlPrint = `${commonConfig.file_host}printReport/printPdf/${sActiveId}/${printReportName}.pdf?${checked ? 'fileType=.xlsx&' : ''}queryFilter=${queryFilterJson}&sModelsId=${sModelsId}&sMaintableId=${slaveConfig.sId}&token=${encodeURIComponent(token)}`; | |
| 428 | + window.open(urlPrint); | |
| 429 | + }; | |
| 430 | + /* 导出Excel */ | |
| 431 | + handleOut = () => { | |
| 432 | + const { | |
| 433 | + slaveConfig, sFilterOrderBy, slaveSelectedRowKeys, slaveFilterCondition, sGroupByList, | |
| 434 | + } = this.props; | |
| 435 | + | |
| 436 | + const newfilterCondition = slaveFilterCondition === undefined ? [] : slaveFilterCondition; | |
| 437 | + | |
| 438 | + let sids = ''; | |
| 439 | + if (commonUtils.isNotEmptyArr(slaveSelectedRowKeys)) { | |
| 440 | + slaveSelectedRowKeys.forEach((item, i) => { | |
| 441 | + if (i === slaveSelectedRowKeys.length - 1) { | |
| 442 | + sids = `${sids}${item}`; | |
| 443 | + } else { | |
| 444 | + sids = `${sids}${item},`; | |
| 445 | + } | |
| 446 | + }); | |
| 447 | + const addFilter = {}; | |
| 448 | + addFilter.bFilterName = 'sId'; | |
| 449 | + addFilter.bFilterCondition = 'in'; | |
| 450 | + addFilter.bFilterValue = sids; | |
| 451 | + newfilterCondition.push(addFilter); | |
| 452 | + } | |
| 453 | + | |
| 454 | + let url = `${commonConfig.server_host}excel/export/${slaveConfig.sId}?sModelsId=${slaveConfig.sParentId}&token=${this.props.app.token}`; | |
| 455 | + if (commonUtils.isNotEmptyArr(newfilterCondition)) { | |
| 456 | + url = `${url}&bFilter=${encodeURIComponent(JSON.stringify(newfilterCondition))}`; | |
| 457 | + } | |
| 458 | + if (sFilterOrderBy !== undefined && sFilterOrderBy !== '' && Object.keys(sFilterOrderBy).length > 0) { | |
| 459 | + url = `${url}&sFilterOrderBy=${encodeURIComponent(JSON.stringify(sFilterOrderBy))}`; | |
| 460 | + } | |
| 461 | + if (commonUtils.isNotEmptyArr(sGroupByList)) { | |
| 462 | + url = `${url}&sGroupList=${encodeURIComponent(JSON.stringify(sGroupByList))}`; | |
| 463 | + } | |
| 464 | + window.open(url); | |
| 465 | + }; | |
| 466 | + handleConfirmDataChange = (value) => { | |
| 467 | + const { | |
| 468 | + masterData, | |
| 469 | + } = this.props; | |
| 470 | + masterData.dOutsideQty = value; | |
| 471 | + | |
| 472 | + this.props.onSaveState({ masterData }); | |
| 473 | + }; | |
| 474 | + // 按钮操作 | |
| 475 | + handleButtonClick = (name) => { | |
| 476 | + if (name === 'BtnRefresh') { | |
| 477 | + this.handleRefresh(); | |
| 478 | + } else if (name === 'BtnOut') { | |
| 479 | + this.handleOut(); | |
| 480 | + } else if (name === 'BtnDesignFunction') { | |
| 481 | + this.handleDesignFunction(); | |
| 482 | + } | |
| 483 | + }; | |
| 484 | + handleDesignFunction = () => { | |
| 485 | + this.props.onSaveState({ visibleStatement: true }); | |
| 486 | + }; | |
| 487 | + handleUpdated = async (params) => { | |
| 488 | + const { app, sModelsId } = this.props; | |
| 489 | + const { token } = app; | |
| 490 | + | |
| 491 | + const url = `${commonConfig.server_host}productionPlan/getProcessOperation?sModelsId=${sModelsId}`; | |
| 492 | + const { data } = await commonServices.postValueService(token, params, url); | |
| 493 | + | |
| 494 | + if (data.code === 1) { | |
| 495 | + /* 数据查询成功 */ | |
| 496 | + return true; | |
| 497 | + } else { /* 失败 */ | |
| 498 | + this.props.getServiceError(data); | |
| 499 | + return false; | |
| 500 | + } | |
| 501 | + }; | |
| 502 | + | |
| 503 | + handleMasterChange = (name, sFieldName, changeValue, sId, dropDownData, isWait) => { | |
| 504 | + const { sModelsId } = this.props; | |
| 505 | + if (sFieldName === 'sMachineId') { | |
| 506 | + commonUtils.setStoreDropDownData(sModelsId, 'master', 'sTeamId', []); | |
| 507 | + } | |
| 508 | + if (isWait) { | |
| 509 | + return this.props.onChange(name, sFieldName, changeValue, sId, dropDownData, isWait); | |
| 510 | + } else { | |
| 511 | + this.props.onChange(name, sFieldName, changeValue, sId, dropDownData, isWait); | |
| 512 | + } | |
| 513 | + }; | |
| 514 | + | |
| 515 | + handleCalculate = () => { | |
| 516 | + const { sModelsId, slaveData } = this.props; | |
| 517 | + const materialsInfo = []; | |
| 518 | + const slaveDataNew = []; | |
| 519 | + slaveData.forEach(async (item) => { | |
| 520 | + const index = materialsInfo.findIndex(obj => obj.sMaterialsId === item.sMaterialsId); | |
| 521 | + item.bMaterialAdequate = 0; | |
| 522 | + if (commonUtils.isNotEmptyStr(item.sMaterialsId) && index === -1) { | |
| 523 | + const url = `${commonConfig.server_host}eleMaterialsStock/getEleMaterialsStoreCurrQty?sModelsId=${sModelsId}`; | |
| 524 | + const body = { | |
| 525 | + sMaterialsId: item.sMaterialsId, /* 查询条件 */ | |
| 526 | + }; | |
| 527 | + const dataReturn = (await commonServices.postValueService(this.props.app.token, body, url)).data; | |
| 528 | + if (dataReturn.code === 1) { | |
| 529 | + if (commonUtils.isNotEmptyArr(dataReturn.dataset.rows[0])) { | |
| 530 | + const materials = dataReturn.dataset.rows[0]; | |
| 531 | + if (commonUtils.isNotEmptyNumber(materials.dAuxiliaryQty) && commonUtils.isNotEmptyNumber(item.dPrintQty) && materials.dAuxiliaryQty > item.dPrintQty) { | |
| 532 | + item.bMaterialAdequate = 1; | |
| 533 | + materialsInfo[index].dAuxiliaryQty = materialsInfo[index].sMaterialsId - item.dPrintQty; | |
| 534 | + } | |
| 535 | + } | |
| 536 | + } | |
| 537 | + } else if (commonUtils.isNotEmptyStr(item.sMaterialsId) && index === -1) { | |
| 538 | + if (commonUtils.isNotEmptyNumber(materialsInfo[index].sMaterialsId) && commonUtils.isNotEmptyNumber(item.dPrintQty) && materialsInfo[index].sMaterialsId > item.dPrintQty) { | |
| 539 | + item.bMaterialAdequate = 1; | |
| 540 | + materialsInfo[index].dAuxiliaryQty = materialsInfo[index].sMaterialsId - item.dPrintQty; | |
| 541 | + } | |
| 542 | + } | |
| 543 | + slaveDataNew.push(item); | |
| 544 | + }); | |
| 545 | + this.props.onSaveState({ slaveData: slaveDataNew }); | |
| 546 | + }; | |
| 547 | + | |
| 548 | + handleTitleChange = async (name, slavePagination, filters, sorter, extra) => { | |
| 549 | + // const tableBtnEnabled = commonUtils.isNotEmptyObject(filters) && commonUtils.isEmptyObject(sorter); | |
| 550 | + const addState = {}; // 搜索时不能使用排序保存,否则数据会出不来。 | |
| 551 | + if (commonUtils.isNotEmptyObject(sorter)) { | |
| 552 | + const slaveData = []; | |
| 553 | + extra.currentDataSource.forEach((item, iIndex) => { | |
| 554 | + const slaveTableRow = { ...item, iOrder: iIndex + 1, handleType: 'update' }; | |
| 555 | + slaveData.push(slaveTableRow); | |
| 556 | + }); | |
| 557 | + if (slaveData.length === this.props.slaveData.length) { | |
| 558 | + addState.slaveData = slaveData; | |
| 559 | + } | |
| 560 | + } | |
| 561 | + this.props.onSaveState({ | |
| 562 | + ...addState, slavePagination, pageLoading: false, | |
| 563 | + }); | |
| 564 | + // this.props.onSaveState({ | |
| 565 | + // tableBtnEnabled: false, pageLoading: true, | |
| 566 | + // }); | |
| 567 | + // const { [`${name}Config`]: tableConfig, [`${name}FilterCondition`]: tableFilterCondition, sGroupByList } = this.props; | |
| 568 | + // const sort = sorter.order === 'ascend' ? 'asc' : 'desc'; | |
| 569 | + // const slaveOrderBy = Object.keys(sorter).length > 0 ? { [sorter.columnKey]: sort } : ''; // 后端未支持空对象, 先用空表示 | |
| 570 | + // const addState = await this.handleGetData(name, tableConfig, tableFilterCondition, undefined, slaveOrderBy, '', sGroupByList, this.props, true); | |
| 571 | + // if (addState === undefined) return; | |
| 572 | + // const { [`${name}Data`]: tempData } = addState; | |
| 573 | + // if (commonUtils.isNotEmptyArr(addState[`${name}Data`])) { | |
| 574 | + // addState[`${name}Data`].forEach((item, iIndex) => { | |
| 575 | + // addState[`${name}Data`][iIndex] = { ...item, iOrder: iIndex + 1, handleType: 'update' }; | |
| 576 | + // }); | |
| 577 | + // } | |
| 578 | + // this.props.onSaveState({ ...addState }); | |
| 579 | + // setTimeout(() => { | |
| 580 | + // /* 刷新commList页面数据 */ | |
| 581 | + // this.props.onSaveState({ pageLoading: false }); | |
| 582 | + // }, 3600); | |
| 583 | + }; | |
| 584 | + /** 处理选择行发生改变 */ | |
| 585 | + handleCallBack = (child) => { | |
| 586 | + const { | |
| 587 | + slaveConfig, slaveInfoConfig, teamFilterCondition, bGantt, | |
| 588 | + } = this.props; | |
| 589 | + const filter = []; | |
| 590 | + let addFilter = {}; | |
| 591 | + if (child.sType === '1') { | |
| 592 | + addFilter.bFilterName = 'sProcessId'; | |
| 593 | + addFilter.bFilterCondition = '='; | |
| 594 | + addFilter.bFilterValue = child.sMachineId; | |
| 595 | + filter.push(addFilter); | |
| 596 | + addFilter = {}; | |
| 597 | + addFilter.bFilterName = 'sState'; | |
| 598 | + addFilter.bFilterCondition = '='; | |
| 599 | + addFilter.bFilterValue = '0'; | |
| 600 | + filter.push(addFilter); | |
| 601 | + } else if (child.sType === '2') { | |
| 602 | + addFilter.bFilterName = 'sMachineId'; | |
| 603 | + addFilter.bFilterCondition = '='; | |
| 604 | + addFilter.bFilterValue = child.sMachineId; | |
| 605 | + filter.push(addFilter); | |
| 606 | + addFilter = {}; | |
| 607 | + addFilter.bFilterName = 'date_format(tStartDate, \'%y-%m-%d\')'; | |
| 608 | + addFilter.bFilterCondition = '='; | |
| 609 | + addFilter.bFilterValue = child.tStartDate; | |
| 610 | + filter.push(addFilter); | |
| 611 | + } | |
| 612 | + if (commonUtils.isNotEmptyArr(teamFilterCondition)) { | |
| 613 | + filter.push(...teamFilterCondition); | |
| 614 | + } | |
| 615 | + this.handleGetData('slave', slaveConfig, filter, undefined, '', false, undefined); | |
| 616 | + /* 甘特图视图下 点击卡片刷新 */ | |
| 617 | + if (bGantt) { | |
| 618 | + this.handleGanttChar('', filter) | |
| 619 | + } | |
| 620 | + // this.handleGetData('slaveInfo', slaveInfoConfig, filter, undefined, '', false, undefined); | |
| 621 | + const rowKeys = []; | |
| 622 | + rowKeys.push(child.sId); | |
| 623 | + this.props.onSaveState({ | |
| 624 | + teamSelectedRowKeys: rowKeys, | |
| 625 | + }); | |
| 626 | + }; | |
| 627 | + | |
| 628 | + /* 获取甘特图数据 */ | |
| 629 | + handleGanttChar = async (ganttChart, slaveFilterCondition) => { | |
| 630 | + const { | |
| 631 | + token, sModelsId, formRoute, | |
| 632 | + } = this.props; | |
| 633 | + const char = {}; | |
| 634 | + if (commonUtils.isNotEmptyObject(ganttChart)) { | |
| 635 | + char.sProcedureName = ganttChart.sProcedureName; | |
| 636 | + char.paramsMap = ganttChart.paramsMap; | |
| 637 | + } else { | |
| 638 | + char.sProcedureName = 'Sp_Process_CommonGtChar'; | |
| 639 | + char.paramsMap = { | |
| 640 | + }; | |
| 641 | + } | |
| 642 | + let charGanttData = {}; | |
| 643 | + const value = { | |
| 644 | + sProName: char.sProcedureName, | |
| 645 | + paramsMap: char.prodParamsMap, | |
| 646 | + bFilter: slaveFilterCondition, | |
| 647 | + }; | |
| 648 | + const url = `${commonConfig.server_host}business/getProData?sModelsId=${sModelsId}&sName=${formRoute}`; | |
| 649 | + const { data: returnData } = await commonServices.postValueService(token, value, url); | |
| 650 | + if (returnData.code === 1) { | |
| 651 | + const { dataset } = returnData; | |
| 652 | + if (commonUtils.isNotEmptyObject(dataset)) { | |
| 653 | + const outData = returnData.dataset.rows[0].dataSet.outData[0]; | |
| 654 | + if (outData.sCode === -1) { | |
| 655 | + message.error(outData.sReturn); | |
| 656 | + } else { | |
| 657 | + charGanttData = commonUtils.isEmpty(outData.sReturn) ? [] : JSON.parse(outData.sReturn); | |
| 658 | + this.props.onSaveState({ charGanttData }); | |
| 659 | + } | |
| 660 | + } | |
| 661 | + } else { | |
| 662 | + message.error(returnData.msg); | |
| 663 | + } | |
| 664 | + }; | |
| 665 | + | |
| 666 | + /* 获取稽查模型数据 */ | |
| 667 | + handleCheckModel = async (chart, slaveFilterCondition, other) => { | |
| 668 | + const { app, sModelsId } = this.props; | |
| 669 | + const obj = {}; | |
| 670 | + if (commonUtils.isNotEmptyObject(obj)) { | |
| 671 | + obj.sProcedureName = chart.sProcedureName; | |
| 672 | + obj.paramsMap = chart.paramsMap; | |
| 673 | + } else { | |
| 674 | + obj.sProcedureName = 'Sp_Manufacture_GetAPSstate'; | |
| 675 | + obj.paramsMap = { | |
| 676 | + }; | |
| 677 | + } | |
| 678 | + const value = { | |
| 679 | + sProName: obj.sProcedureName, | |
| 680 | + bFilter: slaveFilterCondition, | |
| 681 | + }; | |
| 682 | + if (other?.iFlag === 1) { | |
| 683 | + value.iFlag = 1; | |
| 684 | + } | |
| 685 | + | |
| 686 | + const url = `${commonConfig.server_host}procedureCall/doGenericProcedureCall?sModelsId=${sModelsId}`; | |
| 687 | + const returnData = (await commonServices.postValueService(app.token, value, url)).data; | |
| 688 | + if (returnData.code === 1) { | |
| 689 | + message.success(returnData.msg); | |
| 690 | + this.handleButtonClick('BtnRefresh'); | |
| 691 | + this.props.onSaveState({ bCheckModel: true }) | |
| 692 | + } else { | |
| 693 | + this.props.getServiceError({ ...returnData, fn: () => this.handleCheckModel(chart, slaveFilterCondition, { iFlag: 1 }) }); | |
| 694 | + } | |
| 695 | + }; | |
| 696 | + | |
| 697 | + /* 重算时间调用接口 执行存储过程 */ | |
| 698 | + handleChangeTimer = async (other) => { | |
| 699 | + const { | |
| 700 | + app, sModelsId, slaveFilterCondition, slaveSelectedRowKeys, slaveData, masterData, | |
| 701 | + } = this.props; | |
| 702 | + let value = {}; | |
| 703 | + if (commonUtils.isNotEmptyArr(slaveSelectedRowKeys)) { | |
| 704 | + this.props.onSaveState({ bChangeTimerEnable: false }) | |
| 705 | + const slaveSelectedData = slaveData.filter(item => slaveSelectedRowKeys.includes(item.sSlaveId)); | |
| 706 | + const minSelectedData = this.arrayMin(slaveSelectedData); /* iOrder最小的 */ | |
| 707 | + if (commonUtils.isNotEmptyArr(minSelectedData) && commonUtils.isNotEmptyObject(minSelectedData.sMachineId)) { | |
| 708 | + value = { | |
| 709 | + sProName: 'Sp_Manufacture_SetTime', | |
| 710 | + sProInParam: JSON.stringify({ | |
| 711 | + sMachineId: minSelectedData.sMachineId, | |
| 712 | + iOrder: minSelectedData.iOrder, | |
| 713 | + tCStartTime: masterData.tStartDate, | |
| 714 | + }), | |
| 715 | + }; | |
| 716 | + if (other?.iFlag === 1) { | |
| 717 | + value.iFlag = 1; | |
| 718 | + } | |
| 719 | + const url = `${commonConfig.server_host}procedureCall/doGenericProcedureCall?sModelsId=${sModelsId}`; | |
| 720 | + const returnData = (await commonServices.postValueService(app.token, value, url)).data; | |
| 721 | + if (returnData.code === 1) { | |
| 722 | + message.success(returnData.msg); | |
| 723 | + this.handleButtonClick('BtnRefresh'); | |
| 724 | + this.props.onSaveState({ changeTimerVisible: false, bChangeTimerEnable: true }) | |
| 725 | + } else { | |
| 726 | + this.props.getServiceError({ ...returnData, fn: () => this.handleChangeTimer({ iFlag: 1 }) }); | |
| 727 | + } | |
| 728 | + } else { | |
| 729 | + message.error('不能重置时间!'); | |
| 730 | + } | |
| 731 | + } else { | |
| 732 | + message.error('请选择一行数据!'); | |
| 733 | + } | |
| 734 | + }; | |
| 735 | + | |
| 736 | + // 查找数组中最小值 | |
| 737 | + arrayMin = (arrs) => { | |
| 738 | + let min = arrs[0]; | |
| 739 | + for (let i = 1, ilen = arrs.length; i < ilen; i += 1) { | |
| 740 | + if (arrs[i].iOrder < min.iOrder) { | |
| 741 | + min = arrs[i]; | |
| 742 | + } | |
| 743 | + } | |
| 744 | + return min; | |
| 745 | + } | |
| 746 | + | |
| 747 | + /* | |
| 748 | + handleRefresh = async () => { | |
| 749 | + const { | |
| 750 | + clearArray, slaveConfig, slaveInfoConfig, teamFilterCondition, slaveFilterCondition, | |
| 751 | + } = this.props; | |
| 752 | + this.props.onSaveState({ | |
| 753 | + clearArray: [], searchText: '', teamSelectedData: [], slaveSelectedRowKeys: [], slaveSelectedData: [], slaveInfoSelectedRowKeys: [], slaveInfoSelectedData: [], tableBtnEnabled: true, | |
| 754 | + }); // teamSelectedRowKeys: [], | |
| 755 | + this.handleGetData('slave', slaveConfig, slaveFilterCondition, undefined, '', false, undefined); | |
| 756 | + this.handleGetData('slaveInfo', slaveInfoConfig, slaveFilterCondition, undefined, '', false, undefined); | |
| 757 | + | |
| 758 | + if (!commonUtils.isEmpty(clearArray)) { | |
| 759 | + for (const item of clearArray) { | |
| 760 | + const { confirm, clearFilters } = item; | |
| 761 | + confirm(); | |
| 762 | + clearFilters(); | |
| 763 | + } | |
| 764 | + } | |
| 765 | + this.props.onSaveState({ | |
| 766 | + loading: false, | |
| 767 | + }); | |
| 768 | + } | |
| 769 | +*/ | |
| 770 | + handleRefresh = async () => { | |
| 771 | + const { | |
| 772 | + clearArray, teamConfig, teamFilterCondition, slaveFilterCondition, teamSelectedRowKeys, | |
| 773 | + } = this.props; | |
| 774 | + let { expKeys } = this.props; | |
| 775 | + const addState = await this.handleGetData('team', teamConfig, teamFilterCondition, undefined, '', false, undefined, this.props, true); | |
| 776 | + if (addState === undefined) return; | |
| 777 | + this.props.onSaveState({ | |
| 778 | + ...addState, | |
| 779 | + clearArray: [], | |
| 780 | + searchText: '', | |
| 781 | + teamSelectedData: [], | |
| 782 | + slaveSelectedRowKeys: [], | |
| 783 | + slaveSelectedData: [], | |
| 784 | + slaveInfoData: [], /* 刷新后清除slaveInfoData */ | |
| 785 | + slaveInfoSelectedRowKeys: [], | |
| 786 | + slaveInfoSelectedData: [], | |
| 787 | + tableBtnEnabled: true, | |
| 788 | + machineEnabled: false, | |
| 789 | + sortedInfo: {}, | |
| 790 | + }); | |
| 791 | + const { teamData } = addState; | |
| 792 | + const newIndex = teamData.findIndex(item => item.sId === teamSelectedRowKeys[0]); | |
| 793 | + if (newIndex === -1) { | |
| 794 | + this.handleCallBack({ ...teamData[0] }); | |
| 795 | + } else { | |
| 796 | + this.handleCallBack({ ...teamData[newIndex] }); | |
| 797 | + } | |
| 798 | + | |
| 799 | + if (!commonUtils.isEmpty(clearArray)) { | |
| 800 | + for (const item of clearArray) { | |
| 801 | + const { confirm, clearFilters } = item; | |
| 802 | + confirm(); | |
| 803 | + clearFilters(); | |
| 804 | + } | |
| 805 | + } | |
| 806 | + /* 刷新后关闭所有expKeys */ | |
| 807 | + expKeys = []; | |
| 808 | + /* 刷新后清除slaveInfoData */ | |
| 809 | + this.props.onSaveState({ | |
| 810 | + loading: false, expKeys, | |
| 811 | + }); | |
| 812 | + } | |
| 813 | + | |
| 814 | + handleResetTableSearch = () => { | |
| 815 | + this.props.onSaveState({ clearArray: [] }); | |
| 816 | + this.handleRefresh(); | |
| 817 | + } | |
| 818 | + // 进行存储过程按钮存储过程参数解析拼接 根据存储过程按钮参数配置进行解析,配置是json格式 {"sproName":"cal_sss","inMap":"master.sSlaveId,slave.sId"} | |
| 819 | + handleBtnEent = (btnConfig, btnName, sValue) => { | |
| 820 | + const { masterData } = this.props; | |
| 821 | + const sButtonParam = btnConfig.sButtonParam; | |
| 822 | + const btn = JSON.parse(sButtonParam); | |
| 823 | + const sProName = btn.sproName; | |
| 824 | + const inParams = []; | |
| 825 | + const inMap = btn.inMap; | |
| 826 | + const inlist = inMap.split(','); | |
| 827 | + | |
| 828 | + const masterArr = []; | |
| 829 | + const slaveArr = []; | |
| 830 | + const slaveInfoArr = []; | |
| 831 | + const controlArr = []; | |
| 832 | + const materialsArr = []; | |
| 833 | + const processArr = []; | |
| 834 | + | |
| 835 | + if (inlist.length > 0) { | |
| 836 | + inlist.forEach((item) => { | |
| 837 | + const itemArr = item.split('.'); | |
| 838 | + if (itemArr.length > 0) { | |
| 839 | + const sname = itemArr[0]; | |
| 840 | + const stype = itemArr[1]; | |
| 841 | + if (commonUtils.isNotEmptyStr(sname) && sname === 'master') { | |
| 842 | + masterArr.push(stype); | |
| 843 | + } | |
| 844 | + if (commonUtils.isNotEmptyStr(sname) && sname === 'slave') { | |
| 845 | + slaveArr.push(stype); | |
| 846 | + } | |
| 847 | + if (commonUtils.isNotEmptyStr(sname) && sname === 'slaveInfo') { | |
| 848 | + slaveInfoArr.push(stype); | |
| 849 | + } | |
| 850 | + if (commonUtils.isNotEmptyStr(sname) && sname === 'control') { | |
| 851 | + controlArr.push(stype); | |
| 852 | + } | |
| 853 | + if (commonUtils.isNotEmptyStr(sname) && sname === 'materials') { | |
| 854 | + materialsArr.push(stype); | |
| 855 | + } | |
| 856 | + if (commonUtils.isNotEmptyStr(sname) && sname === 'process') { | |
| 857 | + processArr.push(stype); | |
| 858 | + } | |
| 859 | + } | |
| 860 | + }); | |
| 861 | + | |
| 862 | + if (commonUtils.isNotEmptyArr(masterArr) && commonUtils.isNotEmptyObject(masterData)) { | |
| 863 | + const addState = {}; | |
| 864 | + addState.key = 'master'; | |
| 865 | + const val = []; | |
| 866 | + const currVal = {}; | |
| 867 | + masterArr.forEach((filed) => { | |
| 868 | + currVal[`${filed}`] = masterData[`${filed}`]; | |
| 869 | + }); | |
| 870 | + val.push(currVal); | |
| 871 | + addState.value = val; | |
| 872 | + inParams.push({ ...addState }); | |
| 873 | + } | |
| 874 | + if (commonUtils.isNotEmptyArr(slaveArr)) { | |
| 875 | + const addState = this.handleProParams('slave', slaveArr); | |
| 876 | + if (commonUtils.isNotEmptyObject(addState)) { | |
| 877 | + inParams.push({ ...addState }); | |
| 878 | + } | |
| 879 | + } | |
| 880 | + if (commonUtils.isNotEmptyArr(slaveInfoArr)) { | |
| 881 | + const addState = this.handleProParams('slaveInfo', slaveInfoArr); | |
| 882 | + if (commonUtils.isNotEmptyObject(addState)) { | |
| 883 | + inParams.push({ ...addState }); | |
| 884 | + } | |
| 885 | + } | |
| 886 | + if (commonUtils.isNotEmptyArr(controlArr)) { | |
| 887 | + const addState = this.handleProParams('control', controlArr); | |
| 888 | + if (commonUtils.isNotEmptyObject(addState)) { | |
| 889 | + inParams.push({ ...addState }); | |
| 890 | + } | |
| 891 | + } | |
| 892 | + if (commonUtils.isNotEmptyArr(materialsArr)) { | |
| 893 | + const addState = this.handleProParams('materials', materialsArr); | |
| 894 | + if (commonUtils.isNotEmptyObject(addState)) { | |
| 895 | + inParams.push({ ...addState }); | |
| 896 | + } | |
| 897 | + } | |
| 898 | + if (commonUtils.isNotEmptyArr(processArr)) { | |
| 899 | + const addState = this.handleProParams('process', processArr); | |
| 900 | + if (commonUtils.isNotEmptyObject(addState)) { | |
| 901 | + inParams.push({ ...addState }); | |
| 902 | + } | |
| 903 | + } | |
| 904 | + } | |
| 905 | + | |
| 906 | + this.handleProcedureCall(btnConfig, sProName, JSON.stringify({ params: inParams, changeValue: sValue })); | |
| 907 | + }; | |
| 908 | + // 根据配置解析拼接具体参数 | |
| 909 | + handleProParams = (sKey, arr) => { | |
| 910 | + const { [`${sKey}Data`]: tableData, [`${sKey}SelectedRowKeys`]: selectedRowKeys } = this.props; | |
| 911 | + const keyData = tableData.filter(item => selectedRowKeys.includes(item.sId) || selectedRowKeys.includes(item.sSlaveId)); | |
| 912 | + if (commonUtils.isNotEmptyArr(keyData)) { | |
| 913 | + const addState = {}; | |
| 914 | + addState.key = sKey; | |
| 915 | + const val = []; | |
| 916 | + keyData.forEach((currData) => { | |
| 917 | + const currVal = {}; | |
| 918 | + arr.forEach((filed) => { | |
| 919 | + currVal[`${filed}`] = currData[`${filed}`]; | |
| 920 | + }); | |
| 921 | + val.push(currVal); | |
| 922 | + }); | |
| 923 | + addState.value = val; | |
| 924 | + return addState; | |
| 925 | + } else { | |
| 926 | + return undefined; | |
| 927 | + } | |
| 928 | + }; | |
| 929 | + // 存储过程按钮调用存储过程 | |
| 930 | + handleProcedureCall = async (btnConfig, proName, proInParam, other) => { | |
| 931 | + const { app, sModelsId, sCurrMemoProps } = this.props; | |
| 932 | + const value = { sProName: proName, sProInParam: proInParam }; | |
| 933 | + if (other?.iFlag === 1) { | |
| 934 | + value.iFlag = 1; | |
| 935 | + } | |
| 936 | + const url = `${commonConfig.server_host}procedureCall/doGenericProcedureCall?sModelsId=${sModelsId}`; | |
| 937 | + const returnData = (await commonServices.postValueService(app.token, value, url)).data; | |
| 938 | + /** | |
| 939 | + * 修改日期:2021-03-26 | |
| 940 | + * 修改人:吕杰 | |
| 941 | + * 区域:以下 2 行 | |
| 942 | + * BUG: | |
| 943 | + * 说明:执行完接口调用后关闭弹窗 | |
| 944 | + * 原代码: | |
| 945 | + */ | |
| 946 | + sCurrMemoProps.bVisibleMemo = false; | |
| 947 | + this.props.onSaveState({ loading: false, sCurrMemoProps }); | |
| 948 | + if (returnData.code === 1) { | |
| 949 | + message.success(returnData.msg); | |
| 950 | + this.handleButtonClick('BtnRefresh'); | |
| 951 | + } else { | |
| 952 | + this.props.getServiceError({ ...returnData, fn: () => this.handleProcedureCall(btnConfig, proName, proInParam, { iFlag: 1 }) }); | |
| 953 | + } | |
| 954 | + } | |
| 955 | + /* 点击展开图标时,调用接口获取嵌套字表数据 */ | |
| 956 | + handleOnExpand = async (expanded, record) => { | |
| 957 | + const { sModelsId, expKeys } = this.props; | |
| 958 | + let { slaveInfoData } = this.props; | |
| 959 | + const { sSlaveId } = record; | |
| 960 | + /* 添加移除展开的sId */ | |
| 961 | + let newExp = commonUtils.isNotEmptyArr(expKeys) ? expKeys : []; | |
| 962 | + if (expanded) { | |
| 963 | + if (commonUtils.isNotEmptyObject(sSlaveId)) { | |
| 964 | + newExp.push(record.sSlaveId); | |
| 965 | + } | |
| 966 | + } else { | |
| 967 | + newExp = newExp.filter(item => item !== record.sSlaveId); | |
| 968 | + } | |
| 969 | + this.props.onSaveState({ expKeys: newExp }); | |
| 970 | + let childrenData = []; | |
| 971 | + if (commonUtils.isNotEmptyArr(slaveInfoData) && commonUtils.isNotEmptyObject(sSlaveId)) { | |
| 972 | + childrenData = slaveInfoData.filter(item => sSlaveId.split('-').includes(item.sId)); | |
| 973 | + } | |
| 974 | + if (expanded && commonUtils.isEmptyArr(childrenData)) { | |
| 975 | + if (commonUtils.isNotEmptyObject(sSlaveId)) { | |
| 976 | + const planLoadingSate = {}; | |
| 977 | + planLoadingSate.sId = sSlaveId; | |
| 978 | + planLoadingSate.planLoading = true; | |
| 979 | + this.props.onSaveState({ planLoadingSate }); | |
| 980 | + const { token } = this.props; | |
| 981 | + const url = `${commonConfig.server_host}workOrderPlan/getProductionPlanInfo?sModelsId=${sModelsId}`; | |
| 982 | + const value = { sSlaveId }; | |
| 983 | + const dataReturn = (await commonServices.postValueService(token, value, url)).data; | |
| 984 | + if (dataReturn.code === 1) { | |
| 985 | + const returnData = dataReturn.dataset.rows; | |
| 986 | + if (commonUtils.isNotEmptyArr(returnData)) { | |
| 987 | + childrenData = returnData; | |
| 988 | + if (commonUtils.isEmptyArr(slaveInfoData)) { | |
| 989 | + slaveInfoData = []; | |
| 990 | + } | |
| 991 | + childrenData.forEach((child) => { | |
| 992 | + // const iIndex = slaveInfoData.findIndex(item => item.sId === child.sId); | |
| 993 | + // if (iIndex === -1) { | |
| 994 | + // slaveInfoData.push(child); | |
| 995 | + // } | |
| 996 | + slaveInfoData.push(child); | |
| 997 | + }); | |
| 998 | + } | |
| 999 | + planLoadingSate.planLoading = false; | |
| 1000 | + this.props.onSaveState({ | |
| 1001 | + planLoadingSate, slaveInfoData, | |
| 1002 | + }); | |
| 1003 | + } else { | |
| 1004 | + this.props.getServiceError(dataReturn); | |
| 1005 | + planLoadingSate.planLoading = false; | |
| 1006 | + this.props.onSaveState({ planLoadingSate }); | |
| 1007 | + } | |
| 1008 | + } | |
| 1009 | + } | |
| 1010 | + } | |
| 1011 | + handlePartNameClick =(sName, showConfig, record) => { | |
| 1012 | + if (commonUtils.isNotEmptyObject(sName) && commonUtils.isNotEmptyObject(showConfig) && commonUtils.isNotEmptyObject(record)) { | |
| 1013 | + this.props.onSaveState({ workScheduleConfig: showConfig, workScheduleRecord: record, workScheduleVisible: true }); | |
| 1014 | + } | |
| 1015 | + } | |
| 1016 | + handleCloseModel = (modelVisible) => { | |
| 1017 | + this.props.onSaveState({ [modelVisible]: false }); | |
| 1018 | + }; | |
| 1019 | + render() { | |
| 1020 | + const { masterData } = this.props; | |
| 1021 | + const imgSrc = commonBusiness.handleAddIcon(masterData); | |
| 1022 | + return ( | |
| 1023 | + <ChildComponent | |
| 1024 | + {...this.props} | |
| 1025 | + {...this.state} | |
| 1026 | + onToggle={this.handleToggle} | |
| 1027 | + onSaveData={this.handleSaveData} | |
| 1028 | + onGetData={this.handleGetSearchData} | |
| 1029 | + onGetDataInfo={this.handleGetSlaveData} | |
| 1030 | + onSubmit={this.handleValidateSave} | |
| 1031 | + onReturnForm={this.handleForm} | |
| 1032 | + onSearchUpDown={this.handleSearchUpDown} | |
| 1033 | + onCancel={this.handleCancel} | |
| 1034 | + onDataChange={this.handleTableChange} | |
| 1035 | + onBtnPrint={this.handleBtnPrint} | |
| 1036 | + onChange={this.handleMasterChange} | |
| 1037 | + onButtonClick={this.handleButtonClick} | |
| 1038 | + imgSrc={imgSrc} | |
| 1039 | + style={{ height: '100%' }} | |
| 1040 | + onTabsCallback={this.handleCallBack} | |
| 1041 | + onChangeMachine={this.onChangeMachine} | |
| 1042 | + onResetTableSearch={this.handleResetTableSearch} | |
| 1043 | + onTitleChange={this.handleTitleChange} | |
| 1044 | + onBtnEent={this.handleBtnEent} | |
| 1045 | + onExpand={this.handleOnExpand} | |
| 1046 | + onGanttChar={this.handleGanttChar} | |
| 1047 | + onCheckModel={this.handleCheckModel} | |
| 1048 | + onPartNameClick={this.handlePartNameClick} | |
| 1049 | + onCloseModel={this.handleCloseModel} | |
| 1050 | + onChangeTimerPro={this.handleChangeTimer} | |
| 1051 | + /> | |
| 1052 | + ); | |
| 1053 | + } | |
| 1054 | + }; | |
| 1055 | +}; | ... | ... |
src/components/Common/CommonProductionPlanOutsideEvent.js
0 → 100644
| 1 | +/* eslint-disable prefer-destructuring,no-await-in-loop,semi,no-unused-vars */ | |
| 2 | +/** | |
| 3 | + * Created by mar105 on 2019-01-08. | |
| 4 | + */ | |
| 5 | +import React, { Component } from 'react'; | |
| 6 | +import { message } from 'antd'; // Form, Modal, InputNumber | |
| 7 | +// import reactComponentDebounce from 'react-component-debounce'; | |
| 8 | +import * as commonUtils from '../../utils/utils'; /* 通用方法 */ | |
| 9 | +import * as commonBusiness from './commonBusiness'; /* 单据业务功能 */ | |
| 10 | +import * as commonServices from '../../services/services'; /* 服务类 */ | |
| 11 | +import commonConfig from '../../utils/config'; | |
| 12 | +import * as commonFunc from './commonFunc'; /* 通用单据方法 */ | |
| 13 | + | |
| 14 | +/* | |
| 15 | +const { confirm } = Modal; | |
| 16 | +const FormItem = Form.Item; | |
| 17 | +const InputNumberA = reactComponentDebounce(800)(InputNumber); | |
| 18 | +*/ | |
| 19 | + | |
| 20 | +export default (ChildComponent) => { | |
| 21 | + return class extends Component { | |
| 22 | + constructor(props) { | |
| 23 | + super(props); | |
| 24 | + this.form = {}; /* 表单对象 */ | |
| 25 | + } | |
| 26 | + | |
| 27 | + componentWillReceiveProps(nextProps) { | |
| 28 | + const { | |
| 29 | + app, formData, currentId, masterData, searchSolution, sGroupByList, teamSelectedRowKeys, teamData, | |
| 30 | + } = nextProps; | |
| 31 | + const { teamFilterCondition } = this.props; | |
| 32 | + let { | |
| 33 | + isReceive, teamConfig, slaveConfig, slaveInfoConfig, | |
| 34 | + } = nextProps; | |
| 35 | + const { currentPane } = app; | |
| 36 | + const { otherCondition } = currentPane; | |
| 37 | + if (formData.length > 0 && commonUtils.isEmptyObject(teamConfig) && commonUtils.isEmptyArr(searchSolution)) { | |
| 38 | + isReceive = false; | |
| 39 | + const sId = currentId !== undefined ? currentId : ''; | |
| 40 | + const masterConfig = formData.filter(item => !item.bGrd && item.sTbName === 'eleteam')[0]; | |
| 41 | + | |
| 42 | + teamConfig = formData.filter(item => item.sTbName === 'Sp_Manufacture_ProductionPlanInfo_WorkCenter2')[0]; | |
| 43 | + slaveConfig = formData.filter(item => item.sTbName === 'Viw_OpsOutsideProcess')[0]; | |
| 44 | + slaveInfoConfig = formData.filter(item => item.sTbName === 'Sp_Manufacture_ProductionPlanInfo' && item.sGrd === 'slaveInfo')[0]; | |
| 45 | + const productionPlanConfig = formData.filter(item => item.sTbName === 'opsoutsideprocessslave')[0]; | |
| 46 | + | |
| 47 | + const teamColumn = commonFunc.getHeaderConfig(teamConfig); | |
| 48 | + const slaveColumn = commonFunc.getHeaderConfig(slaveConfig); | |
| 49 | + let slaveInfoColumn = []; | |
| 50 | + if (commonUtils.isNotEmptyObject(slaveInfoConfig)) { | |
| 51 | + slaveInfoColumn = commonFunc.getHeaderConfig(slaveInfoConfig) | |
| 52 | + } | |
| 53 | + const productionPlanColumn = commonFunc.getHeaderConfig(productionPlanConfig); | |
| 54 | + | |
| 55 | + let currfilterCondition = []; | |
| 56 | + if (commonUtils.isNotEmptyObject(masterData) && !commonUtils.isEmpty(masterData.sSearchSolutionId) && commonUtils.isNotEmptyArr(searchSolution)) { | |
| 57 | + const iIndex = searchSolution.findIndex(item => item.sId === masterData.sSearchSolutionId); | |
| 58 | + if (iIndex > -1 && !commonUtils.isEmpty(searchSolution[iIndex].sCondition)) { | |
| 59 | + currfilterCondition = JSON.parse(searchSolution[iIndex].sCondition); | |
| 60 | + } | |
| 61 | + } | |
| 62 | + this.handleGetData('team', teamConfig, currfilterCondition, undefined, '', false, sGroupByList); | |
| 63 | + // this.handleGetData('slave', slaveConfig, [], undefined, '', false, undefined); | |
| 64 | + // this.handleGetData('slaveInfo', slaveInfoConfig, [], undefined, '', false, undefined); | |
| 65 | + | |
| 66 | + this.props.onSaveState({ | |
| 67 | + masterConfig, | |
| 68 | + teamConfig, | |
| 69 | + teamColumn, | |
| 70 | + slaveConfig, | |
| 71 | + slaveColumn, | |
| 72 | + slaveInfoConfig, | |
| 73 | + slaveInfoColumn, | |
| 74 | + productionPlanConfig, | |
| 75 | + productionPlanColumn, | |
| 76 | + sId, | |
| 77 | + pageLoading: false, | |
| 78 | + enabled: true, | |
| 79 | + dragPermission: false, | |
| 80 | + dragAndDropSwitch: false, | |
| 81 | + isReceive, | |
| 82 | + masterData: {}, | |
| 83 | + tableBtnEnabled: true, | |
| 84 | + // stateOption: objValue, | |
| 85 | + }); | |
| 86 | + } else if (commonUtils.isEmptyStr(teamSelectedRowKeys) && commonUtils.isEmptyArr(teamFilterCondition) && commonUtils.isNotEmptyArr(teamData) && !isReceive) { | |
| 87 | + const iIndex = otherCondition.findIndex(item => item.bFilterName === 'sMachineId'); | |
| 88 | + if (iIndex !== -1) { | |
| 89 | + const newIndex = teamData.findIndex(item => item.sMachineId === otherCondition[iIndex].bFilterValue); | |
| 90 | + if (newIndex === -1) { | |
| 91 | + this.handleCallBack({ ...teamData[0] }); | |
| 92 | + } else { | |
| 93 | + this.handleCallBack({ ...teamData[newIndex] }); | |
| 94 | + } | |
| 95 | + } else { | |
| 96 | + this.handleCallBack({ ...teamData[0] }); | |
| 97 | + } | |
| 98 | + this.props.onSaveState({ isReceive: true }); | |
| 99 | + } else if (commonUtils.isEmptyStr(teamSelectedRowKeys) && commonUtils.isEmptyArr(currentPane.filterCondition) && commonUtils.isEmptyArr(teamFilterCondition) && commonUtils.isNotEmptyArr(teamData) && !isReceive) { | |
| 100 | + this.handleGetData('slave', slaveConfig, [], undefined, '', false, undefined); | |
| 101 | + // this.handleGetData('slaveInfo', slaveInfoConfig, [], undefined, '', false, undefined); | |
| 102 | + this.props.onSaveState({ isReceive: true, teamSelectedRowKeys: teamData[0].sId }); | |
| 103 | + } | |
| 104 | + } | |
| 105 | + | |
| 106 | + shouldComponentUpdate(nextProps) { | |
| 107 | + const { | |
| 108 | + slaveColumn, | |
| 109 | + } = nextProps; | |
| 110 | + return commonUtils.isNotEmptyArr(slaveColumn); | |
| 111 | + } | |
| 112 | + | |
| 113 | + componentDidUpdate(prevProps) { | |
| 114 | + const { | |
| 115 | + slaveSelectedRowKeys, moveEnabled, tableBtnEnabled, | |
| 116 | + } = prevProps; | |
| 117 | + if (commonUtils.isNotEmptyArr(slaveSelectedRowKeys) && !moveEnabled && tableBtnEnabled) { | |
| 118 | + this.props.onSaveState({ moveEnabled: true }); | |
| 119 | + } else if ((commonUtils.isEmptyArr(slaveSelectedRowKeys) && moveEnabled && tableBtnEnabled) || (moveEnabled && !tableBtnEnabled)) { | |
| 120 | + this.props.onSaveState({ moveEnabled: false }); | |
| 121 | + } | |
| 122 | + } | |
| 123 | + | |
| 124 | + onChangeMachine = async () => { | |
| 125 | + const { sModelsId, masterData, slaveInfoSelectedRowKeys } = this.props; | |
| 126 | + const url = `${commonConfig.server_host}business/getProData?sModelsId=${sModelsId}`; | |
| 127 | + const value = { | |
| 128 | + sProName: 'Sp_Manufacture_ProductionPlanInfo_ChangeMachine', | |
| 129 | + paramsMap: { | |
| 130 | + bSplit: masterData.bSplit, | |
| 131 | + iSplitNum: masterData.iSplitNum, | |
| 132 | + sMachineId: masterData.sMachineId, | |
| 133 | + sTeamId: masterData.sTeamId, | |
| 134 | + tStartDate: masterData.tStartDate, | |
| 135 | + sProInParam: JSON.stringify({ params: { key: 'slaveInfo', value: { sId: slaveInfoSelectedRowKeys } } }), | |
| 136 | + }, | |
| 137 | + }; | |
| 138 | + const dataReturn = (await commonServices.postValueService(this.props.app.token, value, url)).data; | |
| 139 | + if (dataReturn.code === 1) { | |
| 140 | + /* 数据查询成功 */ | |
| 141 | + this.handleRefresh(); | |
| 142 | + this.props.onSaveState({ isChangeMachine: false, masterData: { ...masterData, sMachineId: '', sTeamId: '' } }); | |
| 143 | + } else { /* 失败 */ | |
| 144 | + this.props.getServiceError(dataReturn); | |
| 145 | + } | |
| 146 | + } | |
| 147 | + | |
| 148 | + /** 获取表数据 */ | |
| 149 | + handleGetData = async (sName, slaveConfig, slaveFilterCondition, page, slaveOrderBy, clearSelectData, sGroupByListNew, nextProps, isWait) => { | |
| 150 | + const { app } = commonUtils.isEmpty(nextProps) ? this.props : nextProps; | |
| 151 | + const sGroupByList = sGroupByListNew !== undefined ? commonUtils.isEmptyArr(sGroupByListNew) ? null : sGroupByListNew : this.props.sGroupByList; | |
| 152 | + const conditonValues = app.currentPane.conditonValues; | |
| 153 | + const filterCondition = app.currentPane.filterCondition; | |
| 154 | + let bFilter = []; | |
| 155 | + if (!commonUtils.isEmptyArr(slaveFilterCondition)) { | |
| 156 | + slaveFilterCondition[0].bFilterName = slaveFilterCondition[0].bFilterName.replace('_pro', ''); | |
| 157 | + bFilter.push(...slaveFilterCondition); | |
| 158 | + } | |
| 159 | + if (!commonUtils.isEmptyArr(filterCondition)) { | |
| 160 | + bFilter.push(...filterCondition); | |
| 161 | + } | |
| 162 | + const addState = {}; | |
| 163 | + const pageNum = commonUtils.isEmpty(page) ? 1 : page; | |
| 164 | + addState.pageNum = pageNum; | |
| 165 | + addState.pageSize = ''; // commonConfig.pageSize; | |
| 166 | + if (sName === 'team' && commonUtils.isNotEmptyArr(filterCondition)) { | |
| 167 | + bFilter = []; | |
| 168 | + const addFilter = {}; | |
| 169 | + addFilter.bFilterName = `${filterCondition[0].bFilterName}_pro`; | |
| 170 | + addFilter.bFilterCondition = '='; | |
| 171 | + addFilter.bFilterValue = filterCondition[0].bFilterValue; | |
| 172 | + bFilter.push(addFilter); | |
| 173 | + } | |
| 174 | + const returnData = await this.props.handleGetDataSet({ | |
| 175 | + name: sName, | |
| 176 | + configData: slaveConfig, | |
| 177 | + condition: { | |
| 178 | + ...addState, bFilter, sFilterOrderBy: slaveOrderBy, sSqlCondition: conditonValues, sGroupList: sGroupByList, | |
| 179 | + }, | |
| 180 | + flag: true, | |
| 181 | + clearSelectData, | |
| 182 | + isWait, | |
| 183 | + }); | |
| 184 | + this.props.onSaveState({ Loading: false }); | |
| 185 | + if (isWait) { | |
| 186 | + return { ...returnData }; | |
| 187 | + } | |
| 188 | + }; | |
| 189 | + | |
| 190 | + // 搜索 查询 | |
| 191 | + handleGetSearchData = (config, filterCondition) => { | |
| 192 | + const { | |
| 193 | + teamConfig, sGroupByList, teamSelectedRowKeys, | |
| 194 | + } = this.props; | |
| 195 | + const iIndex = filterCondition.findIndex(item => item.bFilterName === 'sTeamId' && item.bFilterCondition === '=' && item.bFilterValue === teamSelectedRowKeys[0]); | |
| 196 | + const filter = []; | |
| 197 | + filterCondition.forEach((itme, i) => { | |
| 198 | + if (iIndex !== i) { filter.push(itme); } | |
| 199 | + }); | |
| 200 | + this.handleGetData('team', teamConfig, filter, undefined, '', false, sGroupByList); | |
| 201 | + }; | |
| 202 | + | |
| 203 | + handleGetSlaveData = (config, filterCondition) => { | |
| 204 | + const { | |
| 205 | + slaveConfig, slaveInfoConfig, teamData, teamSelectedRowKeys, | |
| 206 | + } = this.props; | |
| 207 | + const iIndex = filterCondition.findIndex(item => item.bFilterName === 'sTeamId' && item.bFilterCondition === '=' && item.bFilterValue === teamSelectedRowKeys[0]); | |
| 208 | + const filter = []; | |
| 209 | + filterCondition.forEach((itme, i) => { | |
| 210 | + if (iIndex !== i) { filter.push(itme); } | |
| 211 | + }); | |
| 212 | + | |
| 213 | + const addFilter = {}; | |
| 214 | + addFilter.bFilterName = 'sTeamId'; | |
| 215 | + addFilter.bFilterCondition = '='; | |
| 216 | + addFilter.bFilterValue = teamData[0].sId; | |
| 217 | + filter.push(addFilter); | |
| 218 | + | |
| 219 | + this.handleGetData('slave', slaveConfig, filter, undefined, undefined); | |
| 220 | + // this.handleGetData('slaveInfo', slaveInfoConfig, filter, undefined, undefined); | |
| 221 | + }; | |
| 222 | + | |
| 223 | + /** 主表控件是否全部显示 */ | |
| 224 | + handleToggle = () => { | |
| 225 | + const { expand } = this.props; | |
| 226 | + this.props.onSaveState({ expand: !expand }); | |
| 227 | + }; | |
| 228 | + | |
| 229 | + /** 表单回带 */ | |
| 230 | + handleForm = (form) => { | |
| 231 | + this.form = form; | |
| 232 | + }; | |
| 233 | + | |
| 234 | + /** toolbar保存 */ | |
| 235 | + handleSaveData = async (params) => { | |
| 236 | + const { | |
| 237 | + token, sModelsId, | |
| 238 | + } = this.props; | |
| 239 | + const returnData = await commonBusiness.saveData({ token, value: params, sModelsId }); | |
| 240 | + if (commonUtils.isNotEmptyObject(returnData)) { | |
| 241 | + this.handleRefresh(); | |
| 242 | + if (this.props.app.currentPane.refresh !== undefined) { | |
| 243 | + this.props.app.currentPane.refresh(); | |
| 244 | + } | |
| 245 | + return true; | |
| 246 | + } else { | |
| 247 | + return false; | |
| 248 | + } | |
| 249 | + }; | |
| 250 | + | |
| 251 | + /** 保存校验 */ | |
| 252 | + handleValidateSave = () => { | |
| 253 | + this.form.validateFields((err) => { | |
| 254 | + /* 验证通过与不通过走不同的流程 */ | |
| 255 | + if (err) { /* 验证失败 */ | |
| 256 | + /* 直接渲染显示错误提示 */ | |
| 257 | + for (const key of Object.keys(err)) { | |
| 258 | + message.error(err[key].errors[0].message); | |
| 259 | + } | |
| 260 | + } else { /* 验证成功 */ | |
| 261 | + const { | |
| 262 | + slaveConfig, slaveData, slaveDelData, app, productionPlanConfig, productionPlanDelData, tableBtnEnabled, charGanttData, bGantt, | |
| 263 | + } = this.props; | |
| 264 | + const data = []; | |
| 265 | + if (commonUtils.isEmptyArr(slaveData)) { | |
| 266 | + message.error(commonFunc.showMessage(app.commonConst, 'slaveNotNull')); // 从表不能为空! | |
| 267 | + return; | |
| 268 | + } else { | |
| 269 | + /* 如果是甘特图视图,则进入甘特图视图保存逻辑 */ | |
| 270 | + if (bGantt && commonUtils.isNotEmptyObject(charGanttData)) { | |
| 271 | + const data = []; | |
| 272 | + const addState = {} | |
| 273 | + addState.name = 'slave'; | |
| 274 | + addState.sTable = 'MftProductionPlanSlave'; | |
| 275 | + addState.column = charGanttData.data; | |
| 276 | + data.push(addState); | |
| 277 | + this.handleSaveData({ data, sClientType: '1' }); | |
| 278 | + return; | |
| 279 | + } | |
| 280 | + const productionPlanData = []; | |
| 281 | + for (const item of slaveData) { | |
| 282 | + const { | |
| 283 | + sSlaveId, handleType, iOrder, tStartDate, sMemo, dAdjustHour, | |
| 284 | + } = item; | |
| 285 | + const sIds = sSlaveId.split('-'); | |
| 286 | + sIds.forEach((newItem) => { | |
| 287 | + const addState = {}; | |
| 288 | + addState.sId = newItem; | |
| 289 | + if (commonUtils.isEmpty(iOrder)) { | |
| 290 | + message.error('序号必填!'); | |
| 291 | + return; | |
| 292 | + } | |
| 293 | + if (commonUtils.isEmpty(tStartDate)) { | |
| 294 | + message.error('时间必填!'); | |
| 295 | + return; | |
| 296 | + } | |
| 297 | + addState.iOrder = iOrder; | |
| 298 | + /* 20210406 zhuzong要求排程保存时候 必传iOrder,tStartDate,sMemo,dAdjustHour 四个参数 */ | |
| 299 | + addState.tStartDate = tStartDate; | |
| 300 | + if (commonUtils.isNotEmptyObject(sMemo)) { | |
| 301 | + addState.sMemo = sMemo; | |
| 302 | + } | |
| 303 | + if (dAdjustHour !== undefined) { | |
| 304 | + addState.dAdjustHour = dAdjustHour; | |
| 305 | + } | |
| 306 | + addState.handleType = handleType; | |
| 307 | + productionPlanData.push(addState); | |
| 308 | + }); | |
| 309 | + } | |
| 310 | + data.push(commonBusiness.mergeData('productionPlan', productionPlanConfig.sTbName, productionPlanData, productionPlanDelData)); | |
| 311 | + } | |
| 312 | + if (!commonBusiness.validateTable(slaveConfig, slaveData)) { | |
| 313 | + return; | |
| 314 | + } | |
| 315 | + // data.push(commonBusiness.mergeData('slave', 'MftProductionPlanSlave', slaveData, slaveDelData)); | |
| 316 | + this.handleSaveData({ data, sClientType: '1' }); | |
| 317 | + } | |
| 318 | + }); | |
| 319 | + }; | |
| 320 | + | |
| 321 | + /* 数据删除成功跳转到新路由即pane */ | |
| 322 | + handleDelDataSuccess = (props) => { | |
| 323 | + const { app } = props; | |
| 324 | + let { panes, currentPane } = app; | |
| 325 | + /* 删除单据后退出当前路由后,标签panes变化后的集合 */ | |
| 326 | + panes = panes.filter(pane => pane.key !== currentPane.key); | |
| 327 | + /* 跳转到panes集合的最后一个路由,因为panes集合一定含有主页路由所以panes的集合大于等于1 */ | |
| 328 | + currentPane = panes[panes.length - 1]; | |
| 329 | + this.props.onRemovePane(panes, currentPane); | |
| 330 | + }; | |
| 331 | + | |
| 332 | + /** 表格数据更改 */ | |
| 333 | + // name 不写完整的state名称作用为了要用到total // (name, changeValue, sId, dropDownData) | |
| 334 | + handleTableChange = async (name, sFieldName, changeValue, sId, dropDownData) => { | |
| 335 | + const { sModelsId } = this.props; | |
| 336 | + this.props.onDataChange(name, sFieldName, changeValue, sId, dropDownData, false); | |
| 337 | + if (name === 'slave') { | |
| 338 | + commonUtils.setStoreDropDownData(sModelsId, 'master', 'sTeamId', []); | |
| 339 | + if (sFieldName === 'iOrder') { | |
| 340 | + /* 修改汇总表数据后,slaveInfo表iOrder同步更改 */ | |
| 341 | + const { slaveInfoData, slaveData } = this.props; | |
| 342 | + const iIndex = slaveData.findIndex(item => item.sId === sId); | |
| 343 | + if (iIndex > -1) { | |
| 344 | + const tableDataRow = slaveData[iIndex]; | |
| 345 | + let childrenData = []; | |
| 346 | + childrenData = tableDataRow.childrenData; | |
| 347 | + if (commonUtils.isNotEmptyArr(childrenData)) { | |
| 348 | + childrenData.forEach((child) => { | |
| 349 | + const index = slaveInfoData.findIndex(item => item.sId === child.sId); | |
| 350 | + const addState = {}; | |
| 351 | + addState.handleType = 'update'; | |
| 352 | + addState.iOrder = tableDataRow.iOrder; | |
| 353 | + if (index > -1) { | |
| 354 | + slaveInfoData[index] = { ...slaveInfoData[index], ...addState } | |
| 355 | + } | |
| 356 | + }); | |
| 357 | + this.props.onSaveState({ slaveData, slaveInfoData }); | |
| 358 | + } | |
| 359 | + } | |
| 360 | + } | |
| 361 | + } | |
| 362 | + }; | |
| 363 | + // 打印 | |
| 364 | + handleBtnPrint = (sActiveId, checked) => { | |
| 365 | + const { | |
| 366 | + app, sModelsId, slaveConfig, slaveSelectedRowKeys, slaveFilterCondition, reportData, | |
| 367 | + } = this.props; | |
| 368 | + const { token } = app; | |
| 369 | + let slaveFilterConditionNew = slaveFilterCondition === undefined ? [] : [...slaveFilterCondition]; | |
| 370 | + | |
| 371 | + let sids = ''; | |
| 372 | + slaveSelectedRowKeys.forEach((item, i) => { | |
| 373 | + if (i === slaveSelectedRowKeys.length - 1) { | |
| 374 | + sids = `${sids}${item}`; | |
| 375 | + } else { | |
| 376 | + sids = `${sids}${item},`; | |
| 377 | + } | |
| 378 | + }); | |
| 379 | + if (sids !== '') { | |
| 380 | + slaveFilterConditionNew = []; | |
| 381 | + const sidsNew = commonUtils.isNotEmptyObject(sids) ? sids.replace(/-/g, ',') : ''; | |
| 382 | + const addFilter = {}; | |
| 383 | + addFilter.bFilterName = 'sId'; | |
| 384 | + addFilter.bFilterCondition = 'in'; | |
| 385 | + addFilter.bFilterValue = sidsNew; | |
| 386 | + slaveFilterConditionNew.push(addFilter); | |
| 387 | + } | |
| 388 | + | |
| 389 | + const queryFilter = {}; | |
| 390 | + queryFilter[slaveConfig.sId] = { bFilter: slaveFilterConditionNew }; | |
| 391 | + | |
| 392 | + const queryFilterJson = encodeURIComponent(JSON.stringify(queryFilter)); | |
| 393 | + /* 拿到打印报表名称 */ | |
| 394 | + let printReportName = 'report'; | |
| 395 | + if (commonUtils.isNotEmptyArr(reportData)) { | |
| 396 | + const iIndex = reportData.findIndex(item => item.sId === sActiveId); | |
| 397 | + if (iIndex > -1) { | |
| 398 | + printReportName = reportData[iIndex].sReportName; | |
| 399 | + } | |
| 400 | + } | |
| 401 | + const urlPrint = `${commonConfig.file_host}printReport/printPdf/${sActiveId}/${printReportName}.pdf?${checked ? 'fileType=.xlsx&' : ''}queryFilter=${queryFilterJson}&sModelsId=${sModelsId}&sMaintableId=${slaveConfig.sId}&token=${encodeURIComponent(token)}`; | |
| 402 | + window.open(urlPrint); | |
| 403 | + }; | |
| 404 | + /* 导出Excel */ | |
| 405 | + handleOut = () => { | |
| 406 | + const { | |
| 407 | + slaveConfig, sFilterOrderBy, slaveSelectedRowKeys, slaveFilterCondition, sGroupByList, | |
| 408 | + } = this.props; | |
| 409 | + | |
| 410 | + const newfilterCondition = slaveFilterCondition === undefined ? [] : slaveFilterCondition; | |
| 411 | + | |
| 412 | + let sids = ''; | |
| 413 | + slaveSelectedRowKeys.forEach((item, i) => { | |
| 414 | + if (i === slaveSelectedRowKeys.length - 1) { | |
| 415 | + sids = `${sids}${item}`; | |
| 416 | + } else { | |
| 417 | + sids = `${sids}${item},`; | |
| 418 | + } | |
| 419 | + }); | |
| 420 | + // const addFilter = {}; | |
| 421 | + // addFilter.bFilterName = 'sId'; | |
| 422 | + // addFilter.bFilterCondition = 'in'; | |
| 423 | + // addFilter.bFilterValue = sids; | |
| 424 | + // newfilterCondition.push(addFilter); | |
| 425 | + | |
| 426 | + let url = `${commonConfig.server_host}excel/export/${slaveConfig.sId}?sModelsId=${slaveConfig.sParentId}&token=${this.props.app.token}`; | |
| 427 | + if (commonUtils.isNotEmptyArr(newfilterCondition)) { | |
| 428 | + url = `${url}&bFilter=${encodeURIComponent(JSON.stringify(newfilterCondition))}`; | |
| 429 | + } | |
| 430 | + if (sFilterOrderBy !== undefined && sFilterOrderBy !== '' && Object.keys(sFilterOrderBy).length > 0) { | |
| 431 | + url = `${url}&sFilterOrderBy=${encodeURIComponent(JSON.stringify(sFilterOrderBy))}`; | |
| 432 | + } | |
| 433 | + if (commonUtils.isNotEmptyArr(sGroupByList)) { | |
| 434 | + url = `${url}&sGroupList=${encodeURIComponent(JSON.stringify(sGroupByList))}`; | |
| 435 | + } | |
| 436 | + window.open(url); | |
| 437 | + }; | |
| 438 | + handleConfirmDataChange = (value) => { | |
| 439 | + const { | |
| 440 | + masterData, | |
| 441 | + } = this.props; | |
| 442 | + masterData.dOutsideQty = value; | |
| 443 | + | |
| 444 | + this.props.onSaveState({ masterData }); | |
| 445 | + }; | |
| 446 | + // 按钮操作 | |
| 447 | + handleButtonClick = (name) => { | |
| 448 | + if (name === 'BtnRefresh') { | |
| 449 | + this.handleRefresh(); | |
| 450 | + } else if (name === 'BtnOut') { | |
| 451 | + this.handleOut(); | |
| 452 | + } else if (name === 'BtnDesignFunction') { | |
| 453 | + this.handleDesignFunction(); | |
| 454 | + } | |
| 455 | + }; | |
| 456 | + handleDesignFunction = () => { | |
| 457 | + this.props.onSaveState({ visibleStatement: true }); | |
| 458 | + }; | |
| 459 | + handleUpdated = async (params) => { | |
| 460 | + const { app, sModelsId } = this.props; | |
| 461 | + const { token } = app; | |
| 462 | + | |
| 463 | + const url = `${commonConfig.server_host}productionPlan/getProcessOperation?sModelsId=${sModelsId}`; | |
| 464 | + const { data } = await commonServices.postValueService(token, params, url); | |
| 465 | + | |
| 466 | + if (data.code === 1) { | |
| 467 | + /* 数据查询成功 */ | |
| 468 | + return true; | |
| 469 | + } else { /* 失败 */ | |
| 470 | + this.props.getServiceError(data); | |
| 471 | + return false; | |
| 472 | + } | |
| 473 | + }; | |
| 474 | + | |
| 475 | + handleMasterChange = (name, sFieldName, changeValue, sId, dropDownData, isWait) => { | |
| 476 | + const { sModelsId } = this.props; | |
| 477 | + if (sFieldName === 'sMachineId') { | |
| 478 | + commonUtils.setStoreDropDownData(sModelsId, 'master', 'sTeamId', []); | |
| 479 | + } | |
| 480 | + if (isWait) { | |
| 481 | + return this.props.onChange(name, sFieldName, changeValue, sId, dropDownData, isWait); | |
| 482 | + } else { | |
| 483 | + this.props.onChange(name, sFieldName, changeValue, sId, dropDownData, isWait); | |
| 484 | + } | |
| 485 | + }; | |
| 486 | + | |
| 487 | + handleCalculate = () => { | |
| 488 | + const { sModelsId, slaveData } = this.props; | |
| 489 | + const materialsInfo = []; | |
| 490 | + const slaveDataNew = []; | |
| 491 | + slaveData.forEach(async (item) => { | |
| 492 | + const index = materialsInfo.findIndex(obj => obj.sMaterialsId === item.sMaterialsId); | |
| 493 | + item.bMaterialAdequate = 0; | |
| 494 | + if (commonUtils.isNotEmptyStr(item.sMaterialsId) && index === -1) { | |
| 495 | + const url = `${commonConfig.server_host}eleMaterialsStock/getEleMaterialsStoreCurrQty?sModelsId=${sModelsId}`; | |
| 496 | + const body = { | |
| 497 | + sMaterialsId: item.sMaterialsId, /* 查询条件 */ | |
| 498 | + }; | |
| 499 | + const dataReturn = (await commonServices.postValueService(this.props.app.token, body, url)).data; | |
| 500 | + if (dataReturn.code === 1) { | |
| 501 | + if (commonUtils.isNotEmptyArr(dataReturn.dataset.rows[0])) { | |
| 502 | + const materials = dataReturn.dataset.rows[0]; | |
| 503 | + if (commonUtils.isNotEmptyNumber(materials.dAuxiliaryQty) && commonUtils.isNotEmptyNumber(item.dPrintQty) && materials.dAuxiliaryQty > item.dPrintQty) { | |
| 504 | + item.bMaterialAdequate = 1; | |
| 505 | + materialsInfo[index].dAuxiliaryQty = materialsInfo[index].sMaterialsId - item.dPrintQty; | |
| 506 | + } | |
| 507 | + } | |
| 508 | + } | |
| 509 | + } else if (commonUtils.isNotEmptyStr(item.sMaterialsId) && index === -1) { | |
| 510 | + if (commonUtils.isNotEmptyNumber(materialsInfo[index].sMaterialsId) && commonUtils.isNotEmptyNumber(item.dPrintQty) && materialsInfo[index].sMaterialsId > item.dPrintQty) { | |
| 511 | + item.bMaterialAdequate = 1; | |
| 512 | + materialsInfo[index].dAuxiliaryQty = materialsInfo[index].sMaterialsId - item.dPrintQty; | |
| 513 | + } | |
| 514 | + } | |
| 515 | + slaveDataNew.push(item); | |
| 516 | + }); | |
| 517 | + this.props.onSaveState({ slaveData: slaveDataNew }); | |
| 518 | + }; | |
| 519 | + | |
| 520 | + handleTitleChange = async (name, slavePagination, filters, sorter, extra) => { | |
| 521 | + // const tableBtnEnabled = commonUtils.isNotEmptyObject(filters) && commonUtils.isEmptyObject(sorter); | |
| 522 | + const addState = {}; // 搜索时不能使用排序保存,否则数据会出不来。 | |
| 523 | + if (commonUtils.isNotEmptyObject(sorter)) { | |
| 524 | + const slaveData = []; | |
| 525 | + extra.currentDataSource.forEach((item, iIndex) => { | |
| 526 | + const slaveTableRow = { ...item, iOrder: iIndex + 1, handleType: 'update' }; | |
| 527 | + slaveData.push(slaveTableRow); | |
| 528 | + }); | |
| 529 | + if (slaveData.length === this.props.slaveData.length) { | |
| 530 | + addState.slaveData = slaveData; | |
| 531 | + } | |
| 532 | + } | |
| 533 | + this.props.onSaveState({ | |
| 534 | + ...addState, slavePagination, pageLoading: false, | |
| 535 | + }); | |
| 536 | + // this.props.onSaveState({ | |
| 537 | + // tableBtnEnabled: false, pageLoading: true, | |
| 538 | + // }); | |
| 539 | + // const { [`${name}Config`]: tableConfig, [`${name}FilterCondition`]: tableFilterCondition, sGroupByList } = this.props; | |
| 540 | + // const sort = sorter.order === 'ascend' ? 'asc' : 'desc'; | |
| 541 | + // const slaveOrderBy = Object.keys(sorter).length > 0 ? { [sorter.columnKey]: sort } : ''; // 后端未支持空对象, 先用空表示 | |
| 542 | + // const addState = await this.handleGetData(name, tableConfig, tableFilterCondition, undefined, slaveOrderBy, '', sGroupByList, this.props, true); | |
| 543 | + // if (addState === undefined) return; | |
| 544 | + // const { [`${name}Data`]: tempData } = addState; | |
| 545 | + // if (commonUtils.isNotEmptyArr(addState[`${name}Data`])) { | |
| 546 | + // addState[`${name}Data`].forEach((item, iIndex) => { | |
| 547 | + // addState[`${name}Data`][iIndex] = { ...item, iOrder: iIndex + 1, handleType: 'update' }; | |
| 548 | + // }); | |
| 549 | + // } | |
| 550 | + // this.props.onSaveState({ ...addState }); | |
| 551 | + // setTimeout(() => { | |
| 552 | + // /* 刷新commList页面数据 */ | |
| 553 | + // this.props.onSaveState({ pageLoading: false }); | |
| 554 | + // }, 3600); | |
| 555 | + }; | |
| 556 | + /** 处理选择行发生改变 */ | |
| 557 | + handleCallBack = (child) => { | |
| 558 | + const { | |
| 559 | + slaveConfig, slaveInfoConfig, teamFilterCondition, bGantt, | |
| 560 | + } = this.props; | |
| 561 | + const filter = []; | |
| 562 | + const addFilter = {}; | |
| 563 | + addFilter.bFilterName = 'sWorkCenterId'; | |
| 564 | + addFilter.bFilterCondition = '='; | |
| 565 | + addFilter.bFilterValue = child.sMachineId; | |
| 566 | + filter.push(addFilter); | |
| 567 | + // if (child.sType === '1') { | |
| 568 | + // addFilter.bFilterName = 'sProcessId'; | |
| 569 | + // addFilter.bFilterCondition = '='; | |
| 570 | + // addFilter.bFilterValue = child.sMachineId; | |
| 571 | + // filter.push(addFilter); | |
| 572 | + // addFilter = {}; | |
| 573 | + // addFilter.bFilterName = 'sState'; | |
| 574 | + // addFilter.bFilterCondition = '='; | |
| 575 | + // addFilter.bFilterValue = '0'; | |
| 576 | + // filter.push(addFilter); | |
| 577 | + // } else if (child.sType === '2') { | |
| 578 | + // addFilter.bFilterName = 'sMachineId'; | |
| 579 | + // addFilter.bFilterCondition = '='; | |
| 580 | + // addFilter.bFilterValue = child.sMachineId; | |
| 581 | + // filter.push(addFilter); | |
| 582 | + // addFilter = {}; | |
| 583 | + // addFilter.bFilterName = 'date_format(tStartDate, \'%y-%m-%d\')'; | |
| 584 | + // addFilter.bFilterCondition = '='; | |
| 585 | + // addFilter.bFilterValue = child.tStartDate; | |
| 586 | + // filter.push(addFilter); | |
| 587 | + // } | |
| 588 | + if (commonUtils.isNotEmptyArr(teamFilterCondition)) { | |
| 589 | + filter.push(...teamFilterCondition); | |
| 590 | + } | |
| 591 | + this.handleGetData('slave', slaveConfig, filter, undefined, '', false, undefined); | |
| 592 | + /* 甘特图视图下 点击卡片刷新 */ | |
| 593 | + if (bGantt) { | |
| 594 | + this.handleGanttChar('', filter) | |
| 595 | + } | |
| 596 | + // this.handleGetData('slaveInfo', slaveInfoConfig, filter, undefined, '', false, undefined); | |
| 597 | + const rowKeys = []; | |
| 598 | + rowKeys.push(child.sId); | |
| 599 | + this.props.onSaveState({ | |
| 600 | + teamSelectedRowKeys: rowKeys, | |
| 601 | + }); | |
| 602 | + }; | |
| 603 | + | |
| 604 | + /* 获取甘特图数据 */ | |
| 605 | + handleGanttChar = async (ganttChart, slaveFilterCondition) => { | |
| 606 | + const { | |
| 607 | + token, sModelsId, formRoute, | |
| 608 | + } = this.props; | |
| 609 | + const char = {}; | |
| 610 | + if (commonUtils.isNotEmptyObject(ganttChart)) { | |
| 611 | + char.sProcedureName = ganttChart.sProcedureName; | |
| 612 | + char.paramsMap = ganttChart.paramsMap; | |
| 613 | + } else { | |
| 614 | + char.sProcedureName = 'Sp_Process_CommonGtChar'; | |
| 615 | + char.paramsMap = { | |
| 616 | + }; | |
| 617 | + } | |
| 618 | + let charGanttData = {}; | |
| 619 | + const value = { | |
| 620 | + sProName: char.sProcedureName, | |
| 621 | + paramsMap: char.prodParamsMap, | |
| 622 | + bFilter: slaveFilterCondition, | |
| 623 | + }; | |
| 624 | + const url = `${commonConfig.server_host}business/getProData?sModelsId=${sModelsId}&sName=${formRoute}`; | |
| 625 | + const { data: returnData } = await commonServices.postValueService(token, value, url); | |
| 626 | + if (returnData.code === 1) { | |
| 627 | + const { dataset } = returnData; | |
| 628 | + if (commonUtils.isNotEmptyObject(dataset)) { | |
| 629 | + const outData = returnData.dataset.rows[0].dataSet.outData[0]; | |
| 630 | + if (outData.sCode === -1) { | |
| 631 | + message.error(outData.sReturn); | |
| 632 | + } else { | |
| 633 | + charGanttData = commonUtils.isEmpty(outData.sReturn) ? [] : JSON.parse(outData.sReturn); | |
| 634 | + this.props.onSaveState({ charGanttData }); | |
| 635 | + } | |
| 636 | + } | |
| 637 | + } else { | |
| 638 | + message.error(returnData.msg); | |
| 639 | + } | |
| 640 | + }; | |
| 641 | + /* | |
| 642 | + handleRefresh = async () => { | |
| 643 | + const { | |
| 644 | + clearArray, slaveConfig, slaveInfoConfig, teamFilterCondition, slaveFilterCondition, | |
| 645 | + } = this.props; | |
| 646 | + this.props.onSaveState({ | |
| 647 | + clearArray: [], searchText: '', teamSelectedData: [], slaveSelectedRowKeys: [], slaveSelectedData: [], slaveInfoSelectedRowKeys: [], slaveInfoSelectedData: [], tableBtnEnabled: true, | |
| 648 | + }); // teamSelectedRowKeys: [], | |
| 649 | + this.handleGetData('slave', slaveConfig, slaveFilterCondition, undefined, '', false, undefined); | |
| 650 | + this.handleGetData('slaveInfo', slaveInfoConfig, slaveFilterCondition, undefined, '', false, undefined); | |
| 651 | + | |
| 652 | + if (!commonUtils.isEmpty(clearArray)) { | |
| 653 | + for (const item of clearArray) { | |
| 654 | + const { confirm, clearFilters } = item; | |
| 655 | + confirm(); | |
| 656 | + clearFilters(); | |
| 657 | + } | |
| 658 | + } | |
| 659 | + this.props.onSaveState({ | |
| 660 | + loading: false, | |
| 661 | + }); | |
| 662 | + } | |
| 663 | +*/ | |
| 664 | + handleRefresh = async () => { | |
| 665 | + const { | |
| 666 | + clearArray, teamConfig, teamFilterCondition, slaveFilterCondition, teamSelectedRowKeys, | |
| 667 | + } = this.props; | |
| 668 | + let { expKeys } = this.props; | |
| 669 | + const addState = await this.handleGetData('team', teamConfig, teamFilterCondition, undefined, '', false, undefined, this.props, true); | |
| 670 | + if (addState === undefined) return; | |
| 671 | + this.props.onSaveState({ | |
| 672 | + ...addState, | |
| 673 | + clearArray: [], | |
| 674 | + searchText: '', | |
| 675 | + teamSelectedData: [], | |
| 676 | + slaveSelectedRowKeys: [], | |
| 677 | + slaveSelectedData: [], | |
| 678 | + slaveInfoData: [], /* 刷新后清除slaveInfoData */ | |
| 679 | + slaveInfoSelectedRowKeys: [], | |
| 680 | + slaveInfoSelectedData: [], | |
| 681 | + tableBtnEnabled: true, | |
| 682 | + machineEnabled: false, | |
| 683 | + sortedInfo: {}, | |
| 684 | + }); | |
| 685 | + const { teamData } = addState; | |
| 686 | + const newIndex = teamData.findIndex(item => item.sId === teamSelectedRowKeys[0]); | |
| 687 | + if (newIndex === -1) { | |
| 688 | + this.handleCallBack({ ...teamData[0] }); | |
| 689 | + } else { | |
| 690 | + this.handleCallBack({ ...teamData[newIndex] }); | |
| 691 | + } | |
| 692 | + | |
| 693 | + if (!commonUtils.isEmpty(clearArray)) { | |
| 694 | + for (const item of clearArray) { | |
| 695 | + const { confirm, clearFilters } = item; | |
| 696 | + confirm(); | |
| 697 | + clearFilters(); | |
| 698 | + } | |
| 699 | + } | |
| 700 | + /* 刷新后关闭所有expKeys */ | |
| 701 | + expKeys = []; | |
| 702 | + /* 刷新后清除slaveInfoData */ | |
| 703 | + this.props.onSaveState({ | |
| 704 | + loading: false, expKeys, | |
| 705 | + }); | |
| 706 | + } | |
| 707 | + | |
| 708 | + handleResetTableSearch = () => { | |
| 709 | + this.props.onSaveState({ clearArray: [] }); | |
| 710 | + this.handleRefresh(); | |
| 711 | + } | |
| 712 | + // 进行存储过程按钮存储过程参数解析拼接 根据存储过程按钮参数配置进行解析,配置是json格式 {"sproName":"cal_sss","inMap":"master.sSlaveId,slave.sId"} | |
| 713 | + handleBtnEent = (btnConfig, btnName, sValue) => { | |
| 714 | + const { masterData } = this.props; | |
| 715 | + const sButtonParam = btnConfig.sButtonParam; | |
| 716 | + const btn = JSON.parse(sButtonParam); | |
| 717 | + const sProName = btn.sproName; | |
| 718 | + const inParams = []; | |
| 719 | + const inMap = btn.inMap; | |
| 720 | + const inlist = inMap.split(','); | |
| 721 | + | |
| 722 | + const masterArr = []; | |
| 723 | + const slaveArr = []; | |
| 724 | + const slaveInfoArr = []; | |
| 725 | + const controlArr = []; | |
| 726 | + const materialsArr = []; | |
| 727 | + const processArr = []; | |
| 728 | + | |
| 729 | + if (inlist.length > 0) { | |
| 730 | + inlist.forEach((item) => { | |
| 731 | + const itemArr = item.split('.'); | |
| 732 | + if (itemArr.length > 0) { | |
| 733 | + const sname = itemArr[0]; | |
| 734 | + const stype = itemArr[1]; | |
| 735 | + if (commonUtils.isNotEmptyStr(sname) && sname === 'master') { | |
| 736 | + masterArr.push(stype); | |
| 737 | + } | |
| 738 | + if (commonUtils.isNotEmptyStr(sname) && sname === 'slave') { | |
| 739 | + slaveArr.push(stype); | |
| 740 | + } | |
| 741 | + if (commonUtils.isNotEmptyStr(sname) && sname === 'slaveInfo') { | |
| 742 | + slaveInfoArr.push(stype); | |
| 743 | + } | |
| 744 | + if (commonUtils.isNotEmptyStr(sname) && sname === 'control') { | |
| 745 | + controlArr.push(stype); | |
| 746 | + } | |
| 747 | + if (commonUtils.isNotEmptyStr(sname) && sname === 'materials') { | |
| 748 | + materialsArr.push(stype); | |
| 749 | + } | |
| 750 | + if (commonUtils.isNotEmptyStr(sname) && sname === 'process') { | |
| 751 | + processArr.push(stype); | |
| 752 | + } | |
| 753 | + } | |
| 754 | + }); | |
| 755 | + | |
| 756 | + if (commonUtils.isNotEmptyArr(masterArr) && commonUtils.isNotEmptyObject(masterData)) { | |
| 757 | + const addState = {}; | |
| 758 | + addState.key = 'master'; | |
| 759 | + const val = []; | |
| 760 | + const currVal = {}; | |
| 761 | + masterArr.forEach((filed) => { | |
| 762 | + currVal[`${filed}`] = masterData[`${filed}`]; | |
| 763 | + }); | |
| 764 | + val.push(currVal); | |
| 765 | + addState.value = val; | |
| 766 | + inParams.push({ ...addState }); | |
| 767 | + } | |
| 768 | + if (commonUtils.isNotEmptyArr(slaveArr)) { | |
| 769 | + const addState = this.handleProParams('slave', slaveArr); | |
| 770 | + if (commonUtils.isNotEmptyObject(addState)) { | |
| 771 | + inParams.push({ ...addState }); | |
| 772 | + } | |
| 773 | + } | |
| 774 | + if (commonUtils.isNotEmptyArr(slaveInfoArr)) { | |
| 775 | + const addState = this.handleProParams('slaveInfo', slaveInfoArr); | |
| 776 | + if (commonUtils.isNotEmptyObject(addState)) { | |
| 777 | + inParams.push({ ...addState }); | |
| 778 | + } | |
| 779 | + } | |
| 780 | + if (commonUtils.isNotEmptyArr(controlArr)) { | |
| 781 | + const addState = this.handleProParams('control', controlArr); | |
| 782 | + if (commonUtils.isNotEmptyObject(addState)) { | |
| 783 | + inParams.push({ ...addState }); | |
| 784 | + } | |
| 785 | + } | |
| 786 | + if (commonUtils.isNotEmptyArr(materialsArr)) { | |
| 787 | + const addState = this.handleProParams('materials', materialsArr); | |
| 788 | + if (commonUtils.isNotEmptyObject(addState)) { | |
| 789 | + inParams.push({ ...addState }); | |
| 790 | + } | |
| 791 | + } | |
| 792 | + if (commonUtils.isNotEmptyArr(processArr)) { | |
| 793 | + const addState = this.handleProParams('process', processArr); | |
| 794 | + if (commonUtils.isNotEmptyObject(addState)) { | |
| 795 | + inParams.push({ ...addState }); | |
| 796 | + } | |
| 797 | + } | |
| 798 | + } | |
| 799 | + | |
| 800 | + this.handleProcedureCall(btnConfig, sProName, JSON.stringify({ params: inParams, changeValue: sValue })); | |
| 801 | + }; | |
| 802 | + // 根据配置解析拼接具体参数 | |
| 803 | + handleProParams = (sKey, arr) => { | |
| 804 | + const { [`${sKey}Data`]: tableData, [`${sKey}SelectedRowKeys`]: selectedRowKeys } = this.props; | |
| 805 | + const keyData = tableData.filter(item => selectedRowKeys.includes(item.sId) || selectedRowKeys.includes(item.sSlaveId)); | |
| 806 | + if (commonUtils.isNotEmptyArr(keyData)) { | |
| 807 | + const addState = {}; | |
| 808 | + addState.key = sKey; | |
| 809 | + const val = []; | |
| 810 | + keyData.forEach((currData) => { | |
| 811 | + const currVal = {}; | |
| 812 | + arr.forEach((filed) => { | |
| 813 | + currVal[`${filed}`] = currData[`${filed}`]; | |
| 814 | + }); | |
| 815 | + val.push(currVal); | |
| 816 | + }); | |
| 817 | + addState.value = val; | |
| 818 | + return addState; | |
| 819 | + } else { | |
| 820 | + return undefined; | |
| 821 | + } | |
| 822 | + }; | |
| 823 | + // 存储过程按钮调用存储过程 | |
| 824 | + handleProcedureCall = async (btnConfig, proName, proInParam, other) => { | |
| 825 | + const { app, sModelsId, sCurrMemoProps } = this.props; | |
| 826 | + const value = { sProName: proName, sProInParam: proInParam }; | |
| 827 | + if (other?.iFlag === 1) { | |
| 828 | + value.iFlag = 1; | |
| 829 | + } | |
| 830 | + const url = `${commonConfig.server_host}procedureCall/doGenericProcedureCall?sModelsId=${sModelsId}`; | |
| 831 | + const returnData = (await commonServices.postValueService(app.token, value, url)).data; | |
| 832 | + /** | |
| 833 | + * 修改日期:2021-03-26 | |
| 834 | + * 修改人:吕杰 | |
| 835 | + * 区域:以下 2 行 | |
| 836 | + * BUG: | |
| 837 | + * 说明:执行完接口调用后关闭弹窗 | |
| 838 | + * 原代码: | |
| 839 | + */ | |
| 840 | + sCurrMemoProps.bVisibleMemo = false; | |
| 841 | + this.props.onSaveState({ loading: false, sCurrMemoProps }); | |
| 842 | + if (returnData.code === 1) { | |
| 843 | + message.success(returnData.msg); | |
| 844 | + this.handleButtonClick('BtnRefresh'); | |
| 845 | + } else { | |
| 846 | + this.props.getServiceError({ ...returnData, fn: () => this.handleProcedureCall(btnConfig, proName, proInParam, { iFlag: 1 }) }); | |
| 847 | + } | |
| 848 | + } | |
| 849 | + /* 点击展开图标时,调用接口获取嵌套字表数据 */ | |
| 850 | + handleOnExpand = async (expanded, record) => { | |
| 851 | + const { sModelsId, expKeys } = this.props; | |
| 852 | + let { slaveInfoData } = this.props; | |
| 853 | + const { sSlaveId } = record; | |
| 854 | + /* 添加移除展开的sId */ | |
| 855 | + let newExp = commonUtils.isNotEmptyArr(expKeys) ? expKeys : []; | |
| 856 | + if (expanded) { | |
| 857 | + if (commonUtils.isNotEmptyObject(sSlaveId)) { | |
| 858 | + newExp.push(record.sSlaveId); | |
| 859 | + } | |
| 860 | + } else { | |
| 861 | + newExp = newExp.filter(item => item !== record.sSlaveId); | |
| 862 | + } | |
| 863 | + this.props.onSaveState({ expKeys: newExp }); | |
| 864 | + let childrenData = []; | |
| 865 | + if (commonUtils.isNotEmptyArr(slaveInfoData) && commonUtils.isNotEmptyObject(sSlaveId)) { | |
| 866 | + childrenData = slaveInfoData.filter(item => sSlaveId.split('-').includes(item.sId)); | |
| 867 | + } | |
| 868 | + if (expanded && commonUtils.isEmptyArr(childrenData)) { | |
| 869 | + if (commonUtils.isNotEmptyObject(sSlaveId)) { | |
| 870 | + const planLoadingSate = {}; | |
| 871 | + planLoadingSate.sId = sSlaveId; | |
| 872 | + planLoadingSate.planLoading = true; | |
| 873 | + this.props.onSaveState({ planLoadingSate }); | |
| 874 | + const { token } = this.props; | |
| 875 | + const url = `${commonConfig.server_host}workOrderPlan/getProductionPlanInfo?sModelsId=${sModelsId}`; | |
| 876 | + const value = { sSlaveId }; | |
| 877 | + const dataReturn = (await commonServices.postValueService(token, value, url)).data; | |
| 878 | + if (dataReturn.code === 1) { | |
| 879 | + const returnData = dataReturn.dataset.rows; | |
| 880 | + if (commonUtils.isNotEmptyArr(returnData)) { | |
| 881 | + childrenData = returnData; | |
| 882 | + if (commonUtils.isEmptyArr(slaveInfoData)) { | |
| 883 | + slaveInfoData = []; | |
| 884 | + } | |
| 885 | + childrenData.forEach((child) => { | |
| 886 | + // const iIndex = slaveInfoData.findIndex(item => item.sId === child.sId); | |
| 887 | + // if (iIndex === -1) { | |
| 888 | + // slaveInfoData.push(child); | |
| 889 | + // } | |
| 890 | + slaveInfoData.push(child); | |
| 891 | + }); | |
| 892 | + } | |
| 893 | + planLoadingSate.planLoading = false; | |
| 894 | + this.props.onSaveState({ | |
| 895 | + planLoadingSate, slaveInfoData, | |
| 896 | + }); | |
| 897 | + } else { | |
| 898 | + this.props.getServiceError(dataReturn); | |
| 899 | + planLoadingSate.planLoading = false; | |
| 900 | + this.props.onSaveState({ planLoadingSate }); | |
| 901 | + } | |
| 902 | + } | |
| 903 | + } | |
| 904 | + } | |
| 905 | + render() { | |
| 906 | + const { masterData } = this.props; | |
| 907 | + const imgSrc = commonBusiness.handleAddIcon(masterData); | |
| 908 | + return ( | |
| 909 | + <ChildComponent | |
| 910 | + {...this.props} | |
| 911 | + {...this.state} | |
| 912 | + onToggle={this.handleToggle} | |
| 913 | + onSaveData={this.handleSaveData} | |
| 914 | + onGetData={this.handleGetSearchData} | |
| 915 | + onGetDataInfo={this.handleGetSlaveData} | |
| 916 | + onSubmit={this.handleValidateSave} | |
| 917 | + onReturnForm={this.handleForm} | |
| 918 | + onSearchUpDown={this.handleSearchUpDown} | |
| 919 | + onCancel={this.handleCancel} | |
| 920 | + onDataChange={this.handleTableChange} | |
| 921 | + onBtnPrint={this.handleBtnPrint} | |
| 922 | + onChange={this.handleMasterChange} | |
| 923 | + onButtonClick={this.handleButtonClick} | |
| 924 | + imgSrc={imgSrc} | |
| 925 | + style={{ height: '100%' }} | |
| 926 | + onTabsCallback={this.handleCallBack} | |
| 927 | + onChangeMachine={this.onChangeMachine} | |
| 928 | + onResetTableSearch={this.handleResetTableSearch} | |
| 929 | + onTitleChange={this.handleTitleChange} | |
| 930 | + onBtnEent={this.handleBtnEent} | |
| 931 | + onExpand={this.handleOnExpand} | |
| 932 | + onGanttChar={this.handleGanttChar} | |
| 933 | + /> | |
| 934 | + ); | |
| 935 | + } | |
| 936 | + }; | |
| 937 | +}; | ... | ... |