From 2e0032dd543e1fb72746fa4e39bddbc58c1c4fe8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?zhaobing=E2=80=99?= Date: Thu, 21 Dec 2023 09:35:14 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9A1.6=E6=BC=8F=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- weapp/pages/home/home.js | 70 ++++----- weapp/pages/home/home.wxml | 2 +- weapp/pages/index/index.js | 2 +- weapp/pages/workbench/workbench.js | 2 +- weapp/utils/getApiUrl.js | 5 +- .../sections/patrolManage/actions/report.js | 11 ++ .../patrolManage/containers/patrolReport.js | 140 ++++++++++-------- .../projectRegime/containers/information.js | 9 +- web/client/src/utils/webapi.js | 1 + 9 files changed, 138 insertions(+), 104 deletions(-) diff --git a/weapp/pages/home/home.js b/weapp/pages/home/home.js index 1743c34..b5aa82c 100644 --- a/weapp/pages/home/home.js +++ b/weapp/pages/home/home.js @@ -29,47 +29,47 @@ Page({ markers: [], pageHeight:0,//屏幕高度 isShowCallout: false, - itemList:[{ - picPath:'/images/conduct.png', - itemName:'指挥中心' - }, - { - picPath:'/images/waterSupply.png', - itemName:'给水仓' - }, - { - picPath:'/images/pipeGallery.png', - itemName:'管廊本体' - }, - { - picPath:'/images/elevator.png', - itemName:'电梯系统' - }, - { - picPath:'/images/power.png', - itemName:'供配电系统' - }, - { - picPath:'/images/gas.png', - itemName:'燃气仓' - }, + itemList:[ + { + picPath:'/images/gas.png', + itemName:'燃气仓' + }, + { + picPath:'/images/waterSupply.png', + itemName:'给水仓' + }, + { + picPath:'/images/electricalStorageRoom.png', + itemName:'电气仓' + }, + { + picPath:'/images/highTension.png', + itemName:'高压电力仓' + }, + { + picPath:'/images/pipeGallery.png', + itemName:'管廊本体' + }, + { + picPath:'/images/conduct.png', + itemName:'指挥中心' + }, + { + picPath:'/images/power.png', + itemName:'供配电系统' + }, + { + picPath:'/images/elevator.png', + itemName:'电梯系统' + }, { picPath:'/images/security.png', itemName:'安防系统' }, - { - picPath:'/images/highTension.png', - itemName:'高压电力仓' - }, - { - picPath:'/images/electricalStorageRoom.png', - itemName:'电气仓' - }, { picPath:'/images/lightningProtection.png', itemName:'防雷与接地' } - ], }, @@ -96,13 +96,13 @@ Page({ }; wx.showLoading({ title: '加载中' }) const date1 = new Date('1970-01-01 00:00:00'); - promiseArr.push(Request.get(getPatrolRecord('all', moment(date1).format('YYYY-MM-DD') + ' 00:00:00', moment('2099-12-31').format('YYYY-MM-DD') + ' 23:59:59', 'null', 'null'))); + promiseArr.push(Request.get(getPatrolRecord('all', moment(date1).format('YYYY-MM-DD') + ' 00:00:00', moment('2099-12-31').format('YYYY-MM-DD') + ' 23:59:59', 'null', 'null',{home:true}))); Promise.all(promiseArr).then(res => { wx.hideLoading() //与自己相关的所有巡检记录 let list=res[0] if(userInfo.username!=='SuperAdmin'){ - list=res[0]?.filter(item=> userInfo.structure.find((x) => x === item.points.project.id))||[] + list=res[0]?.filter(item=> userInfo.structure.find((x) => x === item.project_id))||[] } //过去七天的所有巡检记录 const sevenDaysList=list?.filter(item=> diff --git a/weapp/pages/home/home.wxml b/weapp/pages/home/home.wxml index 9a82227..5901160 100644 --- a/weapp/pages/home/home.wxml +++ b/weapp/pages/home/home.wxml @@ -61,7 +61,7 @@ - + 发现问题个数 {{allQuestionCount}} diff --git a/weapp/pages/index/index.js b/weapp/pages/index/index.js index b922663..4d8d9aa 100644 --- a/weapp/pages/index/index.js +++ b/weapp/pages/index/index.js @@ -47,7 +47,7 @@ Page({ wx.showLoading({ title: '加载中' }) const promiseArr = []; promiseArr.push(Request.get(getProjectList(), {})); - promiseArr.push(Request.get(getPatrolRecord('all', moment().format('YYYY-MM-DD') + ' 00:00:00', moment().format('YYYY-MM-DD') + ' 23:59:59', 'null', 'null'))); + promiseArr.push(Request.get(getPatrolRecord('all', moment().format('YYYY-MM-DD') + ' 00:00:00', moment().format('YYYY-MM-DD') + ' 23:59:59', 'null', 'null',{home:false}))); Promise.all(promiseArr).then(res => { wx.hideLoading() that.setData({ diff --git a/weapp/pages/workbench/workbench.js b/weapp/pages/workbench/workbench.js index 702a506..60ac87e 100644 --- a/weapp/pages/workbench/workbench.js +++ b/weapp/pages/workbench/workbench.js @@ -33,7 +33,7 @@ Page({ }, { iconPath: '/images/workbench/issues.png', - text: '发现问题', + text: '巡检指派', page: '/package/report/report' }, { diff --git a/weapp/utils/getApiUrl.js b/weapp/utils/getApiUrl.js index c60d96d..7cb308b 100644 --- a/weapp/utils/getApiUrl.js +++ b/weapp/utils/getApiUrl.js @@ -40,8 +40,9 @@ exports.reportQuest = () => { // 获取巡检记录 -exports.getPatrolRecord = (patrolPlanId, startTime, endTime, alarm, pointId) => { - return `/patrolRecord/${patrolPlanId}/${startTime}/${endTime}/${alarm}/${pointId}` +exports.getPatrolRecord = (patrolPlanId, startTime, endTime, alarm, pointId,query) => { + const {home } = query + return `/patrolRecord/${patrolPlanId}/${startTime}/${endTime}/${alarm}/${pointId}?home=${home}` } //设备 exports.getDevices = () => { diff --git a/web/client/src/sections/patrolManage/actions/report.js b/web/client/src/sections/patrolManage/actions/report.js index 39a3878..e5175b2 100644 --- a/web/client/src/sections/patrolManage/actions/report.js +++ b/web/client/src/sections/patrolManage/actions/report.js @@ -12,4 +12,15 @@ export function getPatrolReport (query) { url: ApiTable.patrolReport, msg: { error: '获取巡检报告失败' }, }); +} + + +export function delpatrolRecord (id) { + return dispatch => basicAction({ + type: 'delete', + dispatch: dispatch, + actionType: 'DEL_PATROL_RECORD', + url: ApiTable.delpatrolRecord.replace('{id}', id), + msg: { error: '删除巡检报告失败' }, + }) } \ No newline at end of file diff --git a/web/client/src/sections/patrolManage/containers/patrolReport.js b/web/client/src/sections/patrolManage/containers/patrolReport.js index 621758b..8af68c2 100644 --- a/web/client/src/sections/patrolManage/containers/patrolReport.js +++ b/web/client/src/sections/patrolManage/containers/patrolReport.js @@ -1,6 +1,6 @@ import React, { useState, useRef, useEffect } from 'react'; import { connect } from 'react-redux'; -import { Button, Tabs, Popconfirm, Tooltip,Spin } from 'antd'; +import { Button, Tabs, Popconfirm, Tooltip, Spin } from 'antd'; import ProTable from '@ant-design/pro-table'; import { getPatrolReport } from '../actions/report'; import { getProjectList } from '../actions/plan'; @@ -8,20 +8,20 @@ import moment from 'moment'; import AddReportRulesModal from '../components/addReportRulesModal'; function patrolReport(props) { const { dispatch, actions } = props; - const { projectRegime, patrolManage } = actions + const { projectRegime, patrolManage } = actions const tableRef = useRef(); const tableRef2 = useRef(); const [selectOpts, setSelectOpts] = useState([]); const [date, setDate] = useState([moment().subtract(1, 'days'), moment()]); const [dataSource, setDataSource] = useState([]); const [modalVis, setModalVis] = useState(false) - const [structAll,setStructAll]=useState([])//完整的结构物列表(包括subType) + const [structAll, setStructAll] = useState([])//完整的结构物列表(包括subType) const [reportList, setReportList] = useState([])//报表 const qnDomain = localStorage.getItem('qnDomain'); const [query, setQuery] = useState({ limit: 10, page: 0 }) const [typeList, setTypeList] = useState([{ value: 1, label: '周报表' }, { value: 2, label: '月报表' }]) const [modalData, setModalData] = useState(null) - const [loading,setLoading]=useState(false) + const [loading, setLoading] = useState(false) //报表配置 // const getReportConfig = (query) => { // const { limit, page, name } = query @@ -37,7 +37,7 @@ function patrolReport(props) { const projectList = () => { dispatch(projectRegime.getProjectList()).then(res => { if (res.success) { - + const nextSelectOpts = res.payload?.data?.rows.map(d => { return { label: d.name, value: d.id } }) @@ -72,26 +72,32 @@ function patrolReport(props) { } }) } - const generateReport=(record)=>{ + const generateReport = (record) => { setLoading(true) - let data={ - reportName:record?.name, - startTime:moment(record?.startTime).format('YYYY-MM-DD HH:mm:ss'), - endTime:moment(record?.endTime).format('YYYY-MM-DD HH:mm:ss'), - structIds:record?.structure, - structNames:structAll?.filter(item=>record?.structure.some(q=>q==item.id))?.map(o=>o.name)||[], - reportType:record?.type, - system:record?.system, - images:record?.reportpic.map(item=>qnDomain+'/'+item)||[] + let data = { + reportName: record?.name, + startTime: moment(record?.startTime).format('YYYY-MM-DD HH:mm:ss'), + endTime: moment(record?.endTime).format('YYYY-MM-DD HH:mm:ss'), + structIds: record?.structure, + structNames: structAll?.filter(item => record?.structure.some(q => q == item.id))?.map(o => o.name) || [], + reportType: record?.type, + system: record?.system, + images: record?.reportpic.map(item => qnDomain + '/' + item) || [] } dispatch(patrolManage.postGenerateReport(data)).then(res => { - if(res.success){ + if (res.success) { setLoading(false) tableRef.current.reload(); } }) } + //删除巡检记录 + const delReport = (id) => { + + } + + const columns = [{ title: '结构物名称', dataIndex: 'projectName', @@ -104,18 +110,17 @@ function patrolReport(props) { }, ellipsis: true, width: 150, - render: (_, record) => - { - const rslt=structAll?.filter(p => record.structure?.some(q => q == p.id)) + render: (_, record) => { + const rslt = structAll?.filter(p => record.structure?.some(q => q == p.id)) return <> -
{record?.project?record?.project?.name: record.structure?.length > 1 ? item.name)?.join(',')}> - {rslt&&rslt.length?rslt[0].name+'...':''} - : rslt?.map(item => item.name)?.join(',') +
{record?.project ? record?.project?.name : record.structure?.length > 1 ? item.name)?.join(',')}> + {rslt && rslt.length ? rslt[0].name + '...' : ''} + : rslt?.map(item => item.name)?.join(',') }
- + } }, { title: '巡检报告名称', @@ -129,7 +134,7 @@ function patrolReport(props) { return
{fileName}
} }, { - title: '巡检日期', + title: '生成日期', dataIndex: 'date', key: 'date', valueType: 'dateRange', @@ -155,6 +160,19 @@ function patrolReport(props) { }}>预览 {/* onClick={() => { window.open() }} */} 下载 + { + dispatch(patrolManage.delpatrolRecord(record?.id)).then(res=>{ + if(res.success){ + tableRef.current.reload(); + } + }) + }} + > + + }, }]; @@ -192,10 +210,10 @@ function patrolReport(props) { search: false, width: 250, render: (_, record) => { - const rslt=structAll?.filter(p => record.structure?.some(q => q == p.id)) + const rslt = structAll?.filter(p => record.structure?.some(q => q == p.id)) return <> {record.structure.length > 1 ? item.name)?.join(',')}> - {rslt&&rslt.length?rslt[0].name+'...':''} + {rslt && rslt.length ? rslt[0].name + '...' : ''} : rslt?.map(item => item.name)?.join(',')} } @@ -220,7 +238,7 @@ function patrolReport(props) { width: 250, render: (_, record) => { return <> - {record.system?record.system===1?'动力系统':record.system===2?'网络系统':'--':'--'} + {record.system ? record.system === 1 ? '动力系统' : record.system === 2 ? '网络系统' : '--' : '--'} } }, @@ -237,7 +255,7 @@ function patrolReport(props) { description="确定删除报表吗?" onConfirm={() => { confirmHandler(record?.id) }} > - + } } @@ -300,41 +318,41 @@ function patrolReport(props) { key: '2', children: <> - { - const { limit, page, name } = query - const res = await dispatch(patrolManage.getReportList({ limit, page, name })) - const list = res?.payload?.data?.rows - setReportList(list) - return { - ...res, - total: res.payload.data.count ? res.payload.data.count : 0, - }; - }} - // cardProps={{ title: '新建报表规则', bordered: true }} - headerTitle={ - + { + const { limit, page, name } = query + const res = await dispatch(patrolManage.getReportList({ limit, page, name })) + const list = res?.payload?.data?.rows + setReportList(list) + return { + ...res, + total: res.payload.data.count ? res.payload.data.count : 0, + }; + }} + // cardProps={{ title: '新建报表规则', bordered: true }} + headerTitle={ + - } - rowKey="key" - search={true} - /> + } + rowKey="key" + search={true} + /> - + diff --git a/web/client/src/sections/projectRegime/containers/information.js b/web/client/src/sections/projectRegime/containers/information.js index ada22f1..e58a08b 100644 --- a/web/client/src/sections/projectRegime/containers/information.js +++ b/web/client/src/sections/projectRegime/containers/information.js @@ -1,6 +1,6 @@ import React, { useEffect, useState } from 'react'; import { connect } from 'react-redux'; -import { Form, Input, Button, Table, Modal, Popconfirm } from 'antd'; +import { Form, Input, Button, Table, Modal, Popconfirm, Tooltip } from 'antd'; import '../style.less'; import { push } from 'react-router-redux'; import ProjectAddModel from '../components/projectAddModel' @@ -83,7 +83,10 @@ const Information = (props) => { title: '描述', dataIndex: 'describe', key: 'describe', - render: (text, record, index) => record.describe || '--' + render: (text, record, index) => record.describe?.length>10? + {record?.describe.substring(0,10)}... + + : record.describe || '--' }, { title: '操作', dataIndex: 'operation', @@ -199,7 +202,7 @@ const Information = (props) => { if (index % 2 === 1) className = 'global-dark-row'; return className; }} - scroll={{ y: 590 }} + // scroll={{ y: 590 }} /> {