From b2ea45ba64da369ffc84d11924fa56f5842e6250 Mon Sep 17 00:00:00 2001 From: qzc Date: Mon, 23 Sep 2024 14:06:27 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/service/apiurl.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/service/apiurl.js b/src/service/apiurl.js index 058492be4..1704e6845 100644 --- a/src/service/apiurl.js +++ b/src/service/apiurl.js @@ -4,16 +4,17 @@ import Zfzl from '../views/gxsl/zfzl' const pubapi_old = 'https://owrsvr.cloudowr.cn/svr' const pubapi = 'https://owrsvr.cloudowr.cn/pubapi' const zdkapi = 'https://slt-sh.chutianyun.gov.cn:8002' //中电科的市级平台 -const service_fxdd = '/gunshiApp/xyt' +const service_fxdd = '/gunshiApp/tsg' +const service_xyt = '/gunshiApp/xyt'//登陆先用小玉潭 const service_shzh = '/shzh' const apiurl = { setMenu: service_fxdd + '/visitMenuLog/insert', setPassword: service_fxdd + '/user/updateSecretKey', xytlogin: { - login: service_fxdd + '/login', - info: service_fxdd + '/getInfo', - router: service_fxdd + '/getRouters', - role: service_fxdd + '/system/menu/list' + login: service_xyt + '/login', + info: service_xyt + '/getInfo', + router: service_xyt + '/getRouters', + role: service_xyt + '/system/menu/list' }, // 基本情况 From 8d6f15bcbea84fb11e1f513166a074557fe00a2d Mon Sep 17 00:00:00 2001 From: xielei Date: Mon, 23 Sep 2024 15:52:06 +0800 Subject: [PATCH 2/5] caidan --- src/models/auth/_.ts | 5 +- src/views/AppRouters.tsx | 12 +- src/views/sq/qys/kqys/index.js | 66 +++++-- src/views/sq/qys/xyys/index.js | 4 +- src/views/sq/qzq/gcdsj/toolbar.js | 2 +- src/views/sq/qzq/qzqda/index.js | 152 +++++++++++++++ src/views/sq/qzq/qzqda/index.less | 30 +++ src/views/sq/qzq/qzqda/toolbar.js | 59 ++++++ src/views/sz/flfg/form.js | 308 ++++++++++++++++++++++++++++++ src/views/sz/flfg/index.js | 150 +++++++++++++++ src/views/sz/flfg/toolbar.js | 91 +++++++++ src/views/sz/zdgl/form.js | 287 ++++++++++++++++++++++++++++ src/views/sz/zdgl/index.js | 143 ++++++++++++++ src/views/sz/zdgl/toolbar.js | 76 ++++++++ 14 files changed, 1368 insertions(+), 17 deletions(-) create mode 100644 src/views/sq/qzq/qzqda/index.js create mode 100644 src/views/sq/qzq/qzqda/index.less create mode 100644 src/views/sq/qzq/qzqda/toolbar.js create mode 100644 src/views/sz/flfg/form.js create mode 100644 src/views/sz/flfg/index.js create mode 100644 src/views/sz/flfg/toolbar.js create mode 100644 src/views/sz/zdgl/form.js create mode 100644 src/views/sz/zdgl/index.js create mode 100644 src/views/sz/zdgl/toolbar.js diff --git a/src/models/auth/_.ts b/src/models/auth/_.ts index 0e9eb07e5..c84e5b785 100644 --- a/src/models/auth/_.ts +++ b/src/models/auth/_.ts @@ -226,7 +226,10 @@ export async function loadMenu(): Promise { id: id(), title: '考核模板管理', path: '/mgr/sz/jdkh/khmbgl', } ] - } + }, + { id: id(), title: '法律法规', path: '/mgr/sz/flfg' }, + { id: id(), title: '制度管理', path: '/mgr/sz/zdgl' }, + ] }, { id: id(), title: '四预', redirect: '/mgr/sy/fhxzfx', icon: 'fxzb', diff --git a/src/views/AppRouters.tsx b/src/views/AppRouters.tsx index 2672dbb40..7e4897cef 100644 --- a/src/views/AppRouters.tsx +++ b/src/views/AppRouters.tsx @@ -86,7 +86,7 @@ import Kqys from './sq/qys/kqys/index.js' import Xyys from './sq/qys/xyys/index.js' import Gcys from './sq/qys/gcys/index.js' import Gcdsj from './sq/qzq/gcdsj' - +import Qzqda from './sq/qzq/qzqda' // import Zcdjxx from './sq/qys/' // import Zcdjxx from './sq/qfg/zcdjxx' // import Zcdjxx from './sq/qfg/zcdjxx' @@ -94,6 +94,10 @@ import Gcdsj from './sq/qzq/gcdsj' // 四制 - 组织机构查看 import Zzjgck from './sz/zzjgck' +import Flfg from './sz/flfg' +import Zdgl from './sz/zdgl' + + const HomePage = lazy(() => import('./Home')) @@ -231,9 +235,13 @@ const AppRouters: React.FC = () => { { path: 'sq/qys/kqys', element: }, { path: 'sq/qys/xyys', element: }, { path: 'sq/qys/gcys', element: }, - { path: 'sq/qzq/Gcdsj', element: }, + { path: 'sq/qzq/gcdsj', element: }, + { path: 'sq/qys/qzqda', element: }, + // 四制-组织机构查看 { path: 'sz/gltx/zzjgck', element: }, + { path: 'sz/flfg', element: }, + { path: 'sz/zdgl', element: }, ], }, { path: '/login', element: }, diff --git a/src/views/sq/qys/kqys/index.js b/src/views/sq/qys/kqys/index.js index 7f11d3563..ec554edbb 100644 --- a/src/views/sq/qys/kqys/index.js +++ b/src/views/sq/qys/kqys/index.js @@ -5,26 +5,70 @@ import qys2 from '../../../../assets/img/qys2.jpg' import qys3 from '../../../../assets/img/qys3.jpg' import qys4 from '../../../../assets/img/qys4.png' import './index.less' -import { useState } from "react" -const list=[ - {name:'水库地理位置图',key:1,img:qys1}, - {name:'水库平面布置图',key:2,img:qys2}, - {name:'主坝平面布置图',key:3,img:qys3}, - {name:'副坝平面布置图',key:4,img:qys4}, +import { Rnd } from "react-rnd" +import { useState, useEffect } from "react" +const list = [ + { name: '水库地理位置图', key: 1, img: qys1 }, + { name: '水库平面布置图', key: 2, img: qys2 }, + { name: '主坝平面布置图', key: 3, img: qys3 }, + { name: '副坝平面布置图', key: 4, img: qys4 }, ] const Page = () => { - const [url,setUrl] = useState(qys1) - const tabClick =(item)=>{ + const [url, setUrl] = useState(qys1) + const tabClick = (item) => { setUrl(item.img) } + useEffect(() => { + let scale = 1 + const img = document.getElementById("img"); + const fun = (e) => { + console.log(1111) + // 大于0:滚轮向上滚动 小于0:滚轮向下滚动 + if (e.wheelDelta > 0) { + scale += 0.05; + img.style.transform = `scale(${scale})`; + } else { + if (scale == 1) { + img.style.left = 0 + "px"; + img.style.top = 0 + "px"; + } + // 缩放值大于1时,可以缩小,反之亦然 + if (scale > 1) { + scale -= 0.05; + img.style.transform = `scale(${scale})`; + } + } + } + img.addEventListener("wheel", fun) + + // getSyData() + // getSlData() + // getWyData() + // getDmData() + return () => { + img.removeEventListener("wheel", fun) + } + + }, []) return (
- {list.map(item=>
tabClick(item)}>{item.name}
)} + {list.map(item =>
tabClick(item)}>{item.name}
)}
-
- + +
+ + +
+
) } diff --git a/src/views/sq/qys/xyys/index.js b/src/views/sq/qys/xyys/index.js index 43c04f9d3..12a5bbaa7 100644 --- a/src/views/sq/qys/xyys/index.js +++ b/src/views/sq/qys/xyys/index.js @@ -6,7 +6,7 @@ import './index.less' const Page = () => { return (
-
+
保护对象
@@ -16,7 +16,7 @@ const Page = () => {
-
+
转移路线示意图
diff --git a/src/views/sq/qzq/gcdsj/toolbar.js b/src/views/sq/qzq/gcdsj/toolbar.js index 8cead5b04..e8f1fd24d 100644 --- a/src/views/sq/qzq/gcdsj/toolbar.js +++ b/src/views/sq/qzq/gcdsj/toolbar.js @@ -44,7 +44,7 @@ const ToolBar = ({ setSearchVal, onSave, storeData,role }) => { { - (onSave && addBtn) ? + (onSave) ? diff --git a/src/views/sq/qzq/qzqda/index.js b/src/views/sq/qzq/qzqda/index.js new file mode 100644 index 000000000..230c8b82b --- /dev/null +++ b/src/views/sq/qzq/qzqda/index.js @@ -0,0 +1,152 @@ +import React, { Fragment, useRef, useMemo,useEffect,useState } from 'react'; +import BasicCrudModal from '../../../../components/crud/BasicCrudModal'; +import { Table, Card, Modal, Form, Input, Button, Row,Col, Timeline, message, Tabs,Image } from 'antd'; +import {FileWordOutlined,FilePdfOutlined,FileZipOutlined,FileExcelOutlined } from '@ant-design/icons'; +import { useSelector } from 'react-redux'; +import ToolBar from './toolbar'; +import apiurl from '../../../../service/apiurl'; +import usePageTable from '../../../../components/crud/usePageTable2'; +import { createCrudService } from '../../../../components/crud/_'; +import {CrudOpRender_text} from '../../../../components/crud/CrudOpRender'; + +const url = "http://223.75.53.141:9102/test.by-lyf.tmp" +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 refModal = useRef(); + const [searchVal, setSearchVal] = useState(false) + const [isFetch, setIsFetch] = useState(false) + + const command = (type) => (params) => { + if (type === 'save') { + refModal.current.showSave(); + } else if (type === 'edit') { + refModal.current.showEdit({ ...params }); + } else if (type === 'view') { + refModal.current.showView(params); + } else if (type === 'del') { + refModal.current.onDeleteGet(apiurl.rcgl.gcdsj.delete + `/${params.id}`); + } + } + + const download = (params) => { + let downloadLink = document.createElement("a"); + downloadLink.href = `http://local.gunshiiot.com:18083/gunshiApp/xyt/projectEvents/file/download/${params}`; + downloadLink.download = `${params.fileName}`; + downloadLink.style.display = "none"; + // 将链接添加到页面中 + document.body.appendChild(downloadLink); + + // 模拟点击事件,开始下载 + downloadLink.click(); + } + + const { tableProps, search, refresh } = usePageTable(createCrudService(apiurl.rcgl.gcdsj.page).find_noCode); + + + +const viewPdf = (params) => { +// setIframeSrc(params) +// setPdfViewOPen(true) +} + useEffect(()=>{ + const params = { + search: { + ...searchVal, + } + }; + search(params) + }, [searchVal]) + + + return ( + <> +
+
+ + + +
+
+ + {tableProps.dataSource.map((item, index) => ( + +
+ {item.eventsDate} +
+ {item.eventsDesc} +
+ 附件: + + { + item.files.length > 0 && item.files.map(file => { + return ( + +
+
+ {file.fileName.indexOf('.docx') > -1 ? +
{ download(file.fileId) }} + style={{ cursor: 'pointer' }} + > + +
+ : + file.fileName.indexOf('.pdf') > -1 ? +
{ viewPdf(file?.fileId) }} + style={{ cursor: 'pointer' }} + > + +
+ : + file.fileName.indexOf('.zip') > -1 ? +
{ download(file?.fileId) }} + style={{ cursor: 'pointer' }} + > + +
+ : + file.fileName.indexOf('.xlsx') > -1 ? +
{ download(file?.fileId) }} + style={{ cursor: 'pointer' }} + > + +
+ : + + } + {file.fileName} +
+
+ + ) + }) + } +
+
+
+
+
+ ))} +
+
+
+
+
+ + + ); +} + +export default Page; diff --git a/src/views/sq/qzq/qzqda/index.less b/src/views/sq/qzq/qzqda/index.less new file mode 100644 index 000000000..e0bd72879 --- /dev/null +++ b/src/views/sq/qzq/qzqda/index.less @@ -0,0 +1,30 @@ +.basic-info{ + position: relative; + font-size: 16px; + margin-bottom: 20px; + padding:5px 25px; + border-bottom: 1px solid #eee; + &::before{ + position: absolute; + top:8px; + left:0; + content: ""; + display: block; + width: 5px; + height: 20px; + background-color: #0079fe; + } +} +.time-line{ + width: 50%; + margin-left: 6%; + margin-top: 1%; + .time-line-item{ + display: flex; + // align-items: center; + column-gap: 20px; + .item-right{ + flex:1 + } + } +} \ No newline at end of file diff --git a/src/views/sq/qzq/qzqda/toolbar.js b/src/views/sq/qzq/qzqda/toolbar.js new file mode 100644 index 000000000..e8f1fd24d --- /dev/null +++ b/src/views/sq/qzq/qzqda/toolbar.js @@ -0,0 +1,59 @@ +import React, { useEffect,useState } from 'react'; +import { Form, Input, Button, DatePicker } from 'antd'; + +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 [form] = Form.useForm(); + + const onFinish = (values) => { + let dataSo; + if (values.tm) { + dataSo = { + start: moment(values.tm[0]).format('YYYY-MM-DD HH:mm:ss'), + end: moment(values.tm[1]).format('YYYY-MM-DD HH:mm:ss') + } + } + delete values.tm + setSearchVal({...values, dataSo}); + } + + + return ( + <> +
+
+ + + + + + + {searchBtn ? + + : null } + + + + + { + (onSave) ? + + + + :null + } +
+
+ + ); +} + +export default ToolBar; \ No newline at end of file diff --git a/src/views/sz/flfg/form.js b/src/views/sz/flfg/form.js new file mode 100644 index 000000000..097d8536a --- /dev/null +++ b/src/views/sz/flfg/form.js @@ -0,0 +1,308 @@ +import React, { useEffect, useState, useMemo, useRef } from 'react'; +import { Form, Button, Input, Row, Upload, Col, Table, DatePicker, InputNumber, message, Image, Modal, Typography, Select } 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 opntios=[ + {label:'宪法',value:'宪法'}, + {label:'法律',value:'法律'}, + {label:'行政法规',value:'行政法规'}, + {label:'督察法规',value:'督察法规'}, + {label:'司法解释',value:'司法解释'}, + {label:'地方性法规',value:'地方性法规'}, +] +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 [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/xyt/projectEvents/file/download/${params}`; + 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) => { + values.eventsDate = values.eventsDate ? moment(values.eventsDate).format("YYYY-MM-DD 00:00:00") : '' + let oldFiles = fileList.map(item => ({ fileId: item.response?.data?.fileId })) + if (mode === 'edit') { + values.files = oldFiles; + values.id = record.id; + onEdit(apiurl.rcgl.gcdsj.edit, values) + } + if (mode === 'save') { + values.files = oldFiles + onSave(apiurl.rcgl.gcdsj.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 ( + <> +
+ + + + + + + + + + + + + + + + + + + dateString} + getValueProps={(value) => ({ value: value ? moment(value) : undefined })} + rules={[ + { + required: true, + }, + ]} + > + + + + + dateString} + getValueProps={(value) => ({ value: value ? moment(value) : undefined })} + rules={[ + { + required: true, + }, + ]} + > + + + + + + + + + {mode !== "view" && + { console.log(info.dataTransfer.files); }} + fileList={fileList} + disabled={loading} + // onSuccess={handleSuccess} + > +

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

+

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

+
+ } + + { + 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) + }} + > +