feat():人工监测数据录入开发

qzc-dev
李神峰 2025-10-15 15:35:27 +08:00
parent 8bd134d694
commit 68119f3f9e
10 changed files with 165 additions and 92 deletions

View File

@ -295,7 +295,16 @@ const apiurl = {
save: service_fxdd + "/osmoticPressR/artificial/insert", save: service_fxdd + "/osmoticPressR/artificial/insert",
edit: service_fxdd + "/osmoticPressR/artificial/update", edit: service_fxdd + "/osmoticPressR/artificial/update",
page: service_fxdd + "/osmoticPressR/artificial/page", page: service_fxdd + "/osmoticPressR/artificial/page",
del: service_fxdd + "/osmoticPressR/artificial/del/", del: service_fxdd + "/osmoticPressR/artificial/delete",
export: service_fxdd + "/osmoticPressR/artificial/export",
},
rgwyjc:{
save: service_fxdd + "/osmoticShiftR/artificial/insert",
edit: service_fxdd + "/osmoticShiftR/artificial/update",
page: service_fxdd + "/osmoticShiftR/artificial/page",
del: service_fxdd + "/osmoticShiftR/artificial/delete",
export: service_fxdd + "/osmoticShiftR/artificial/export",
list:service_fxdd + "/osmoticShiftR/artificial/tree"
}, },
wyjc:{ wyjc:{
save: service_fxdd + "/osmoticShiftR/insert", save: service_fxdd + "/osmoticShiftR/insert",

View File

@ -15,6 +15,8 @@ const ModalForm = ({ mode, record, onEdit, onSave, onSimilarSave }) => {
const [dmCode, setDmCode] = useState('') const [dmCode, setDmCode] = useState('')
const onFinish = (values) => { const onFinish = (values) => {
if (mode === 'edit') { if (mode === 'edit') {
values.updateMstm = values.mstm;
delete values.mstm;
onEdit(apiurl.gcaqjc.sjtjcx.sjlr.rgjc.edit, { ...record, ...values }) onEdit(apiurl.gcaqjc.sjtjcx.sjlr.rgjc.edit, { ...record, ...values })
} }
if (mode === 'save') { if (mode === 'save') {
@ -28,7 +30,6 @@ const ModalForm = ({ mode, record, onEdit, onSave, onSimilarSave }) => {
const getDmList = async () => { const getDmList = async () => {
try { try {
const res = await httppost2(apiurl.gcaqjc.sjtjcx.sycx.list) const res = await httppost2(apiurl.gcaqjc.sjtjcx.sycx.list)
setDmCd(res.data)
const sortedData = res.data.sort((a, b) => { const sortedData = res.data.sort((a, b) => {
// 判断a、b是否为ZB0开头 // 判断a、b是否为ZB0开头
const isAZB0 = a.profileCode.startsWith('ZB0'); const isAZB0 = a.profileCode.startsWith('ZB0');
@ -48,6 +49,7 @@ const ModalForm = ({ mode, record, onEdit, onSave, onSimilarSave }) => {
const getStationCode = async () => { const getStationCode = async () => {
try { try {
const res = await httpget2(apiurl.gcaqjc.sjtjcx.sycx.list1) const res = await httpget2(apiurl.gcaqjc.sjtjcx.sycx.list1)
setDmCd(res.data)
const list = [] const list = []
res?.data?.map((item) => { res?.data?.map((item) => {
const { dvcd, dm } = item const { dvcd, dm } = item
@ -69,14 +71,14 @@ const ModalForm = ({ mode, record, onEdit, onSave, onSimilarSave }) => {
const onValuesChange = (v) => { const onValuesChange = (v) => {
if ("dvcd" in v) { if ("dvcd" in v) {
// const updToDmMap = {}; // 键UPD编码对应的dm const updToDmMap = {}; // 键UPD编码对应的dm
// dmCd.forEach(item => { dmCd.forEach(item => {
// const currentDm = item.dm; // 当前dm const currentDm = item.dm; // 当前dm
// item.dvcd.forEach(upd => { item.dvcd.forEach(upd => {
// updToDmMap[upd] = currentDm; // 为每个UPD绑定dm updToDmMap[upd] = currentDm; // 为每个UPD绑定dm
// }); });
// }); });
// form.setFieldValue("dm",updToDmMap[v?.dvcd]) form.setFieldValue("dm",updToDmMap[v?.dvcd])
} }
} }

View File

@ -9,7 +9,7 @@ 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 { exportFile } from '../../../../../utils/tools.js'; import { exportFile } from '../../../../../utils/tools.js';
import { httppost5 } from '../../../../../utils/request'; import { httppost2, httppost5 } from '../../../../../utils/request';
import "./index.less" import "./index.less"
const Page = () => { const Page = () => {
@ -42,7 +42,18 @@ const Page = () => {
const width = useMemo(() => columns.reduce((total, cur) => total + (cur.width), 0), [columns]); const width = useMemo(() => columns.reduce((total, cur) => total + (cur.width), 0), [columns]);
const { tableProps, search, refresh } = usePageTable(createCrudService(apiurl.gcaqjc.sjtjcx.sjlr.rgjc.page).find_noCode);
const del = async (url, parmas) => {
try {
const res = await httppost2(url, parmas);
if (res.code == 200) {
message.success("删除成功");
refresh();
}
} catch (error) {
console.log(error);
}
}
const command = (type) => (params) => { const command = (type) => (params) => {
if (type === 'save') { if (type === 'save') {
refModal.current.showSave(); refModal.current.showSave();
@ -51,19 +62,25 @@ const Page = () => {
} else if (type === 'view') { } else if (type === 'view') {
refModal.current.showView(params); refModal.current.showView(params);
} else if (type === 'del') { } else if (type === 'del') {
const url = apiurl.gcaqjc.sjtjcx.sjlr.rgjc.del + params.mpcd+'/'+params.mstm const par = { mpcd: params.mpcd, mstm: params.mstm, stcd: params.stcd };
refModal.current.onDeleteGet(url); const url = apiurl.gcaqjc.sjtjcx.sjlr.rgjc.del
del(url, par);
} }
} }
const { tableProps, search, refresh } = usePageTable(createCrudService(apiurl.gcaqjc.sjtjcx.sjlr.rgjc.page).find_noCode);
const exportExcel = () => { const exportExcel = () => {
let pageSo = {
pageNumber: tableProps.pagination.current,
pageSize:tableProps.pagination.pageSize
}
let params = { let params = {
...searchVal, ...searchVal,
pageSo
} }
httppost5(apiurl.gcaqjc.sjtjcx.ndsytjb.export, params).then(res => { httppost5(apiurl.gcaqjc.sjtjcx.sjlr.rgjc.export, params).then(res => {
exportFile(`渗压监测表.xlsx`,res.data) exportFile(`人工录入渗压监测表.xlsx`, res.data)
}) })
} }
useEffect(() => { useEffect(() => {

View File

@ -38,6 +38,7 @@ const ToolBar = ({ setSearchVal, onSave, storeData, role,exportFile }) => {
const [dmList, setDmList] = useState([]) const [dmList, setDmList] = useState([])
const [codeList, setCodeList] = useState([]) const [codeList, setCodeList] = useState([])
const [dmCode, setDmCode] = useState('') const [dmCode, setDmCode] = useState('')
const [dmCd, setDmCd] = useState([])
const getDmList = async () => { const getDmList = async () => {
try { try {
@ -61,6 +62,7 @@ const ToolBar = ({ setSearchVal, onSave, storeData, role,exportFile }) => {
const getStationCode = async () => { const getStationCode = async () => {
try { try {
const res = await httpget2(apiurl.gcaqjc.sjtjcx.sycx.list1) const res = await httpget2(apiurl.gcaqjc.sjtjcx.sycx.list1)
setDmCd(res.data)
const list = [] const list = []
res?.data?.map((item) => { res?.data?.map((item) => {
const { dvcd, dm } = item const { dvcd, dm } = item
@ -100,6 +102,17 @@ const ToolBar = ({ setSearchVal, onSave, storeData, role,exportFile }) => {
break; break;
} }
if ("dvcd" in e) {
const updToDmMap = {}; // 键UPD编码对应的dm
dmCd.forEach(item => {
const currentDm = item.dm; // 当前dm
item.dvcd.forEach(upd => {
updToDmMap[upd] = currentDm; // 为每个UPD绑定dm
});
});
form.setFieldValue("dm",updToDmMap[e?.dvcd])
}
} }
const onFinish = (values) => { const onFinish = (values) => {
let dateSo; let dateSo;
@ -153,7 +166,7 @@ const ToolBar = ({ setSearchVal, onSave, storeData, role,exportFile }) => {
options={optionsType} options={optionsType}
/> />
</Form.Item> </Form.Item>
<Form.Item label="监测断面" name="profileCode"> <Form.Item label="监测断面" name="dm">
<NormalSelect <NormalSelect
allowClear allowClear
style={{ width: "150px" }} style={{ width: "150px" }}

View File

@ -3,41 +3,36 @@ import { Form, Button, Input, Row, Col, DatePicker, Upload,message,Image,Modal,R
import { formItemLayout, btnItemLayout } from '../../../../../components/crud/FormLayoutProps'; import { formItemLayout, btnItemLayout } from '../../../../../components/crud/FormLayoutProps';
import apiurl from '../../../../../service/apiurl'; import apiurl from '../../../../../service/apiurl';
import NormalSelect from '../../../../../components/Form/NormalSelect'; import NormalSelect from '../../../../../components/Form/NormalSelect';
import { httppost2 } from '../../../../../utils/request'; import { httppost2,httpget2 } from '../../../../../utils/request';
import moment from 'moment'; import moment from 'moment';
const ModalForm = ({ mode, record,onEdit,onSave,onSimilarSave }) => { const ModalForm = ({ mode, record,onEdit,onSave,onSimilarSave }) => {
console.log("record",record); console.log("record",record);
const [form] = Form.useForm(); const [form] = Form.useForm();
const [dmList, setDmList] = useState([])
const [codeList, setCodeList] = useState([]) const [codeList, setCodeList] = useState([])
const [dmCode,setDmCode] = useState('')
const onFinish = (values) => { const onFinish = (values) => {
if (mode === 'edit') { if (mode === 'edit') {
onEdit(apiurl.gcaqjc.sjtjcx.sjlr.wyjc.edit,{...record,...values}) values.newUpdateCd = values.cd;
values.newUpdateTm = values.tm;
delete values.cd;
delete values.tm;
onEdit(apiurl.gcaqjc.sjtjcx.sjlr.rgwyjc.edit,{...record,...values})
} }
if (mode === 'save') { if (mode === 'save') {
onSave(apiurl.gcaqjc.sjtjcx.sjlr.wyjc.save,values) onSave(apiurl.gcaqjc.sjtjcx.sjlr.rgwyjc.save,values)
} }
} }
const getDmList = async () => {
try {
const res = await httppost2(apiurl.gcaqjc.sjtjcx.sycx.list)
setDmList(res.data.map(s=>({label:s.profileName,value:s.profileCode})));
} catch (error) {
console.log(error);
}
}
const getStationCode = async () => { const getStationCode = async () => {
try { try {
const res = await httppost2(apiurl.gcaqjc.sjtjcx.wycx.list) const res = await httpget2(apiurl.gcaqjc.sjtjcx.sjlr.rgwyjc.list)
setCodeList(res.data); if (res.code == 200) {
setCodeList(res.data.map(s=>({label:s.cd,value:s.cd})));
}
} catch (error) { } catch (error) {
console.log(error); console.log(error);
} }
@ -45,7 +40,6 @@ const ModalForm = ({ mode, record,onEdit,onSave,onSimilarSave }) => {
useEffect(()=>{ useEffect(()=>{
getDmList()
getStationCode() getStationCode()
}, []) }, [])
@ -75,7 +69,7 @@ const ModalForm = ({ mode, record,onEdit,onSave,onSimilarSave }) => {
disabled={mode==='view'} disabled={mode==='view'}
allowClear allowClear
style={{ width: "100%" }} style={{ width: "100%" }}
options={codeList.map(s=>({label:s.cd,value:s.cd}))} options={codeList}
/> />
</Form.Item> </Form.Item>
<Form.Item <Form.Item

View File

@ -8,6 +8,8 @@ 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 { exportFile } from '../../../../../utils/tools.js';
import { httppost2, httppost5 } from '../../../../../utils/request';
import "./index.less" import "./index.less"
const Page = () => { const Page = () => {
const role = useSelector(state => state.auth.role); const role = useSelector(state => state.auth.role);
@ -40,7 +42,18 @@ const Page = () => {
const width = useMemo(() => columns.reduce((total, cur) => total + (cur.width), 0), [columns]); const width = useMemo(() => columns.reduce((total, cur) => total + (cur.width), 0), [columns]);
const { tableProps, search, refresh } = usePageTable(createCrudService(apiurl.gcaqjc.sjtjcx.sjlr.rgwyjc.page).find_noCode);
const del = async (url, parmas) => {
try {
const res = await httppost2(url, parmas);
if (res.code == 200) {
message.success("删除成功");
refresh();
}
} catch (error) {
console.log(error);
}
}
const command = (type) => (params) => { const command = (type) => (params) => {
if (type === 'save') { if (type === 'save') {
refModal.current.showSave(); refModal.current.showSave();
@ -49,21 +62,36 @@ const Page = () => {
} else if (type === 'view') { } else if (type === 'view') {
refModal.current.showView(params); refModal.current.showView(params);
} else if (type === 'del') { } else if (type === 'del') {
const url = apiurl.gcaqjc.sjtjcx.sjlr.wyjc.del + params.cd+'/'+params.tm const par = { cd: params.cd, tm: params.tm};
refModal.current.onDeleteGet(url); const url = apiurl.gcaqjc.sjtjcx.sjlr.rgwyjc.del
del(url, par);
} }
} }
const { tableProps, search, refresh } = usePageTable(createCrudService(apiurl.gcaqjc.sjtjcx.sjlr.wyjc.page).find_noCode); const exportExcel = () => {
let pageSo = {
pageNumber: tableProps.pagination.current,
pageSize:tableProps.pagination.pageSize
}
let params = {
...searchVal,
pageSo
}
httppost5(apiurl.gcaqjc.sjtjcx.sjlr.rgwyjc.export, params).then(res => {
exportFile(`人工录入位移监测表.xlsx`, res.data)
})
}
useEffect(()=>{ useEffect(()=>{
if (searchVal) {
const params = { const params = {
search: { search: {
...searchVal, ...searchVal,
} }
}; };
search(params) search(params)
}
}, [searchVal]) }, [searchVal])
@ -75,6 +103,7 @@ const Page = () => {
setSearchVal={setSearchVal} setSearchVal={setSearchVal}
onSave={command('save')} onSave={command('save')}
role={role} role={role}
exportFile={exportExcel}
/> />
</Card> </Card>
<div className="ant-card-body" style={{padding:"20px 0 0 0"}}> <div className="ant-card-body" style={{padding:"20px 0 0 0"}}>

View File

@ -5,7 +5,7 @@ import AdcdFuzzyTreeSelect from '../../../../../components/Form/AdcdFuzzyTreeSel
import NormalSelect from '../../../../../components/Form/NormalSelect'; import NormalSelect from '../../../../../components/Form/NormalSelect';
import { config } from '../../../../../config'; import { config } from '../../../../../config';
import moment from 'moment'; import moment from 'moment';
import { httppost2 } from '../../../../../utils/request'; import { httppost2,httpget2 } from '../../../../../utils/request';
import apiurl from '../../../../../service/apiurl'; import apiurl from '../../../../../service/apiurl';
const { RangePicker } = DatePicker; const { RangePicker } = DatePicker;
const ToolBar = ({ setSearchVal, onSave, storeData,role,exportFile }) => { const ToolBar = ({ setSearchVal, onSave, storeData,role,exportFile }) => {
@ -50,8 +50,10 @@ const ToolBar = ({ setSearchVal, onSave, storeData,role,exportFile }) => {
const getStationCode = async () => { const getStationCode = async () => {
try { try {
const res = await httppost2(apiurl.gcaqjc.sjtjcx.wycx.list) const res = await httpget2(apiurl.gcaqjc.sjtjcx.sjlr.rgwyjc.list)
if (res.code == 200) {
setCodeList(res.data.map(s=>({label:s.cd,value:s.cd}))); setCodeList(res.data.map(s=>({label:s.cd,value:s.cd})));
}
} catch (error) { } catch (error) {
console.log(error); console.log(error);
} }
@ -130,10 +132,10 @@ const ToolBar = ({ setSearchVal, onSave, storeData,role,exportFile }) => {
options={optionsType} options={optionsType}
/> />
</Form.Item> </Form.Item>
<Form.Item label="测点编号" name="stationCode"> <Form.Item label="测点编号" name="cd">
<NormalSelect <NormalSelect
allowClear allowClear
style={{ width: "150px" }} style={{ width: "200px" }}
options={codeList} options={codeList}
/> />
</Form.Item> </Form.Item>

View File

@ -45,12 +45,15 @@ const Page = () => {
const { tableProps, search, refresh } = usePageTable(createCrudService(apiurl.gcaqjc.sjtjcx.wycx.page).find_noCode); const { tableProps, search, refresh } = usePageTable(createCrudService(apiurl.gcaqjc.sjtjcx.wycx.page).find_noCode);
useEffect(() => { useEffect(() => {
if (searchVal) {
const params = { const params = {
search: { search: {
...searchVal, ...searchVal,
} }
}; };
search(params) search(params)
}
}, [searchVal]) }, [searchVal])
return ( return (
<> <>

View File

@ -10,7 +10,6 @@ import apiurl from '../../../../service/apiurl';
const { RangePicker } = DatePicker; const { RangePicker } = DatePicker;
const ToolBar = ({ setSearchVal, onSave, storeData,role }) => { const ToolBar = ({ setSearchVal, onSave, storeData,role }) => {
const searchBtn = role?.rule?.find(item => item.menuName == "查询")||true; const searchBtn = role?.rule?.find(item => item.menuName == "查询")||true;
const optionsType = [ const optionsType = [
{ {
label: "今日", label: "今日",
@ -37,7 +36,7 @@ const ToolBar = ({ setSearchVal, onSave, storeData,role }) => {
const [codeList, setCodeList] = useState([]) const [codeList, setCodeList] = useState([])
const [dmList, setDmList] = useState([]) const [dmList, setDmList] = useState([])
const [showDm, setShowDm] = useState(true)
const getStationCode = async () => { const getStationCode = async () => {
try { try {
const res = await httppost2(apiurl.gcaqjc.sjtjcx.wycx.list) const res = await httppost2(apiurl.gcaqjc.sjtjcx.wycx.list)
@ -77,6 +76,11 @@ const ToolBar = ({ setSearchVal, onSave, storeData,role }) => {
break; break;
} }
if ("isArtificial" in e) {
const isShowDmSearch = e.isArtificial == 0;
setShowDm(isShowDmSearch)
}
} }
const onFinish = (values) => { const onFinish = (values) => {
let dateSo; let dateSo;
@ -98,8 +102,8 @@ const ToolBar = ({ setSearchVal, onSave, storeData,role }) => {
useEffect(() => { useEffect(() => {
let time = [moment().subtract(1,"weeks"),moment()] let time = [moment().subtract(1,"weeks"),moment()]
let dateSo = { let dateSo = {
start:moment(time[0]).format('YYYY-MM-DD 00:00:00'), start:moment(time[0]).format('YYYY-MM-DD HH:mm:ss'),
end:moment(time[1]).format('YYYY-MM-DD 23:59:59'), end:moment(time[1]).format('YYYY-MM-DD HH:mm:ss'),
} }
form.setFieldValue("tm",time) form.setFieldValue("tm",time)
setSearchVal({dateTimeRangeSo:dateSo}) setSearchVal({dateTimeRangeSo:dateSo})
@ -125,20 +129,20 @@ const ToolBar = ({ setSearchVal, onSave, storeData,role }) => {
options={optionsType} options={optionsType}
/> />
</Form.Item> </Form.Item>
{/* <Form.Item label="" name="cd"> <Form.Item label="测点类型" name="isArtificial">
<NormalSelect <NormalSelect
allowClear allowClear
style={{ width: "150px" }} style={{ width: "150px" }}
options={codeList} options={[{label:'自动监测',value:0},{label:'人工监测',value:1}]}
/> />
</Form.Item> */} </Form.Item>
<Form.Item label="监测断面" name="ch"> {showDm && <Form.Item label="监测断面" name="ch">
<NormalSelect <NormalSelect
allowClear allowClear
style={{ width: "150px" }} style={{ width: "150px" }}
options={dmList} options={dmList}
/> />
</Form.Item> </Form.Item>}
{searchBtn ? <Form.Item> {searchBtn ? <Form.Item>
<Button type="primary" htmlType="submit">查询</Button> <Button type="primary" htmlType="submit">查询</Button>
</Form.Item> : null } </Form.Item> : null }