Compare commits

..

No commits in common. "c4ba002e9c812f261d79d16876f5586aa2affa9c" and "89f4e921c6404e144fa2a9b7a147e482781adadd" have entirely different histories.

26 changed files with 156 additions and 250 deletions

View File

@ -74,8 +74,6 @@ const DashboardLayout: React.FC = () => {
const location = useLocation(); const location = useLocation();
const navigate = useNavigate(); const navigate = useNavigate();
// debugger;
console.log(location.pathname);
const pathname = location.pathname; const pathname = location.pathname;
const dispatch = useDispatch<Dispatch>(); const dispatch = useDispatch<Dispatch>();

View File

@ -209,9 +209,7 @@ code {
.flex-end{ .flex-end{
justify-content: flex-end; justify-content: flex-end;
} }
.align-center{
align-items: center;
}
.ellipsis1 { .ellipsis1 {
overflow:hidden;/*内容超出后隐藏*/ overflow:hidden;/*内容超出后隐藏*/
text-overflow:ellipsis;/*超出内容显示为省略号*/ text-overflow:ellipsis;/*超出内容显示为省略号*/

View File

@ -1,6 +1,8 @@
import { MenuItem } from "../_"; import { MenuItem } from "../_";
export function findMenu(menus: MenuItem[], pathname: string) { export function findMenu(menus: MenuItem[], pathname: string) {
//document.title = TITLE;
if (!menus) { if (!menus) {
return []; return [];
} }

View File

@ -87,7 +87,7 @@ const ModalForm = ({ mode, record,onEdit,onSave,onSimilarSave }) => {
} }
if (mode === 'save') { if (mode === 'save') {
values.fileIds = fileIds values.fileIds = fileIds
// debugger debugger
onSave(apiurl.fxzb.qswl.zq.save,values) onSave(apiurl.fxzb.qswl.zq.save,values)
} }
if (mode === "similarSave") { if (mode === "similarSave") {

View File

@ -112,7 +112,7 @@ export default function Xmzlmb() {
stationCodes: code, stationCodes: code,
...searchVal ...searchVal
} }
// debugger debugger
getTableData(params) getTableData(params)
getTable2Data(params) getTable2Data(params)
} }

View File

@ -76,7 +76,7 @@ console.log("record",record);
let oldFiles = fileList.map(item => ({fileId:item.response?.data?.fileId}) ) let oldFiles = fileList.map(item => ({fileId:item.response?.data?.fileId}) )
if (mode === 'zg') { if (mode === 'zg') {
values.rectifyFiles = oldFiles; values.rectifyFiles = oldFiles;
// debugger debugger
onUpdate(apiurl.rcgl.jdkh.khwtzg.finish,{...record,...values}) onUpdate(apiurl.rcgl.jdkh.khwtzg.finish,{...record,...values})
} }

View File

@ -36,7 +36,7 @@ export default function Zrtx({dataInfo}) {
} }
const command = (type) => (params) => { const command = (type) => (params) => {
// debugger; debugger;
if (type === 'save') { if (type === 'save') {
refModal.current.showSave(dataInfo); refModal.current.showSave(dataInfo);
} else if (type === 'edit') { } else if (type === 'edit') {

View File

@ -20,7 +20,7 @@ const Page = () => {
<div className={styles.title}> <div className={styles.title}>
<Image src={title} />转移路线示意图 <Image src={title} />转移路线示意图
</div> </div>
<div style={{display:'flex',justifyContent:'center',height: 'calc(100% - 40px)',alignItems:'center'}}> <div style={{display:'flex',justifyContent:'center'}}>
<Image src={zd} width='80%' preview={false} /> <Image src={zd} width='80%' preview={false} />
</div> </div>

View File

@ -1,7 +1,7 @@
.title{ .title{
font-size: 16px; font-size: 16px;
color: #000000; color: #000000;
// width: 112px; width: 112px;
height: 32px height: 32px
} }
.content{ .content{

View File

@ -30,7 +30,7 @@ const ModalForm = ({ mode, record, onEdit, onSave, onSimilarSave }) => {
*/ */
const download = (params) => { const download = (params) => {
let downloadLink = document.createElement("a"); let downloadLink = document.createElement("a");
downloadLink.href = `http://local.gunshiiot.com:18083/gunshiApp/tsg/projectEvents/file/download/${params}`; downloadLink.href = `http://local.gunshiiot.com:18083/gunshiApp/xyt/projectEvents/file/download/${params}`;
downloadLink.download = `${params.fileName}`; downloadLink.download = `${params.fileName}`;
downloadLink.style.display = "none"; downloadLink.style.display = "none";
// 将链接添加到页面中 // 将链接添加到页面中
@ -187,7 +187,7 @@ const ModalForm = ({ mode, record, onEdit, onSave, onSimilarSave }) => {
<Dragger <Dragger
name='file' name='file'
// multiple // multiple
action="/gunshiApp/tsg/projectEvents/file/upload/singleSimple" action="/gunshiApp/xyt/projectEvents/file/upload/singleSimple"
onChange={fileChange} onChange={fileChange}
onDrop={(info) => { console.log(info.dataTransfer.files); }} onDrop={(info) => { console.log(info.dataTransfer.files); }}
fileList={fileList} fileList={fileList}
@ -286,7 +286,7 @@ const ModalForm = ({ mode, record, onEdit, onSave, onSimilarSave }) => {
border: 0, border: 0,
marginTop: 20, marginTop: 20,
}} }}
src={`${process.env.PUBLIC_URL}/static/pdf/web/viewer.html?file=${encodeURIComponent(`/gunshiApp/tsg/projectEvents/file/download/${iframeSrc}`)}`} src={`${process.env.PUBLIC_URL}/static/pdf/web/viewer.html?file=${encodeURIComponent(`/gunshiApp/xyt/projectEvents/file/download/${iframeSrc}`)}`}
/> />
</Modal> </Modal>
</> </>

View File

@ -61,7 +61,7 @@ const Page = () => {
const download = (params) => { const download = (params) => {
let downloadLink = document.createElement("a"); let downloadLink = document.createElement("a");
downloadLink.href = `http://local.gunshiiot.com:18083/gunshiApp/tsg/projectEvents/file/download/${params}`; downloadLink.href = `http://local.gunshiiot.com:18083/gunshiApp/xyt/projectEvents/file/download/${params}`;
downloadLink.download = `${params.fileName}`; downloadLink.download = `${params.fileName}`;
downloadLink.style.display = "none"; downloadLink.style.display = "none";
// 将链接添加到页面中 // 将链接添加到页面中
@ -87,7 +87,6 @@ const viewPdf = (params) => {
setPdfViewOPen(true) setPdfViewOPen(true)
} }
useEffect(()=>{ useEffect(()=>{
const params = { const params = {
search: { search: {
...searchVal, ...searchVal,
@ -214,7 +213,7 @@ const viewPdf = (params) => {
border: 0, border: 0,
marginTop: 20, marginTop: 20,
}} }}
src={`${process.env.PUBLIC_URL}/static/pdf/web/viewer.html?file=${encodeURIComponent(`/gunshiApp/tsg/projectEvents/file/download/${iframeSrc}`)}`} src={`${process.env.PUBLIC_URL}/static/pdf/web/viewer.html?file=${encodeURIComponent(`/gunshiApp/xyt/projectEvents/file/download/${iframeSrc}`)}`}
/> />
</Modal> </Modal>
</> </>

View File

@ -36,9 +36,9 @@ const ToolBar = ({ setSearchVal, onSave, storeData,role }) => {
format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"
/> />
</Form.Item> </Form.Item>
<Form.Item> {searchBtn ? <Form.Item>
<Button type="primary" htmlType="submit">查询</Button> <Button type="primary" htmlType="submit">查询</Button>
</Form.Item> </Form.Item> : null }
<Form.Item> <Form.Item>
<Button onClick={() => form.resetFields()}>重置</Button> <Button onClick={() => form.resetFields()}>重置</Button>

View File

@ -38,7 +38,7 @@ const Page = () => {
const download = (params) => { const download = (params) => {
let downloadLink = document.createElement("a"); let downloadLink = document.createElement("a");
downloadLink.href = `http://local.gunshiiot.com:18083/gunshiApp/tsg/projectEvents/file/download/${params}`; downloadLink.href = `http://local.gunshiiot.com:18083/gunshiApp/xyt/projectEvents/file/download/${params}`;
downloadLink.download = `${params.fileName}`; downloadLink.download = `${params.fileName}`;
downloadLink.style.display = "none"; downloadLink.style.display = "none";
// 将链接添加到页面中 // 将链接添加到页面中
@ -177,7 +177,7 @@ const onExport = () => {
border: 0, border: 0,
marginTop: 20, marginTop: 20,
}} }}
src={`${process.env.PUBLIC_URL}/static/pdf/web/viewer.html?file=${encodeURIComponent(`/gunshiApp/tsg/projectEvents/file/download/${iframeSrc}`)}`} src={`${process.env.PUBLIC_URL}/static/pdf/web/viewer.html?file=${encodeURIComponent(`/gunshiApp/xyt/projectEvents/file/download/${iframeSrc}`)}`}
/> />
</Modal> </Modal>
</> </>

View File

@ -78,7 +78,7 @@ const ModalForm = ({ mode, record, onEdit, onSave, onSimilarSave }) => {
const onfinish = (values) => { const onfinish = (values) => {
values.files = fileList.map(item => item.response?.data??item); values.files = fileList.map(item => item.response?.data);
// values.eventsDate = values.eventsDate ? moment(values.eventsDate).format("YYYY-MM-DD 00:00:00") : '' // values.eventsDate = values.eventsDate ? moment(values.eventsDate).format("YYYY-MM-DD 00:00:00") : ''
if (mode === 'edit') { if (mode === 'edit') {
@ -144,7 +144,7 @@ const ModalForm = ({ mode, record, onEdit, onSave, onSimilarSave }) => {
</Col> </Col>
<Col span={12}> <Col span={12}>
<Form.Item label="法律性质" name="type" rules={[{ required: true }]}> <Form.Item label="法律性质" name="type" rules={[{ required: true }]}>
<Select allowClear style={{ width: '100%' }} options={[ <Select allowClear style={{ width: '150px' }} options={[
{ label: '宪法', value: 0 }, { label: '宪法', value: 0 },
{ label: '法律', value: 1 }, { label: '法律', value: 1 },
{ label: '行政法规', value: 2 }, { label: '行政法规', value: 2 },
@ -171,7 +171,7 @@ const ModalForm = ({ mode, record, onEdit, onSave, onSimilarSave }) => {
]} ]}
> >
<Select allowClear style={{ width: '100%' }} options={[ <Select allowClear style={{ width: '150px' }} options={[
{ label: '尚未生效', value: 0 }, { label: '尚未生效', value: 0 },
{ label: '有效', value: 1 }, { label: '有效', value: 1 },
{ label: '已修改', value: 2 }, { label: '已修改', value: 2 },
@ -236,7 +236,7 @@ const ModalForm = ({ mode, record, onEdit, onSave, onSimilarSave }) => {
fileList.length > 0 && fileList.map(file => { fileList.length > 0 && fileList.map(file => {
return ( return (
<Col span={12}> <Col span={12}>
<div className="file-item" style={{ width: "75%",marginTop:5 }}> <div className="file-item" style={{ width: "75%" }}>
<div className='file-description'> <div className='file-description'>
{file?.fileName?.indexOf('.docx') > -1 ? {file?.fileName?.indexOf('.docx') > -1 ?
<div <div

View File

@ -1,7 +1,7 @@
import React, { Fragment, useRef, useMemo, useEffect, useState } from 'react'; import React, { Fragment, useRef, useMemo, useEffect, useState } from 'react';
import BasicCrudModal from '../../../components/crud/BasicCrudModal'; import BasicCrudModal from '../../../components/crud/BasicCrudModal';
import { Table, Card, Modal, Form, Input, Button, Row, Col, Timeline, message, Tabs, Image } from 'antd'; import { Table, Card, Modal, Form, Input, Button, Row, Col, Timeline, message, Tabs, Image } from 'antd';
import { FileWordOutlined, FilePdfOutlined, FileZipOutlined, PaperClipOutlined } from '@ant-design/icons'; import { FileWordOutlined, FilePdfOutlined, FileZipOutlined, FileExcelOutlined } from '@ant-design/icons';
import { useSelector } from 'react-redux'; import { useSelector } from 'react-redux';
import ToolBar from './toolbar'; import ToolBar from './toolbar';
import ModalForm from './form'; import ModalForm from './form';
@ -10,8 +10,6 @@ import usePageTable from '../../../components/crud/usePageTable2';
import { createCrudService } from '../../../components/crud/_'; import { createCrudService } from '../../../components/crud/_';
import { CrudOpRender_text } from '../../../components/crud/CrudOpRender'; import { CrudOpRender_text } from '../../../components/crud/CrudOpRender';
import { render } from 'react-dom'; import { render } from 'react-dom';
import { httpgetExport } from '../../../utils/request';
import { exportFile } from '../../../utils/tools';
const url = "http://223.75.53.141:9102/test.by-lyf.tmp" const url = "http://223.75.53.141:9102/test.by-lyf.tmp"
const typeOb={0:'宪法',1:'法律',2:'行政法规',3:'督察法规',4:'司法解释',5:'地方性法规'} const typeOb={0:'宪法',1:'法律',2:'行政法规',3:'督察法规',4:'司法解释',5:'地方性法规'}
@ -28,33 +26,33 @@ const Page = () => {
const [isFetch, setIsFetch] = useState(false) const [isFetch, setIsFetch] = useState(false)
const columns = [ const columns = [
{ title: '序号', key: 'inx', dataIndex: 'inx', width: 60, align: "center" }, { title: '序号', key: 'inx', dataIndex: 'inx', width: 60, align: "center" },
{ title: '标题', key: 'name', dataIndex: 'name', ellipsis: true }, { title: '标题', key: 'name', dataIndex: 'name', width: 250, ellipsis: true },
{ {
title: '制定机关', key: 'fillUnit', dataIndex: 'fillUnit', title: '制定机关', key: 'fillUnit', dataIndex: 'fillUnit', width: 140,
}, },
{ {
title: '法律性质', key: 'type', dataIndex: 'type', title: '法律性质', key: 'type', dataIndex: 'type', width: 140,
render: (value) => <span>{typeOb[value]}</span>, render: (value) => <span>{typeOb[value]}</span>,
}, },
{ {
title: '时效性', key: 'timeliness', dataIndex: 'timeliness', render:(v)=><> title: '时效性', key: 'timeliness', dataIndex: 'timeliness', width: 300,render:(v)=><>
{timelinessOb[v]} {timelinessOb[v]}
</> </>
}, },
{ {
title: '公布日期', key: 'announcementDate', dataIndex: 'announcementDate' title: '公布日期', key: 'announcementDate', dataIndex: 'announcementDate', width: 300
}, },
{ {
title: '施行日期', key: 'implementationDate', dataIndex: 'implementationDate' title: '施行日期', key: 'implementationDate', dataIndex: 'implementationDate', width: 300
}, },
{ {
title: '上传时间', key: 'eventsDesc', dataIndex: 'eventsDesc' title: '上传时间', key: 'eventsDesc', dataIndex: 'eventsDesc', width: 300
}, },
{ {
title: '附件', key: 'files', dataIndex: 'files',render:(v,r)=><a onClick={()=>download(v[0].fileId,v[0]?.fileName)}><PaperClipOutlined />{v[0]?.fileName}</a> title: '附件', key: 'files', dataIndex: 'files', width: 300,render:(v,r)=><a onClick={()=>viewPdf(v[0].fileId)}>{v[0]?.fileName}</a>
}, },
{ {
title: '操作', key: 'operation', title: '操作', key: 'operation', width: 240, fixed: 'right', align: 'center',
render: (value, row, index) => ( render: (value, row, index) => (
<CrudOpRender_text <CrudOpRender_text
edit={true} edit={true}
@ -89,16 +87,7 @@ const Page = () => {
refresh() refresh()
setIsFetch(!isFetch) setIsFetch(!isFetch)
} }
/**
* @description 文件下载
* @param {String} params 文件fileId
*/
const download = async(id, name) => {
var extension = name?.split('.').pop().toLowerCase();
httpgetExport(apiurl.zdgl.download+id).then(res => {
exportFile(name,res.data)
})
}
const viewPdf = (params) => { const viewPdf = (params) => {
setIframeSrc(params) setIframeSrc(params)
setPdfViewOPen(true) setPdfViewOPen(true)
@ -125,7 +114,7 @@ const Page = () => {
/> />
</Card> </Card>
<div className="ant-card-body" style={{ padding: "20px 0 0 0" }}> <div className="ant-card-body" style={{ padding: "20px 0 0 0" }}>
<Table columns={columns} rowKey="inx" {...tableProps} /> <Table columns={columns} rowKey="inx" {...tableProps} scroll={{ x: width, y: "calc( 100vh - 400px )" }} />
</div> </div>
</div> </div>

View File

@ -10,26 +10,14 @@ const ToolBar = ({ setSearchVal, onSave, storeData, role }) => {
const [form] = Form.useForm(); const [form] = Form.useForm();
const [showGj , setShowGj] =useState(false) const [showGj , setShowGj] =useState(false)
const onFinish = (values) => { const onFinish = (values) => {
if (values.announcementDate) { let dateSo;
// 公布时间 if (values.tm) {
values.stmAd= values.announcementDate[0].format('YYYY-MM-DD HH:mm:ss') dateSo = {
values.etmAd= values.announcementDate[1].format('YYYY-MM-DD HH:mm:ss') start: moment(values.tm[0]).format('YYYY-MM-DD HH:mm:ss'),
end: moment(values.tm[1]).format('YYYY-MM-DD HH:mm:ss')
} }
if (values.implementationDate) {
// 施行日期
values.stmIm= values.implementationDate[0].format('YYYY-MM-DD HH:mm:ss')
values.etmIm= values.implementationDate[0].format('YYYY-MM-DD HH:mm:ss')
} }
if (values.uploadTime) { delete values.tm
// 上传日期
values.stmUd= values.uploadTime[0].format('YYYY-MM-DD HH:mm:ss')
values.etmUd= values.uploadTime[0].format('YYYY-MM-DD HH:mm:ss')
}
delete values.announcementDate
delete values.implementationDate
delete values.uploadTime
setSearchVal({...values}); setSearchVal({...values});
} }
@ -96,7 +84,7 @@ const ToolBar = ({ setSearchVal, onSave, storeData, role }) => {
<Form.Item label="施行日期" name="implementationDate"> <Form.Item label="施行日期" name="implementationDate">
<RangePicker allowClear /> <RangePicker allowClear />
</Form.Item> </Form.Item>
<Form.Item label="上传时间" name="uploadTime"> <Form.Item label="上传时间" name="name">
<RangePicker allowClear /> <RangePicker allowClear />
</Form.Item> </Form.Item>
</div>} </div>}

View File

@ -176,9 +176,9 @@ const Page = ({ uploadUrl, downloadUrl, type, getFormInfo, formJsonData }) => {
</p> </p>
<p className="ant-upload-text">点击或将文件拖拽到这里上传 支持扩展名jpegpng</p> <p className="ant-upload-text">点击或将文件拖拽到这里上传 支持扩展名jpegpng</p>
</Dragger> </Dragger>
<div className='flex'> <div>
{fileListHj?.[item1.key]?.map((item) => { {fileListHj?.[item1.key]?.map((item) => {
return <div className='flex align-center file-item' style={{marginTop:5,marginRight:'3%',width:'30%', minHeight: "50px", fontSize: 14, columnGap: 10, cursor: checkMediaType(item.fileName) == 'image' || checkMediaType(item.fileName) == 'pdf' ? 'pointer' : "not-allowed" }}> return <div className='flex align-center' style={{ minHeight: "50px", fontSize: 14, columnGap: 10, cursor: checkMediaType(item.fileName) == 'image' || checkMediaType(item.fileName) == 'pdf' ? 'pointer' : "not-allowed" }}>
<div style={{ width: 40, height: 40, display: "flex", alignItems: 'center' }}> <div style={{ width: 40, height: 40, display: "flex", alignItems: 'center' }}>
{checkMediaType(item.fileName) == 'image' && <Image {checkMediaType(item.fileName) == 'image' && <Image
height={40} height={40}

View File

@ -56,8 +56,7 @@ const basicData = [
key: 'caseAddress', key: 'caseAddress',
type: 'input', type: 'input',
span: 12, span: 12,
required: true, required: true
addonAfter:'选择地点'
}, },
{ {
label: '案件来源', label: '案件来源',

View File

@ -31,7 +31,7 @@ const items = [
]; ];
const Page = ({ mode, onCrudSuccess,record,submit }) => { const Page = ({ mode, onCrudSuccess,record }) => {
const [formData,setFormData] =useState({}) const [formData,setFormData] =useState({})
// debugger; // debugger;
const [key, setKeys] = useState('1') const [key, setKeys] = useState('1')
@ -40,10 +40,6 @@ const Page = ({ mode, onCrudSuccess,record,submit }) => {
setKeys(key) setKeys(key)
}; };
const getFormInfo = (e) => { const getFormInfo = (e) => {
if(!e){
submit()
return;
}
let params = { let params = {
...formData, ...formData,
...e, ...e,
@ -61,7 +57,7 @@ const Page = ({ mode, onCrudSuccess,record,submit }) => {
httppost(apiurl.szzf.ajdj.add, params).then(res => { httppost(apiurl.szzf.ajdj.add, params).then(res => {
if (res.code == 200) { if (res.code == 200) {
message.success('新增成功') message.success('新增成功')
submit() onCrudSuccess()
} else { } else {
message.error(res.description) message.error(res.description)
} }
@ -72,41 +68,24 @@ const Page = ({ mode, onCrudSuccess,record,submit }) => {
httppost(apiurl.szzf.ajdj.edit, params).then(res => { httppost(apiurl.szzf.ajdj.edit, params).then(res => {
if (res.code == 200) { if (res.code == 200) {
message.success('编辑成功') message.success('编辑成功')
submit() onCrudSuccess()
} else { } else {
message.error(res.description) message.error(res.description)
} }
}) })
} }
useEffect(()=>{ useEffect(()=>{
if(mode == 'edit' || mode =='view'){
httpget(apiurl.szzf.ajdj.detail + record.id).then(res=>{ httpget(apiurl.szzf.ajdj.detail + record.id).then(res=>{
let obj = { let obj = {
createName: localStorage.getItem('userName'), createName: localStorage.getItem('userName'),
createTime: dayjs().format('YYYY-MM-DD HH:mm:ss'), createTime: dayjs().format('YYYY-MM-DD HH:mm:ss'),
createBy:localStorage.getItem('userId') createBy:localStorage.getItem('userId')
} }
if(res.data?.caseDate){ if(res.data.caseDate){
obj.caseDate=dayjs(res.data.caseDate) obj.caseDate=dayjs(res.data.caseDate)
} }
// if(res.data?.illegalDate){
// obj.illegalDate=dayjs(res.data.illegalDate)
// }
if(res.data.IllegalDate){
obj.IllegalDate = dayjs(res.data.IllegalDate)
}
setFormData({...res.data,...obj}) setFormData({...res.data,...obj})
}) })
}else if(mode == 'save'){
let obj = {
createName: localStorage.getItem('userName'),
createTime: dayjs().format('YYYY-MM-DD HH:mm:ss'),
createBy:localStorage.getItem('userId'),
}
setFormData({...obj})
}
},[]) },[])
return ( return (
<> <>

View File

@ -30,28 +30,28 @@ const Page = () => {
const [isFetch, setIsFetch] = useState(false) const [isFetch, setIsFetch] = useState(false)
const columns = [ const columns = [
{ title: '序号', key: 'inx', dataIndex: 'inx', width: 60, align: "center" }, { title: '序号', key: 'inx', dataIndex: 'inx', width: 60, align: "center" },
{ title: '填报时间', key: 'createTime', dataIndex: 'createTime', ellipsis: true }, { title: '填报时间', key: 'createTime', dataIndex: 'createTime', width: 250, ellipsis: true },
{ {
title: '案件名称', key: 'caseName', dataIndex: 'caseName', title: '案件名称', key: 'caseName', dataIndex: 'caseName', width: 140,
}, },
{ {
title: '案件编号', key: 'caseId', dataIndex: 'caseId', title: '案件编号', key: 'caseId', dataIndex: 'caseId', width: 140,
}, },
{ {
title: '发现时间', key: 'caseDate', dataIndex: 'caseDate', title: '发现时间', key: 'caseDate', dataIndex: 'caseDate', width: 300,
}, },
{ {
title: '案件类型', key: 'caseType', dataIndex: 'caseType', title: '案件类型', key: 'caseType', dataIndex: 'caseType', width: 300,
render: (value) => <span>{caseTypeOb[value]}</span>, render: (value) => <span>{caseTypeOb[value]}</span>,
}, },
{ {
title: '案件来源', key: 'caseSource', dataIndex: 'caseSource', title: '案件来源', key: 'caseSource', dataIndex: 'caseSource', width: 300,
render: (value) => <span>{caseSourceOb[value]}</span>, render: (value) => <span>{caseSourceOb[value]}</span>,
}, },
{ {
title: '操作', key: 'operation', width: 240, title: '操作', key: 'operation', width: 240, fixed: 'right', align: 'center',
render: (value, row, index) => ( render: (value, row, index) => (
<CrudOpRender_text <CrudOpRender_text
edit={true} edit={true}
@ -121,7 +121,7 @@ const Page = () => {
/> />
</Card> </Card>
<div className="ant-card-body" style={{ padding: "20px 0 0 0" }}> <div className="ant-card-body" style={{ padding: "20px 0 0 0" }}>
<Table columns={columns} rowKey="inx" {...tableProps} /> <Table columns={columns} rowKey="inx" {...tableProps} scroll={{ x: width, y: "calc( 100vh - 400px )" }} />
</div> </div>
</div> </div>

View File

@ -142,9 +142,9 @@ const Page = ({ uploadUrl, downloadUrl, type, getFormInfo, formJsonData }) => {
</p> </p>
<p className="ant-upload-text">点击或将文件拖拽到这里上传 支持扩展名jpegpng</p> <p className="ant-upload-text">点击或将文件拖拽到这里上传 支持扩展名jpegpng</p>
</Dragger> </Dragger>
<div className='flex'> <div>
{fileListHj?.[item1.key]?.map((item) => { {fileListHj?.[item1.key]?.map((item) => {
return <div className='flex align-center file-item' style={{marginTop:5,marginRight:'3%',width:'30%', minHeight: "50px", fontSize: 14, columnGap: 10, cursor: checkMediaType(item.fileName) == 'image' || checkMediaType(item.fileName) == 'pdf' ? 'pointer' : "not-allowed" }}> return <div className='flex align-center' style={{ minHeight: "50px", fontSize: 14, columnGap: 10, cursor: checkMediaType(item.fileName) == 'image' || checkMediaType(item.fileName) == 'pdf' ? 'pointer' : "not-allowed" }}>
<div style={{ width: 40, height: 40, display: "flex", alignItems: 'center' }}> <div style={{ width: 40, height: 40, display: "flex", alignItems: 'center' }}>
{checkMediaType(item.fileName) == 'image' && <Image {checkMediaType(item.fileName) == 'image' && <Image
height={40} height={40}

View File

@ -67,7 +67,7 @@ const Page = ({ setTreeSelect }) => {
}; };
const onSearch = (value) => { const onSearch = (value) => {
// debugger; debugger;
setSearchValue(value); setSearchValue(value);
setAutoExpandParent(true); setAutoExpandParent(true);
@ -112,49 +112,18 @@ const Page = ({ setTreeSelect }) => {
return loop(data); return loop(data);
}, [searchValue, data]); }, [searchValue, data]);
const getFirstChild=(val)=> {
let res = {};
if (JSON.stringify(res) != "{}") {
return;//如果res不再是空对象退出递归
} else {
//遍历数组
for (let i = 0; i < val.length; i++) {
//如果当前的isleaf是true,说明是叶子节点把当前对象赋值给res,并return终止循环
if (!val[i].children) {
res = val[i];
break;
}else {//否则的话递归当前节点的children
getFirstChild(val[i].children);
}
}
return res
}
}
useEffect(() => { useEffect(() => {
httpget(apiurl.szzf.clyj.tree).then(res => { httpget(apiurl.szzf.clyj.tree).then(res => {
setData(res.data) setData(res.data)
// setTreeSelect(
// [{
// key: res.data[0].id,
// name: res.data[0].legalName,
// }]
// )
// setSelect([res.data[0].id])
// getFirstChild(res.data)
setSelect([getFirstChild(res.data).id]);
setTreeSelect( setTreeSelect(
[{ [{
key: getFirstChild(res.data).id, key: res.data[0].id,
name: getFirstChild(res.data).legalName, name: res.data[0].legalName,
}] }]
) )
setSelect([res.data[0].id])
}) })
}, []) }, [])

View File

@ -32,9 +32,8 @@ const FormZdy = ({ fileKey,typeName = "ddForm", formJson, getFormInfo, type, for
} }
const getInfo = () => { const getInfo = () => {
form.validateFields().then((values) => { form.validateFields().then((values) => {
// debugger;
getFormInfo({ ...values, [fileKey]: fileList, fileIds: fileList.map(item => item.fileId) }) getFormInfo({ ...values, [fileKey]: fileList, fileIds: fileList.map(item => item.fileId) })
form.resetFields()
setFileList([]) setFileList([])
}).catch((errorInfo) => { }).catch((errorInfo) => {
console.log(errorInfo, 'error'); console.log(errorInfo, 'error');
@ -52,7 +51,7 @@ const FormZdy = ({ fileKey,typeName = "ddForm", formJson, getFormInfo, type, for
// window.open('http://local.gunshiiot.com:18083/xintankou/api/file/preview/104') // window.open('http://local.gunshiiot.com:18083/xintankou/api/file/preview/104')
// } // }
const deleteFile = (e) => { const deleteFile = (e) => {
// debugger; debugger;
let arr = fileList.filter(item => item.fileId !== e) let arr = fileList.filter(item => item.fileId !== e)
setFileList(arr) setFileList(arr)
} }
@ -72,6 +71,7 @@ const FormZdy = ({ fileKey,typeName = "ddForm", formJson, getFormInfo, type, for
}, },
customRequest(e) { customRequest(e) {
setFileLisUp([...fileListUp, e.file]) setFileLisUp([...fileListUp, e.file])
debugger
httppostAddfile(uploadUrl, e).then(res => { httppostAddfile(uploadUrl, e).then(res => {
setFileList([...fileList, res.data]) setFileList([...fileList, res.data])
}) })
@ -121,10 +121,7 @@ const FormZdy = ({ fileKey,typeName = "ddForm", formJson, getFormInfo, type, for
}) })
} }
useEffect(() => { useEffect(() => {
form.resetFields() // form.resetFields()
},[])
useEffect(() => {
let formType = type let formType = type
if (type = 'edit') { if (type = 'edit') {
formType = 2 formType = 2
@ -133,7 +130,6 @@ const FormZdy = ({ fileKey,typeName = "ddForm", formJson, getFormInfo, type, for
formType = 1 formType = 1
} }
if (type == 'save') { if (type == 'save') {
form.setFieldsValue(formJsonData)
formType = 0 formType = 0
} }
if (formType == 1 || formType == 2 || formType == 3) { if (formType == 1 || formType == 2 || formType == 3) {
@ -168,7 +164,7 @@ const FormZdy = ({ fileKey,typeName = "ddForm", formJson, getFormInfo, type, for
name={item.key} name={item.key}
rules={[{ required: item.required, message: '请输入' + item.label }]} rules={[{ required: item.required, message: '请输入' + item.label }]}
> >
<Input disabled={type == 'view' || item.disabled} placeholder={item.placeholder} addonAfter={item.addonAfter}/> <Input disabled={type == 'view' || item.disabled} placeholder={item.placeholder} />
</Form.Item>} </Form.Item>}
{item.type == "title" && {item.type == "title" &&
<Form.Item <Form.Item
@ -275,7 +271,7 @@ const FormZdy = ({ fileKey,typeName = "ddForm", formJson, getFormInfo, type, for
</Dragger>} </Dragger>}
<div className='flex' > <div className='flex' >
{fileList?.map((item) => { {fileList?.map((item) => {
return <div className='flex align-center file-item' style={{marginTop:5, marginRight:'3%',width:'30%',minHeight: "50px", fontSize: 14, columnGap: 10, cursor: checkMediaType(item.fileName) == 'image' || checkMediaType(item.fileName) == 'pdf' ? 'pointer' : "not-allowed" }}> return <div className='flex align-center file-item' style={{ marginRight:'3%',width:'30%',minHeight: "50px", fontSize: 14, columnGap: 10, cursor: checkMediaType(item.fileName) == 'image' || checkMediaType(item.fileName) == 'pdf' ? 'pointer' : "not-allowed" }}>
<div style={{ width: 40, height: 40, display: "flex", alignItems: 'center' }}> <div style={{ width: 40, height: 40, display: "flex", alignItems: 'center' }}>
{checkMediaType(item.fileName) == 'image' && <Image {checkMediaType(item.fileName) == 'image' && <Image
height={40} height={40}

View File

@ -79,8 +79,8 @@ const ModalForm = ({ mode, record, onEdit, onSave, onSimilarSave }) => {
const onfinish = (values) => { const onfinish = (values) => {
let oldFiles = fileList.map(item => (item.response?.data??item)) let oldFiles = fileList.map(item => (item.response?.data))
// debugger debugger
if (mode === 'edit') { if (mode === 'edit') {
values.files = oldFiles; values.files = oldFiles;
values.id = record.id; values.id = record.id;
@ -138,7 +138,7 @@ const ModalForm = ({ mode, record, onEdit, onSave, onSimilarSave }) => {
</Col> </Col>
<Col span={12}> <Col span={12}>
<Form.Item label="制度类型" name="type" rules={[{ required: true }]}> <Form.Item label="制度类型" name="type" rules={[{ required: true }]}>
<Select allowClear style={{ width: '100%' }} options={opntios} /> <Select allowClear style={{ width: '150px' }} options={opntios} />
</Form.Item> </Form.Item>
</Col> </Col>
<Col span={12}> <Col span={12}>
@ -191,7 +191,7 @@ const ModalForm = ({ mode, record, onEdit, onSave, onSimilarSave }) => {
fileList.length > 0 && fileList.map(file => { fileList.length > 0 && fileList.map(file => {
return ( return (
<Col span={12}> <Col span={12}>
<div className="file-item" style={{ width: "75%",marginTop:5 }}> <div className="file-item" style={{ width: "75%" }}>
<div className='file-description'> <div className='file-description'>
{file.name.indexOf('.docx') > -1 ? {file.name.indexOf('.docx') > -1 ?
<div <div

View File

@ -1,7 +1,7 @@
import React, { Fragment, useRef, useMemo, useEffect, useState } from 'react'; import React, { Fragment, useRef, useMemo, useEffect, useState } from 'react';
import BasicCrudModal from '../../../components/crud/BasicCrudModal'; import BasicCrudModal from '../../../components/crud/BasicCrudModal';
import { Table, Card, Modal, Form, Input, Button, Row, Col, Timeline, message, Tabs, Image } from 'antd'; import { Table, Card, Modal, Form, Input, Button, Row, Col, Timeline, message, Tabs, Image } from 'antd';
import { FileWordOutlined, FilePdfOutlined, FileZipOutlined, PaperClipOutlined } from '@ant-design/icons'; import { FileWordOutlined, FilePdfOutlined, FileZipOutlined, FileExcelOutlined } from '@ant-design/icons';
import { useSelector } from 'react-redux'; import { useSelector } from 'react-redux';
import ToolBar from './toolbar'; import ToolBar from './toolbar';
import ModalForm from './form'; import ModalForm from './form';
@ -9,8 +9,6 @@ import apiurl from '../../../service/apiurl';
import usePageTable from '../../../components/crud/usePageTable2'; import usePageTable from '../../../components/crud/usePageTable2';
import { createCrudService } from '../../../components/crud/_'; import { createCrudService } from '../../../components/crud/_';
import { CrudOpRender_text } from '../../../components/crud/CrudOpRender'; import { CrudOpRender_text } from '../../../components/crud/CrudOpRender';
import { httpgetExport } from '../../../utils/request';
import { exportFile } from '../../../utils/tools';
const url = "http://223.75.53.141:9102/test.by-lyf.tmp" const url = "http://223.75.53.141:9102/test.by-lyf.tmp"
const obj={0:"党支部工作制度",1:"行政工作制度",2:"部门工作制度",3:"安全管理制度",4:"工程管理制度",5:"技术规程",6:"岗位责任制"} const obj={0:"党支部工作制度",1:"行政工作制度",2:"部门工作制度",3:"安全管理制度",4:"工程管理制度",5:"技术规程",6:"岗位责任制"}
@ -26,24 +24,24 @@ const Page = () => {
const [isFetch, setIsFetch] = useState(false) const [isFetch, setIsFetch] = useState(false)
const columns = [ const columns = [
{ title: '序号', key: 'inx', dataIndex: 'inx', width: 60, align: "center" }, { title: '序号', key: 'inx', dataIndex: 'inx', width: 60, align: "center" },
{ title: '标题', key: 'name', dataIndex: 'name', ellipsis: true }, { title: '标题', key: 'name', dataIndex: 'name', width: 250, ellipsis: true },
{ {
title: '制度类型', key: 'type', dataIndex: 'type',render:(v)=><>{obj[v]}</> title: '制度类型', key: 'type', dataIndex: 'type', width: 140,render:(v)=><>{obj[v]}</>
}, },
{ {
title: '发布日期', key: 'releaseDate', dataIndex: 'releaseDate' title: '发布日期', key: 'releaseDate', dataIndex: 'releaseDate', width: 300
}, },
{ {
title: '发布单位', key: 'fillUnit', dataIndex: 'fillUnit' title: '发布单位', key: 'fillUnit', dataIndex: 'fillUnit', width: 300
}, },
{ {
title: '上传时间', key: 'uploadDate', dataIndex: 'uploadDate' title: '上传时间', key: 'uploadDate', dataIndex: 'uploadDate', width: 300
}, },
{ {
title: '附件', key: 'files', dataIndex: 'files', render:(v,r)=><a onClick={()=>download(v[0].fileId,v[0]?.fileName)}><PaperClipOutlined />{v[0]?.fileName}</a> title: '附件', key: 'files', dataIndex: 'files', width: 300,render:(v,r)=><a onClick={()=>viewPdf(v[0].fileId)}>{v[0]?.fileName}</a>
}, },
{ {
title: '操作', key: 'operation', fixed: 'right', align: 'center', title: '操作', key: 'operation', width: 240, fixed: 'right', align: 'center',
render: (value, row, index) => ( render: (value, row, index) => (
<CrudOpRender_text <CrudOpRender_text
edit={true} edit={true}
@ -78,16 +76,7 @@ const Page = () => {
refresh() refresh()
setIsFetch(!isFetch) setIsFetch(!isFetch)
} }
/**
* @description 文件下载
* @param {String} params 文件fileId
*/
const download = async(id, name) => {
var extension = name?.split('.').pop().toLowerCase();
httpgetExport(apiurl.zdgl.download+id).then(res => {
exportFile(name,res.data)
})
}
const viewPdf = (params) => { const viewPdf = (params) => {
setIframeSrc(params) setIframeSrc(params)
setPdfViewOPen(true) setPdfViewOPen(true)
@ -114,7 +103,7 @@ const Page = () => {
/> />
</Card> </Card>
<div className="ant-card-body" style={{ padding: "20px 0 0 0" }}> <div className="ant-card-body" style={{ padding: "20px 0 0 0" }}>
<Table columns={columns} rowKey="inx" {...tableProps} /> <Table columns={columns} rowKey="inx" {...tableProps} scroll={{ x: width, y: "calc( 100vh - 400px )" }} />
</div> </div>
</div> </div>

View File

@ -10,15 +10,15 @@ const ToolBar = ({ setSearchVal, onSave, storeData, role }) => {
const [form] = Form.useForm(); const [form] = Form.useForm();
const [showGj, setShowGj] = useState(false) const [showGj, setShowGj] = useState(false)
const onFinish = (values) => { const onFinish = (values) => {
let dataSo; let dateSo;
if (values.releaseDate) { if (values.tm) {
dataSo = { dateSo = {
stm: moment(values.releaseDate[0]).format('YYYY-MM-DD HH:mm:ss'), start: moment(values.tm[0]).format('YYYY-MM-DD HH:mm:ss'),
etm: moment(values.releaseDate[1]).format('YYYY-MM-DD HH:mm:ss') end: moment(values.tm[1]).format('YYYY-MM-DD HH:mm:ss')
} }
} }
delete values.releaseDate delete values.tm
setSearchVal({ ...values, ...dataSo }); setSearchVal({ ...values, dateSo });
} }
const opntios = [ const opntios = [