import React, { useEffect, useState, useMemo, useRef } from 'react';
import { Form, Button, Input, Row, Upload, Col, Table, TreeSelect, DatePicker, InputNumber, message, Image, Radio, Modal, Descriptions, Tabs, Tooltip } from 'antd';
import { VideoCameraOutlined } from '@ant-design/icons';
import { formItemLayout, btnItemLayout } from '../../../../components/crud/FormLayoutProps';
import BasicCrudModal from '../../../../components/crud/BasicCrudModal';
import { CrudOpRender_text } from '../../../../components/crud/CrudOpRender';
import apiurl from '../../../../service/apiurl';
import FormComponent from "./formCom"
import NormalSelect from '../../../../components/Form/NormalSelect';
import "./index.less"
import moment from 'moment';
import { httpget2, xyt_httpget2, httppost2 } from '../../../../utils/request';
const { RangePicker } = DatePicker
const { Dragger } = Upload;
const url = "http://223.75.53.141:9100/gs-tsg"
const ModalForm = ({ mode, record, refresh, setPrecessVisible }) => {
const taskTypes = [
{ label: "日常巡查", value: 1 },
{ label: "特别检查", value: 2 },
{ label: "汛前巡检", value: 3 },
]
const xjStatus = {
0: "cha",
1: "gou"
}
const [form] = Form.useForm();
const [form1] = Form.useForm();
const [precessType, setPrecessType] = useState()
const [itemList, setItemList] = useState([])
const [itemParams, setItemParams] = useState([])
const [list, setList] = useState([])
const [totals, setTotals] = useState({})
const [tabsRender, setTabsRender] = useState([])
const [imgVisible, setImgVisible] = useState(false)
const [imgList, setImgList] = useState([])
const [videoOpen, setVideoOpen] = useState(false)
const [videoParams, setVideoParams] = useState({})
const [handleDetailsOpen, setHandleDetailsOpen] = useState(false)
const [handleDetails, setHandleDetails] = useState({})
const [handleImgfileList, setHandleImgFileList] = useState([]) //上传文件列表
const [handleVideoFileList, setHandleVideoFileList] = useState([]) //上传文件列表
const handleDetail = (row) => {
setHandleDetailsOpen(true)
setHandleDetails(row)
}
const reviewPic = (arrPic) => {
debugger
if (arrPic.length > 0) {
setImgVisible(true)
setImgList(arrPic)
}
}
const reviewVideo = (arrVideo) => {
if (arrVideo.length > 0) {
setVideoOpen(true)
setVideoParams(arrVideo[0])
}
}
const renderTooltip = (value) => {
return (
<>
{value?.itemProblemDesc}
{value?.handleSuggestion}
>
)
}
const columns = [
{
title: '序号', key: 'inx', dataIndex: 'inx', width: 60, align: "center",
render: (value, row, index) => {index + 1}
},
{
title: '巡查项', key: 'itemDesc', dataIndex: 'itemDesc', width: 200,
render: (value, row, index) =>
{value}
},
{
title: '巡查状态', key: 'isNormal', dataIndex: 'isNormal', width: 100, align: "center",
render: (value) =>
{value === null ? '' :

}
},
{ title: '巡查问题描述', key: 'problemDesc', dataIndex: 'problemDesc', width: 300, ellipsis: true },
{
title: '巡查图片', key: 'inspectPics', dataIndex: 'inspectPics', width: 100, align: "center",
render: (value) =>
},
{
title: '巡查视频', key: 'inspectVideos', dataIndex: 'inspectVideos', width: 100, align: "center",
render: (value) =>
},
{
title: '是否处理', key: 'isHandle', dataIndex: 'isHandle', width: 100, align: "center",
render: (value) => {value ? "是" : "否"}
},
{ title: '处理人', key: 'handleUserName', dataIndex: 'handleUserName', width: 150 },
{
title: '操作', key: 'operator', dataIndex: 'operator', width: 150,
render: (value, row) => handleDetail(row)}>处理详情
},
]
const width = useMemo(() => columns.reduce((total, cur) => total + (cur.width), 0), [columns]);
const renderItems = (items) => {
const result = items.map(o => ({
key: o.pointId,
label: o.name + `(${o.children.filter(r => r.isNormal == 0).length})`,
children:
}))
setTabsRender(result)
}
const getTabsDetail = async (id) => {
let items = {};
try {
const res = await httpget2(apiurl.rcgl.xcxj.xjrw.info, { taskId: id });
renderItems(res.data)
res.data.forEach(o => {
items.isNormalTotal = o.children.filter(item => item.isNormal == 0).length;
items.normalTotal = o.children.filter(item => item.isNormal == 1).length;
})
setTotals(items);
} catch (error) {
console.log(error);
}
}
const handleTree = (arr) => {
const res = arr.map(item => {
item.value = item.id;
item.title = item.itemDesc;
if (item.children) {
item.children = handleTree(item.children)
}
return item;
})
return res
}
const getItemList = async () => {
try {
const res = await httpget2(apiurl.rcgl.xcxj.xjrw.list);
if (res.code === 200) {
const arr1 = res.data.map(item => ({
id: item.id,
itemDesc: item.name,
children: item.children,
disabled: item.children.length > 0 ? false : true
}));
const result = handleTree(arr1)
setList(res.data)
console.log(result);
setItemList(result)
}
} catch (error) {
console.log(error);
}
}
const onfinish = (values) => {
const userId = localStorage.getItem('userId')
const userName = localStorage.getItem('userName')
values.inspectTask = values.isWarn == 2 ? {
startDate: values.startDate || '',
endDate: values.endDate || '',
inspectUserName: deptUserList?.find(item => item.userId == values.inspectUserId)?.nickName,
items: itemParams,
inspectUserId: values?.inspectUserId,
taskContent: values?.taskContent,
taskTitle: values?.taskTitle,
taskType: values?.taskType,
createUserId: userId,
createUserName: userName
} : null
if (mode === 'save') {
onSave(apiurl.rcgl.byfz.bypc.process, values)
}
}
const onSave = async (url, params) => {
const newParams = { ...params, order: record?.order, obDate: record?.obDate }
try {
const { code, data } = await httppost2(url, newParams);
if (code == 200) {
message.success('处理成功')
setPrecessVisible(false)
refresh();
}
} catch (error) {
console.log(error);
}
}
const onValuesChange = (v, r) => {
setPrecessType(r.isWarn)
}
const itemChange = (a, b, c) => {
const itemArr = a.map(item => {
let pointId;
list.forEach(o => {
if (o.id != item && !pointId) {
pointId = o.children?.find(t => t.id == item)?.pointId;
}
})
return {
itemId: item,
pointId
}
})
setItemParams(itemArr)
}
const [deptList, setDeptList] = useState([])
const [deptUserList, setDeptUserList] = useState([])
const buildTree = (data, parentId) => {
let tree = [];
data.forEach((node) => {
node.title = node.deptName;
node.key = node.deptId;
if (node.parentId === parentId) {
let children = buildTree(data, node.deptId);
if (children.length) {
node.children = children;
}
tree.push(node);
}
});
return tree;
}
const handleTreeList = (dept, user) => {
const deptArr = dept.map(item => {
return {
...item,
value: item.deptId,
title: item.deptName,
disabled: item.userId ? false : true,
children: user.filter(u => u.deptId == item.deptId).map(u => ({
...u,
value: u.userId,
title: u.nickName
}))
}
})
console.log("deptArr", deptArr);
const treelist = buildTree(deptArr, 0)
return treelist
}
const treeList = useMemo(() => {
if (deptUserList?.length > 0 && deptList?.length > 0) {
return handleTreeList(deptList, deptUserList)
} else {
return []
}
}, [deptUserList, deptList])
// 获取部门数据
const getDeptList = async () => {
try {
const result = await xyt_httpget2(apiurl.rcgl.zbgl.zbb.deptlist);
if (result.code == 200) {
setDeptList(result.data);
getDeptUser(result.data[0])
}
} catch (error) {
console.log(error);
}
}
// 获取部门人员数据
const getDeptUser = async () => {
try {
const result = await xyt_httpget2(apiurl.rcgl.zbgl.zbb.userList, { pageNum: 1, pageSize: 9999 });
if (result.code == 200) {
setDeptUserList(result.rows)
}
} catch (error) {
console.log(error);
}
}
useEffect(() => {
getDeptList()
getItemList()
}, [])
const handleFile = (arr = []) => {
const newArr = arr?.map(item => ({
name: item.fileName,
response: {
data: {
filePath: item.filePath,
fileId: item.fileId
}
},
}))
return newArr
}
useEffect(() => {
const handleImgFile = handleFile(handleDetails?.handlePics || []);
const hanldeVideoFile = handleFile(handleDetails?.handleVideos || []);
setHandleImgFileList(handleImgFile)
setHandleVideoFileList(hanldeVideoFile)
}, [handleDetails])
useEffect(() => {
if (mode != 'save' && record.jcskByRProcessVo) {
const backParmas = {
...record.jcskByRProcessVo,
isWarn: 2,
}
form.setFieldsValue(backParmas)
setPrecessType(2)
getTabsDetail(record?.jcskByRProcessVo?.id)
}
}, [mode, record])
return (
{mode == 'view' &&
基本信息
}
>
)
}
setImgVisible(vis),
}}
>
{
imgList.length > 0 ? imgList.map(item => (
))
: null
}
setVideoOpen(false)}
>
setHandleDetailsOpen(false)}
>
<>
>
);
}
export default ModalForm;