2024-05-27 09:25:22 +08:00
|
|
|
|
import React from 'react'
|
|
|
|
|
|
import {
|
|
|
|
|
|
extendRule,
|
|
|
|
|
|
getDataFieldValue,
|
|
|
|
|
|
getParseValue,
|
|
|
|
|
|
guid,
|
|
|
|
|
|
initFilter,
|
|
|
|
|
|
permissionUtils,
|
|
|
|
|
|
setDataFieldValue,
|
|
|
|
|
|
extendInclude,
|
|
|
|
|
|
getCustomParams,
|
|
|
|
|
|
extendIgnoreDataRule
|
|
|
|
|
|
} from '../../utils/common'
|
|
|
|
|
|
import { message, Collapse, Button, Row, Form, Dropdown, Tabs } from 'antd';
|
|
|
|
|
|
import EditBaseComponent from "../EditBaseComponent";
|
|
|
|
|
|
import styles from '../Component.css';
|
|
|
|
|
|
import CustomFieldsManage from '../../components/common/CustomFieldsManage';
|
|
|
|
|
|
import classNames from 'classnames'
|
|
|
|
|
|
|
|
|
|
|
|
const Panel = Collapse.Panel;
|
|
|
|
|
|
const TabPane = Tabs.TabPane;
|
|
|
|
|
|
|
|
|
|
|
|
class EditComponent extends EditBaseComponent {
|
|
|
|
|
|
constructor(props) {
|
|
|
|
|
|
super(props);
|
|
|
|
|
|
this.state = {
|
|
|
|
|
|
data: {},
|
|
|
|
|
|
initData: {
|
|
|
|
|
|
ENABLE_STATUS: 0
|
|
|
|
|
|
},
|
|
|
|
|
|
columns: [],
|
|
|
|
|
|
editData: {},
|
|
|
|
|
|
btnData: [],
|
|
|
|
|
|
formData: {},
|
|
|
|
|
|
jsFile: '',
|
|
|
|
|
|
loading: false,
|
|
|
|
|
|
subTable: [],
|
|
|
|
|
|
isRegSaveFunc: false,
|
|
|
|
|
|
btnLoading: false, // 触发按钮loading
|
|
|
|
|
|
cusLoading: false, // 触发自定义按钮loading
|
|
|
|
|
|
};
|
|
|
|
|
|
this.billStatus = 0;
|
|
|
|
|
|
this.getparentinfo = false;
|
|
|
|
|
|
};
|
|
|
|
|
|
componentDidMount() {
|
|
|
|
|
|
super.componentDidMount();
|
|
|
|
|
|
this.billStatus = 0;
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
componentWillReceiveProps(NextProps) {
|
|
|
|
|
|
super.componentWillReceiveProps(NextProps);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
onLoadData() {
|
|
|
|
|
|
super.onLoadData();
|
|
|
|
|
|
this.billStatus = 0;
|
|
|
|
|
|
this.getEditConfigByPage({ formCode: this.props.formCode });
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
|
获取动态函数
|
|
|
|
|
|
*/
|
|
|
|
|
|
getDynJsFunc(funcName) {
|
|
|
|
|
|
let func = null;
|
|
|
|
|
|
//取静态公共方法
|
|
|
|
|
|
if (!func) {
|
|
|
|
|
|
const jsFile = this.getStaticJsFunc();
|
|
|
|
|
|
func = jsFile[funcName];
|
|
|
|
|
|
}
|
|
|
|
|
|
//取props中的动态js方法
|
|
|
|
|
|
if (!func && this.props.dynJsFunc) {
|
|
|
|
|
|
func = this.props.dynJsFunc[funcName];
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//取加载data中的动态方法
|
|
|
|
|
|
if (!func && this.props && this.props.data && this.props.data.dynJsFunc) {
|
|
|
|
|
|
func = this.props.data.dynJsFunc[funcName];
|
|
|
|
|
|
};
|
|
|
|
|
|
//取动态js中的动态方法
|
|
|
|
|
|
if (this.state.jsFile || this.props.jsFile) {
|
|
|
|
|
|
const jsFiles = this.state.jsFile ? this.state.jsFile.split(',') : [];
|
|
|
|
|
|
const tmpJs = this.props.jsFile ? this.props.jsFile.split(',') : [];
|
|
|
|
|
|
if (tmpJs && tmpJs.length) {
|
|
|
|
|
|
tmpJs.forEach(t => {
|
|
|
|
|
|
jsFiles.push(t);
|
|
|
|
|
|
});
|
|
|
|
|
|
};
|
|
|
|
|
|
if (jsFiles) {
|
|
|
|
|
|
jsFiles.forEach(t => {
|
|
|
|
|
|
if (func) return;
|
|
|
|
|
|
const jsFile = require('../../files/edit/' + t).default;
|
|
|
|
|
|
func = jsFile[funcName];
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return func;
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
setStateData(val) {
|
|
|
|
|
|
this.setState({
|
|
|
|
|
|
data: val
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
|
|
|
|
|
getStaticJsFunc() {
|
|
|
|
|
|
return {
|
|
|
|
|
|
};
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
|
根据编辑页列信息获取控件配置信息
|
|
|
|
|
|
col:编辑页列信息
|
|
|
|
|
|
record:数据记录
|
|
|
|
|
|
*/
|
|
|
|
|
|
getControlConfigByEditCol({ col, onChange, onBlur }) {
|
|
|
|
|
|
const { CONTROL_TYPE: controlType } = col;
|
|
|
|
|
|
const promptInfo = col.PROMPT_INFO ? col.PROMPT_INFO : (col.LABEL + (controlType === 13 ? ',回车填充' : ''));
|
|
|
|
|
|
const isShow = (this.props.data && this.props.data.isShow) ? this.props.data.isShow : false;
|
|
|
|
|
|
const isPermit = (this.props.data && this.props.data.isPermit) ? this.props.data.isPermit : false;
|
|
|
|
|
|
const disabled = !col.EDITABLE || isShow || isPermit && !col.PERMIT_EDITABLE;
|
|
|
|
|
|
let tmpData = {};
|
|
|
|
|
|
// 下拉
|
|
|
|
|
|
if (controlType === 3) {
|
|
|
|
|
|
tmpData = {
|
|
|
|
|
|
enumName: col.ENUM,
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
// 多选控件
|
|
|
|
|
|
else if (controlType === 5) {
|
|
|
|
|
|
tmpData = {
|
|
|
|
|
|
enumName: col.ENUM,
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
// 数值
|
|
|
|
|
|
else if (controlType === 7) {
|
|
|
|
|
|
tmpData = {
|
|
|
|
|
|
maxVal: col.MAX_VAL || 0,//最大值
|
|
|
|
|
|
minVal: col.MIN_VAL || 0, //最小值
|
|
|
|
|
|
isCheckMax: col.IS_CHECK_MAX,//是否开启最大值校验
|
|
|
|
|
|
isCheckMin: col.IS_CHECK_MIN,//是否开启最小值校验
|
|
|
|
|
|
step: col.STEP,//步长
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
// 分页下拉 树选择 扫描 级联
|
|
|
|
|
|
else if (controlType === 9 || controlType === 13 || controlType === 11 || controlType === 17 || controlType == 24) {
|
|
|
|
|
|
const extIncludeFields = [];
|
|
|
|
|
|
// 填充导航属性
|
|
|
|
|
|
if (col.Nav_FillMaps) {
|
|
|
|
|
|
col.Nav_FillMaps.forEach(t => {
|
|
|
|
|
|
if (t.SRC_NAV) {
|
|
|
|
|
|
extIncludeFields.push(t.SRC_NAV);
|
|
|
|
|
|
}
|
|
|
|
|
|
if (t.Nav_Details) {
|
|
|
|
|
|
t.Nav_Details.forEach(s => {
|
|
|
|
|
|
if (s.SRC_FIELD_NAME && s.SRC_FIELD_NAME.indexOf('.') > 0) {
|
|
|
|
|
|
let pos = s.SRC_FIELD_NAME.lastIndexOf('.');
|
|
|
|
|
|
let includeField = s.SRC_FIELD_NAME.substring(0, pos);
|
|
|
|
|
|
extIncludeFields.push(t.SRC_NAV + '.' + includeField);
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
tmpData = {
|
|
|
|
|
|
api: col.INPUT_DATA_API,
|
|
|
|
|
|
showField: col.INPUT_SHOW_FIELD,
|
|
|
|
|
|
showLevel: col.INPUT_DATA_LEVEL,
|
|
|
|
|
|
onlyLeaf: col.IS_ONLY_CHECK_LEAF,
|
|
|
|
|
|
navField: col.INPUT_NAV_FIELD,
|
|
|
|
|
|
labelField: col.INPUT_LABEL_FIELD,
|
|
|
|
|
|
selectLabelField: col.SELECTD_LABEL_FIELD,
|
|
|
|
|
|
filterField: col.INPUT_FILTER_FIELD,
|
|
|
|
|
|
sortField: col.INPUT_SORT_FIELD,
|
|
|
|
|
|
sortOrder: col.INPUT_SORT_ORDER,
|
|
|
|
|
|
saveField: col.INPUT_SAVE_FIELD,
|
|
|
|
|
|
idField: col.INPUT_ID_FIELD,
|
|
|
|
|
|
extIncludeFields: extIncludeFields,
|
|
|
|
|
|
filterOrgType: col.INPUT_FILTER_ORG_TYPE,
|
|
|
|
|
|
isKeepValueByClear: col.INPUT_KEEP_VALUE_BY_NO_SRC,
|
|
|
|
|
|
authOrgCodes: col.AUTH_ORG_CODES,
|
|
|
|
|
|
isIgnoreTenant: col.IS_IGNORE_TENANT
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
// 下拉多选
|
|
|
|
|
|
else if (controlType === 12) {
|
|
|
|
|
|
tmpData = {
|
|
|
|
|
|
enumName: col.ENUM,
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
// 系统序列号控件
|
|
|
|
|
|
else if (controlType === 14) {
|
|
|
|
|
|
tmpData = {
|
|
|
|
|
|
codeRuleType: col.CODE_RULE_TYPE,
|
|
|
|
|
|
onGetCodeRule: (save, codeType) => {
|
|
|
|
|
|
const json = initFilter(this.props.login.OrgId);
|
|
|
|
|
|
json.Count = 1;
|
|
|
|
|
|
json.CodeType = codeType;
|
|
|
|
|
|
this.props.dispatch({
|
|
|
|
|
|
type: 'app/genSystemCode',
|
|
|
|
|
|
payload: json,
|
|
|
|
|
|
onComplete: (ret) => {
|
|
|
|
|
|
if (ret) {
|
|
|
|
|
|
save(ret);
|
|
|
|
|
|
this.saveUseCodeRule(codeType, ret);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return {
|
|
|
|
|
|
id: col.ID,
|
|
|
|
|
|
controlType,
|
|
|
|
|
|
code: col.CODE,
|
|
|
|
|
|
visible: col.IS_DEFAULT,
|
|
|
|
|
|
field: col.FIELD_NAME,
|
|
|
|
|
|
disabled: disabled,
|
|
|
|
|
|
isRequire: col.REQUIRED,
|
|
|
|
|
|
label: col.LABEL,
|
|
|
|
|
|
promptInfo,
|
|
|
|
|
|
onChange,
|
|
|
|
|
|
ruleExp: col.VERIFY_EXPRESS,
|
|
|
|
|
|
ruleExpInfo: col.VERIFY_ERROR_INFO,
|
|
|
|
|
|
width: col.WIDTH,
|
|
|
|
|
|
height: col.HEIGHT,
|
|
|
|
|
|
showFormCode: col.SHOW_FORM_CODE,
|
|
|
|
|
|
showIdField: col.SHOW_ID_FIELD,
|
|
|
|
|
|
showFormParms: col.CUSTOM_PARAMS,
|
|
|
|
|
|
editFormCode: col.EDIT_FORM_CODE,
|
|
|
|
|
|
editFormFilter: col.EDIT_FORM_FILTER,
|
|
|
|
|
|
editFormFilterValue: col.EDIT_FORM_FILTER_VALUE,
|
|
|
|
|
|
data: tmpData,
|
|
|
|
|
|
onBlur,
|
|
|
|
|
|
span: this.props.isTree ? { span: 12 } : null,
|
|
|
|
|
|
column: col,
|
|
|
|
|
|
caseType: col.CASE,
|
|
|
|
|
|
minLen: col.MIN_LEN || 0,
|
|
|
|
|
|
maxLen: col.MAX_LEN || 0, // 0 表示不限制最大长度
|
|
|
|
|
|
maxVal: col.MAX_VAL || 0,//最大值
|
|
|
|
|
|
minVal: col.MIN_VAL || 0, //最小值
|
|
|
|
|
|
isCheckMax: col.IS_CHECK_MAX,//是否开启最大值校验
|
|
|
|
|
|
isCheckMin: col.IS_CHECK_MIN,//是否开启最小值校验
|
|
|
|
|
|
step: col.STEP,//步长
|
|
|
|
|
|
errVerifyMsg: col.VERIFY_MSG,
|
|
|
|
|
|
remark: col.REMARK
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
|
根据编辑页列信息填充记录默认值
|
|
|
|
|
|
*/
|
|
|
|
|
|
fillEditColumnDefaultValue({ record, cols, getHeadFieldValue }) {
|
|
|
|
|
|
cols.forEach(n => {
|
|
|
|
|
|
if (n.DEFAULT_VALUE != null && n.DEFAULT_VALUE !== '') {
|
|
|
|
|
|
let v = getParseValue(n.DEFAULT_VALUE, this.props.login.user, getHeadFieldValue);
|
|
|
|
|
|
v = this.getControlValue({ controlType: n.CONTROL_TYPE, data: { enumName: n.ENUM }, value: v });
|
|
|
|
|
|
setDataFieldValue(record, n.FIELD_NAME, v);
|
|
|
|
|
|
};
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
|
根据编辑页列信息初始化列配置信息
|
|
|
|
|
|
*/
|
|
|
|
|
|
initColumnConfigByEditCols({ editColumns, editPanels, customHidCols, customCols, columns, panels, customCfg, onChange, onBlur, getFieldValue, onDropDownFilter, onSelect, isBatchEdit }) {
|
|
|
|
|
|
if (editColumns && editColumns.length) {
|
|
|
|
|
|
let isNeedSort = false;
|
|
|
|
|
|
editColumns.forEach(n1 => {
|
|
|
|
|
|
n1.DB_NUM = n1.DB_NUM !== undefined && n1.DB_NUM !== null ? n1.DB_NUM : n1.NUM;
|
|
|
|
|
|
n1.DB_LABEL = n1.DB_LABEL !== undefined && n1.DB_LABEL !== null ? n1.DB_LABEL : n1.LABEL;
|
|
|
|
|
|
if (n1.LABEL !== n1.DB_LABEL) {
|
|
|
|
|
|
n1.LABEL = n1.DB_LABEL;
|
|
|
|
|
|
}
|
|
|
|
|
|
if (n1.NUM !== n1.DB_NUM) {
|
|
|
|
|
|
n1.NUM = n1.DB_NUM;
|
|
|
|
|
|
isNeedSort = true;
|
|
|
|
|
|
}
|
|
|
|
|
|
const temps = customCols ? customCols.filter(t => t.EDIT_COLUMN_ID === n1.ID) : null;//自定义列信息 如显示名称、顺序
|
|
|
|
|
|
if (temps && temps.length) {
|
|
|
|
|
|
const col = temps[0];
|
|
|
|
|
|
if (col.LABEL) {
|
|
|
|
|
|
n1.LABEL = col.LABEL;
|
|
|
|
|
|
}
|
|
|
|
|
|
if (col.NUM !== undefined && col.NUM !== null) {
|
|
|
|
|
|
n1.NUM = col.NUM;
|
|
|
|
|
|
isNeedSort = true;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
if (isNeedSort) {
|
|
|
|
|
|
editColumns.sort((x, y) => x.NUM > y.NUM ? 1 : -1);
|
|
|
|
|
|
}
|
|
|
|
|
|
const tmpColumns = [];
|
|
|
|
|
|
editColumns.forEach(col => {
|
|
|
|
|
|
if (!col.IS_DEFAULT || isBatchEdit && (!col.IS_CAN_BATCH_EDIT || !col.EDITABLE)) {
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
const isSysParam = col.FIELD_NAME ? col.FIELD_NAME.indexOf('Nav_SysParams') > -1 : false;
|
|
|
|
|
|
let isHidden = false;
|
|
|
|
|
|
if (customHidCols) {
|
|
|
|
|
|
isHidden = customHidCols.filter(t => t.EDIT_COLUMN_ID === col.ID).length > 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
if (customCfg && !isSysParam) {
|
|
|
|
|
|
customCfg.push({//填充自定义
|
|
|
|
|
|
ID: col.ID,
|
|
|
|
|
|
EDIT_COLUMN_ID: col.ID,
|
|
|
|
|
|
title: col.LABEL,
|
|
|
|
|
|
isCheck: !isHidden,
|
|
|
|
|
|
isRequire: col.REQUIRED,
|
|
|
|
|
|
num: col.NUM,
|
|
|
|
|
|
dbTitle: col.DB_LABEL,
|
|
|
|
|
|
dbNum: col.DB_NUM,
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
if (isHidden) {
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
const colConfig = this.getControlConfigByEditCol({ col: col });
|
|
|
|
|
|
tmpColumns.push(colConfig);
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
if (tmpColumns && tmpColumns.length) {
|
|
|
|
|
|
tmpColumns.forEach(t => {
|
|
|
|
|
|
let isGet = false;
|
|
|
|
|
|
if (editPanels && editPanels.length && panels) {
|
|
|
|
|
|
const temps = editPanels.filter(t1 => t1.ID === t.column.PAGE_EDIT_PANEL_ID);
|
|
|
|
|
|
if (temps != null && temps.length) {
|
|
|
|
|
|
isGet = true;
|
|
|
|
|
|
const temps2 = panels.filter(t2 => t2.id === temps[0].ID);
|
|
|
|
|
|
if (!temps2 || !temps2.length) {
|
|
|
|
|
|
panels.push({
|
|
|
|
|
|
panel: temps[0],
|
|
|
|
|
|
id: temps[0].ID,
|
|
|
|
|
|
columns: [t],
|
|
|
|
|
|
num: temps[0].NUM,
|
|
|
|
|
|
editColumns: [t.column],
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
else {
|
|
|
|
|
|
temps2[0].columns.push(t);
|
|
|
|
|
|
temps2[0].editColumns.push(t.column);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
if (!isGet) {
|
|
|
|
|
|
columns.push(t);
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
getCustomCols(cuCfg, field, value) {
|
|
|
|
|
|
if (field === 'title') {
|
|
|
|
|
|
if (cuCfg.dbTitle !== value) {
|
|
|
|
|
|
return { EDIT_COLUMN_ID: cuCfg.ID, LABEL: value };
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (field === 'num') {
|
|
|
|
|
|
if (cuCfg.dbNum !== value) {
|
|
|
|
|
|
return { EDIT_COLUMN_ID: cuCfg.ID, NUM: value };
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
return null;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
saveCustomConfig = (dbCustomCfg, pageEditId) => { // 保存配置字段
|
|
|
|
|
|
const hiddenTmps = [];
|
|
|
|
|
|
const colTmps = [];
|
|
|
|
|
|
if (dbCustomCfg && dbCustomCfg.length) {
|
|
|
|
|
|
dbCustomCfg.forEach((n, i) => {
|
|
|
|
|
|
if (!n.isCheck) {
|
|
|
|
|
|
hiddenTmps.push(n.ID);
|
|
|
|
|
|
}
|
|
|
|
|
|
const titleJson = this.getCustomCols(n, 'title', n.title);
|
|
|
|
|
|
const numJson = this.getCustomCols(n, 'num', n.num);
|
|
|
|
|
|
if (titleJson || numJson) {
|
|
|
|
|
|
let json = titleJson ? titleJson : {};
|
|
|
|
|
|
if (numJson) {
|
|
|
|
|
|
json = { ...json, ...numJson };
|
|
|
|
|
|
}
|
|
|
|
|
|
colTmps.push(json)
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
const json = {
|
|
|
|
|
|
UserId: this.props.login.userId,
|
|
|
|
|
|
OrgId: this.props.login.OrgId,
|
|
|
|
|
|
PageEditId: pageEditId,
|
|
|
|
|
|
HiddenEditColumnIds: hiddenTmps,
|
|
|
|
|
|
EditColumns: colTmps,
|
|
|
|
|
|
};
|
|
|
|
|
|
this.props.dispatch({
|
|
|
|
|
|
type: 'editPage/saveUserCustomConfig',
|
|
|
|
|
|
payload: json,
|
|
|
|
|
|
onComplete: (ret) => {
|
|
|
|
|
|
if (ret) {
|
|
|
|
|
|
message.success('执行成功');
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
clearCustomConfig(pageEditId, editCode, editColumns, editPanels) { //重置自定义信息
|
|
|
|
|
|
const columns = [], panels = [], customCfg = [];
|
|
|
|
|
|
this.initColumnConfigByEditCols({ editColumns, editPanels, columns, panels, customCfg });
|
|
|
|
|
|
this.setEditConfig({ editCode, editConfig: { columns: columns, customCfg, panels } });
|
|
|
|
|
|
const json = {
|
|
|
|
|
|
UserId: this.props.login.userId,
|
|
|
|
|
|
OrgId: this.props.login.OrgId,
|
|
|
|
|
|
PageEditId: pageEditId,
|
|
|
|
|
|
};
|
|
|
|
|
|
this.props.dispatch({
|
|
|
|
|
|
type: 'editPage/saveUserCustomConfig',
|
|
|
|
|
|
payload: json,
|
|
|
|
|
|
onComplete: (ret) => {
|
|
|
|
|
|
if (ret) {
|
|
|
|
|
|
message.success('执行成功');
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
handleCustomFieldChange(dbCustomCfg, field, value, cuCfg, editCode, editColumns, editPanels) {//自定义字段发生改变
|
|
|
|
|
|
const isHidden = field === 'check';
|
|
|
|
|
|
const tmp = [...dbCustomCfg];
|
|
|
|
|
|
const columns = [], panels = [], customCfg = [], customHidCols = [], customCols = [];
|
|
|
|
|
|
tmp.forEach((n1, i1) => {
|
|
|
|
|
|
if (n1.ID !== cuCfg.ID) {
|
|
|
|
|
|
if (!n1.isCheck) {
|
|
|
|
|
|
customHidCols.push(n1);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
const titleJson = this.getCustomCols(n1, 'title', isHidden || n1.ID !== cuCfg.ID || n1.ID === cuCfg.ID && field !== 'title' ? n1.title : value);
|
|
|
|
|
|
const numJson = this.getCustomCols(n1, 'num', isHidden || field !== 'num' || value[n1.ID] === undefined ? n1.num : value[n1.ID]);
|
|
|
|
|
|
if (titleJson || numJson) {
|
|
|
|
|
|
let json = titleJson ? titleJson : {};
|
|
|
|
|
|
if (numJson) {
|
|
|
|
|
|
json = { ...json, ...numJson };
|
|
|
|
|
|
}
|
|
|
|
|
|
customCols.push(json)
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
if (isHidden && !value) {
|
|
|
|
|
|
customHidCols.push(cuCfg);
|
|
|
|
|
|
}
|
|
|
|
|
|
this.initColumnConfigByEditCols({ editColumns, editPanels, customHidCols, customCols, columns, panels, customCfg });
|
|
|
|
|
|
this.setEditConfig({ editCode, editConfig: { columns: columns, customCfg, panels } });
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
getTreeConfigByTreePage(ret) {
|
|
|
|
|
|
const isShow = (this.props.data && this.props.data.isShow) ? this.props.data.isShow : false;
|
|
|
|
|
|
const isPermit = (this.props.data && this.props.data.isPermit) ? this.props.data.isPermit : false;
|
|
|
|
|
|
const treeConfig = {
|
|
|
|
|
|
formCode: ret.Nav_Form.CODE,
|
|
|
|
|
|
formId: ret.Nav_Form.ID,
|
|
|
|
|
|
api: ret.Nav_PageTree.QUERY_API_URL,
|
|
|
|
|
|
deleteApi: ret.Nav_PageTree.BATCH_DEL_API_URL,
|
|
|
|
|
|
relationField: ret.Nav_PageTree.RELATION_FIELD,
|
|
|
|
|
|
relationId: this.props.data ? this.props.data.id : null,
|
|
|
|
|
|
sort: ret.Nav_PageTree.SORT,
|
|
|
|
|
|
order: ret.Nav_PageTree.ORDER,
|
|
|
|
|
|
titleColumns: [],
|
|
|
|
|
|
btns: [],
|
|
|
|
|
|
};
|
|
|
|
|
|
if (ret.Nav_Columns && ret.Nav_Columns.length) {
|
|
|
|
|
|
ret.Nav_Columns.forEach(t => {
|
|
|
|
|
|
treeConfig.titleColumns.push({
|
|
|
|
|
|
field: t.FIELD_NAME,
|
|
|
|
|
|
});
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
if (ret.Nav_Btns && ret.Nav_Btns.length) {
|
|
|
|
|
|
ret.Nav_Btns.forEach(t => {
|
|
|
|
|
|
if (t.ENABLE_STATUS === 1) return;//不启用
|
|
|
|
|
|
treeConfig.btns.push({
|
|
|
|
|
|
btnType: t.BTN_TYPE,
|
|
|
|
|
|
id: t.ID,
|
|
|
|
|
|
isRule: t.IS_RULE,
|
|
|
|
|
|
disabled: isShow || isPermit,
|
|
|
|
|
|
btn: t,
|
|
|
|
|
|
});
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
return treeConfig;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
getFieldValue(field, thisRef) {
|
|
|
|
|
|
if (thisRef) {
|
|
|
|
|
|
return getDataFieldValue(thisRef.state.data, field);
|
|
|
|
|
|
}
|
|
|
|
|
|
return getDataFieldValue(this.state.data, field);
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
setFieldValue = (field, value, thisRef) => {
|
|
|
|
|
|
if (thisRef) {
|
|
|
|
|
|
thisRef.setFieldValueByBatch([{ field, value }]);
|
|
|
|
|
|
}
|
|
|
|
|
|
else {
|
|
|
|
|
|
this.setFieldValueByBatch([{ field, value }]);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
setFieldValueByBatch(fieldValues, thisRef) {
|
|
|
|
|
|
if (!fieldValues) return;
|
|
|
|
|
|
if (!thisRef) {
|
|
|
|
|
|
thisRef = this;
|
|
|
|
|
|
}
|
|
|
|
|
|
const headColumnConfig = thisRef.getEditConfig();
|
|
|
|
|
|
const cols = headColumnConfig ? headColumnConfig.columns : [];
|
|
|
|
|
|
const data = {};
|
|
|
|
|
|
fieldValues.forEach((n, i) => {
|
|
|
|
|
|
let value = n.value;
|
|
|
|
|
|
let field = n.field;
|
|
|
|
|
|
if (!field) return;
|
|
|
|
|
|
let col = null;
|
|
|
|
|
|
cols.forEach(item => {
|
|
|
|
|
|
if (item.field === field) {
|
|
|
|
|
|
n.col = col;
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
if (headColumnConfig.panels && headColumnConfig.panels.length > 0) {
|
|
|
|
|
|
headColumnConfig.panels.forEach(panel => {
|
|
|
|
|
|
if (panel.columns && panel.columns.length > 0)
|
|
|
|
|
|
panel.columns.forEach(col => {
|
|
|
|
|
|
n.col = col;
|
|
|
|
|
|
})
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
|
|
|
|
|
if (col) {
|
|
|
|
|
|
value = thisRef.getControlValue({ controlType: col.controlType, value, data: col.data });
|
|
|
|
|
|
setDataFieldValue(data, field, value);
|
|
|
|
|
|
}
|
|
|
|
|
|
else {
|
|
|
|
|
|
setDataFieldValue(data, field, value);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
n.col = col;
|
|
|
|
|
|
});
|
|
|
|
|
|
thisRef.saveHeadRecord(data, () => {
|
|
|
|
|
|
fieldValues.forEach((n, i) => {
|
|
|
|
|
|
if (n.col && n.col.column) {
|
|
|
|
|
|
thisRef.handleFieldChangeEvent(n.value, n.col.column);
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
});
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
setFieldEditable(field, editable, thisRef, editCode) {
|
|
|
|
|
|
if (!thisRef) {
|
|
|
|
|
|
thisRef = this;
|
|
|
|
|
|
}
|
|
|
|
|
|
const headColumnConfig = thisRef.getEditConfig({ "editCode": editCode });
|
|
|
|
|
|
const cols = headColumnConfig ? headColumnConfig.columns : [];
|
|
|
|
|
|
cols.forEach(col => {
|
|
|
|
|
|
if (col.field === field) {
|
|
|
|
|
|
col.disabled = !editable;
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
if (!editCode || editCode === 'head') {
|
|
|
|
|
|
if (headColumnConfig.panels && headColumnConfig.panels.length > 0) {
|
|
|
|
|
|
headColumnConfig.panels.forEach(panel => {
|
|
|
|
|
|
if (panel.columns && panel.columns.length > 0)
|
|
|
|
|
|
panel.columns.forEach(col => {
|
|
|
|
|
|
if (col.field === field) {
|
|
|
|
|
|
col.disabled = !editable;
|
|
|
|
|
|
}
|
|
|
|
|
|
})
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
|
|
|
|
|
thisRef.setEditConfig({
|
|
|
|
|
|
editConfig: headColumnConfig,
|
|
|
|
|
|
});
|
|
|
|
|
|
} else {
|
|
|
|
|
|
thisRef.setEditConfig({
|
|
|
|
|
|
editCode: editCode,
|
|
|
|
|
|
editConfig: cols,
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
setFieldRequired(field, required, thisRef) {
|
|
|
|
|
|
if (!thisRef) {
|
|
|
|
|
|
thisRef = this;
|
|
|
|
|
|
}
|
|
|
|
|
|
const headColumnConfig = thisRef.getEditConfig();
|
|
|
|
|
|
const cols = headColumnConfig ? headColumnConfig.columns : [];
|
|
|
|
|
|
cols.forEach(col => {
|
|
|
|
|
|
if (col.field === field) {
|
|
|
|
|
|
col.isRequire = required;
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
if (headColumnConfig.panels && headColumnConfig.panels.length > 0) {
|
|
|
|
|
|
headColumnConfig.panels.forEach(panel => {
|
|
|
|
|
|
if (panel.columns && panel.columns.length > 0)
|
|
|
|
|
|
panel.columns.forEach(col => {
|
|
|
|
|
|
if (col.field === field) {
|
|
|
|
|
|
col.isRequire = required;
|
|
|
|
|
|
}
|
|
|
|
|
|
})
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
|
|
|
|
|
thisRef.setEditConfig({
|
|
|
|
|
|
editConfig: headColumnConfig,
|
|
|
|
|
|
});
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
setFieldVisible = (field, visible, thisRef) => {
|
|
|
|
|
|
if (thisRef) {
|
|
|
|
|
|
thisRef.setFieldVisibleByBatch([{ field, visible }], thisRef);
|
|
|
|
|
|
}
|
|
|
|
|
|
else {
|
|
|
|
|
|
this.setFieldVisibleByBatch([{ field, visible }]);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
setFieldVisibleByBatch = (list, thisRef) => {
|
|
|
|
|
|
if (!list || list.length === 0) return;
|
|
|
|
|
|
if (!thisRef) {
|
|
|
|
|
|
thisRef = this;
|
|
|
|
|
|
}
|
|
|
|
|
|
const params = {};
|
|
|
|
|
|
list.forEach(t => {
|
|
|
|
|
|
params[t.field] = t.visible;
|
|
|
|
|
|
});
|
|
|
|
|
|
thisRef.setHeadFieldVisible(params);
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
getEditConfigByPage({ formCode, onComplete }) {
|
|
|
|
|
|
const { dispatch, login, form } = this.props;
|
|
|
|
|
|
const { OrgId: ORG_ID } = login;
|
|
|
|
|
|
if (form != null) {
|
|
|
|
|
|
form.resetFields();
|
|
|
|
|
|
}
|
|
|
|
|
|
const json = initFilter(ORG_ID, formCode, '', 0);
|
|
|
|
|
|
dispatch({
|
|
|
|
|
|
type: 'editPage/getEditPageConfigInfo',
|
|
|
|
|
|
payload: json,
|
|
|
|
|
|
onComplete: (ret) => {
|
|
|
|
|
|
if (ret) {
|
|
|
|
|
|
this.getEditUserCustomConfigInfo(ret, onComplete);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
getEditUserCustomConfigInfo = (ret, onComplete) => {
|
|
|
|
|
|
const { login } = this.props;
|
|
|
|
|
|
if (ret.Nav_PageEdit && ret.Nav_PageEdit.Nav_PageEdit) {
|
|
|
|
|
|
let json2 = initFilter(login.OrgId, ret.Nav_PageEdit.Nav_PageEdit.ID, "NUM", 0, 1, login.user.ID);
|
|
|
|
|
|
this.props.dispatch({
|
|
|
|
|
|
type: 'editPage/getUserCustomConfigInfo',
|
|
|
|
|
|
payload: json2,
|
|
|
|
|
|
onComplete: (ret2) => {
|
|
|
|
|
|
ret.Nav_CustomHiddenEditCols = ret2 ? ret2.Nav_CustomHiddenEditCols : null;
|
|
|
|
|
|
ret.Nav_CustomCols = ret2 ? ret2.Nav_CustomCols : null;
|
|
|
|
|
|
this.doGetEditConfigByPage(ret, onComplete);
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
else {
|
|
|
|
|
|
this.doGetEditConfigByPage(ret, onComplete);
|
|
|
|
|
|
}
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
doGetEditConfigByPage = (ret, onComplete) => {
|
|
|
|
|
|
let editData = {};
|
|
|
|
|
|
let btnData = [], columns = [], customCfg = [], allColumns = [], navFields = [], allPanels = [], panels = [],
|
|
|
|
|
|
activePanelIds = [], detailEditCodes = [], rowBtns = [], btns = [];
|
|
|
|
|
|
const subTable = [];
|
|
|
|
|
|
if (ret.Nav_PageEdit) {
|
|
|
|
|
|
editData = ret.Nav_PageEdit.Nav_PageEdit;
|
|
|
|
|
|
btnData = ret.Nav_PageEdit.Nav_Btns;
|
|
|
|
|
|
allColumns = ret.Nav_PageEdit.Nav_Columns;
|
|
|
|
|
|
allPanels = ret.Nav_PageEdit.Nav_EditPanels;
|
|
|
|
|
|
if (allColumns && allColumns.length) {
|
|
|
|
|
|
allColumns.forEach(t => {
|
|
|
|
|
|
if (t.FIELD_NAME && t.FIELD_NAME.indexOf('.') > 0) {
|
|
|
|
|
|
let pos = t.FIELD_NAME.lastIndexOf('.');
|
|
|
|
|
|
if (pos >= 0) {
|
|
|
|
|
|
let includeTable = t.FIELD_NAME.substring(0, pos);
|
|
|
|
|
|
navFields.push(includeTable);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
if (t.CONTROL_TYPE == 24)//分页下拉多选
|
|
|
|
|
|
{
|
|
|
|
|
|
navFields.push(t.FIELD_NAME);
|
|
|
|
|
|
if (t.INPUT_LABEL_FIELD && t.INPUT_LABEL_FIELD.indexOf('.') > 0) {
|
|
|
|
|
|
let pos = t.INPUT_LABEL_FIELD.lastIndexOf('.');
|
|
|
|
|
|
if (pos >= 0) {
|
|
|
|
|
|
let includeTable = t.INPUT_LABEL_FIELD.substring(0, pos);
|
|
|
|
|
|
navFields.push(t.FIELD_NAME + "." + includeTable);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
// 针对横向树结构的复制,赋值
|
|
|
|
|
|
const childsetfield = editData.CHILD_SET_FIELD;
|
|
|
|
|
|
const parentcopyfield = editData.PARENT_COPY_FIELD;
|
|
|
|
|
|
if (childsetfield && parentcopyfield && childsetfield.split(',').length === parentcopyfield.split(',').length) {
|
|
|
|
|
|
this.getparentinfo = true;
|
|
|
|
|
|
const childsetfields = childsetfield.split(',');
|
|
|
|
|
|
const parentcopyfields = parentcopyfield.split(',');
|
|
|
|
|
|
for (const childset of childsetfields) {
|
|
|
|
|
|
if (childset.indexOf('.') > 0) {
|
|
|
|
|
|
let pos = childset.lastIndexOf('.');
|
|
|
|
|
|
if (pos >= 0) {
|
|
|
|
|
|
let includeTable = childset.substring(0, pos);
|
|
|
|
|
|
navFields.push(includeTable);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
for (const parentcopy of parentcopyfields) {
|
|
|
|
|
|
if (parentcopy.indexOf('.') > 0) {
|
|
|
|
|
|
let pos = parentcopy.lastIndexOf('.');
|
|
|
|
|
|
if (pos >= 0) {
|
|
|
|
|
|
let includeTable = parentcopy.substring(0, pos);
|
|
|
|
|
|
navFields.push(includeTable);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
if (ret.Nav_SubPageEdits && ret.Nav_SubPageEdits.length) {
|
|
|
|
|
|
ret.Nav_SubPageEdits.forEach(t => {
|
|
|
|
|
|
const tmpCols = t.Nav_Columns;
|
|
|
|
|
|
t.Nav_PageEdit.editColumns = tmpCols;
|
|
|
|
|
|
t.Nav_PageEdit.btns = t.Nav_Btns;
|
|
|
|
|
|
t.Nav_PageEdit.isDetail = t.Nav_ParentPageDetailModel === null || t.Nav_ParentPageDetailModel === undefined;
|
|
|
|
|
|
t.Nav_PageEdit.Nav_SubPageEdits = t.Nav_SubPageEdits;
|
|
|
|
|
|
t.Nav_PageEdit.Nav_ParentPageDetailModel = t.Nav_ParentPageDetailModel;
|
|
|
|
|
|
subTable.push(t.Nav_PageEdit);
|
|
|
|
|
|
navFields.push(t.NavFields);
|
|
|
|
|
|
if (t.Nav_PageEdit.isDetail) {
|
|
|
|
|
|
detailEditCodes.push(t.Nav_PageEdit.CODE);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (tmpCols && tmpCols.length) {
|
|
|
|
|
|
tmpCols.forEach(t1 => {
|
|
|
|
|
|
if (t1.FIELD_NAME && t1.FIELD_NAME.indexOf('.') > 0) {
|
|
|
|
|
|
let pos = t1.FIELD_NAME.lastIndexOf('.');
|
|
|
|
|
|
if (pos >= 0) {
|
|
|
|
|
|
let includeTable = t1.FIELD_NAME.substring(0, pos);
|
|
|
|
|
|
navFields.push(t.NavFields + "." + includeTable);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (btnData && btnData.length) {
|
|
|
|
|
|
const isShow = (this.props.data && this.props.data.isShow) ? this.props.data.isShow : false;
|
|
|
|
|
|
const isPermit = (this.props.data && this.props.data.isPermit) ? this.props.data.isPermit : false;
|
|
|
|
|
|
btnData.forEach(t => {
|
|
|
|
|
|
if (t.ENABLE_STATUS === 1) return;
|
|
|
|
|
|
//为添加权限预留
|
|
|
|
|
|
if (!this.props.data?.homeReload) {
|
|
|
|
|
|
if (t.IS_RULE && !permissionUtils(this.props.login).checkBtn(ret.Nav_Form.ID, t.ID)) return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// if(t.BTN_FUN_TYPE===1){
|
|
|
|
|
|
// this.getBtnConfigByPageBtn(t,rowBtns);
|
|
|
|
|
|
// }
|
|
|
|
|
|
// else{
|
|
|
|
|
|
// this.getBtnConfigByPageBtn(t,btns,true);
|
|
|
|
|
|
// }
|
|
|
|
|
|
const btnConfig = this.getBtnConfigByPageBtn(t, btns, true);
|
|
|
|
|
|
if (btnConfig) {
|
|
|
|
|
|
if (btnConfig.btnType === 1) {
|
|
|
|
|
|
btnConfig.isHidden = isShow || isPermit;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
this.initColumnConfigByEditCols({ editColumns: allColumns, editPanels: allPanels, customHidCols: ret.Nav_CustomHiddenEditCols, customCols: ret.Nav_CustomCols, columns, panels, customCfg });
|
|
|
|
|
|
|
|
|
|
|
|
if (panels && panels.length) {
|
|
|
|
|
|
panels.forEach(p => {
|
|
|
|
|
|
if (p.panel && p.panel.IS_DEFAULT_EXPAND) {
|
|
|
|
|
|
activePanelIds.push(p.panel.ID);
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
this.setState({
|
|
|
|
|
|
jsFile: ret.Nav_Form.JS_FILES,
|
|
|
|
|
|
activePanelIds,
|
|
|
|
|
|
formData: ret.Nav_Form,
|
|
|
|
|
|
btnLoading: false,
|
|
|
|
|
|
}, () => {
|
|
|
|
|
|
this.setEditConfig({
|
|
|
|
|
|
editConfig: {
|
|
|
|
|
|
columns: columns,
|
|
|
|
|
|
id: editData.ID,
|
|
|
|
|
|
saveApi: editData.API_URL,
|
|
|
|
|
|
batchSaveApi: editData.BATCH_UPDATE_API,
|
|
|
|
|
|
customCfg,
|
|
|
|
|
|
getApi: editData.QUERY_API_URL,
|
|
|
|
|
|
batchGetApi: editData.BATCH_QUERY_API,
|
|
|
|
|
|
editCode: editData.CODE,
|
|
|
|
|
|
editPage: editData, btns, formData: ret.Nav_Form, detailEditCodes, rowBtns,
|
|
|
|
|
|
formId: ret.Nav_Form.ID, formCode: ret.Nav_Form.CODE,
|
|
|
|
|
|
authOrgCodes: ret.Nav_Form.AUTH_ORG_CODES,
|
|
|
|
|
|
editColumns: allColumns, editPanels: allPanels, panels, allNavFields: navFields
|
|
|
|
|
|
}, onComplete: () => {
|
|
|
|
|
|
let i = 0;
|
|
|
|
|
|
if (subTable && subTable.length) {
|
|
|
|
|
|
subTable.forEach(t => {
|
|
|
|
|
|
this.getEditTableConfigByPage({
|
|
|
|
|
|
editPage: t, onComplete: () => {
|
|
|
|
|
|
i++;
|
|
|
|
|
|
if (i === subTable.length) {
|
|
|
|
|
|
this.onGetEntityData(allColumns, navFields);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
else {
|
|
|
|
|
|
this.onGetEntityData(allColumns, navFields);
|
|
|
|
|
|
}
|
|
|
|
|
|
if (typeof onComplete === 'function') {
|
|
|
|
|
|
onComplete();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
});
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
getEditTableConfigByPage({ editPage, onComplete }) {
|
|
|
|
|
|
let json2 = initFilter(this.props.login.OrgId, editPage.ID, "NUM", 0, 1, this.props.login.userId);
|
|
|
|
|
|
this.props.dispatch({
|
|
|
|
|
|
type: 'editPage/getUserCustomConfigInfo',
|
|
|
|
|
|
payload: json2,
|
|
|
|
|
|
onComplete: (ret2) => {
|
|
|
|
|
|
this.doGetEditTableConfigByPage(editPage, ret2 ? ret2.Nav_CustomHiddenEditCols : null, ret2 ? ret2.Nav_CustomCols : null, onComplete);
|
|
|
|
|
|
}
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
getBtnConfigByPageBtn = (btn, btnConfigs, isHeadBtn, isDetailBtn) => {
|
|
|
|
|
|
const btnConfig = {
|
|
|
|
|
|
id: btn.ID,
|
|
|
|
|
|
code: btn.CODE,
|
|
|
|
|
|
label: btn.LABEL,
|
|
|
|
|
|
btnType: btn.BTN_TYPE,
|
|
|
|
|
|
isRule: btn.IS_RULE,
|
|
|
|
|
|
clickEventFunName: btn.CLICK_EVENT,
|
|
|
|
|
|
css: btn.CSS,
|
|
|
|
|
|
icon: btn.ICON,
|
|
|
|
|
|
formCode: btn.FORM_CODE,
|
|
|
|
|
|
customParams: btn.CUSTOM_PARAMS,
|
|
|
|
|
|
checkSelected: btn.SELECT_SHOW,
|
|
|
|
|
|
isConfirm: btn.IS_COMFIRM,
|
|
|
|
|
|
api: btn.API_URL,
|
|
|
|
|
|
num: btn.NUM,
|
|
|
|
|
|
saveClearType: btn.SAVE_CLEAR_TYPE,
|
|
|
|
|
|
saveCloseType: btn.SAVE_CLOSE_TYPE,
|
|
|
|
|
|
saveField: btn.INPUT_SAVE_FIELD,
|
|
|
|
|
|
navField: btn.INPUT_NAV_FIELD,
|
|
|
|
|
|
btn,
|
|
|
|
|
|
isAddLog: true,
|
|
|
|
|
|
isHeadBtn,
|
|
|
|
|
|
isDetailBtn,
|
|
|
|
|
|
enableStatus: btn.ENABLE_STATUS
|
|
|
|
|
|
};
|
|
|
|
|
|
btnConfigs.push(btnConfig);
|
|
|
|
|
|
return btnConfig;
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
doGetEditTableConfigByPage = (editPage, customHidCols, customCols, onComplete) => {
|
|
|
|
|
|
const isShow = (this.props.data && this.props.data.isShow) ? this.props.data.isShow : false;
|
|
|
|
|
|
const isPermit = (this.props.data && this.props.data.isPermit) ? this.props.data.isPermit : false;
|
|
|
|
|
|
const formId = this.state.formData.ID;
|
|
|
|
|
|
const columns = [], customCfg = [], btns = [], rowBtns = [], rightBtns = [];
|
|
|
|
|
|
let checked = editPage.SHOW_CHECK;
|
|
|
|
|
|
this.initColumnConfigByEditCols({ editColumns: editPage.editColumns, customHidCols, customCols, columns, customCfg });
|
|
|
|
|
|
// let isAddBtnVisible = false;
|
|
|
|
|
|
// let isDeleteVisible = false;
|
|
|
|
|
|
// let isRowDeleteVisible = false;
|
|
|
|
|
|
if (editPage.btns && editPage.btns.length) {
|
|
|
|
|
|
editPage.btns.forEach(t => {
|
|
|
|
|
|
if (t.ENABLE_STATUS === 1) return;
|
|
|
|
|
|
//为添加权限预留
|
|
|
|
|
|
if (!this.props.data?.homeReload) {
|
|
|
|
|
|
if (t.IS_RULE && !permissionUtils(this.props.login).checkBtn(formId, t.ID)) return;
|
|
|
|
|
|
}
|
|
|
|
|
|
let btnConfig = null;
|
|
|
|
|
|
if (t.BTN_FUN_TYPE === 1) {
|
|
|
|
|
|
btnConfig = this.getBtnConfigByPageBtn(t, rowBtns, false, true);
|
|
|
|
|
|
}
|
|
|
|
|
|
else {
|
|
|
|
|
|
btnConfig = this.getBtnConfigByPageBtn(t, btns, false, true);
|
|
|
|
|
|
}
|
|
|
|
|
|
if (btnConfig) {
|
|
|
|
|
|
if (btnConfig.btnType === 1) {
|
|
|
|
|
|
btnConfig.isHidden = isShow || isPermit;
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (btnConfig.btnType === 3) {
|
|
|
|
|
|
btnConfig.disabled = isShow || isPermit && !editPage.IS_PERMIT_ADD_ROW || editPage.IS_SUB_ADD_BTN_DISABLED;
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (btnConfig.btnType === 4) {
|
|
|
|
|
|
if (t.BTN_FUN_TYPE === 0) {
|
|
|
|
|
|
checked = true;
|
|
|
|
|
|
}
|
|
|
|
|
|
btnConfig.disabled = isShow || isPermit && !editPage.IS_PERMIT_DEL_ROW || editPage.IS_SUB_DELETE_BTN_DISABLED;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
rightBtns.push({
|
|
|
|
|
|
id: 'customBtn' + editPage.ID,
|
|
|
|
|
|
btnType: 7,
|
|
|
|
|
|
code: 'customConfigBtn',
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
var isShowRowNO = true
|
|
|
|
|
|
if (editPage.IS_SHOWROWNO != undefined && editPage.IS_SHOWROWNO != null && editPage.IS_SHOWROWNO == false) {
|
|
|
|
|
|
isShowRowNO = false
|
|
|
|
|
|
}
|
|
|
|
|
|
const editConfig = {
|
|
|
|
|
|
id: editPage.ID,
|
|
|
|
|
|
editColumns: editPage.editColumns,
|
|
|
|
|
|
label: editPage.LABEL_NAME,
|
|
|
|
|
|
editPage,
|
|
|
|
|
|
formId: this.state.formData.ID,
|
|
|
|
|
|
authOrgCodes: this.state.formData.AUTH_ORG_CODES,
|
|
|
|
|
|
formCode: this.state.formData.CODE,
|
|
|
|
|
|
formData: this.state.formData,
|
|
|
|
|
|
editCode: editPage.CODE,
|
|
|
|
|
|
columns: columns,
|
|
|
|
|
|
sortField: editPage.SORT_FIELDS,
|
|
|
|
|
|
sortOrder: editPage.SORT_ORDERS,
|
|
|
|
|
|
isRowNo: isShowRowNO,
|
|
|
|
|
|
width: editPage.WIDTH,
|
|
|
|
|
|
height: editPage.HEIGHT,
|
|
|
|
|
|
checked,
|
|
|
|
|
|
isShow,
|
|
|
|
|
|
dataNav: editPage.NAV_PROPERTY,
|
|
|
|
|
|
isDetailRequired: editPage.IS_DETAIL_REQUIRED,
|
|
|
|
|
|
isPermit,
|
|
|
|
|
|
parentFieldName: editPage.RELATION_FIELD,
|
|
|
|
|
|
getHeadFieldValue: (field) => { return this.getFieldValue(field); },
|
|
|
|
|
|
customCfg,
|
|
|
|
|
|
entityOrgType: editPage.EDIT_PAGE_ENTITY_ORG_TYPE,
|
|
|
|
|
|
btns,
|
|
|
|
|
|
rowBtns,
|
|
|
|
|
|
rightBtns,
|
|
|
|
|
|
childrenEditCodes: [],
|
|
|
|
|
|
hasChildren: editPage.Nav_SubPageEdits && editPage.Nav_SubPageEdits.length > 0,
|
|
|
|
|
|
parentEditCode: (editPage.Nav_ParentPageDetailModel && editPage.Nav_ParentPageDetailModel.Nav_PageEdit ?
|
|
|
|
|
|
editPage.Nav_ParentPageDetailModel.Nav_PageEdit.CODE : null),
|
|
|
|
|
|
};
|
|
|
|
|
|
if (editPage.Nav_SubPageEdits && editPage.Nav_SubPageEdits.length) {
|
|
|
|
|
|
editPage.Nav_SubPageEdits.forEach(t1 => {
|
|
|
|
|
|
if (t1.Nav_PageEdit) {
|
|
|
|
|
|
editConfig.childrenEditCodes.push(t1.Nav_PageEdit.CODE);
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
setTimeout(() => {
|
|
|
|
|
|
this.setEditConfig({ editCode: editConfig.editCode, editConfig, onComplete });
|
|
|
|
|
|
}, 500);
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
onCollapseChange(e) {
|
|
|
|
|
|
this.setState({ activePanelIds: e });
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 渲染表头区域
|
|
|
|
|
|
onRenderPanel() {
|
|
|
|
|
|
const ediTableConfig = this.getEditConfig();
|
|
|
|
|
|
if (ediTableConfig && ediTableConfig.panels && ediTableConfig.panels.length) {
|
|
|
|
|
|
return (
|
|
|
|
|
|
<Collapse
|
|
|
|
|
|
activeKey={this.state.activePanelIds}
|
|
|
|
|
|
onChange={(e) => this.onCollapseChange(e)}
|
|
|
|
|
|
style={{ marginBottom: 15 }}
|
|
|
|
|
|
>
|
|
|
|
|
|
{
|
|
|
|
|
|
ediTableConfig.panels.map(t => {
|
|
|
|
|
|
return <Panel header={t.panel.LABEL} key={t.id}>
|
|
|
|
|
|
{
|
|
|
|
|
|
this.createControls(t.columns, this.state.data)
|
|
|
|
|
|
}
|
|
|
|
|
|
</Panel>
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
|
|
|
|
|
</Collapse>
|
|
|
|
|
|
)
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 在获取完编辑配置信息后,根据配置获取实体数据
|
|
|
|
|
|
onGetEntityData(allColumns, navFields) {
|
|
|
|
|
|
let { id: ID, copySrcId, login, data } = this.props
|
|
|
|
|
|
if (!copySrcId) {
|
|
|
|
|
|
copySrcId = this.copySrcId;
|
|
|
|
|
|
this.copySrcId = null;
|
|
|
|
|
|
}
|
|
|
|
|
|
if (!ID && !data.isInoreId) {
|
|
|
|
|
|
ID = data.id;
|
|
|
|
|
|
}
|
|
|
|
|
|
if (copySrcId) {
|
|
|
|
|
|
this.billStatus = 2;
|
|
|
|
|
|
const json = initFilter(login.OrgId);
|
|
|
|
|
|
extendRule(json, 'ID', 1, copySrcId);
|
|
|
|
|
|
this.getCopyEntityData(json, navFields, allColumns);
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (ID && !this.props.isAddH) {
|
|
|
|
|
|
this.billStatus = 1;
|
|
|
|
|
|
const json = initFilter(login.OrgId);
|
|
|
|
|
|
extendRule(json, 'ID', 1, ID);
|
|
|
|
|
|
this.getEntityData(json, navFields);
|
|
|
|
|
|
}
|
|
|
|
|
|
// 分页下拉组件快捷编辑表单添加的过滤条件,通过此过滤条件,达到表单编辑的效果,而不是新增效果
|
|
|
|
|
|
else if (data.editFormFilter && data.editFormFilterValue) {
|
|
|
|
|
|
this.billStatus = 1;
|
|
|
|
|
|
const json = initFilter(login.OrgId);
|
|
|
|
|
|
extendRule(json, data.editFormFilter, 1, data.editFormFilterValue);
|
|
|
|
|
|
this.getEntityData(json, navFields);
|
|
|
|
|
|
}
|
|
|
|
|
|
else {
|
|
|
|
|
|
this.billStatus = 0;
|
|
|
|
|
|
if (ID && this.getparentinfo && this.props.isAddH) {
|
|
|
|
|
|
const json = initFilter(login.OrgId);
|
|
|
|
|
|
extendRule(json, 'ID', 1, ID);
|
|
|
|
|
|
this.getNewCopyEntityData(json, navFields, allColumns);
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
this.getNewEntityData(allColumns);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
getNewEntityData = (allColumns, copydatas = {}) => {
|
|
|
|
|
|
let newData = {};
|
|
|
|
|
|
if (this.props.data && this.props.data.newData) {
|
|
|
|
|
|
newData = this.props.data.newData;
|
|
|
|
|
|
}
|
|
|
|
|
|
//填充默认值
|
|
|
|
|
|
const nArr = this.getDefaultValue(allColumns);
|
|
|
|
|
|
const editConfig = this.getEditConfig();
|
|
|
|
|
|
let newDataObj = {
|
|
|
|
|
|
ID: guid(),
|
|
|
|
|
|
ORG_ID: this.props.login.OrgId,
|
|
|
|
|
|
FORM_ID: this.state.formData.ID,
|
|
|
|
|
|
ENTITY_ORG_TPYE: editConfig.editPage ? editConfig.editPage.EDIT_PAGE_ENTITY_ORG_TYPE : 0,
|
|
|
|
|
|
...nArr,
|
|
|
|
|
|
PARENT_ID: this.props.parentId,
|
|
|
|
|
|
...this.state.initData,
|
|
|
|
|
|
...newData,
|
|
|
|
|
|
...copydatas
|
|
|
|
|
|
};
|
|
|
|
|
|
if (this.props.data.TreeSelected && this.props.data.TreeSelected.length > 0 && this.props.data.TreeSelectId) {
|
|
|
|
|
|
newDataObj[this.props.data.TreeSelectId] = this.props.data.TreeSelected[0];
|
|
|
|
|
|
}
|
|
|
|
|
|
if (this.props.customParams) {
|
|
|
|
|
|
Object.keys(this.props.customParams).forEach((n) => {
|
|
|
|
|
|
newDataObj[n] = this.props.customParams[n];
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
this.setState({
|
|
|
|
|
|
data: newDataObj,
|
|
|
|
|
|
oldEditData: null,
|
|
|
|
|
|
}, () => {
|
|
|
|
|
|
if (editConfig.editPage && editConfig.editPage.CODE_FIELD_NAME) {
|
|
|
|
|
|
this.getCodeRule(editConfig.editPage.CODE_RULE_TYPE, editConfig.editPage.CODE_FIELD_NAME);
|
|
|
|
|
|
}
|
|
|
|
|
|
if (allColumns && allColumns.length) {
|
|
|
|
|
|
allColumns.forEach(t => {
|
|
|
|
|
|
if (t.CONTROL_TYPE === 14) {
|
|
|
|
|
|
this.getCodeRule(t.CODE_RULE_TYPE, t.FIELD_NAME);
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
this.handleBeforeEditEvent(true, false, null);
|
|
|
|
|
|
});
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
getCopyEntityData = (json, navFields, allColumns) => {
|
|
|
|
|
|
const editConfig = this.getEditConfig();
|
|
|
|
|
|
if (!editConfig || !editConfig.editPage || !editConfig.editPage.QUERY_API_URL) return;
|
|
|
|
|
|
let type = 'app/getDataByPost';
|
|
|
|
|
|
const tmp = [...new Set(navFields)];
|
|
|
|
|
|
tmp.forEach((n, i) => {
|
|
|
|
|
|
extendInclude(json, n);
|
|
|
|
|
|
});
|
|
|
|
|
|
let newData = {};
|
|
|
|
|
|
if (this.props.data && this.props.data.newData) {
|
|
|
|
|
|
newData = this.props.data.newData;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
const getCopyEntity = (columns, entity) => {
|
|
|
|
|
|
const copyEntity = {};
|
|
|
|
|
|
const copyFields = [];
|
|
|
|
|
|
const copyStatics = {
|
|
|
|
|
|
PARENT_ID: false,
|
|
|
|
|
|
IS_LEAF: false,
|
|
|
|
|
|
ORG_ID: false,
|
|
|
|
|
|
};
|
|
|
|
|
|
columns.forEach((n, i) => {
|
|
|
|
|
|
if (n.CONTROL_TYPE === 9) {
|
|
|
|
|
|
if (n.IS_COPY) {
|
|
|
|
|
|
if (n.FIELD_NAME) {
|
|
|
|
|
|
const a = n.FIELD_NAME.split('.');
|
|
|
|
|
|
if (a && a.length) {
|
|
|
|
|
|
copyFields.push(a[0]);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
if (n.INPUT_ID_FIELD) {
|
|
|
|
|
|
copyFields.push(n.INPUT_ID_FIELD);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
else {
|
|
|
|
|
|
if (n.IS_COPY) {
|
|
|
|
|
|
if (n.FIELD_NAME && n.FIELD_NAME.indexOf('.') === -1) {
|
|
|
|
|
|
copyFields.push(n.FIELD_NAME);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
const tmp = copyStatics[n.FIELD_NAME];
|
|
|
|
|
|
if (tmp !== undefined) {
|
|
|
|
|
|
copyStatics[n.FIELD_NAME] = true;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
Object.keys(copyStatics).forEach((n) => {
|
|
|
|
|
|
if (!copyStatics[n]) {
|
|
|
|
|
|
copyFields.push(n);
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
if (copyFields && copyFields.length) {
|
|
|
|
|
|
copyFields.forEach((n, i) => {
|
|
|
|
|
|
const v = getDataFieldValue(entity, n);
|
|
|
|
|
|
if (v !== undefined && v !== null) {
|
|
|
|
|
|
setDataFieldValue(copyEntity, n, v);
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
return copyEntity;
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const nArr = this.getDefaultValue(allColumns);
|
|
|
|
|
|
const { dispatch } = this.props;
|
|
|
|
|
|
//debugger// extendIgnoreDataRule(json)
|
|
|
|
|
|
dispatch({
|
|
|
|
|
|
type: type,
|
|
|
|
|
|
payload: json,
|
|
|
|
|
|
url: editConfig.editPage.QUERY_API_URL,
|
|
|
|
|
|
onComplete: (ret) => {
|
|
|
|
|
|
if (ret) {
|
|
|
|
|
|
let copyEntity = {
|
|
|
|
|
|
ID: guid(),
|
|
|
|
|
|
ORG_ID: this.props.login.OrgId,
|
|
|
|
|
|
...this.state.initData,
|
|
|
|
|
|
...newData,
|
|
|
|
|
|
...nArr,
|
|
|
|
|
|
};
|
|
|
|
|
|
if (allColumns) {
|
|
|
|
|
|
const tmp = getCopyEntity(allColumns, ret);
|
|
|
|
|
|
copyEntity = {
|
|
|
|
|
|
...copyEntity,
|
|
|
|
|
|
...tmp,
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
const editConfig = this.getEditConfig();
|
|
|
|
|
|
if (editConfig && editConfig.detailEditCodes && editConfig.detailEditCodes.length) {
|
|
|
|
|
|
const doCopyDetail = (editCodes, tempData, parentData) => {
|
|
|
|
|
|
if (editCodes && editCodes.length) {
|
|
|
|
|
|
editCodes.forEach(t => {
|
|
|
|
|
|
const config = this.getEditConfig({ editCode: t });
|
|
|
|
|
|
if (!config) return;
|
|
|
|
|
|
const tmps = getDataFieldValue(tempData, config.dataNav);
|
|
|
|
|
|
const copyTmps = [];
|
|
|
|
|
|
if (tmps && tmps.length) {
|
|
|
|
|
|
tmps.forEach(n => {
|
|
|
|
|
|
let tmpCopyEntity = {
|
|
|
|
|
|
ID: guid,
|
|
|
|
|
|
ORG_ID: this.props.login.OrgId,
|
|
|
|
|
|
};
|
|
|
|
|
|
if (config.editColumns) {
|
|
|
|
|
|
this.fillEditColumnDefaultValue({ record: tmpCopyEntity, cols: config.editColumns });
|
|
|
|
|
|
const tmpCopy = getCopyEntity(config.editColumns, n);
|
|
|
|
|
|
tmpCopyEntity = {
|
|
|
|
|
|
...tmpCopyEntity,
|
|
|
|
|
|
...tmpCopy,
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
tmpCopyEntity[config.parentFieldName] = parentData.ID;
|
|
|
|
|
|
copyTmps.push(tmpCopyEntity);
|
|
|
|
|
|
if (config.childrenEditCodes && config.childrenEditCodes.length) {
|
|
|
|
|
|
doCopyDetail(config.childrenEditCodes, n, tmpCopyEntity);
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
this.getRowNoByData({ data: copyTmps, sortField: config.sortField, sortOrder: config.sortOrder, });
|
|
|
|
|
|
setDataFieldValue(copyEntity, config.dataNav, copyTmps);
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
doCopyDetail(editConfig.detailEditCodes, ret, copyEntity);
|
|
|
|
|
|
}
|
|
|
|
|
|
this.setState({
|
|
|
|
|
|
data: copyEntity,
|
|
|
|
|
|
oldEditData: null,
|
|
|
|
|
|
}, () => {
|
|
|
|
|
|
if (editConfig.editPage.CODE_FIELD_NAME) {
|
|
|
|
|
|
this.getCodeRule(editConfig.editPage.CODE_RULE_TYPE, editConfig.editPage.CODE_FIELD_NAME);
|
|
|
|
|
|
}
|
|
|
|
|
|
if (allColumns && allColumns.length) {
|
|
|
|
|
|
allColumns.forEach(t => {
|
|
|
|
|
|
if (t.CONTROL_TYPE === 14) {
|
|
|
|
|
|
this.getCodeRule(t.CODE_RULE_TYPE, t.FIELD_NAME);
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
if (editConfig && editConfig.detailEditCodes && editConfig.detailEditCodes.length) {
|
|
|
|
|
|
editConfig.detailEditCodes.forEach(t => {
|
|
|
|
|
|
const config = this.getEditConfig({ editCode: t });
|
|
|
|
|
|
const editCode = t;
|
|
|
|
|
|
if (config.editColumns && config.editColumns.length) {
|
|
|
|
|
|
config.editColumns.forEach(t2 => {
|
|
|
|
|
|
if (t2.CONTROL_TYPE === 14) {
|
|
|
|
|
|
const table = this.getEditTableData({ editCode });
|
|
|
|
|
|
if (table && table.length) {
|
|
|
|
|
|
table.forEach(t1 => {
|
|
|
|
|
|
this.getCodeRule(t2.CODE_RULE_TYPE, t2.FIELD_NAME, t1.ID, editCode);
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
this.handleBeforeEditEvent(true, true, ret);
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
getNewCopyEntityData = (json, navFields, allColumns) => {
|
|
|
|
|
|
const editConfig = this.getEditConfig();
|
|
|
|
|
|
if (!editConfig || !editConfig.editPage || !editConfig.editPage.QUERY_API_URL) return;
|
|
|
|
|
|
const tmp = [...new Set(navFields)];
|
|
|
|
|
|
tmp.forEach((n, i) => {
|
|
|
|
|
|
extendInclude(json, n);
|
|
|
|
|
|
});
|
|
|
|
|
|
const { dispatch } = this.props;
|
|
|
|
|
|
//debugger// extendIgnoreDataRule(json)
|
|
|
|
|
|
dispatch({
|
|
|
|
|
|
type: 'app/getDataByPost',
|
|
|
|
|
|
payload: json,
|
|
|
|
|
|
url: editConfig.editPage.QUERY_API_URL,
|
|
|
|
|
|
onComplete: (ret) => {
|
|
|
|
|
|
if (ret) {
|
|
|
|
|
|
const copydatas = {};
|
|
|
|
|
|
const parentcopyfields = editConfig.editPage.PARENT_COPY_FIELD.split(',');
|
|
|
|
|
|
const childsetfields = editConfig.editPage.CHILD_SET_FIELD.split(',');
|
|
|
|
|
|
for (let i = 0; i < parentcopyfields.length; i++) {
|
|
|
|
|
|
setDataFieldValue(copydatas, childsetfields[i], getDataFieldValue(ret, parentcopyfields[i]))
|
|
|
|
|
|
// copydatas[childsetfields[i]] = getDataFieldValue(ret, parentcopyfields[i])
|
|
|
|
|
|
}
|
|
|
|
|
|
this.getNewEntityData(allColumns, copydatas);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
getEntityData = (json, navFields) => {
|
|
|
|
|
|
const editConfig = this.getEditConfig();
|
|
|
|
|
|
if (!editConfig || !editConfig.editPage || !editConfig.editPage.QUERY_API_URL) return;
|
|
|
|
|
|
const tmp = [...new Set(navFields)];
|
|
|
|
|
|
tmp.forEach((n, i) => {
|
|
|
|
|
|
extendInclude(json, n);
|
|
|
|
|
|
});
|
|
|
|
|
|
const { dispatch } = this.props;
|
|
|
|
|
|
if (this.props.homeLoad) {
|
|
|
|
|
|
json["IgnoreDataRule"] = true;
|
|
|
|
|
|
}
|
|
|
|
|
|
//debugger
|
|
|
|
|
|
// extendIgnoreDataRule(json)
|
|
|
|
|
|
dispatch({
|
|
|
|
|
|
type: 'app/getDataByPost',
|
|
|
|
|
|
payload: json,
|
|
|
|
|
|
url: editConfig.editPage.QUERY_API_URL,
|
|
|
|
|
|
onComplete: (ret) => {
|
|
|
|
|
|
if (ret) {
|
|
|
|
|
|
const resetData = (editCodes, tempData) => {
|
|
|
|
|
|
if (editCodes && editCodes.length) {
|
|
|
|
|
|
editCodes.forEach(t => {
|
|
|
|
|
|
const config = this.getEditConfig({ editCode: t });
|
|
|
|
|
|
const tmps = getDataFieldValue(tempData, config.dataNav);
|
|
|
|
|
|
if (tmps && tmps.length) {
|
|
|
|
|
|
this.getRowNoByData({ data: tmps, sortField: config.sortField, sortOrder: config.sortOrder, isRowNo: config.isRowNo });//wyw 是否显示序号
|
|
|
|
|
|
if (config.childrenEditCodes && config.childrenEditCodes.length) {
|
|
|
|
|
|
tmps.forEach(r => {
|
|
|
|
|
|
resetData(config.childrenEditCodes, r);
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
const editConfig = this.getEditConfig();
|
|
|
|
|
|
if (editConfig && editConfig.detailEditCodes && editConfig.detailEditCodes.length) {
|
|
|
|
|
|
resetData(editConfig.detailEditCodes, ret);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
this.setState({
|
|
|
|
|
|
data: ret,
|
|
|
|
|
|
oldEditData: JSON.parse(JSON.stringify(ret)),
|
|
|
|
|
|
}, () => {
|
|
|
|
|
|
this.handleBeforeEditEvent(false, false, null);
|
|
|
|
|
|
});
|
|
|
|
|
|
} else {
|
|
|
|
|
|
this.handleBeforeEditEvent(false, false, null);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
checkRowDiff = (list, srcRow, destRow, columns) => {
|
|
|
|
|
|
if (columns && columns.length) {
|
|
|
|
|
|
let x = '';
|
|
|
|
|
|
columns.forEach(t => {
|
|
|
|
|
|
if (t.field === 'ROW_NO') return;
|
|
|
|
|
|
const src = getDataFieldValue(srcRow, t.field);
|
|
|
|
|
|
const dest = getDataFieldValue(destRow, t.field);
|
|
|
|
|
|
if (src !== dest) {
|
|
|
|
|
|
x += (t.label + ":新值【" + dest + "】旧值【" + src + "】,");
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
if (x) {
|
|
|
|
|
|
list.push('编辑行项记录,详情:' + x);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
else {
|
|
|
|
|
|
let x = '';
|
|
|
|
|
|
Object.keys(srcRow).forEach((n) => {
|
|
|
|
|
|
if (n === 'Nav_SysParams') {
|
|
|
|
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
if (n.indexOf('.') !== -1) return;
|
|
|
|
|
|
if (typeof (srcRow[n]) !== "object") {
|
|
|
|
|
|
if (n === 'ROW_NO') return;
|
|
|
|
|
|
const src = getDataFieldValue(srcRow, n);
|
|
|
|
|
|
const dest = getDataFieldValue(destRow, n);
|
|
|
|
|
|
if (src !== dest) {
|
|
|
|
|
|
x += (n + ":新值【" + (dest === undefined || dest === null ? '' : dest) +
|
|
|
|
|
|
"】旧值【" + (src === undefined || src === null ? '' : src) + "】,");
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
Object.keys(destRow).forEach((n) => {
|
|
|
|
|
|
if (n === 'Nav_SysParams') {
|
|
|
|
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
if (n.indexOf('.') !== -1) return;
|
|
|
|
|
|
if (typeof (destRow[n]) !== "object") {
|
|
|
|
|
|
if (n === 'ROW_NO') return;
|
|
|
|
|
|
const src = getDataFieldValue(srcRow, n);
|
|
|
|
|
|
const dest = getDataFieldValue(destRow, n);
|
|
|
|
|
|
if (src === undefined && src !== dest) {
|
|
|
|
|
|
x += (n + ":新值【" + (dest === undefined || dest === null ? '' : dest) +
|
|
|
|
|
|
"】旧值【" + (src === undefined || src === null ? '' : src) + "】,");
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
if (x) {
|
|
|
|
|
|
list.push('编辑行项记录,详情:' + x);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
checkTableDiff = (list, srcTable, destTable, columns) => {
|
|
|
|
|
|
const getRowData = (r) => {
|
|
|
|
|
|
if (columns && columns.length) {
|
|
|
|
|
|
let x = '';
|
|
|
|
|
|
columns.forEach(t => {
|
|
|
|
|
|
const y = getDataFieldValue(r, t.field);
|
|
|
|
|
|
x += (t.label + ":" + y + ",");
|
|
|
|
|
|
});
|
|
|
|
|
|
Object.keys(r).forEach((n) => {
|
|
|
|
|
|
if (r[n] && r[n].length) {
|
|
|
|
|
|
x += (n + ":" + JSON.stringify(r[n]));
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
return x;
|
|
|
|
|
|
}
|
|
|
|
|
|
return JSON.stringify(r)
|
|
|
|
|
|
};
|
|
|
|
|
|
if (srcTable && srcTable.length) {
|
|
|
|
|
|
srcTable.forEach(t => {
|
|
|
|
|
|
const destRow = destTable?.filter(t1 => t1.ID === t.ID)[0];
|
|
|
|
|
|
if (destRow) {
|
|
|
|
|
|
this.checkRowDiff(list, t, destRow, columns);
|
|
|
|
|
|
}
|
|
|
|
|
|
else {
|
|
|
|
|
|
list.push("删除行项,行项数据:" + getRowData(t))
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
if (destTable && destTable.length) {
|
|
|
|
|
|
destTable.forEach(t => {
|
|
|
|
|
|
const srcRow = srcTable?.filter(t1 => t1.ID === t.ID)[0];
|
|
|
|
|
|
if (!srcRow) {
|
|
|
|
|
|
list.push("新增行项,行项数据:" + getRowData(t))
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
checkEditDataDiff = (srcData, destData) => {
|
|
|
|
|
|
const list = [];
|
|
|
|
|
|
const doDiffTable = (editCodes, tempSrcData, tempDestData) => {
|
|
|
|
|
|
if (editCodes && editCodes.length) {
|
|
|
|
|
|
editCodes.forEach(t => {
|
|
|
|
|
|
const config = this.getEditConfig({ editCode: t });
|
|
|
|
|
|
const srctmps = getDataFieldValue(tempSrcData, config.dataNav);
|
|
|
|
|
|
const desttmps = getDataFieldValue(tempDestData, config.dataNav);
|
|
|
|
|
|
this.checkTableDiff(list, srctmps, desttmps, config.columns);
|
|
|
|
|
|
if (config.childrenEditCodes && config.childrenEditCodes.length) {
|
|
|
|
|
|
if (srctmps && srctmps.length) {
|
|
|
|
|
|
srctmps.forEach(t2 => {
|
|
|
|
|
|
const destRow = desttmps.filter(t1 => t1.ID === t2.ID)[0];
|
|
|
|
|
|
if (destRow) {
|
|
|
|
|
|
doDiffTable(config.childrenEditCodes, t2, destRow);
|
|
|
|
|
|
// this.checkRowDiff(list,t,destRow,columns);
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
const editConfig = this.getEditConfig();
|
|
|
|
|
|
this.checkRowDiff(list, srcData, destData, (editConfig ? editConfig.columns : null));
|
|
|
|
|
|
if (editConfig && editConfig.detailEditCodes && editConfig.detailEditCodes.length) {
|
|
|
|
|
|
doDiffTable(editConfig.detailEditCodes, srcData, destData);
|
|
|
|
|
|
}
|
|
|
|
|
|
return list.join(';');
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
getDefaultValue = (allColumns) => {
|
|
|
|
|
|
let nArr = {};
|
|
|
|
|
|
this.fillEditColumnDefaultValue({ record: nArr, cols: allColumns });
|
|
|
|
|
|
if (this.props.setData) {
|
|
|
|
|
|
this.props.setData.forEach((n) => {
|
|
|
|
|
|
if (n.length === 2) {
|
|
|
|
|
|
setDataFieldValue(nArr, n[0], n[1]);
|
|
|
|
|
|
}
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
|
|
|
|
|
return nArr;
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
saveUseCodeRule(codeRuleType, code) {
|
|
|
|
|
|
if (!this.useCodeRules) {
|
|
|
|
|
|
this.useCodeRules = {};
|
|
|
|
|
|
}
|
|
|
|
|
|
if (!this.useCodeRules[codeRuleType]) {
|
|
|
|
|
|
this.useCodeRules[codeRuleType] = [];
|
|
|
|
|
|
}
|
|
|
|
|
|
this.useCodeRules[codeRuleType].push(code);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
doGetCodeRule = (field, id, editCode, ret) => {
|
|
|
|
|
|
if (id) {
|
|
|
|
|
|
const table = this.getEditTableData({ editCode });
|
|
|
|
|
|
if (table && table.length) {
|
|
|
|
|
|
table.forEach(t => {
|
|
|
|
|
|
if (t.ID === id) {
|
|
|
|
|
|
setDataFieldValue(t, field, ret);
|
|
|
|
|
|
this.saveRowRecord({ record: t, editCode });
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
else {
|
|
|
|
|
|
this.setFieldValue(field, ret);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
getCodeRule = (codeRuleType, field, id, editCode) => {
|
|
|
|
|
|
if (!field) return;
|
|
|
|
|
|
if (!codeRuleType) {
|
|
|
|
|
|
if (this.props.login.OrgCode)
|
|
|
|
|
|
this.doGetCodeRule(field, id, editCode, this.props.login.OrgCode);
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
const json = initFilter(this.props.login.OrgId);
|
|
|
|
|
|
json.Count = 1;
|
|
|
|
|
|
json.CodeType = codeRuleType;
|
|
|
|
|
|
this.props.dispatch({
|
|
|
|
|
|
type: 'app/genSystemCode',
|
|
|
|
|
|
payload: json,
|
|
|
|
|
|
onComplete: (ret) => {
|
|
|
|
|
|
if (ret) {
|
|
|
|
|
|
this.doGetCodeRule(field, id, editCode, ret);
|
|
|
|
|
|
this.saveUseCodeRule(codeRuleType, ret);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
};
|
|
|
|
|
|
|
2024-06-27 14:28:34 +08:00
|
|
|
|
clearData = () => {
|
|
|
|
|
|
this.setState({
|
|
|
|
|
|
data: {}
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
setStateData = (tmpData) => {
|
|
|
|
|
|
this.setState({
|
|
|
|
|
|
data: tmpData
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
2024-05-27 09:25:22 +08:00
|
|
|
|
|
|
|
|
|
|
onAfterSave(params) {
|
|
|
|
|
|
super.onAfterSave(params);
|
|
|
|
|
|
const stateData = JSON.parse(JSON.stringify(this.state.data));
|
|
|
|
|
|
const stateOldData = this.state.oldEditData ? JSON.parse(JSON.stringify(this.state.oldEditData)) : null;
|
|
|
|
|
|
const { isSuccess, closeType, clearType, saveData: updateData } = params;
|
|
|
|
|
|
if (isSuccess) {
|
|
|
|
|
|
let { onSave, onCancel, formCode, data } = this.props;
|
|
|
|
|
|
if (!onSave && data) {
|
|
|
|
|
|
onSave = data.onSave;
|
|
|
|
|
|
}
|
|
|
|
|
|
if (!onCancel && data) {
|
|
|
|
|
|
onCancel = data.onCancel;
|
|
|
|
|
|
}
|
|
|
|
|
|
this.useCodeRules = null;
|
|
|
|
|
|
if (typeof onSave === 'function') {
|
2024-08-06 15:24:06 +08:00
|
|
|
|
onSave(this.state.data, this.clearData, this.setStateData);
|
2024-05-27 09:25:22 +08:00
|
|
|
|
}
|
|
|
|
|
|
if (closeType === 1 && this.billStatus === 1 ||//仅编辑时关闭
|
|
|
|
|
|
closeType === 2 && this.billStatus !== 1 ||//仅新增时关闭
|
|
|
|
|
|
closeType !== 1 && closeType !== 2 ||//全部都关闭
|
|
|
|
|
|
closeType === undefined) {
|
|
|
|
|
|
onCancel && onCancel();
|
|
|
|
|
|
}
|
|
|
|
|
|
else {
|
|
|
|
|
|
if (!clearType || clearType === 0) {
|
|
|
|
|
|
this.props.form.resetFields();
|
|
|
|
|
|
this.onLoadData();//重新渲染
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
//添加日志
|
|
|
|
|
|
if (this.billStatus === 1) {
|
|
|
|
|
|
this.addEditLog({
|
|
|
|
|
|
formCode,
|
|
|
|
|
|
ids: updateData.ID,
|
|
|
|
|
|
codes: updateData.CODE,
|
|
|
|
|
|
extData: ("编辑数据,详情:" + this.checkEditDataDiff(stateOldData, stateData))
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
else {
|
|
|
|
|
|
this.addAddLog({
|
|
|
|
|
|
formCode,
|
|
|
|
|
|
ids: updateData.ID,
|
|
|
|
|
|
codes: updateData.CODE,
|
|
|
|
|
|
extData: ("新增数据,详情:" + JSON.stringify(stateData))
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
onSave(closeType, clearType, customParams) {
|
|
|
|
|
|
this.save({
|
|
|
|
|
|
closeType, clearType,
|
|
|
|
|
|
onCheckBeforeSave: ({ saveData }) => {
|
|
|
|
|
|
return this.handleBeforeSaveEvent(saveData);
|
|
|
|
|
|
},
|
|
|
|
|
|
onHandleRow: ({ editCode, record, srcRecord }) => {
|
|
|
|
|
|
this.handleBeforeSaveHandleRecordEvent(editCode, record, srcRecord, customParams);
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
onEditBtnParam(params) {
|
|
|
|
|
|
const { btnConfig, editConfig, record, editCode, parentId, parentRecord } = params ? params : {};
|
|
|
|
|
|
const { btnType, clickEventFunName, btn, btnCustomParams } = btnConfig ? btnConfig : {};
|
|
|
|
|
|
let { onCancel, } = this.props;
|
|
|
|
|
|
if (btn.code === 'customConfigBtn') {
|
|
|
|
|
|
return {
|
|
|
|
|
|
content: <Dropdown overlay={this.getCustomFieldMange(editCode)} trigger={['click']} placement="bottomRight">
|
|
|
|
|
|
<Button icon="bars" />
|
|
|
|
|
|
</Dropdown>
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
if (btnType === 0) {//自定义弹窗
|
|
|
|
|
|
const clickEventFun = this.getDynJsFunc(clickEventFunName);
|
|
|
|
|
|
if (typeof clickEventFun === 'function') {
|
|
|
|
|
|
const btnParam = clickEventFun({
|
|
|
|
|
|
record,
|
|
|
|
|
|
parentRecord: editConfig,
|
|
|
|
|
|
dispatch: this.props.dispatch,
|
|
|
|
|
|
close: params.close,
|
|
|
|
|
|
login: this.props.login,
|
|
|
|
|
|
custom: this.props.custom,
|
|
|
|
|
|
editCode: editConfig.editCode,
|
|
|
|
|
|
stateData: this.state.data,
|
|
|
|
|
|
onCancel: onCancel,
|
|
|
|
|
|
btn,
|
|
|
|
|
|
saveHeadRecord: (values, onComplete) => { return this.saveHeadRecord(values, onComplete); },
|
|
|
|
|
|
saveRowRecord: (params) => { this.saveRowRecord(params); },
|
|
|
|
|
|
getSelectedRecords: () => { return this.getEditSelectedRecord({ editCode, parentId }); },
|
|
|
|
|
|
btnCustomParams: getCustomParams(btnCustomParams),
|
|
|
|
|
|
pageTableCustomParams: getCustomParams(editConfig.customParams),
|
|
|
|
|
|
});
|
|
|
|
|
|
if (btnParam) {
|
|
|
|
|
|
btnParam.disabled = btnParam.isReturn;
|
|
|
|
|
|
}
|
|
|
|
|
|
return btnParam;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
// else if(btnType === 5|| btnType=== 3 || btnType === 8|| btnType === 10){//编辑 新增 查看 复制新增
|
|
|
|
|
|
// const clickEventFun=this.getDynJsFunc(clickEventFunName);
|
|
|
|
|
|
// if(typeof clickEventFun==='function') {
|
|
|
|
|
|
// const btnParam = clickEventFun({
|
|
|
|
|
|
// record,
|
|
|
|
|
|
// parentRecord:tableConfig.parentRecord,
|
|
|
|
|
|
// dispatch: this.props.dispatch,
|
|
|
|
|
|
// login: this.props.login,
|
|
|
|
|
|
// custom:this.props.custom,
|
|
|
|
|
|
// pageCode: tableConfig.pageTable.CODE,
|
|
|
|
|
|
// });
|
|
|
|
|
|
// if (btnParam) {
|
|
|
|
|
|
// btnParam.disabled = btnParam.isReturn;
|
|
|
|
|
|
// }
|
|
|
|
|
|
// return btnParam;
|
|
|
|
|
|
// }
|
|
|
|
|
|
// }
|
|
|
|
|
|
else if (btnType === 4) {//删除
|
|
|
|
|
|
const clickEventFun = this.getDynJsFunc(clickEventFunName);
|
|
|
|
|
|
if (typeof clickEventFun === 'function') {
|
|
|
|
|
|
const btnParam = clickEventFun({
|
|
|
|
|
|
record,
|
|
|
|
|
|
dispatch: this.props.dispatch,
|
|
|
|
|
|
login: this.props.login,
|
|
|
|
|
|
custom: this.props.custom,
|
|
|
|
|
|
editCode: editConfig.editCode,
|
|
|
|
|
|
stateData: this.state.data,
|
|
|
|
|
|
onCancel: onCancel,
|
|
|
|
|
|
saveHeadRecord: (values, onComplete) => { return this.saveHeadRecord(values, onComplete); },
|
|
|
|
|
|
saveRowRecord: (params) => { this.saveRowRecord(params); },
|
|
|
|
|
|
});
|
|
|
|
|
|
if (btnParam) {
|
|
|
|
|
|
btnParam.disabled = btnParam.isReturn;
|
|
|
|
|
|
}
|
|
|
|
|
|
return btnParam;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (btnType === 6) {//自定义点击
|
|
|
|
|
|
const { validateFieldsAndScroll } = this.props.form;
|
|
|
|
|
|
return {
|
|
|
|
|
|
click: (json) => {
|
|
|
|
|
|
const clickEventFun = this.getDynJsFunc(clickEventFunName);
|
|
|
|
|
|
if (typeof clickEventFun === 'function') {
|
|
|
|
|
|
const btnParam = clickEventFun({
|
|
|
|
|
|
record,
|
|
|
|
|
|
parentRecord: parentRecord,
|
|
|
|
|
|
dispatch: this.props.dispatch,
|
|
|
|
|
|
loadData: () => { this.onLoadData(); },
|
|
|
|
|
|
login: this.props.login,
|
|
|
|
|
|
custom: this.props.custom,
|
|
|
|
|
|
stateData: this.state.data,
|
|
|
|
|
|
json,
|
|
|
|
|
|
resetFields: () => this.props.form?.resetFields(),
|
|
|
|
|
|
validateFieldsAndScroll,
|
|
|
|
|
|
setState: (data) => {
|
|
|
|
|
|
this.setState(data);
|
|
|
|
|
|
},
|
|
|
|
|
|
setStateFunc: (datas, func) => {
|
|
|
|
|
|
this.setState({ data: datas }, func());
|
|
|
|
|
|
},
|
|
|
|
|
|
addOtherLog: (ids, json) => {
|
|
|
|
|
|
const formId = (editConfig.formId ? editConfig.formId : (editConfig.formData ? editConfig.formData.ID : this.props.formId));
|
|
|
|
|
|
const formCode = editConfig.formCode ? editConfig.formCode : (editConfig.formData ? editConfig.formData.CODE : this.props.formCode);
|
|
|
|
|
|
const title = '用户【' + this.props.login.user.NAME + '】:执行按钮' + btnConfig.title;
|
|
|
|
|
|
const data = 'ID:' + ids;
|
|
|
|
|
|
const extData = "Json:" + JSON.stringify(json);
|
|
|
|
|
|
this.addOtherLog({ formCode, formId, title, data, extData });
|
|
|
|
|
|
},
|
|
|
|
|
|
editCode: editConfig.editCode,
|
|
|
|
|
|
getSelectedRecords: () => { return this.getEditSelectedRecord({ editCode, parentId }); },
|
|
|
|
|
|
data: this.props.data,
|
|
|
|
|
|
btnCustomParams: getCustomParams(btnCustomParams),
|
|
|
|
|
|
pageTableCustomParams: getCustomParams(editConfig.customParams),
|
|
|
|
|
|
onCancel: onCancel,
|
|
|
|
|
|
saveHeadRecord: (values, onComplete) => { return this.saveHeadRecord(values, onComplete); },
|
|
|
|
|
|
saveRowRecord: (params) => { this.saveRowRecord(params); },
|
|
|
|
|
|
});
|
|
|
|
|
|
return btnParam;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
};
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (btnType === 7) {//自定义
|
|
|
|
|
|
const clickEventFun = this.getDynJsFunc(clickEventFunName);
|
|
|
|
|
|
const { validateFieldsAndScroll } = this.props.form;
|
2024-06-27 14:28:34 +08:00
|
|
|
|
var parentRecordSuit = parentRecord
|
|
|
|
|
|
if (btnConfig.customParams != null && btnConfig.customParams.indexOf('parentRecord') > -1 && this.state.data) {
|
|
|
|
|
|
// wyw 子表按钮添加主页面信息传参到子页面
|
|
|
|
|
|
//wyw BS057 弹窗 BS077 传递父项信息 到页面
|
|
|
|
|
|
parentRecordSuit = this.state.data
|
|
|
|
|
|
}
|
2024-05-27 09:25:22 +08:00
|
|
|
|
if (typeof clickEventFun === 'function') {
|
|
|
|
|
|
const btnParam = clickEventFun({
|
|
|
|
|
|
record,
|
2024-06-27 14:28:34 +08:00
|
|
|
|
parentRecord: parentRecordSuit,
|
2024-05-27 09:25:22 +08:00
|
|
|
|
dispatch: this.props.dispatch,
|
|
|
|
|
|
loadData: () => { this.onLoadData() },
|
|
|
|
|
|
login: this.props.login,
|
|
|
|
|
|
custom: this.props.custom,
|
|
|
|
|
|
btn,
|
|
|
|
|
|
validateFieldsAndScroll,
|
|
|
|
|
|
setState: (data) => {
|
|
|
|
|
|
this.setState(data);
|
|
|
|
|
|
},
|
|
|
|
|
|
getState: (key) => {
|
|
|
|
|
|
return this.state[key];
|
|
|
|
|
|
},
|
|
|
|
|
|
addOtherLog: (ids, json) => {
|
|
|
|
|
|
const formId = (editConfig.formId ? editConfig.formId : (editConfig.formData ? editConfig.formData.ID : this.props.formId));
|
|
|
|
|
|
const formCode = editConfig.formCode ? editConfig.formCode : (editConfig.formData ? editConfig.formData.CODE : this.props.formCode);
|
|
|
|
|
|
const title = '用户【' + this.props.login.user.NAME + '】:执行按钮' + btnConfig.title;
|
|
|
|
|
|
const data = 'ID:' + ids;
|
|
|
|
|
|
const extData = "Json:" + JSON.stringify(json);
|
|
|
|
|
|
this.addOtherLog({ formCode, formId, title, data, extData });
|
|
|
|
|
|
},
|
|
|
|
|
|
editCode: editConfig.editCode,
|
|
|
|
|
|
formId: (editConfig.formId ? editConfig.formId : (editConfig.formData ? editConfig.formData.ID : this.props.formId)),
|
|
|
|
|
|
formCode: editConfig.formCode ? editConfig.formCode : (editConfig.formData ? editConfig.formData.CODE : this.props.formCode),
|
|
|
|
|
|
getSelectedRecords: () => { return this.getEditSelectedRecord({ editCode, parentId }); },
|
|
|
|
|
|
data: this.props.data,
|
|
|
|
|
|
stateData: this.state.data,
|
|
|
|
|
|
btnCustomParams: getCustomParams(btnCustomParams),
|
|
|
|
|
|
pageTableCustomParams: getCustomParams(editConfig.customParams),
|
|
|
|
|
|
onCancel: onCancel,
|
|
|
|
|
|
saveHeadRecord: (values, onComplete) => { return this.saveHeadRecord(values, onComplete); },
|
|
|
|
|
|
saveRowRecord: (params) => { this.saveRowRecord(params); },
|
2024-08-06 15:24:06 +08:00
|
|
|
|
closeForm: () => { this.props.data.onCancel() },
|
2024-05-27 09:25:22 +08:00
|
|
|
|
});
|
|
|
|
|
|
if (btnParam) {
|
|
|
|
|
|
btnParam.disabled = btnParam.isReturn;
|
|
|
|
|
|
}
|
|
|
|
|
|
return btnParam;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
onRenderHeadControls(code, isTree) {
|
|
|
|
|
|
const headColumnConfig = this.getEditConfig();
|
|
|
|
|
|
const columns = headColumnConfig ? headColumnConfig.columns : [];
|
|
|
|
|
|
const tempCols = [];
|
|
|
|
|
|
if (columns && columns.length) {
|
|
|
|
|
|
columns.forEach(t => {
|
2024-07-16 15:24:15 +08:00
|
|
|
|
if ((code && t.code === code || !code & !t.code) || (t.code && t.code === 'warm')) {
|
2024-05-27 09:25:22 +08:00
|
|
|
|
tempCols.push(t);
|
|
|
|
|
|
}
|
|
|
|
|
|
if (isTree) t.span = { sm: 24, md: 12 }
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
return this.createControls(tempCols, this.state.data)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
handleRenderHeadControlEvent = (record, colInfo) => {
|
|
|
|
|
|
const func = this.getDynJsFunc('handleRenderHeadControl');
|
|
|
|
|
|
if (typeof func === 'function') {
|
|
|
|
|
|
const editConfig = this.getEditConfig();
|
|
|
|
|
|
return func({
|
|
|
|
|
|
record,
|
|
|
|
|
|
colConfig: colInfo,
|
|
|
|
|
|
setRowFieldVisible: this.setRowFieldVisible,
|
|
|
|
|
|
setRowFieldLabel: this.setRowFieldLabel,
|
|
|
|
|
|
setRowFieldDisable: this.setRowFieldDisable,
|
|
|
|
|
|
setRowFieldPops: this.setRowFieldPops,
|
|
|
|
|
|
resetFields: () => this.props.form?.resetFields(),
|
|
|
|
|
|
getFieldValue: (field) => { return this.getFieldValue(field, this); },
|
|
|
|
|
|
setFieldValue: (field, value) => { this.setFieldValue(field, value, this); },
|
|
|
|
|
|
setFieldValueByBatch: (fieldValues) => { this.setFieldValueByBatch(fieldValues, this); },
|
|
|
|
|
|
setFieldEditable: (field, editable) => { this.setFieldEditable(field, editable, this); },
|
|
|
|
|
|
pageCode: editConfig.editPage.CODE,
|
|
|
|
|
|
setFieldVisible: (field, visible) => { this.setFieldVisible(field, visible, this) },
|
|
|
|
|
|
setFieldVisibleByBatch: (list) => { this.setFieldVisibleByBatch(list, this); },
|
|
|
|
|
|
login: this.props.login,
|
|
|
|
|
|
custom: this.props.custom,
|
|
|
|
|
|
dispatch: this.props.dispatch,
|
|
|
|
|
|
setFieldRequired: (field, required) => { this.setFieldRequired(field, required, this); },
|
|
|
|
|
|
updateSubTableData: ({ pageCode, data, isAppend }) => { this.setEditTableData({ editCode: pageCode, data, isAppend }) },
|
|
|
|
|
|
getSubTableData: ({ pageCode }) => { return this.getEditTableData({ editCode: pageCode }) },
|
|
|
|
|
|
});
|
|
|
|
|
|
this.props.form?.resetFields();
|
|
|
|
|
|
}
|
|
|
|
|
|
return '';
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
handleRenderRowControlEvent = (record, colInfo) => {
|
|
|
|
|
|
const func = this.getDynJsFunc('handleRenderRowControl');
|
|
|
|
|
|
if (typeof func === 'function') {
|
|
|
|
|
|
const editConfig = this.getEditConfig();
|
|
|
|
|
|
return func({
|
|
|
|
|
|
record,
|
|
|
|
|
|
colConfig: colInfo,
|
|
|
|
|
|
setRowFieldVisible: this.setRowFieldVisible,
|
|
|
|
|
|
setRowFieldLabel: this.setRowFieldLabel,
|
|
|
|
|
|
setRowFieldDisable: this.setRowFieldDisable,
|
|
|
|
|
|
setRowFieldPops: this.setRowFieldPops,
|
|
|
|
|
|
resetFields: () => this.props.form?.resetFields(),
|
|
|
|
|
|
getFieldValue: (field) => { return this.getFieldValue(field, this); },
|
|
|
|
|
|
setFieldValue: (field, value) => { this.setFieldValue(field, value, this); },
|
|
|
|
|
|
setFieldValueByBatch: (fieldValues) => { this.setFieldValueByBatch(fieldValues, this); },
|
|
|
|
|
|
setFieldEditable: (field, editable) => { this.setFieldEditable(field, editable, this); },
|
|
|
|
|
|
pageCode: editConfig.editPage.CODE,
|
|
|
|
|
|
setFieldVisible: (field, visible) => { this.setFieldVisible(field, visible, this) },
|
|
|
|
|
|
setFieldVisibleByBatch: (list) => { this.setFieldVisibleByBatch(list, this); },
|
|
|
|
|
|
login: this.props.login,
|
|
|
|
|
|
custom: this.props.custom,
|
|
|
|
|
|
dispatch: this.props.dispatch,
|
|
|
|
|
|
stateData: this.state.data,
|
|
|
|
|
|
saveRowRecord: (r) => {
|
|
|
|
|
|
this.saveRowRecord({ record: r, editCode: editConfig.editPage.CODE })
|
|
|
|
|
|
},
|
|
|
|
|
|
setStateData: (val) => { this.setStateData(val) },
|
|
|
|
|
|
setFieldRequired: (field, required) => { this.setFieldRequired(field, required, this); },
|
|
|
|
|
|
updateSubTableData: ({ pageCode, data, isAppend }) => { this.setEditTableData({ editCode: pageCode, data, isAppend }) },
|
|
|
|
|
|
getSubTableData: ({ pageCode }) => { return this.getEditTableData({ editCode: pageCode }) },
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
return '';
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
handleFieldChangeEvent = (value, colInfo) => {
|
|
|
|
|
|
const func = this.getDynJsFunc('onChange');
|
|
|
|
|
|
if (typeof func === 'function') {
|
|
|
|
|
|
const editConfig = this.getEditConfig();
|
|
|
|
|
|
func({
|
|
|
|
|
|
value,
|
|
|
|
|
|
colInfo,
|
|
|
|
|
|
setRowFieldVisible: this.setRowFieldVisible,
|
|
|
|
|
|
setRowFieldLabel: this.setRowFieldLabel,
|
|
|
|
|
|
setRowFieldDisable: this.setRowFieldDisable,
|
|
|
|
|
|
setRowFieldPops: this.setRowFieldPops,
|
|
|
|
|
|
resetFields: () => this.props.form?.resetFields(),
|
|
|
|
|
|
getFieldValue: (field) => { return this.getFieldValue(field, this); },
|
|
|
|
|
|
setFieldValue: (field, value) => { this.setFieldValue(field, value, this); },
|
|
|
|
|
|
setFieldValueByBatch: (fieldValues) => { this.setFieldValueByBatch(fieldValues, this); },
|
|
|
|
|
|
setFieldEditable: (field, editable) => { this.setFieldEditable(field, editable, this); },
|
|
|
|
|
|
pageCode: editConfig.editPage.CODE,
|
|
|
|
|
|
stateData: this.state.data,
|
|
|
|
|
|
setFieldVisible: (field, visible) => { this.setFieldVisible(field, visible, this) },
|
|
|
|
|
|
setFieldVisibleByBatch: (list) => { this.setFieldVisibleByBatch(list, this); },
|
|
|
|
|
|
setState: (data, callback) => {
|
|
|
|
|
|
this.setState({ data: data }, callback);
|
|
|
|
|
|
},
|
|
|
|
|
|
login: this.props.login,
|
|
|
|
|
|
custom: this.props.custom,
|
|
|
|
|
|
dispatch: this.props.dispatch,
|
|
|
|
|
|
setFieldRequired: (field, required) => { this.setFieldRequired(field, required, this); },
|
|
|
|
|
|
updateSubTableData: ({ pageCode, data, isAppend }) => { this.setEditTableData({ editCode: pageCode, data, isAppend }) },
|
|
|
|
|
|
getSubTableData: ({ pageCode }) => { return this.getEditTableData({ editCode: pageCode }) },
|
|
|
|
|
|
});
|
|
|
|
|
|
this.props.form?.resetFields();
|
|
|
|
|
|
}
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
handleBeforeEditEvent = (isNew, isCopy, copySrcData) => {
|
|
|
|
|
|
const func = this.getDynJsFunc('onBeforeEdit');
|
|
|
|
|
|
const editConfig = this.getEditConfig();
|
|
|
|
|
|
if (typeof func === 'function') {
|
|
|
|
|
|
func({
|
|
|
|
|
|
isNew,
|
|
|
|
|
|
isCopy,
|
|
|
|
|
|
copySrcId: this.copySrcId ? this.copySrcId : this.props.copySrcId,
|
|
|
|
|
|
copySrcData: copySrcData,
|
|
|
|
|
|
setRowFieldVisible: this.setRowFieldVisible,
|
|
|
|
|
|
setRowFieldLabel: this.setRowFieldLabel,
|
|
|
|
|
|
setRowFieldDisable: this.setRowFieldDisable,
|
|
|
|
|
|
setRowFieldPops: this.setRowFieldPops,
|
|
|
|
|
|
getFieldValue: (field) => { return this.getFieldValue(field, this); },
|
|
|
|
|
|
setFieldValue: (field, value) => { this.setFieldValue(field, value, this); },
|
|
|
|
|
|
setFieldValueByBatch: (fieldValues) => { this.setFieldValueByBatch(fieldValues, this) },
|
|
|
|
|
|
setFieldEditable: (field, editable) => { this.setFieldEditable(field, editable, this); },
|
|
|
|
|
|
pageCode: editConfig.editPage.CODE,
|
|
|
|
|
|
setFieldVisible: (field, visible) => { this.setFieldVisible(field, visible, this) },
|
|
|
|
|
|
setFieldVisibleByBatch: (list) => { this.setFieldVisibleByBatch(list, this); },
|
|
|
|
|
|
setRowFieldVisible: this.setRowFieldVisible,
|
|
|
|
|
|
login: this.props.login,
|
|
|
|
|
|
app: this.props.app,
|
|
|
|
|
|
custom: this.props.custom,
|
|
|
|
|
|
data: this.props.data,
|
|
|
|
|
|
stateData: this.state.data,
|
|
|
|
|
|
dispatch: this.props.dispatch,
|
|
|
|
|
|
tableKey: this.props.data.tableKey,
|
|
|
|
|
|
editConfig: editConfig,
|
|
|
|
|
|
setEditConfig: (editConfig) => { this.setHeadEditConfig({ editConfig }) },
|
|
|
|
|
|
setMenuName: (editConfig, fieldName, enumName) => { this.setMenuName(editConfig, fieldName, enumName) },
|
|
|
|
|
|
updateSubTableData: ({ pageCode, data, isAppend }) => { this.setEditTableData({ editCode: pageCode, data, isAppend }) },
|
|
|
|
|
|
getSubTableData: ({ pageCode }) => { return this.getEditTableData({ editCode: pageCode }) },
|
|
|
|
|
|
saveUseCodeRule: (codeRuleType, code) => { this.saveUseCodeRule(codeRuleType, code); },
|
|
|
|
|
|
setFieldRequired: (field, required) => { this.setFieldRequired(field, required, this); },
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
this.onBeforeEdit({
|
|
|
|
|
|
isNew,
|
|
|
|
|
|
isCopy,
|
|
|
|
|
|
copySrcId: this.copySrcId ? this.copySrcId : this.props.copySrcId,
|
|
|
|
|
|
copySrcData,
|
|
|
|
|
|
getFieldValue: (field) => { return this.getFieldValue(field, this); },
|
|
|
|
|
|
setFieldValue: (field, value) => { this.setFieldValue(field, value, this); },
|
|
|
|
|
|
setFieldValueByBatch: (fieldValues) => { this.setFieldValueByBatch(fieldValues, this) },
|
|
|
|
|
|
setFieldEditable: (field, editable) => { this.setFieldEditable(field, editable, this); },
|
|
|
|
|
|
setRowFieldLabel: this.setRowFieldLabel,
|
|
|
|
|
|
pageCode: editConfig.editPage.CODE,
|
|
|
|
|
|
setFieldVisible: (field, visible) => { this.setFieldVisible(field, visible, this) },
|
|
|
|
|
|
setFieldVisibleByBatch: (list) => { this.setFieldVisibleByBatch(list, this); },
|
|
|
|
|
|
login: this.props.login,
|
|
|
|
|
|
app: this.props.app,
|
|
|
|
|
|
custom: this.props.custom,
|
|
|
|
|
|
data: this.props.data,
|
|
|
|
|
|
stateData: this.state.data,
|
|
|
|
|
|
dispatch: this.props.dispatch,
|
|
|
|
|
|
tableKey: this.props.data.tableKey,
|
|
|
|
|
|
editConfig: editConfig,
|
|
|
|
|
|
setEditConfig: (editConfig) => { this.setHeadEditConfig({ editConfig }) },
|
|
|
|
|
|
setMenuName: (editConfig, fieldName, enumName) => { this.setMenuName(editConfig, fieldName, enumName) },
|
|
|
|
|
|
updateSubTableData: ({ pageCode, data, isAppend }) => { this.setEditTableData({ editCode: pageCode, data, isAppend }) },
|
|
|
|
|
|
getSubTableData: ({ pageCode }) => { return this.getEditTableData({ editCode: pageCode }) },
|
|
|
|
|
|
saveUseCodeRule: (codeRuleType, code) => { this.saveUseCodeRule(codeRuleType, code); },
|
|
|
|
|
|
setFieldRequired: (field, required) => { this.setFieldRequired(field, required, this); },
|
|
|
|
|
|
});
|
|
|
|
|
|
};
|
|
|
|
|
|
onBeforeEdit(params) {
|
|
|
|
|
|
// const { isNew, isCopy, copySrcData } = params ? params : {};
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
handleBeforeSaveEvent = (data) => {
|
|
|
|
|
|
const func = this.getDynJsFunc('onBeforeSave');
|
|
|
|
|
|
if (typeof func === 'function') {
|
|
|
|
|
|
const editConfig = this.getEditConfig();
|
|
|
|
|
|
return func({
|
|
|
|
|
|
data: this.props.data,
|
|
|
|
|
|
stateData: data,
|
|
|
|
|
|
getFieldValue: (field) => { return this.getFieldValue(field, this); },
|
|
|
|
|
|
setFieldValue: (field, value) => { this.setFieldValue(field, value, this); },
|
|
|
|
|
|
setFieldValueByBatch: (fieldValues) => { this.setFieldValueByBatch(fieldValues, this) },
|
|
|
|
|
|
pageCode: editConfig.editPage.CODE,
|
|
|
|
|
|
custom: this.props.custom,
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
onBeforeSaveHandleRecord(params) {
|
|
|
|
|
|
// const { editCode, record, srcRecord } = params ? params : {};
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
handleBeforeSaveHandleRecordEvent = (pageCode, record, srcRecord, customParams) => {
|
|
|
|
|
|
const func = this.getDynJsFunc('onBeforeSaveHandleRecord');
|
|
|
|
|
|
if (typeof func === 'function') {
|
|
|
|
|
|
func({
|
|
|
|
|
|
record,
|
|
|
|
|
|
srcRecord,
|
|
|
|
|
|
customParams,
|
|
|
|
|
|
data: this.props.data,
|
|
|
|
|
|
pageCode,
|
|
|
|
|
|
login: this.props.login,
|
|
|
|
|
|
custom: this.props.custom,
|
|
|
|
|
|
stateData: this.state.data,
|
|
|
|
|
|
dispatch: this.props.dispatch,
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
this.onBeforeSaveHandleRecord({ editCode: pageCode, record, srcRecord, customParams });
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
onHeadDropDownFilter(params) {
|
|
|
|
|
|
const { params: filterParams, colConfig, thisRef } = params ? params : {};
|
|
|
|
|
|
if (filterParams && colConfig && colConfig.column) {
|
|
|
|
|
|
if (colConfig.column.Nav_Filters && colConfig.column.Nav_Filters.length) {
|
|
|
|
|
|
colConfig.column.Nav_Filters.forEach(t => {
|
|
|
|
|
|
const v = getParseValue(t.VALUE, thisRef.props.login.user, (field) => { return thisRef.getFieldValue(field, thisRef) });
|
|
|
|
|
|
if (v !== null && v !== undefined) {
|
|
|
|
|
|
if (t.IS_CUSTOM) {
|
|
|
|
|
|
filterParams[t.FIELD_NAME] = v;
|
|
|
|
|
|
}
|
|
|
|
|
|
else {
|
|
|
|
|
|
extendRule(filterParams, t.FIELD_NAME, t.OPERATION, v, t.IS_SYS_PARAM);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
const onFetchAutoFilterFunc = thisRef.getDynJsFunc('onFetchAutoFilter');
|
|
|
|
|
|
if (typeof onFetchAutoFilterFunc === 'function') {
|
|
|
|
|
|
const editConfig = thisRef.getEditConfig();
|
|
|
|
|
|
onFetchAutoFilterFunc({
|
|
|
|
|
|
colInfo: colConfig.column,
|
|
|
|
|
|
params: params,
|
|
|
|
|
|
getFieldValue: (field) => { return thisRef.getFieldValue(field, thisRef) },
|
|
|
|
|
|
pageCode: editConfig.editPage.CODE,
|
|
|
|
|
|
});
|
|
|
|
|
|
};
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
onAfterHeadControlChange(params) {
|
|
|
|
|
|
const { value, colConfig } = params ? params : {};
|
|
|
|
|
|
if (colConfig && colConfig.column) {
|
|
|
|
|
|
this.handleFieldChangeEvent(value, colConfig.column);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
onAfterHeadDropDownSelect(params) {
|
|
|
|
|
|
const { value, record, colConfig, thisRef } = params ? params : {};
|
|
|
|
|
|
const col = colConfig ? colConfig.column : null;
|
|
|
|
|
|
if (colConfig && colConfig.column) {
|
|
|
|
|
|
this.handleFieldChangeEvent(value, colConfig.column);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//填充明细
|
|
|
|
|
|
if (col && col.Nav_FillMaps) {
|
|
|
|
|
|
if (record) {
|
|
|
|
|
|
const editConfig = thisRef.getEditConfig();
|
|
|
|
|
|
const doFillMapRecords = (fillMaps, editCodes, parentRecord, tempSrcRecord) => {
|
|
|
|
|
|
if (!parentRecord) {
|
|
|
|
|
|
const tempData = { ...this.state.data };
|
|
|
|
|
|
if (!parentRecord) {
|
|
|
|
|
|
if (editConfig.parentEditCode) {
|
|
|
|
|
|
if (parentId) {
|
|
|
|
|
|
this.getEditRecordById({
|
|
|
|
|
|
tempData, editCode: editConfig.parentEditCode, id: parentId,
|
|
|
|
|
|
onComplete: (p) => {
|
|
|
|
|
|
parentRecord = p;
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
else {
|
|
|
|
|
|
parentRecord = tempData;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
fillMaps.forEach(t1 => {
|
|
|
|
|
|
if (t1.SRC_NAV && t1.DEST_NAV) {
|
|
|
|
|
|
if (t1.Nav_Details && t1.Nav_Details.length) {
|
|
|
|
|
|
editCodes.forEach(code => {
|
|
|
|
|
|
const config = thisRef.getEditConfig({ editCode: code });
|
|
|
|
|
|
if (config.dataNav === t1.DEST_NAV || config.editCode === t1.DEST_NAV) {
|
|
|
|
|
|
const list = getDataFieldValue(tempSrcRecord, t1.SRC_NAV);
|
|
|
|
|
|
if (list && list.length) {
|
|
|
|
|
|
let num = 1;
|
|
|
|
|
|
const result = [];
|
|
|
|
|
|
list.forEach(r => {
|
|
|
|
|
|
if (thisRef.onBeforeAddRow({ editCode: config.editCode, srcRecord: r, })) return;
|
|
|
|
|
|
const newRow = {
|
|
|
|
|
|
ID: guid(), ORG_ID: thisRef.props.login.OrgId, NUM: num,
|
|
|
|
|
|
ENTITY_ORG_TPYE: config.entityOrgType,
|
|
|
|
|
|
srcRecord: r,
|
|
|
|
|
|
};
|
|
|
|
|
|
t1.Nav_Details.forEach(st => {
|
|
|
|
|
|
if (st.DEST_FIELD_NAME && st.SRC_FIELD_NAME) {
|
|
|
|
|
|
setDataFieldValue(newRow, st.DEST_FIELD_NAME, getDataFieldValue(r, st.SRC_FIELD_NAME));
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
thisRef.onAfterAddRow({ editCode: config.editCode, record: newRow, srcRecord: r, });
|
|
|
|
|
|
num++;
|
|
|
|
|
|
result.push(newRow);
|
|
|
|
|
|
});
|
|
|
|
|
|
//this.setEditTableData({ editCode: config.editCode, data: result, isAppend: false, parentRecord });
|
|
|
|
|
|
this.setBantchEditTableData({ editCode: config.editCode, data: result, isAppend: false, parentRecord });
|
|
|
|
|
|
this.setState({
|
|
|
|
|
|
data: parentRecord,
|
|
|
|
|
|
}, () => {
|
|
|
|
|
|
if (typeof onComplete === 'function') {
|
|
|
|
|
|
onComplete();
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
if (result && result.length && t1.Nav_ChildrenMaps && t1.Nav_ChildrenMaps.length &&
|
|
|
|
|
|
config.childrenEditCodes && config.childrenEditCodes.length) {
|
|
|
|
|
|
result.forEach(newRow => {
|
|
|
|
|
|
doFillMapRecords(t1.Nav_ChildrenMaps, config.childrenEditCodes, newRow, newRow.srcRecord);
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
if (editConfig.detailEditCodes && editConfig.detailEditCodes.length) {
|
|
|
|
|
|
doFillMapRecords(col.Nav_FillMaps, editConfig.detailEditCodes, null, record);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
else {
|
|
|
|
|
|
const editConfig = thisRef.getEditConfig();
|
|
|
|
|
|
col.Nav_FillMaps.forEach(t1 => {
|
|
|
|
|
|
if (t1.SRC_NAV && t1.DEST_NAV) {
|
|
|
|
|
|
if (t1.Nav_Details && t1.Nav_Details.length && editConfig && editConfig.detailEditCodes) {
|
|
|
|
|
|
editConfig.detailEditCodes.forEach(code => {
|
|
|
|
|
|
const config = thisRef.getEditConfig({ editCode: code });
|
|
|
|
|
|
if (config.dataNav === t1.DEST_NAV || config.editCode === t1.DEST_NAV) {
|
|
|
|
|
|
this.setEditTableData({ editCode: config.editCode, data: [], isAppend: false });
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
getCustomFieldMange = (editCode) => {
|
|
|
|
|
|
const editTableConfig = this.getEditConfig({ editCode });
|
|
|
|
|
|
if (!editTableConfig) return null;
|
|
|
|
|
|
let customCfg = editTableConfig.customCfg;
|
|
|
|
|
|
let editId = editTableConfig.id;//this.state.editData.ID;
|
|
|
|
|
|
let editColumns = editTableConfig.editColumns;
|
|
|
|
|
|
let editPanels = editTableConfig.editPanels;
|
|
|
|
|
|
return <CustomFieldsManage
|
|
|
|
|
|
customCfg={customCfg}
|
|
|
|
|
|
onChange={(field, value, cuCfg) => {
|
|
|
|
|
|
this.handleCustomFieldChange(customCfg, field, value, cuCfg, editCode, editColumns, editPanels);
|
|
|
|
|
|
}}
|
|
|
|
|
|
clearCustomConfig={() => {
|
|
|
|
|
|
this.clearCustomConfig(editId, editCode, editColumns, editPanels)
|
|
|
|
|
|
}}
|
|
|
|
|
|
saveCustomConfig={() => {
|
|
|
|
|
|
this.saveCustomConfig(customCfg, editId);
|
|
|
|
|
|
}}
|
|
|
|
|
|
/>
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
|
新增行之前
|
|
|
|
|
|
*/
|
|
|
|
|
|
onBeforeAddRow(params) {
|
|
|
|
|
|
super.onBeforeAddRow(params);
|
|
|
|
|
|
const { editCode: pageCode, srcRecord } = params ? params : {};
|
|
|
|
|
|
const onBeforeAddSubRow = this.getDynJsFunc('onBeforeAddSubRow');
|
|
|
|
|
|
if (typeof onBeforeAddSubRow === 'function') {
|
|
|
|
|
|
return onBeforeAddSubRow({
|
|
|
|
|
|
srcRecord: srcRecord,
|
|
|
|
|
|
pageCode: pageCode,
|
|
|
|
|
|
custom: this.props.custom,
|
|
|
|
|
|
getFieldValue: (field) => { return this.getFieldValue(field); },
|
|
|
|
|
|
setRowFieldVisible: this.setRowFieldVisible,
|
|
|
|
|
|
setRowFieldLabel: this.setRowFieldLabel,
|
|
|
|
|
|
setRowFieldDisable: this.setRowFieldDisable,
|
|
|
|
|
|
setRowFieldPops: this.setRowFieldPops,
|
|
|
|
|
|
setFieldValueByBatch: (fieldValues) => { this.setFieldValueByBatch(fieldValues, this); },
|
|
|
|
|
|
setFieldEditable: (field, editable) => { this.setFieldEditable(field, editable, this); },
|
|
|
|
|
|
getHeadFieldValue: (field) => { return this.getFieldValue(field); },
|
|
|
|
|
|
saveRowRecord: (r) => {
|
|
|
|
|
|
this.saveRowRecord({ record: r, editCode })
|
|
|
|
|
|
},
|
|
|
|
|
|
setFieldValue: (field, value) => { this.setFieldValue(field, value, this); },
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
|
新增行之后
|
|
|
|
|
|
*/
|
|
|
|
|
|
onAfterAddRow(params) {
|
|
|
|
|
|
super.onAfterAddRow(params);
|
|
|
|
|
|
const { srcRecord, record, editCode } = params || {};
|
|
|
|
|
|
// const { editCode: pageCode, record, srcRecord, } = params ? params : {};
|
|
|
|
|
|
const editTableConfig = this.getEditConfig({ editCode: editCode });
|
|
|
|
|
|
const editColumns = editTableConfig ? editTableConfig.editColumns : null;
|
|
|
|
|
|
const onAfterAddRow = this.getDynJsFunc('onAfterAddSubRow');
|
|
|
|
|
|
if (typeof onAfterAddRow === 'function') {
|
|
|
|
|
|
onAfterAddRow({
|
|
|
|
|
|
record: record,
|
|
|
|
|
|
srcRecord: srcRecord,
|
|
|
|
|
|
pageCode: editCode,
|
|
|
|
|
|
custom: this.props.custom,
|
|
|
|
|
|
dispatch: this.props.dispatch,
|
|
|
|
|
|
login: this.props.login,
|
|
|
|
|
|
app: this.props.app,
|
|
|
|
|
|
stateData: this.state.data,
|
|
|
|
|
|
setRowFieldVisible: this.setRowFieldVisible,
|
|
|
|
|
|
setRowFieldLabel: this.setRowFieldLabel,
|
|
|
|
|
|
setRowFieldDisable: this.setRowFieldDisable,
|
|
|
|
|
|
setRowFieldPops: this.setRowFieldPops,
|
|
|
|
|
|
setFieldValueByBatch: (fieldValues) => { this.setFieldValueByBatch(fieldValues, this); },
|
|
|
|
|
|
setFieldEditable: (field, editable) => { this.setFieldEditable(field, editable, this, editCode); },
|
|
|
|
|
|
getHeadFieldValue: (field) => { return this.getFieldValue(field); },
|
|
|
|
|
|
saveRowRecord: (r) => {
|
|
|
|
|
|
this.saveRowRecord({ record: r, editCode })
|
|
|
|
|
|
},
|
|
|
|
|
|
setFieldValue: (field, value) => { this.setFieldValue(field, value, this); },
|
|
|
|
|
|
getFieldValue: (field) => { return this.getFieldValue(field); },
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (editColumns && editColumns.length) {
|
|
|
|
|
|
this.fillEditColumnDefaultValue({ record, cols: editColumns, getHeadFieldValue: this.getFieldValue });
|
|
|
|
|
|
editColumns.forEach(t => {
|
|
|
|
|
|
if (t.CONTROL_TYPE === 14) {
|
|
|
|
|
|
this.getCodeRule(t.CODE_RULE_TYPE, t.FIELD_NAME, record.ID, pageCode);
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
onBeforeDeleteRow(params) {
|
|
|
|
|
|
const { editCode: pageCode, record } = params ? params : {};
|
|
|
|
|
|
const onBeforeDeleteSubRow = this.getDynJsFunc('onBeforeDeleteSubRow');
|
|
|
|
|
|
if (typeof onBeforeDeleteSubRow === 'function') {
|
|
|
|
|
|
return onBeforeDeleteSubRow({
|
|
|
|
|
|
record: record,
|
|
|
|
|
|
pageCode: pageCode,
|
|
|
|
|
|
custom: this.props.custom,
|
|
|
|
|
|
getFieldValue: (field) => { return this.getFieldValue(field); },
|
|
|
|
|
|
stateData: this.state.data,
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
onAfterDeleteRow(params) {
|
|
|
|
|
|
const { editCode: pageCode, data } = params ? params : {};
|
|
|
|
|
|
const onAfterDeleteSubRow = this.getDynJsFunc('onAfterDeleteSubRow');
|
|
|
|
|
|
if (typeof onAfterDeleteSubRow === 'function') {
|
|
|
|
|
|
onAfterDeleteSubRow({
|
|
|
|
|
|
pageCode: pageCode,
|
|
|
|
|
|
updateSubTableData: ({ pageCode, data, isAppend }) => { this.setEditTableData({ editCode: pageCode, data, isAppend }); },
|
|
|
|
|
|
getSubTableData: ({ pageCode }) => { return this.getEditTableData({ editCode: pageCode }) },
|
|
|
|
|
|
stateData: data,
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
onRowDropDownFilter(params) {
|
|
|
|
|
|
super.onRowDropDownFilter(params);
|
|
|
|
|
|
const { record, colConfig, params: filterParams, thisRef, editCode } = params;
|
|
|
|
|
|
if (colConfig.column) {
|
|
|
|
|
|
const getRowFieldValue = (field) => {
|
|
|
|
|
|
return getDataFieldValue(record, field);
|
|
|
|
|
|
};
|
|
|
|
|
|
const onFetchAutoFilterFunc = thisRef.getDynJsFunc('onFetchAutoFilterDetail');
|
|
|
|
|
|
if (typeof onFetchAutoFilterFunc === 'function') {
|
|
|
|
|
|
onFetchAutoFilterFunc({
|
|
|
|
|
|
record: record,
|
|
|
|
|
|
colInfo: colConfig.column,
|
|
|
|
|
|
params: filterParams,
|
|
|
|
|
|
stateData: thisRef.state.data,
|
|
|
|
|
|
pageCode: editCode,
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
if (colConfig.column.Nav_Filters && colConfig.column.Nav_Filters.length) {
|
|
|
|
|
|
colConfig.column.Nav_Filters.forEach(t => {
|
|
|
|
|
|
const v = getParseValue(
|
|
|
|
|
|
t.VALUE,
|
|
|
|
|
|
thisRef.props.login.user,
|
|
|
|
|
|
field => thisRef.getFieldValue(field),
|
|
|
|
|
|
getRowFieldValue
|
|
|
|
|
|
);
|
|
|
|
|
|
if (v !== null && v !== undefined) {
|
|
|
|
|
|
if (t.IS_CUSTOM) {
|
|
|
|
|
|
filterParams[t.FIELD_NAME] = v;
|
|
|
|
|
|
}
|
|
|
|
|
|
else {
|
|
|
|
|
|
extendRule(filterParams, t.FIELD_NAME, t.OPERATION, v, t.IS_SYS_PARAM);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
onAfterRowControlChange(params) {
|
|
|
|
|
|
const { value, colConfig, record, editCode } = params || {};
|
|
|
|
|
|
if (colConfig.column) {
|
|
|
|
|
|
const func = this.getDynJsFunc('onSubChange');
|
|
|
|
|
|
if (typeof func === 'function') {
|
|
|
|
|
|
func({
|
|
|
|
|
|
value,
|
|
|
|
|
|
colInfo: colConfig.column,
|
|
|
|
|
|
record,
|
|
|
|
|
|
stateData: this.state.data,
|
|
|
|
|
|
pageCode: editCode,
|
|
|
|
|
|
login: this.props.login,
|
|
|
|
|
|
dispatch: this.props.dispatch,
|
|
|
|
|
|
setRowFieldVisible: this.setRowFieldVisible,
|
|
|
|
|
|
setRowFieldLabel: this.setRowFieldLabel,
|
|
|
|
|
|
setRowFieldDisable: this.setRowFieldDisable,
|
|
|
|
|
|
setRowFieldPops: this.setRowFieldPops,
|
|
|
|
|
|
setFieldValueByBatch: (fieldValues) => { this.setFieldValueByBatch(fieldValues, this); },
|
|
|
|
|
|
setFieldEditable: (field, editable) => { this.setFieldEditable(field, editable, this); },
|
|
|
|
|
|
getHeadFieldValue: (field) => { return this.getFieldValue(field); },
|
|
|
|
|
|
setDataState: (r) => { return this.setState({ data: r }); },
|
|
|
|
|
|
saveRowRecord: (r) => {
|
|
|
|
|
|
this.saveRowRecord({ record: r, editCode })
|
|
|
|
|
|
},
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
onDestroyCacheData() {
|
|
|
|
|
|
super.onDestroyCacheData();
|
|
|
|
|
|
if (this.useCodeRules) {
|
|
|
|
|
|
let r = '';
|
|
|
|
|
|
Object.keys(this.useCodeRules).forEach((n) => {
|
|
|
|
|
|
const codes = this.useCodeRules[n];
|
|
|
|
|
|
if (codes && codes.length) {
|
|
|
|
|
|
let temp = '';
|
|
|
|
|
|
codes.forEach(t => {
|
|
|
|
|
|
if (temp) {
|
|
|
|
|
|
temp += ',';
|
|
|
|
|
|
}
|
|
|
|
|
|
temp += t;
|
|
|
|
|
|
});
|
|
|
|
|
|
if (r) {
|
|
|
|
|
|
r += ';'
|
|
|
|
|
|
}
|
|
|
|
|
|
r += (n + ':' + temp);
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
if (r) {
|
|
|
|
|
|
this.props.dispatch({
|
|
|
|
|
|
type: 'app/releasePreUseSerial',
|
|
|
|
|
|
payload: initFilter(this.props.login.OrgId, r),
|
|
|
|
|
|
onComplete: (ret) => {
|
|
|
|
|
|
if (ret) {
|
|
|
|
|
|
this.useCodeRules = null;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
renderSubTable = (editConfig) => {
|
|
|
|
|
|
let { detailEditCodes = [], editPage = {} } = editConfig
|
|
|
|
|
|
const subTableCondition = editPage.SUB_TABLE_CONDITION
|
|
|
|
|
|
if (subTableCondition) {
|
|
|
|
|
|
const conditions = []
|
|
|
|
|
|
subTableCondition.split('|').forEach(cond => {
|
|
|
|
|
|
const condArr = cond.split(',')
|
|
|
|
|
|
conditions.push({
|
|
|
|
|
|
tableCode: condArr[0],
|
|
|
|
|
|
fieldName: condArr[1],
|
|
|
|
|
|
operate: condArr[2],
|
|
|
|
|
|
value: condArr[3]
|
|
|
|
|
|
})
|
|
|
|
|
|
})
|
|
|
|
|
|
const validEditCodes = []
|
|
|
|
|
|
detailEditCodes.forEach(code => {
|
|
|
|
|
|
const relatedConds = conditions.filter(cond => cond.tableCode === code)
|
|
|
|
|
|
const validCond = relatedConds.find(cond => {
|
|
|
|
|
|
const { fieldName, operate, value } = cond
|
|
|
|
|
|
const stateValue = getDataFieldValue(this.state.data, fieldName)
|
|
|
|
|
|
switch (Number(operate)) {
|
|
|
|
|
|
case 1:
|
|
|
|
|
|
return stateValue !== null && stateValue !== undefined && stateValue.toString() == value
|
|
|
|
|
|
default:
|
|
|
|
|
|
return false
|
|
|
|
|
|
}
|
|
|
|
|
|
})
|
|
|
|
|
|
!!validCond && validEditCodes.push(code)
|
|
|
|
|
|
})
|
|
|
|
|
|
detailEditCodes = validEditCodes
|
|
|
|
|
|
}
|
|
|
|
|
|
if (!detailEditCodes.length) return null
|
|
|
|
|
|
if (detailEditCodes.length === 1) {
|
|
|
|
|
|
return detailEditCodes.map(code => {
|
|
|
|
|
|
return (
|
|
|
|
|
|
<div style={{ marginBottom: '15px' }}>
|
|
|
|
|
|
{this.getRenderEditTable({ editCode: code })}
|
|
|
|
|
|
</div>
|
|
|
|
|
|
)
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
|
|
|
|
|
return (
|
|
|
|
|
|
<Tabs style={{ marginBottom: '15px' }}>
|
|
|
|
|
|
{
|
|
|
|
|
|
detailEditCodes.map(code => {
|
|
|
|
|
|
const config = this.getEditConfig({ editCode: code })
|
|
|
|
|
|
// 空配置不渲染,否则界面会多出一个无内容的 tab
|
|
|
|
|
|
if (config.id) {
|
|
|
|
|
|
return (
|
|
|
|
|
|
<TabPane tab={config.label} key={config.id}>
|
|
|
|
|
|
{this.getRenderEditTable({ editCode: code })}
|
|
|
|
|
|
</TabPane>
|
|
|
|
|
|
)
|
|
|
|
|
|
}
|
|
|
|
|
|
return null
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
|
|
|
|
|
</Tabs>
|
|
|
|
|
|
)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
render() {
|
|
|
|
|
|
const editConfig = this.getEditConfig();
|
|
|
|
|
|
const btns = editConfig ? editConfig.btns : null;
|
|
|
|
|
|
return (
|
|
|
|
|
|
<div className={styles.editWrap}>
|
|
|
|
|
|
<div className={styles.topBar}>
|
|
|
|
|
|
<div className={classNames(styles.topBarLeftBtns, styles.antBtns_mr8)}>
|
|
|
|
|
|
{this.getRenderBtns({ btns, record: this.state.data })}
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div style={{ float: "right" }}>
|
|
|
|
|
|
<Dropdown overlay={this.getCustomFieldMange(undefined)} trigger={['click']} placement="bottomRight">
|
|
|
|
|
|
<Button icon="bars" />
|
|
|
|
|
|
</Dropdown>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<Form className={styles.formBox}>
|
|
|
|
|
|
<Row
|
|
|
|
|
|
className={styles.controlBlock}
|
|
|
|
|
|
style={{ paddingTop: editConfig && editConfig.columns && editConfig.columns.length ? 10 : 0 }}
|
|
|
|
|
|
>
|
|
|
|
|
|
{this.onRenderHeadControls()}
|
|
|
|
|
|
</Row>
|
|
|
|
|
|
{this.onRenderPanel()}
|
|
|
|
|
|
{this.renderSubTable(editConfig)}
|
|
|
|
|
|
</Form>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
export default EditComponent;
|