mh_jy_safe_web/src/components/FormPage.js
2025-08-25 10:08:30 +08:00

184 lines
5.0 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

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

// 核心库
import React from 'react'
import { connect } from 'dva'
// 组件库
import ListPage from './Table/ListPage'
import EditListPage from './EditListTable'
import CustomPage from './Custom/CustomPage'
import TreePage from './Tree/TreePage'
import HTreePage from './Tree/HTreePage'
import Edit from './Edit/Edit'
import BatchEdit from './Edit/BatchEdit'
import ChartPage from './Chart'
import PicturePages from './PicturePages/PicturePages'
import CombinationPage from './Combination/CombinationPage'
import PermissionDenyPage from './common/PermissionDenyPage'
// 工具库
import { permissionUtils } from "../utils/common"
export function RenderPageItem({ props, state }) {
const { formData } = state
if (formData) {
//未启用
if (!formData.ENABLE_STATUS === 1) {
return <div>当前表单{formData.CODE}已失效请联系管理员</div>
}
const { formParam, data, setData } = props
const { FORM_TYPE: formType, ID, CODE, IS_IGNORE_PERMISSION } = formData
// 权限控制
const hasPermission = props.data?.homeReload||IS_IGNORE_PERMISSION || permissionUtils(props.login).checkForm(ID)
if (formType === 0) {
return (
<PermissionDenyPage permission={hasPermission}>
<ListPage formCode={CODE} data={data} formParam={formParam} />
</PermissionDenyPage>
)
}
else if (formType === 1) {
const isBatchEdit = data ? data.isBatchEdit : false
const tmpData = {
id: data.id,
onSave: data.onSave,
formId: ID,
formCode: CODE,
onCancel: data.onCancel,
homeLoad:props.data?.homeReload
}
if (data.IsAdd) {
tmpData.isAddH = true
}
if (isBatchEdit) {
return (
<PermissionDenyPage permission={hasPermission}>
<BatchEdit {...tmpData} data={data} formParam={formParam} />
</PermissionDenyPage>
)
}
return (
<PermissionDenyPage permission={hasPermission}>
<Edit {...tmpData} data={data} formParam={formParam} />
</PermissionDenyPage>
)
}
else if (formType === 2) {
return (
<PermissionDenyPage permission={hasPermission}>
<TreePage formCode={CODE} data={data} formParam={formParam} setData={setData} />
</PermissionDenyPage>
)
}
else if (formType === 3) {
return (
<PermissionDenyPage permission={hasPermission}>
<ChartPage formCode={CODE} data={data} formParam={formParam} />
</PermissionDenyPage>
)
}
else if (formType === 4) {
return (
<PermissionDenyPage permission={hasPermission}>
<PicturePages formCode={CODE} data={data} formParam={formParam} setData={setData} />
</PermissionDenyPage>
)
}
else if (formType === 5) {
return (
<PermissionDenyPage permission={hasPermission}>
<ChartPage formCode={CODE} data={data} formParam={formParam} />
</PermissionDenyPage>
)
}
else if (formType === 6) {
return (
<PermissionDenyPage permission={hasPermission}>
<HTreePage formCode={CODE} data={data} formParam={formParam} setData={setData} />
</PermissionDenyPage>
)
}
else if (formType === 7) {
return (
<PermissionDenyPage permission={hasPermission}>
<CombinationPage formCode={CODE} data={data} formParam={formParam} formData={formData} />
</PermissionDenyPage>
)
}
else if (formType === 8) {
return (
<PermissionDenyPage permission={hasPermission}>
<EditListPage formCode={CODE} data={data} />
</PermissionDenyPage>
)
}
else if (formType === 99) {
// const tmpData = {
// id: data?.id,
// onSave: data?.onSave,
// formId: ID,
// formCode: CODE,
// onCancel: data?.onCancel,
// }
// if (data?.IsAdd) {
// tmpData.isAddH = true
// }
return (
// <PermissionDenyPage permission={hasPermission}>
<CustomPage formCode={CODE} formParam={formParam} data={data} />
// </PermissionDenyPage>
)
}
}
return <div />
}
class FormPage extends React.Component {
constructor(props) {
super(props)
this.state = {
formData: {}
}
}
componentDidMount() {
this.fetch(this.props.formCode)
}
componentWillReceiveProps(NextProps) {
if (NextProps.formCode) {
if (this.props.formCode != NextProps.formCode) {
this.fetch(NextProps.formCode)
}
} else {
this.setState({
formData: {}
})
}
}
fetch = (formCode) => {
const { login, dispatch } = this.props
dispatch({
type: 'app/getFormByRedis',
payload: { 'Key': formCode, 'orgid': login.OrgId },
onComplete: (ret) => {
if (ret) {
this.setState({
formData: ret
})
}
}
})
}
render() {
return <RenderPageItem props={this.props} state={this.state} />
}
}
export default connect(({ app, login }) => ({ app, login }))(FormPage)