qzc-dev-demo
秦子超 2025-04-10 17:01:01 +08:00
commit 5c7622aa52
5 changed files with 352 additions and 328 deletions

View File

@ -4,7 +4,7 @@ import zd from '../../../assets/img/wait.png'
const Page = () => { const Page = () => {
return ( return (
<div style={{display:'flex',justifyContent:'center',alignItems:'center',backgroundColor:'#fff',height:'100%',padding:'20px'}}> <div style={{display:'flex',justifyContent:'center',alignItems:'center',backgroundColor:'#fff',height:'100%',padding:'20px'}}>
<Image src={zd} style={{margin:'auto',margin:'20px',height:'530px'}} preview={false}/> <Image src={zd} style={{margin:'auto',margin:'20px',height:'130px'}} preview={false}/>
</div> </div>
) )
} }

View File

@ -96,9 +96,9 @@ 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="uploadTime">
<RangePicker allowClear /> <RangePicker allowClear />
</Form.Item> </Form.Item> */}
</div>} </div>}
</Form> </Form>
</div> </div>

View File

@ -68,7 +68,7 @@ const Page = ({ mode, onCrudSuccess,record,submit }) => {
if (mode == 'save') { if (mode == 'save') {
addBasic(params) addBasic(params)
} else if (mode == 'edit') { } else if (mode == 'edit') {
editBasic({...params}) editBasic({...params,caseDate:record.caseDate ? dayjs(record.caseDate).format('YYYY-MM-DD HH:mm:ss'):''})
} }
} }
const addBasic = (params) => { const addBasic = (params) => {

View File

@ -70,7 +70,7 @@ const Page = () => {
refModal.current.showSave(); refModal.current.showSave();
} else if (type === 'edit') { } else if (type === 'edit') {
let obj={} let obj = {}
if (params.caseDate) { if (params.caseDate) {
obj.caseDate = params.caseDate ? dayjs(params.caseDate) :undefined obj.caseDate = params.caseDate ? dayjs(params.caseDate) :undefined
} }

View File

@ -1,5 +1,5 @@
import React, { useEffect, useState, useRef } from 'react'; import React, { useEffect, useState, useRef } from 'react';
import { TreeSelect, Table, Tag, DatePicker, Form, Select, Button, message, Upload, Input, Row, Col, Switch, Image,Radio } from 'antd'; import { TreeSelect, Table, Tag, DatePicker, Form, Select, Button, message, Upload, Input, Row, Col, Switch, Image, Radio } from 'antd';
import './ddForm.less' import './ddForm.less'
import dayjs from 'dayjs' import dayjs from 'dayjs'
import { InboxOutlined, LinkOutlined, DeleteOutlined, LoadingOutlined, VerticalAlignBottomOutlined } from '@ant-design/icons' import { InboxOutlined, LinkOutlined, DeleteOutlined, LoadingOutlined, VerticalAlignBottomOutlined } from '@ant-design/icons'
@ -13,8 +13,8 @@ const { RangePicker } = DatePicker;
const { TextArea } = Input; const { TextArea } = Input;
const baseUrl = "http://223.75.53.141:9100/gs-tsg" const baseUrl = "http://223.75.53.141:9100/gs-tsg"
let dataList = [];
const FormZdy = ({ fileKey,typeName = "ddForm", formJson, getFormInfo, type, formJsonData, typeUpload = 'dispatch', isModalOpen, fileType, footer = true, uploadUrl,TableZdyProps,downloadUrl, const FormZdy = ({ fileKey, typeName = "ddForm", formJson, getFormInfo, type, formJsonData, typeUpload = 'dispatch', isModalOpen, fileType, footer = true, uploadUrl, TableZdyProps, downloadUrl,
onSave }) => { onSave }) => {
const [fileList, setFileList] = useState([]) const [fileList, setFileList] = useState([])
const [fileListUp, setFileLisUp] = useState([]) const [fileListUp, setFileLisUp] = useState([])
@ -23,6 +23,7 @@ const FormZdy = ({ fileKey,typeName = "ddForm", formJson, getFormInfo, type, for
const [loading, setLoading] = useState(false) const [loading, setLoading] = useState(false)
const [searchValue, setSearchValue] = useState(''); const [searchValue, setSearchValue] = useState('');
const treeRef = useRef();
// //
const [form] = Form.useForm(); const [form] = Form.useForm();
@ -119,18 +120,18 @@ const FormZdy = ({ fileKey,typeName = "ddForm", formJson, getFormInfo, type, for
} }
/** /**
* @description 文件下载 * @description 文件下载
* @param {String} params 文件fileId * @param {String} params 文件fileId
*/ */
const download = async(id, name) => { const download = async (id, name) => {
var extension = name?.split('.').pop().toLowerCase(); var extension = name?.split('.').pop().toLowerCase();
httpgetExport(downloadUrl+id).then(res => { httpgetExport(downloadUrl + id).then(res => {
exportFile(name,res.data) exportFile(name, res.data)
}) })
} }
useEffect(()=>{ useEffect(() => {
form.resetFields() form.resetFields()
},[]) }, [])
useEffect(() => { useEffect(() => {
let formType = type let formType = type
@ -162,27 +163,48 @@ const FormZdy = ({ fileKey,typeName = "ddForm", formJson, getFormInfo, type, for
}, [type, formJsonData, isModalOpen]) }, [type, formJsonData, isModalOpen])
const handleTreeData = (treeData, searchValue = '') => { const handleTreeData = (treeData, searchValue = '') => {
const loop = (data) => { const loop = (treeData) =>
return data.map((item) => { treeData.map((item) => {
const strTitle = item.title?.toString() || ''; const strTitle = item.legalName;
const matchValue = strTitle.toLowerCase().indexOf(searchValue.toLowerCase()) > -1; const index = strTitle?.indexOf(searchValue);
const beforeStr = strTitle.substring(0, index);
const afterStr = strTitle.slice(index + searchValue?.length);
const title =
index > -1 ? (
<span key={item.id}>
{beforeStr}
<span className="site-tree-search-value" style={{ color: 'red' }}>{searchValue}</span>
{afterStr}
</span>
) : (
<span key={item.id}>{strTitle}</span>
);
if (item.children) {
return { title: title, key: item.id, children: loop(item.children), name: strTitle };
}
if (index > -1) {
const children = item.children ? loop(item.children) : []; console.log(index, strTitle, searchValue);
const hasChildren = children && children.length > 0;
dataList.push(item.id)
// setExpandedKeys(dataList);
if (dataList.length < 2) {
treeRef.current.scrollTo({ key: dataList[0].id });
}
}
return { return {
...item, title: title,
disabled: hasChildren, // 有子节点的设为禁用 key: item.id,
children: hasChildren ? children : undefined name: strTitle
}; };
}); });
};
return loop(treeData); return loop(treeData);
}; };
const disableParentNodes = (treeData) => { const disableParentNodes = (treeData) => {
debugger
return treeData.map(node => { return treeData.map(node => {
const newNode = { ...node }; const newNode = { ...node };
if (node.children && node.children.length > 0) { if (node.children && node.children.length > 0) {
@ -235,7 +257,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 }]}
> >
<Radio.Group disabled={type == 'view'} options={item.options}/> <Radio.Group disabled={type == 'view'} options={item.options} />
</Form.Item>} </Form.Item>}
{/* {item.type == "Select" && <Select disabled={type == 1} options={item.options} />} */} {/* {item.type == "Select" && <Select disabled={type == 1} options={item.options} />} */}
@ -256,7 +278,7 @@ const FormZdy = ({ fileKey,typeName = "ddForm", formJson, getFormInfo, type, for
rules={[{ required: item.required, message: '请输入' + item.label }]} rules={[{ required: item.required, message: '请输入' + item.label }]}
> >
{/* {formJsonData[item.key]} */} {/* {formJsonData[item.key]} */}
<DatePicker disabled={type == 'view'} style={{ width: "100%" }} picker={item.picker}/> <DatePicker disabled={type == 'view'} style={{ width: "100%" }} picker={item.picker} />
</Form.Item>} </Form.Item>}
{/* {item.type == "DatePicker" && <DatePicker disabled={type == 1} style={{ width: "100%" }} />} */} {/* {item.type == "DatePicker" && <DatePicker disabled={type == 1} style={{ width: "100%" }} />} */}
@ -285,14 +307,16 @@ const FormZdy = ({ fileKey,typeName = "ddForm", formJson, getFormInfo, type, for
> >
<TreeSelect <TreeSelect
showSearch showSearch
ref={treeRef}
style={{ width: '100%' }} style={{ width: '100%' }}
dropdownStyle={{ maxHeight: 400, overflow: 'auto' }} dropdownStyle={{ maxHeight: 400, overflow: 'auto' }}
allowClear allowClear
onSearch={setSearchValue} onSearch={setSearchValue}
fieldNames={item.fieldNames} fieldNames={item.fieldNames}
treeData={handleTreeData(item.treeData,searchValue)} treeData={disableParentNodes(item.treeData)}
treeCheckable={item.multiple} treeCheckable={item.multiple}
disabled={type == 'view'} disabled={type == 'view'}
// treeNodeFilterProp='legalName'
filterTreeNode={(inputValue, treeNode) => { filterTreeNode={(inputValue, treeNode) => {
return treeNode.legalName.toLowerCase().includes(inputValue.toLowerCase()); return treeNode.legalName.toLowerCase().includes(inputValue.toLowerCase());
}} }}
@ -319,7 +343,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={{ marginTop: 5, 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}
@ -351,7 +375,7 @@ const FormZdy = ({ fileKey,typeName = "ddForm", formJson, getFormInfo, type, for
<Button type="primary" onClick={getInfo} loading={loading}>确定</Button> <Button type="primary" onClick={getInfo} loading={loading}>确定</Button>
</div> </div>
} }
<PdfView url={`${process.env.PUBLIC_URL}/static/pdf/web/viewer.html?file=${encodeURIComponent(`/gunshiApp/tsg/rescue/goods/file/download/${url}`)}`} isModal={isModal} setModalN={(e)=>setIsModal(e)}/> <PdfView url={`${process.env.PUBLIC_URL}/static/pdf/web/viewer.html?file=${encodeURIComponent(`/gunshiApp/tsg/rescue/goods/file/download/${url}`)}`} isModal={isModal} setModalN={(e) => setIsModal(e)} />
</div > </div >