/** * Created by mar105 on 2019-02-13. */ /* eslint-disable no-undef,import/first,prefer-destructuring,jsx-a11y/alt-text */ import React, { Component } from "react"; import { Form } from "@ant-design/compatible"; import "@ant-design/compatible/assets/index.css"; import { Input, Space, Button } from "antd"; import * as commonUtils from "../../utils/utils"; import ShowType from "./CommonComponent"; /* 通用方法 */ import AntdDraggableModal from "../Common/AntdDraggableModal"; import moment from "moment"; const { TextArea } = Input; const FormItem = Form.Item; class SlaveMemoRc extends Component { /** 构造函数 */ constructor(props) { super(props); this.handleTextareaChange = this.handleTextareaChange.bind(this); this.state = { textareaValue: "" }; this.max = 2000; this.min = 0; this.sDateFormat = "YYYY-MM-DD"; this.bInit = true; // 是否初始化 // this.isChoosedate = btnName.toLowerCase().endsWith('choosedate'); } componentWillMount() { this.componentWillReceiveProps(this.props); } componentWillReceiveProps(nextProps) { /* state和this属性赋值 */ const { sCurrMemoProps } = nextProps; if (this.bInit && sCurrMemoProps && sCurrMemoProps.bVisibleMemo) { this.bInit = false; if ( commonUtils.isNotEmptyObject(sCurrMemoProps) && sCurrMemoProps.btnName === undefined ) { this.setState({ textareaValue: nextProps.sCurrMemoProps.sValue }); } else { this.setState({ textareaValue: nextProps.sValue }); } if (commonUtils.isNotEmptyObject(sCurrMemoProps)) { this.max = commonUtils.convertStrToNumber( commonUtils.isNotEmptyObject(nextProps.sCurrMemoProps.sMemoConfig) && commonUtils.isNotEmptyObject( nextProps.sCurrMemoProps.sMemoConfig.sMaxValue ) ? nextProps.sCurrMemoProps.sMemoConfig.sMaxValue : this.max ); /* 最大值(数据格式:数字) */ this.min = commonUtils.convertStrToNumber( commonUtils.isNotEmptyObject(nextProps.sCurrMemoProps.sMemoConfig) && commonUtils.isNotEmptyObject( nextProps.sCurrMemoProps.sMemoConfig.sMinValue ) ? nextProps.sCurrMemoProps.sMemoConfig.sMinValue : this.min ); /* 最小值(数据格式:数字) */ } } } handleOk = () => { this.props.onGetMemoCancel(); return; const { sCurrMemoProps, slaveMemoConfig, masterData } = this.props; const sValue = {}; const name = sCurrMemoProps.name; const bVisibleMemo = sCurrMemoProps.bVisibleMemo; const sMemoField = sCurrMemoProps.sMemoField; const sRecord = sCurrMemoProps.sRecord; const btnName = sCurrMemoProps.btnName ? sCurrMemoProps.btnName : ""; let valueKey = ""; if ( commonUtils.isNotEmptyArr(slaveMemoConfig) && commonUtils.isNotEmptyObject(masterData) ) { // eslint-disable-next-line array-callback-return slaveMemoConfig.map(item => { /** * 修改日期:2021-03-24 * 修改人:吕杰 * 区域:以下 18 行 * BUG: * 说明:过滤伪字段,为下拉框时替换为id * 原代码: */ let realName = item.sName; if (item.sRelation && item.sRelation !== "noQuery") { // 伪字段处理 if (item.sDropDownType && item.sDropDownType === "sql") { // 下拉框处理 /** 此处存在替换隐患,暂无好的解决方案(存在多个Name且需要替换的位置不确定时,无解决方案) */ realName = realName.replace("Name", "Id"); } else { // 过滤 // eslint-disable-next-line array-callback-return return; } } sValue[realName] = masterData[realName]; if ( btnName.toLowerCase().endsWith("choosedate") && realName.length > 0 && realName.substring(0, 1) === "p" ) { const tStartDate = moment(sValue[realName][0]).format( this.sDateFormat ); const tEndDate = moment(sValue[realName][1]) .add(1, "days") .format(this.sDateFormat); sValue[realName][0] = tStartDate; sValue[realName][1] = tEndDate; } valueKey += `${realName},`; }); sValue.valueKey = valueKey; } sValue.textareaValue = this.state.textareaValue; if (btnName.indexOf("BtnRepair") > -1) { const btnConfig = this.props.masterConfig.gdsconfigformslave.filter( item => item.sControlName === btnName )[0]; if (commonUtils.isNotEmptyObject(btnConfig)) { this.props.onBtnEent(btnConfig, btnName, sValue); } if (btnName.toLowerCase().endsWith("choosedate")) { const iIndex = slaveMemoConfig.findIndex( item => item.sName === "pChooseDate" ); if (iIndex > -1) { /* 日期凭证调用存储过程后清除时间区间 */ masterData.pChooseDate = null; } } } else if (btnName.indexOf("BtnForceComplete") > -1) { this.props.onGetMemo( name, sValue, sMemoField, sRecord, bVisibleMemo, btnName ); } else { this.props.onGetMemo( name, this.state.textareaValue, sMemoField, sRecord, bVisibleMemo, btnName ); } this.bInit = true; }; handleSlaveMemoMasterChange = async ( name, sFieldName, changeValue, sId, dropDownData, isWait, masterDataNew ) => { const { masterData: masterDataOld, enabled } = this.props; const addState = { enabled }; const masterData = masterDataNew === undefined ? masterDataOld === undefined ? {} : masterDataOld : masterDataNew; const returnData = await this.props.onChange( name, sFieldName, changeValue, sId, dropDownData, true, masterData ); if (isWait) { return { ...returnData, ...addState }; } else { this.props.onSaveState({ ...returnData, ...addState }); return returnData; } }; handleCancel = () => { this.bInit = true; this.props.onGetMemoCancel(); }; /* 设置textareaValue */ handleTextareaChange(e) { this.setState({ textareaValue: e.target.value }); } handleViewClick = (name, sName, sId) => { this.props.onViewClick(name, sName, sId); }; /** 渲染 */ render() { const { sCurrMemoProps, masterData, app, sModelsId, form, slaveMemoConfig } = this.props; let bVisibleMemo; let sMemoField; let btnName = ""; const sDetailTitle = commonFunc.showLocalMessage(props, 'sDetailTitle', '详细'); const title = sDetailTitle; let bEnabledTextArea = false; /* 多行文本默认可输入 非编辑状态多行文本禁止输入 */ if (commonUtils.isNotEmptyObject(sCurrMemoProps)) { bVisibleMemo = sCurrMemoProps.bVisibleMemo; sMemoField = sCurrMemoProps.sMemoField; btnName = sCurrMemoProps.btnName ? sCurrMemoProps.btnName : ""; if (sCurrMemoProps.bOnlyShow !== undefined) { /* 查看状态下备注弹窗只能查看不能修改 */ bEnabledTextArea = sCurrMemoProps.bOnlyShow; } } let bVisibleTextArea = true; if (commonUtils.isNotEmptyArr(slaveMemoConfig)) { if (slaveMemoConfig[0].sName === "sDevelopMemo") { bVisibleTextArea = false; /* 开发备注多行文本不显示 */ } } // const tStartDate = moment(); /* 开始时间 */ // 判断是否备注双击弹出的弹窗 // if (fromToorBar) { // bVisibleMemo = false; // } const formItemLayout = { labelCol: { span: 6 }, wrapperCol: { span: 18 } }; return (