cloudMenu/src/pages/operationReport/components/RectificationStatusInfoModal.tsx
ylj20011123 90874f4ca9 update
2025-12-05 15:04:27 +08:00

323 lines
15 KiB
TypeScript

// 同步检查项目的悬浮框
import { uploadAHYDPicture } from "@/pages/serverpartAssets/service";
import { ExclamationCircleOutlined } from "@ant-design/icons";
import { ProForm, ProFormDatePicker, ProFormDigit, ProFormSelect, ProFormText, ProFormTextArea, ProFormTimePicker, ProFormUploadButton } from "@ant-design/pro-components";
import { Col, FormInstance, message, Modal, Row } from "antd";
import { useRef, useState } from "react";
import { connect } from "umi";
import { handleGetServerpartTree, handleGetSERVERPARTTYPEList } from "../service";
type DetailProps = {
onRef: any,
currentRowInfo: any,// 当前整改行数据
onShow: boolean,
setOnShow: (value: boolean) => void
handleGetRectificationStatusData: any
parentRow: any // 当前的记录详情
}
const beforeUpload = (file: any) => {
const isJpgOrPng = file.type === 'image/jpeg' || file.type === 'image/png';
if (!isJpgOrPng) {
message.error('请上传JPEG、jpg、png格式的图片文件!');
}
const isLt2M = file.size / 1024 / 1024 < 2;
if (!isLt2M) {
message.error('图片大小不超过 2MB!');
}
return isJpgOrPng && isLt2M;
}
const RectificationStatusInfoModal = ({ onRef, currentRowInfo, onShow, setOnShow, handleGetRectificationStatusData, parentRow }: DetailProps) => {
const { confirm } = Modal;
const RectificationStatusInfoFormRef = useRef<FormInstance>();
// 文件列表
const [fileList, setFileList] = useState<any>([])
// 预览图片
const [imagePreviewVisible, setImagePreviewVisible] = useState<boolean>(false)
// 当前片区下的服务区列表
const [serverPartList, setServerPartList] = useState<any>()
// 预览上传后的图片
const handlePreview = async () => {
setFileList(fileList)
setImagePreviewVisible(true)
};
// 根据区域获取到服务区列表
const handleGetServerPartList = async (id: string) => {
const req: any = {
ProvinceCode: "530000",
SPRegionType_ID: id
}
const data = await handleGetServerpartTree(req)
console.log('dsadasda', data);
if (data && data.length > 0) {
let list = data[0].children
setServerPartList(list)
} else {
setServerPartList([])
}
}
return (
<div>
<Modal
title={'整改情况'}
destroyOnClose
width={900}
open={onShow}
onCancel={() => {
setOnShow(false)
}}
onOk={async () => { // 提交框内的数据
RectificationStatusInfoFormRef.current?.validateFields().then((res: any) => {
if (handleGetRectificationStatusData) {
let str: string = ''
if (fileList && fileList.length > 0) {
fileList.forEach((item: any) => {
if (str) {
str += `,${item.url}`
} else {
str = `${item.url}`
}
})
}
let obj: any = {
...res,
LOCALEPHOTO: str
}
handleGetRectificationStatusData(obj)
}
})
setOnShow(false)
}}
>
<ProForm
formRef={RectificationStatusInfoFormRef}
submitter={false}
layout={'horizontal'}
labelCol={{ style: { width: 80 } }}
request={async () => {
if (currentRowInfo) {
console.log('currentRowInfocurrentRowInfocurrentRowInfo', currentRowInfo);
} else if (parentRow) {
console.log('parentRowparentRowparentRow', parentRow);
handleGetServerPartList(parentRow?.belongAreaCode)
return {
SACode: parentRow?.SACode,
SAName: parentRow?.SAName,
belongAreaCode: parentRow?.belongAreaCode,
belongArea: parentRow?.belongArea,
}
} else {
return {
}
}
}}
>
<Row gutter={8}>
<Col span={12}>
<ProFormSelect
label={'片区'}
name={'belongAreaCode'}
rules={[{ required: true, message: '请选择片区!' }]}
request={async () => {
const req: any = {
SearchParameter: {
SERVERPARTSTATICTYPE_ID: 1000,
TYPE_STATE: 1,
PROVINCE_CODE: 530000
},
PageIndex: 1,
PageSize: 100,
SortStr: "TYPE_INDEX,SERVERPARTTYPE_ID"
}
const data = await handleGetSERVERPARTTYPEList(req)
console.log('datadatadatadata', data);
let list: any = []
if (data && data.length > 0) {
data.forEach((item: any) => {
list.push({ label: item.TYPE_NAME, value: item.SERVERPARTTYPE_ID })
})
}
return list
}}
fieldProps={{
showSearch: true,
filterOption: (input, option) =>
(option?.label ?? '').toLowerCase().includes(input.toLowerCase()),
optionFilterProp: 'label',
onChange: (value: any, option: any) => {
console.log('valuevalue', value);
handleGetServerPartList(value)
if (value) {
RectificationStatusInfoFormRef.current?.setFieldsValue({ belongArea: option.label })
} else {
RectificationStatusInfoFormRef.current?.setFieldsValue({ belongArea: "" })
}
}
}}
disabled={parentRow}
/>
</Col>
<Col span={12} style={{ display: 'none' }}>
<ProFormText
label={'片区名称'}
name={'belongArea'}
/>
</Col>
<Col span={12}>
<ProFormSelect
label={'服务区'}
name={'SACode'}
options={serverPartList}
fieldProps={{
onChange: (e: any, option: any) => {
console.log('e', e);
if (e) {
RectificationStatusInfoFormRef.current?.setFieldsValue({ SAName: option.label })
} else {
RectificationStatusInfoFormRef.current?.setFieldsValue({ SAName: "" })
}
}
}}
rules={[{ required: true, message: '请选择服务区!' }]}
disabled={parentRow}
/>
</Col>
<Col span={12} style={{ display: 'none' }}>
<ProFormText
label={'服务区名称'}
name={'SAName'}
/>
</Col>
<Col span={12}>
<ProFormText
label={'责任单位'}
name={'DUTYUNIT'}
/>
</Col>
<Col span={12}>
<ProFormText
label={'责任人'}
name={'DUTYPSNNAME'}
/>
</Col>
<Col span={12}>
<ProFormText
label={'联系电话'}
name={'PHONE'}
/>
</Col>
<Col span={12}>
<ProFormText
label={'巡检人'}
name={'INSPECTIONPSN'}
/>
</Col>
<Col span={12}>
<ProFormDatePicker
label={'巡检日期'}
name={'INSPECTIONDATE'}
width={'100%'}
/>
</Col>
<Col span={12}></Col>
<Col span={12}>
<ProFormTextArea
label={'巡检问题'}
name={'INSPECTIONQUESTION'}
/>
</Col>
<Col span={12}>
<ProFormTextArea
label={'整改要求'}
name={'RECTIFICATIONREQUEST'}
/>
</Col>
<Col span={24}>
<ProFormUploadButton
label={"现场照片"}
name={"LOCALEPHOTO"}
fileList={fileList}
listType="picture-card"
accept="image/*"
fieldProps={{
beforeUpload,
maxCount: 9,
onPreview: handlePreview,
customRequest: async (info) => {
const formData = new FormData();
formData.append('files', info.file);
formData.append('TableType', '1208');
formData.append('ImageName', typeof info.file !== 'string' ? info.file?.name : '');
if (info.filename) {
const success = await uploadAHYDPicture(formData)
console.log('successsuccesssuccess', success);
if (success) {
let list: any = []
if (fileList && fileList.length > 0) {
list = JSON.parse(JSON.stringify(fileList))
}
list.push({
name: success.Result_Data.ImageName,
url: success.Result_Data.ImageUrl, // url 是展示在页面上的绝对链接
})
setFileList(list)
}
} else {
message.error("您上传的图片不存在.")
}
},
onChange: async (info: any) => {
console.log('infoinfoinfo', info);
if (info.file.status === 'removed') {
confirm({
title: '确认删除该图片吗?',
icon: <ExclamationCircleOutlined rev={undefined} />,
async onOk() {
let list: any = JSON.parse(JSON.stringify(fileList))
let res: any = []
if (list && list.length > 0) {
list.forEach((item: any) => {
if (item.url === info.file.url) {
} else {
res.push(item)
}
})
}
setFileList(res)
}
});
}
}
}}
/>
</Col>
<Col span={24}>
<ProFormTextArea
label={'整改结果'}
name={'RECTIFICATION_RESULT'}
/>
</Col>
</Row>
</ProForm>
</Modal>
</div>
)
}
export default connect(({ user }: ConnectState) => ({
currentUser: user.data
}))(RectificationStatusInfoModal);