diff --git a/public/assets/images/ggll.jpg b/public/assets/images/ggll.jpg new file mode 100644 index 000000000..5351031de Binary files /dev/null and b/public/assets/images/ggll.jpg differ diff --git a/public/assets/images/gsl.jpg b/public/assets/images/gsl.jpg new file mode 100644 index 000000000..e553dc490 Binary files /dev/null and b/public/assets/images/gsl.jpg differ diff --git a/public/assets/images/gsts.jpg b/public/assets/images/gsts.jpg new file mode 100644 index 000000000..f26110f74 Binary files /dev/null and b/public/assets/images/gsts.jpg differ diff --git a/public/assets/images/ksw.jpg b/public/assets/images/ksw.jpg new file mode 100644 index 000000000..02d3a98dd Binary files /dev/null and b/public/assets/images/ksw.jpg differ diff --git a/public/assets/images/scll.jpg b/public/assets/images/scll.jpg new file mode 100644 index 000000000..2f9e0c165 Binary files /dev/null and b/public/assets/images/scll.jpg differ diff --git a/public/assets/images/yclsl.jpg b/public/assets/images/yclsl.jpg new file mode 100644 index 000000000..6e3ad7eb8 Binary files /dev/null and b/public/assets/images/yclsl.jpg differ diff --git a/src/models/auth/_.ts b/src/models/auth/_.ts index 1447caaad..12c5c07b6 100644 --- a/src/models/auth/_.ts +++ b/src/models/auth/_.ts @@ -418,7 +418,23 @@ export async function loadMenu(): Promise { }, ], }, - + { + id: id(), title: '水资源调度', redirect: '/mgr/szydd/gsnlfx', icon: 'fxzb', + children: [ + { + id: id(), title: '供水能力分析', path: '/mgr/szydd/gsnlfx', + }, + { + id: id(), title: '调度记录', path: '/mgr/szydd/diaodu', + }, + { + id: id(), title: '供水统计分析', path: '/mgr/szydd/gstjfx', + }, + { + id: id(), title: '典型年降雨资料', path: '/mgr/szydd/dxnjyzl', + }, + ] + }, // { id: id(), title: '基本情况', path: '/mgr/home', icon: 'jbqk' }, diff --git a/src/service/apiurl.js b/src/service/apiurl.js index 0d2564764..09d8a4795 100644 --- a/src/service/apiurl.js +++ b/src/service/apiurl.js @@ -434,6 +434,7 @@ const apiurl = { }, // 供水兴利 gsxl: { + gsWater:service_fxdd + "/gateValveReal/predict/water", dxnjyzl: { page: service_fxdd + '/tyYearRainfall/page', edit: service_fxdd + '/tyYearRainfall/update', @@ -921,6 +922,7 @@ const apiurl = { // 水库弹框详情 reservoirmonitor: service_fxdd + '/reservoir/water/monitor/data', //图像监测-列表 + reservoirmonitor1: service_fxdd + '/reservoir/water/data/page', //图像监测-列表 // 水库基础信息 attResBase: service_fxdd + '/attResBase/attResBase', //基本信息 @@ -1138,6 +1140,14 @@ const apiurl = { upload:service_fxdd + '/SzRegulatoryFramework/file/upload/singleSimple', download:service_fxdd + '/SzRegulatoryFramework/file/download/', list:service_fxdd + '/SzRegulatoryFramework/page' + }, + + ddjl:{ + page: service_fxdd + '/dispatchRecord/page', + save: service_fxdd + '/dispatchRecord/insert', + edit: service_fxdd + '/dispatchRecord/update', + del: service_fxdd + '/dispatchRecord/del', + export: service_fxdd + '/dispatchRecord/export', } } diff --git a/src/views/AppRouters.tsx b/src/views/AppRouters.tsx index 346936b12..2ed693c7b 100644 --- a/src/views/AppRouters.tsx +++ b/src/views/AppRouters.tsx @@ -110,6 +110,8 @@ import Ajtj from './sz/szzf/ajtj' import Clyj from './sz/szzf/clyj' import Krgl from './KrLine' +import Gsnlfx from './gxsl/gsnlfx' +import Ddjl from './szydd/ddjl' @@ -222,8 +224,11 @@ const AppRouters: React.FC = () => { // 供水兴利 { path: 'gsxl/zfzl', element: }, { path: 'gsxl/zfjk', element: }, - { path: 'gsxl/gstjfx', element: }, - { path: 'gsxl/dxnjyzl', element: }, + + { path: 'szydd/diaodu', element: }, + { path: 'szydd/gsnlfx', element: }, + { path: 'szydd/gstjfx', element: }, + { path: 'szydd/dxnjyzl', element: }, { path: 'fxzb/jczw/yqz', element: }, { path: 'fxzb/jczw/sqz', element: }, diff --git a/src/views/fxzb/ddgc/form.js b/src/views/fxzb/ddgc/form.js index e758f6b48..f4aa6d72e 100644 --- a/src/views/fxzb/ddgc/form.js +++ b/src/views/fxzb/ddgc/form.js @@ -203,7 +203,7 @@ const ModalForm = ({ mode, record,onEdit,onSave,onCrudSuccess }) => { {mode == "view" ? null : } diff --git a/src/views/fxzb/fxya/form.js b/src/views/fxzb/fxya/form.js index 7e7b1428e..e74746326 100644 --- a/src/views/fxzb/fxya/form.js +++ b/src/views/fxzb/fxya/form.js @@ -203,7 +203,7 @@ const ModalForm = ({ mode, record,onEdit,onSave,onCrudSuccess }) => { {mode == "view" ? null : } diff --git a/src/views/gcaqjc/sjtjcx/ndsltjb/index.js b/src/views/gcaqjc/sjtjcx/ndsltjb/index.js index 1988f34e6..203758521 100644 --- a/src/views/gcaqjc/sjtjcx/ndsltjb/index.js +++ b/src/views/gcaqjc/sjtjcx/ndsltjb/index.js @@ -74,6 +74,7 @@ const Page = () => { tm:c.tm }))) return { + drp:s.drp, tm: s.tm, rz: s.rz, inx:i+1 diff --git a/src/views/gcaqjc/sjtjcx/ndsytjb/index.js b/src/views/gcaqjc/sjtjcx/ndsytjb/index.js index 213262d1e..8c9d13f32 100644 --- a/src/views/gcaqjc/sjtjcx/ndsytjb/index.js +++ b/src/views/gcaqjc/sjtjcx/ndsytjb/index.js @@ -34,7 +34,7 @@ const Page = () => { const columns4 = [ { title: '降雨量(mm)', key: 'drp', dataIndex: 'drp', width: 120, align: "center", - render: (rec, record) => { rec ?? "-"} + render: (rec, record) => { record?.drp ?? "-"} }, ]; const getDmTree = async() => { @@ -76,6 +76,7 @@ const Page = () => { tm:c.tm }))) return { + drp:s.drp, tm: s.tm, rz: s.rz, inx:i+1 diff --git a/src/views/gxsl/dxnjyzl/index.js b/src/views/gxsl/dxnjyzl/index.js index 0faf74759..d4c77b930 100644 --- a/src/views/gxsl/dxnjyzl/index.js +++ b/src/views/gxsl/dxnjyzl/index.js @@ -11,9 +11,9 @@ import {CrudOpRender_text} from '../../../components/crud/CrudOpRender'; const Page = () => { const role = useSelector(state => state.auth.role); - const editBtn = role?.rule?.find(item => item.menuName == "编辑"); - const viewBtn = role?.rule?.find(item => item.menuName == "查看"); - const delBtn = role?.rule?.find(item => item.menuName == "删除"); + const editBtn = role?.rule?.find(item => item.menuName == "编辑") || true; + const viewBtn = role?.rule?.find(item => item.menuName == "查看") || true; + const delBtn = role?.rule?.find(item => item.menuName == "删除") || true; const expandedRowRender = (record) => { const columns = [ { diff --git a/src/views/gxsl/dxnjyzl/toolbar.js b/src/views/gxsl/dxnjyzl/toolbar.js index 8eaee7e60..ebac9848b 100644 --- a/src/views/gxsl/dxnjyzl/toolbar.js +++ b/src/views/gxsl/dxnjyzl/toolbar.js @@ -4,8 +4,8 @@ import NormalSelect from '../../../components/Form/NormalSelect'; import moment from 'moment'; const { RangePicker } = DatePicker; const ToolBar = ({ setSearchVal, onSave, storeData, role }) => { - const addBtn = role?.rule?.find(item => item.menuName == "新增"); - const searchBtn = role?.rule?.find(item => item.menuName == "查询"); + const addBtn = role?.rule?.find(item => item.menuName == "新增") || true; + const searchBtn = role?.rule?.find(item => item.menuName == "查询") || true; const [form] = Form.useForm(); const types = [ { diff --git a/src/views/gxsl/gsnlfx/KrLine.js b/src/views/gxsl/gsnlfx/KrLine.js new file mode 100644 index 000000000..a08769f01 --- /dev/null +++ b/src/views/gxsl/gsnlfx/KrLine.js @@ -0,0 +1,100 @@ +import React,{useEffect,useMemo,useState} from 'react' +import { Button, DatePicker, Table } from 'antd'; +import { createCrudService } from '../../../components/crud/_'; +import usePageTable from '../../../components/crud/usePageTable2'; +import moment from 'moment'; +import apiurl from '../../../service/apiurl'; +import {reservoirmonitor} from '../../../service/sssq' +import ReactEcharts from 'echarts-for-react'; +import drpOption from './drpOption'; +const {RangePicker} = DatePicker; +export default function KrLine({ record }) { + const tm = [ + moment().subtract(7, 'days').add(1, 'hour').set({ minute: 0, second: 0 }), + moment().add(1, 'hour').set({ minute: 0, second: 0 }), + ]; + const stm = moment().subtract(7, 'days').add(1, 'hour').set({ minute: 0, second: 0 }).format("YYYY-MM-DD HH:mm:ss"); + const etm = moment().add(1, 'hour').set({ minute: 0, second: 0 }).format("YYYY-MM-DD HH:mm:ss"); + const columns = [ + {title: '时间', key: '', dataIndex: '', align: 'center',render:(rec)=>moment(rec.tm).format('MM-DD HH:mm')}, + { + title: '水位(m)', key: 'rz', dataIndex: 'rz', align: 'center', + render: (rec) => {rec ? rec.toFixed(2) : "-"}}, + { + title: '库容(万m³)', key: 'w', dataIndex: 'w', align: 'center', + render: (rec) => {rec ??"-"}, + }, + ]; + const [data, setData] = useState([]); + const [params, setParams] = useState({}) + const { tableProps, search, refresh } = usePageTable(createCrudService(apiurl.sssq.reservoirmonitor1).find_noCode); + const option = useMemo(() => { + return drpOption({data}); + }, [data]) + const searchTm = (e) => { + setParams({ + ...params, + stm: e[0].format("YYYY-MM-DD HH:mm:ss"), + etm: e[1].format("YYYY-MM-DD HH:mm:ss"), + tm:e, + }) + }; + + const doSearch = () => { + search({ search: params }) + getData(params) + } + + + const getData = async (params) => { + setData(await reservoirmonitor(params)); + } + useEffect(() => { + const params = { + search: { + stm, + etm + } + } + if (record?.stcd) { + search(params) + getData({stcd:record.stcd,...params.search}) + setParams({tm,stcd:record.stcd}) + } + }, [record]) + return ( +
+
+ + + +
+
+ + +
+ { + data.length > 0 ? + :
+ +
+ } +
+ + + + ) +} diff --git a/src/views/gxsl/gsnlfx/drpOption.js b/src/views/gxsl/gsnlfx/drpOption.js new file mode 100644 index 000000000..36685d530 --- /dev/null +++ b/src/views/gxsl/gsnlfx/drpOption.js @@ -0,0 +1,130 @@ +import echarts from 'echarts/lib/echarts' + +export default function drpOption ({ + data, +}) { + const maxVal = Math.max(...data.map(obj => obj.drp)) + // const minVal = Math.min(...data.map(obj => obj.drp)) + const maxSw = Math.ceil(Math.max(...data.map(obj => obj.rz))) + const minSw = Math.floor(Math.min(...data.map(obj => obj.rz))) + const maxKr = Math.max(...data.map(obj => obj.w)) + const minKr = Math.min(...data.map(obj => obj.w)) + return { + tooltip: { + trigger: 'axis' + }, + grid: { + top: '18%', + left: '5%', + right: '5%', + width: '90%', + height: '70%' + }, + legend: { + // 显示图例 + show: true, + left:60 + }, + xAxis: [ + { + type: 'category', + data: data.map(o => o.tm), + inverse: true, + splitLine: { + show: false + }, + axisLabel: { + color: '#333', + fontSize: 12, + formatter: val => val.substr('2020-'.length, 11) + }, + axisLine: { + lineStyle: { + color: '#07a6ff', + width: 0.5 + } + }, + axisTick: { + show: false + } + } + ], + yAxis: [ + { + type: 'value', + position: 'left', + name: '水位(m)', + splitLine: { + show: true, + lineStyle: { + color: '#07a6ff', + width: 0.25, + type: 'dotted' + } + }, + axisLabel: { + color: '#333', + fontSize: 12 + }, + axisLine: { + show: false + }, + axisTick: { + show: false + }, + min: minSw, + max: maxSw + }, + { + type: 'value', + position: 'right', + name: '库容(万m³)', + splitLine: { + show: false, + lineStyle: { + color: '#07a6ff', + width: 0.25, + type: 'dotted' + } + }, + axisLabel: { + color: '#333', + fontSize: 12 + }, + axisLine: { + show: false + }, + axisTick: { + show: false + }, + min: minKr - 0.1, + max: maxKr + 0.1 + } + ], + series: [ + { + yAxisIndex:0, + name: '水位', + type: 'line', + symbol: 'none', + color: '#0AE0B5', + label: { + show: false + }, + data: data.map(o => o.rz ? o.rz.toFixed(2):null ) + }, + { + yAxisIndex:1, + name: '库容', + type: 'line', + color: '#007AFD', + symbol: 'none', + showSymbol: false, + label: { + show: false + }, + data: data.map(o => o.w) + } + ] + } +} diff --git a/src/views/gxsl/gsnlfx/index.js b/src/views/gxsl/gsnlfx/index.js new file mode 100644 index 000000000..12f00f7e8 --- /dev/null +++ b/src/views/gxsl/gsnlfx/index.js @@ -0,0 +1,236 @@ + +import React, { useEffect, useState,useMemo } from 'react' +import { Button ,Modal,Form,Row,Col} from "antd" +import { reservoirlist, } from "../../../service/sssq"; +import apiurl from '../../../service/apiurl'; +import MyImg from '../../Home/MapCtrl/components/Skssjc/myImg' +import { httppost2, httpget2, httppost5 } from '../../../utils/request'; +import NormalSelect from '../../../components/Form/NormalSelect'; +import moment from 'moment'; +import KrLine from './KrLine'; +import "./index.less" +export default function Gsnlfx() { + const month = moment().month() + 1; + const optionsType = Array(12 - month + 1).fill(0).map((item,i) => ({label: (i + month) + "月",value: i + month})) + const typeObj = { + 1: "枯 ", + 2: "偏枯 ", + 3: "平", + 4: "偏丰", + 5:"丰" + } + const [form] = Form.useForm() + const [tableData, setTableData] = useState([]) + const [ssgData, setSsGData] = useState({}) //输水管数据 + const [gsDays, setGsDays] = useState() + const [lslOpen, setLslOpen] = useState(false) + const [simailarData, setSimailarData] = useState([]) + const [lslData, setlslData] = useState(null) + + const getData = async (params) => { + setTableData(await reservoirlist(params)); + } + // 相似年下拉 + const getSimilarData = async() => { + try { + const res = await httppost2(apiurl.gsxl.zfzl.similar) + setSimailarData(res.data.map(item => ({ + label: item.year + "年" + `(${typeObj[item.status]},${item.drp}mm)`, + value:item.year + }))) + } catch (error) { + console.log(error); + } + } + // 输水管流量数据 + const getInputData = async() => { + try { + const res = await httppost2(apiurl.gsxl.zfzl.input) + const ssg = res.data.find(item => item.sttp == "PQ"); + const fsg = res.data.find(item => item.sttp == "QQ"); + setSsGData({ssg,fsg}) + } catch (error) { + console.log(error); + } + } + + // 获取可供水时间 + const getWaterTimeData = async(params={}) => { + try { + const res = await httpget2(apiurl.gsxl.zfzl.kyTime,params) + let r = { + type: "可供水天数", + value: Object.keys(res.data)[0], + tm: Object.values(res.data)[0] + } + setGsDays(r) + } catch (error) { + console.log(error); + } + } + const providerWater = useMemo(() => { + if (tableData[0]?.nowCap && tableData[0]?.deadCap) { + let num = ((tableData[0]?.nowCap - tableData[0]?.deadCap) / 10000).toFixed(2) + return num + } else { + return "--" + } + }, [tableData]) + + const generate = () => { + setLslOpen(true) + } + + const computerResult = async() => { + const values = form.getFieldsValue(); + try { + const res = await httpget2(apiurl.gsxl.gsWater, values) + if (res.code == 200) { + setLslOpen(false); + setlslData((res.data / 10000).toFixed(2)) + getWaterTimeData(values) + } + } catch (error) { + console.log(error); + + } + } + useEffect(() => { + let option = { + sources: ["SW", "SK"], + args: "", + }; + getData(option) + getInputData() + getWaterTimeData() + getSimilarData() + }, []) + return ( +
+
+
+
+ + 供水能力分析 +
+
+
+
+ + 当前库水位(m) +
+
+ {tableData[0]?.rz ?? "-"} + ({tableData[0]?.drpTm ?? "--"}) +
+
+
+
+ + 可供水量(万m³) +
+
+ {providerWater} + ({tableData[0]?.drpTm ?? "--"}) +
+
+
+
+ + 灌溉流量(m³/s) +
+
+ {ssgData?.ssg?.v ?? "--"} + ({ssgData?.ssg?.tm ?? "--"}) +
+
+
+
+ + 水厂流量(m³/s) +
+
+ {ssgData?.fsg?.v ?? "--"} + ({ssgData?.fsg?.tm ?? "--"}) +
+
+
+
+ + 预测来水量(万m³) +
+
+ {lslData ?? "预测生成"} + +
+
+
+
+ + 可供水天数(天) +
+
+ {gsDays?.value ?? "--"} + ({gsDays?.tm ?? "--"}) +
+ {/*
+ +
*/} +
+ +
+
+
+
+ + 库容过程线 +
+ +
+
+ + setLslOpen(false)} + width={500} + okText="计算" + destroyOnClose + onOk={computerResult} + > +
+ +
+ + + + + + + + + + + + + + + + ) +} diff --git a/src/views/gxsl/gsnlfx/index.less b/src/views/gxsl/gsnlfx/index.less new file mode 100644 index 000000000..381daa8bb --- /dev/null +++ b/src/views/gxsl/gsnlfx/index.less @@ -0,0 +1,83 @@ +.gb-top-title{ + display: flex; + align-items: center; + column-gap: 10px; + margin-bottom: 10px; + .gb-top-icon{ + width: 5px; + height: 20px; + background-color: #0079fe; + } +} +.gsnl-content{ + display: flex; + column-gap: 10px; + padding-right:10px; + .content-left{ + width: 700px; + padding: 10px; + border: 1px solid #dfdfdf; + border-radius: 5px; + overflow-y: auto; + height: calc( 100vh - 100px); + .content-card{ + display: flex; + flex-wrap: wrap; + column-gap: 20px; + padding-top: 10px; + .card-item{ + width: 325px; + border: 1px solid #dfdfdf; + border-radius: 5px; + margin-bottom: 20px; + padding: 10px; + padding-bottom: 0; + box-shadow: 5px 5px 5px 0px rgba(0, 0, 0, 0.4); + .card-title{ + display: flex; + align-items: center; + column-gap: 10px; + font-size: 18px; + margin-bottom: 10px; + } + .card-value{ + display: flex; + align-items: baseline; + flex-wrap: nowrap; + .nl-value{ + font-size: 36px; + font-weight: 700; + color:#02a7f0; + } + .nl-time{ + font-size: 14px; + font-weight: bold; + } + } + img{ + width: 40px; + } + } + + .yc-content{ + display: flex; + flex-direction: column; + .yc-input{ + display: inline-block; + width: 80%; + height: 40px; + padding: 10px; + border-radius: 5px; + background-color: #f0f6ff; + margin-bottom: 15px; + } + } + } + } + .content-right{ + width: 850px; + border: 1px solid #dfdfdf; + padding: 10px; + border-radius: 5px; + } +} \ No newline at end of file diff --git a/src/views/rcgl/byfz/bypc/form.js b/src/views/rcgl/byfz/bypc/form.js index ec3a45ae2..0d345a7c0 100644 --- a/src/views/rcgl/byfz/bypc/form.js +++ b/src/views/rcgl/byfz/bypc/form.js @@ -86,8 +86,8 @@ const ModalForm = ({ mode, record, onEdit, onSave, onSimilarSave }) => { const surveyType = [ {label:"日常检查排查",value:1}, - {label:"定期普查",value:1}, - {label:"专项调查",value:1}, + {label:"定期普查",value:2}, + {label:"专项调查",value:3}, ] const surveyWay = [ {label:"人工排查法",value:1}, diff --git a/src/views/szydd/ddjl/form.js b/src/views/szydd/ddjl/form.js new file mode 100644 index 000000000..f9bb86af9 --- /dev/null +++ b/src/views/szydd/ddjl/form.js @@ -0,0 +1,315 @@ +import React,{useEffect,useState,useMemo,useRef} from 'react'; +import { Form, Button, Input, Row,Upload, Col, Table, DatePicker, InputNumber,message,Image,Modal,Typography ,Popconfirm } from 'antd'; +import { DeleteOutlined,FileWordOutlined,FilePdfOutlined,FileZipOutlined,FileExcelOutlined } from '@ant-design/icons'; +import { formItemLayout, btnItemLayout } from '../../../components/crud/FormLayoutProps'; + +import apiurl from '../../../service/apiurl'; + +import NormalSelect from '../../../components/Form/NormalSelect'; + +import "./index.less" +import moment from 'moment'; +const { RangePicker } = DatePicker +const { Dragger } = Upload; +const url = "http://223.75.53.141:9102/test.by-lyf.tmp" + + +const ModalForm = ({ mode, record, onEdit, onSave, onSimilarSave }) => { + + const [form] = Form.useForm(); + const [fileList, setFileList] = useState([]) //上传文件列表 + const [fileIds, setFileIds] = useState([]) + const [iframeSrc, setIframeSrc] = useState('') + const [pdfViewOPen, setPdfViewOPen] = useState(false) + const [flag,setFlag] = useState(false) + + const [loading, setLoading] = useState(false) + + /** + * @description 文件下载 + * @param {String} params 文件fileId + */ + const download = (params) => { + let downloadLink = document.createElement("a"); + downloadLink.href = `http://local.gunshiiot.com:18083/gunshiApp/tsg/dispatchRecord/file/download/${params.fileId}`; + downloadLink.download = `${params.fileName}`; + downloadLink.style.display = "none"; + // 将链接添加到页面中 + document.body.appendChild(downloadLink); + + // 模拟点击事件,开始下载 + downloadLink.click(); + } + /** + * @description 上传图片 + * @param {string} file 上传的文件 + */ + const fileChange = (info) => { + if (info.file.status === "done") { + setLoading(false); + } + if (info.file.status === "uploading") { + setLoading(true); + } + if (info.file.status === "error") { + message.error("文件上传失败") + setLoading(false); + } + let fileIds = info.fileList?.map(file => { + return file.response?.data?.fileId + }) + setFileIds(fileIds) + setFileList(info.fileList) +} + /** + * @description pdf文件预览 + * @param {String} params 文件预览url + */ + const viewPdf = (params) => { + setIframeSrc(params) + setPdfViewOPen(true) + } + + + const onfinish = (values) => { + let oldFiles = fileList?.map(item => ({fileId:item.response?.data?.fileId}) ) + if (mode === 'edit') { + values.files = oldFiles; + values.id = record.id; + // values.opUserId = record.opUserId; + onEdit(apiurl.ddjl.edit,values) + } + if (mode === 'save') { + values.files = oldFiles + onSave(apiurl.ddjl.save,values) + } + } + + /** + * @description 删除上传的图片 + * @param {string} id 删除的id + */ + const deleteFile = (fileId) => { + console.log(fileId); + let filterFile = fileList.filter(item => item.response?.data?.fileId !== fileId); + setFileList(filterFile) + } + useEffect(() => { + if (mode != 'save') { + const imgFile = record?.files?.map(o => ({ + name: o.fileName, + response: { + data: { + filePath: o.filePath, + fileId:o.fileId + } + }, + })) + setFileList(imgFile) + } + }, [record, mode]) + + + + return ( + <> + { + setFlag(b.status===0?false:true) + }} + > + + + dateString} + getValueProps={(value) => ({ value: value ? moment(value) : undefined })} + rules={[{required: true}]} + > + + + + + dateString} + getValueProps={(value) => ({ value: value ? moment(value) : undefined })} + rules={[{required: flag}]} + > + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {mode !== "view" && + { console.log(info.dataTransfer.files); }} + fileList={fileList} + disabled={loading} + // onSuccess={handleSuccess} + > +

点击或拖拽文件到此区域上传

+

+ 支持扩展名:.doc .docx .pdf .jpg .png .xlsx .xls +

+
+ } + + { + fileList?.length > 0 && fileList?.map(file => { + return ( +
+
+
+ {file.name.indexOf('.docx') > -1 ? +
{ download(file.response?.data?.fileId) }} + style={{ cursor: 'pointer' }} + > + +
+ : + file.name.indexOf('.pdf') > -1 ? +
{ viewPdf(file.response?.data?.fileId) }} + style={{ cursor: 'pointer' }} + > + +
+ : + file.name.indexOf('.zip') > -1 ? +
{ download(file.response?.data?.fileId) }} + style={{ cursor: 'pointer' }} + > + +
+ : + file.name.indexOf('.xlsx') > -1 ? +
{ download(file.response?.data?.fileId) }} + style={{ cursor: 'pointer' }} + > + +
+ : + + } + {file.name} +
+
deleteFile(file.response?.data?.fileId)}> + +
+
+ + ) + }) + } + + + + + { + mode==='view'?null:( + <> + + + + + ) + } + + { + setPdfViewOPen(false) + }} + > +