巴林闲侠 2 years ago
parent
commit
48c7077eaf
  1. 3
      api/.vscode/launch.json
  2. 36
      api/app/lib/models/patrol_record_issue_handle.js
  3. 126
      api/log/development.log
  4. 2
      script/1.0.4/schema/3.updata_resource.sql
  5. 4
      script/1.0.4/schema/4.updata_patrol_record_issue__handle.sql
  6. 2
      web/client/src/app.js
  7. 41
      web/client/src/sections/auth/containers/login.js
  8. 4
      web/client/src/sections/issueHandle/components/isuue-handle-mdal.js
  9. 8
      web/client/src/sections/patrolManage/components/planModal.js
  10. 93
      web/client/src/sections/patrolManage/components/xiafagaojin.js
  11. 3
      web/client/src/sections/patrolManage/containers/index.js
  12. 4
      web/client/src/sections/patrolManage/containers/patrolReport.js
  13. 213
      web/client/src/sections/patrolManage/containers/yujingguanli.js
  14. 3
      web/client/src/sections/patrolManage/nav-item.js
  15. 11
      web/client/src/sections/patrolManage/routes.js

3
api/.vscode/launch.json

@ -15,7 +15,8 @@
"args": [
"-p 4900",
//
"-g postgres://FashionAdmin:123456@10.8.30.39:5432/Inspection",
// "-g postgres://FashionAdmin:123456@10.8.30.39:5432/Inspection",
"-g postgres://postgres:123456@10.8.16.184:5432/XunJian",
// "-g postgres://FashionAdmin:123456@10.8.30.156:5432/inspection",
//
// "--apiEmisUrl http://10.8.30.161:1111",

36
api/app/lib/models/patrol_record_issue_handle.js

@ -168,6 +168,42 @@ module.exports = dc => {
field: "check_image",
autoIncrement: false
},
yanshoushijian: {
type: DataTypes.DATE,
allowNull: true,
defaultValue: null,
comment: null,
primaryKey: false,
field: "yanshoushijian",
autoIncrement: false
},
yanshoucishu: {
type: DataTypes.INTEGER,
allowNull: true,
defaultValue: null,
comment: null,
primaryKey: false,
field: "yanshoucishu",
autoIncrement: false
},
yujingshijian: {
type: DataTypes.DATE,
allowNull: true,
defaultValue: null,
comment: null,
primaryKey: false,
field: "yujingshijian",
autoIncrement: false
},
isgaojing: {
type: DataTypes.BOOLEAN,
allowNull: true,
defaultValue: null,
comment: null,
primaryKey: false,
field: "isgaojing",
autoIncrement: false
},
}, {
tableName: "patrol_record_issue_handle",
comment: "",

126
api/log/development.log

@ -4194,3 +4194,129 @@ notNull Violation: PatrolPlan.patrolCount cannot be null
2023-02-21 17:02:47.295 - error: path: /patrolTemplate, error: ReferenceError: createUser is not defined
2023-02-21 17:08:28.472 - error: path: /patrolTemplate, error: ReferenceError: createUser is not defined
2023-02-21 17:08:39.999 - error: path: /patrolTemplate, error: ReferenceError: createUser is not defined
2023-03-03 08:50:15.221 - debug: [FS-LOGGER] Init.
2023-03-03 08:50:16.170 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2023-03-03 08:50:16.171 - debug: init fs.attachment and inject it into app(app.fs.attachment) and runtime ctx(ctx.fs.attachment)
2023-03-03 08:50:16.171 - info: [FS-AUTH] Inject auth and api mv into router.
2023-03-03 08:52:27.130 - error: [FS-ERRHD]
{
message: 'transaction is not defined',
stack: 'ReferenceError: transaction is not defined\n' +
' at login (d:\\前端学习\\巡检\\Inspection\\api\\app\\lib\\controllers\\auth\\index.js:78:9)'
}
2023-03-03 08:52:27.133 - error: [FS-ERRHD]
{
message: 'transaction is not defined',
stack: 'ReferenceError: transaction is not defined\n' +
' at login (d:\\前端学习\\巡检\\Inspection\\api\\app\\lib\\controllers\\auth\\index.js:78:9)'
}
2023-03-03 08:52:27.133 - error: [FS-ERRHD]
{
message: 'transaction is not defined',
stack: 'ReferenceError: transaction is not defined\n' +
' at login (d:\\前端学习\\巡检\\Inspection\\api\\app\\lib\\controllers\\auth\\index.js:78:9)'
}
2023-03-03 08:52:27.134 - error: [FS-ERRHD]
{
message: 'transaction is not defined',
stack: 'ReferenceError: transaction is not defined\n' +
' at login (d:\\前端学习\\巡检\\Inspection\\api\\app\\lib\\controllers\\auth\\index.js:78:9)'
}
2023-03-03 08:52:27.134 - error: [FS-ERRHD]
{
message: 'transaction is not defined',
stack: 'ReferenceError: transaction is not defined\n' +
' at login (d:\\前端学习\\巡检\\Inspection\\api\\app\\lib\\controllers\\auth\\index.js:78:9)'
}
2023-03-03 08:52:27.135 - error: [FS-ERRHD]
{
message: 'transaction is not defined',
stack: 'ReferenceError: transaction is not defined\n' +
' at login (d:\\前端学习\\巡检\\Inspection\\api\\app\\lib\\controllers\\auth\\index.js:78:9)'
}
2023-03-03 08:52:48.235 - error: [FS-ERRHD]
{
message: 'transaction is not defined',
stack: 'ReferenceError: transaction is not defined\n' +
' at login (d:\\前端学习\\巡检\\Inspection\\api\\app\\lib\\controllers\\auth\\index.js:78:9)'
}
2023-03-03 08:52:48.236 - error: [FS-ERRHD]
{
message: 'transaction is not defined',
stack: 'ReferenceError: transaction is not defined\n' +
' at login (d:\\前端学习\\巡检\\Inspection\\api\\app\\lib\\controllers\\auth\\index.js:78:9)'
}
2023-03-03 08:52:48.237 - error: [FS-ERRHD]
{
message: 'transaction is not defined',
stack: 'ReferenceError: transaction is not defined\n' +
' at login (d:\\前端学习\\巡检\\Inspection\\api\\app\\lib\\controllers\\auth\\index.js:78:9)'
}
2023-03-03 08:52:48.238 - error: [FS-ERRHD]
{
message: 'transaction is not defined',
stack: 'ReferenceError: transaction is not defined\n' +
' at login (d:\\前端学习\\巡检\\Inspection\\api\\app\\lib\\controllers\\auth\\index.js:78:9)'
}
2023-03-03 08:52:48.238 - error: [FS-ERRHD]
{
message: 'transaction is not defined',
stack: 'ReferenceError: transaction is not defined\n' +
' at login (d:\\前端学习\\巡检\\Inspection\\api\\app\\lib\\controllers\\auth\\index.js:78:9)'
}
2023-03-03 08:52:48.239 - error: [FS-ERRHD]
{
message: 'transaction is not defined',
stack: 'ReferenceError: transaction is not defined\n' +
' at login (d:\\前端学习\\巡检\\Inspection\\api\\app\\lib\\controllers\\auth\\index.js:78:9)'
}
2023-03-03 08:53:09.296 - error: [FS-ERRHD]
{
message: 'transaction is not defined',
stack: 'ReferenceError: transaction is not defined\n' +
' at login (d:\\前端学习\\巡检\\Inspection\\api\\app\\lib\\controllers\\auth\\index.js:78:9)'
}
2023-03-03 08:53:09.296 - error: [FS-ERRHD]
{
message: 'transaction is not defined',
stack: 'ReferenceError: transaction is not defined\n' +
' at login (d:\\前端学习\\巡检\\Inspection\\api\\app\\lib\\controllers\\auth\\index.js:78:9)'
}
2023-03-03 08:53:09.296 - error: [FS-ERRHD]
{
message: 'transaction is not defined',
stack: 'ReferenceError: transaction is not defined\n' +
' at login (d:\\前端学习\\巡检\\Inspection\\api\\app\\lib\\controllers\\auth\\index.js:78:9)'
}
2023-03-03 08:55:19.376 - debug: [FS-LOGGER] Init.
2023-03-03 08:55:19.504 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2023-03-03 08:55:19.505 - debug: init fs.attachment and inject it into app(app.fs.attachment) and runtime ctx(ctx.fs.attachment)
2023-03-03 08:55:19.505 - info: [FS-AUTH] Inject auth and api mv into router.
2023-03-04 15:30:48.068 - debug: [FS-LOGGER] Init.
2023-03-04 15:30:49.010 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2023-03-04 15:30:49.011 - debug: init fs.attachment and inject it into app(app.fs.attachment) and runtime ctx(ctx.fs.attachment)
2023-03-04 15:30:49.011 - info: [FS-AUTH] Inject auth and api mv into router.
2023-03-04 17:42:25.123 - debug: [FS-LOGGER] Init.
2023-03-04 17:42:25.236 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2023-03-04 17:42:25.236 - debug: init fs.attachment and inject it into app(app.fs.attachment) and runtime ctx(ctx.fs.attachment)
2023-03-04 17:42:25.236 - info: [FS-AUTH] Inject auth and api mv into router.
2023-03-04 18:22:09.556 - debug: [FS-LOGGER] Init.
2023-03-04 18:22:09.675 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2023-03-04 18:22:09.676 - debug: init fs.attachment and inject it into app(app.fs.attachment) and runtime ctx(ctx.fs.attachment)
2023-03-04 18:22:09.676 - info: [FS-AUTH] Inject auth and api mv into router.
2023-03-06 08:51:30.658 - debug: [FS-LOGGER] Init.
2023-03-06 08:51:31.673 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2023-03-06 08:51:31.674 - debug: init fs.attachment and inject it into app(app.fs.attachment) and runtime ctx(ctx.fs.attachment)
2023-03-06 08:51:31.674 - info: [FS-AUTH] Inject auth and api mv into router.
2023-03-06 10:16:04.533 - debug: [FS-LOGGER] Init.
2023-03-06 10:16:04.663 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2023-03-06 10:16:04.663 - debug: init fs.attachment and inject it into app(app.fs.attachment) and runtime ctx(ctx.fs.attachment)
2023-03-06 10:16:04.663 - info: [FS-AUTH] Inject auth and api mv into router.
2023-03-06 14:30:39.123 - debug: [FS-LOGGER] Init.
2023-03-06 14:30:39.248 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2023-03-06 14:30:39.248 - debug: init fs.attachment and inject it into app(app.fs.attachment) and runtime ctx(ctx.fs.attachment)
2023-03-06 14:30:39.248 - info: [FS-AUTH] Inject auth and api mv into router.
2023-03-06 14:32:05.704 - debug: [FS-LOGGER] Init.
2023-03-06 14:32:05.817 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2023-03-06 14:32:05.817 - debug: init fs.attachment and inject it into app(app.fs.attachment) and runtime ctx(ctx.fs.attachment)
2023-03-06 14:32:05.818 - info: [FS-AUTH] Inject auth and api mv into router.

2
script/1.0.4/schema/3.updata_resource.sql

@ -0,0 +1,2 @@
DELETE FROM public.resource WHERE code = 'REPAIR_MANAGE';
DELETE FROM public.resource WHERE parent_resource = 'REPAIR_MANAGE';

4
script/1.0.4/schema/4.updata_patrol_record_issue__handle.sql

@ -0,0 +1,4 @@
ALTER TABLE patrol_record_issue_handle ADD yanshoushijian timestamp(6);
ALTER TABLE patrol_record_issue_handle ADD yanshoucishu integer;
ALTER TABLE patrol_record_issue_handle ADD yujingshijian timestamp(6);
ALTER TABLE patrol_record_issue_handle ADD isgaojing bool;

2
web/client/src/app.js

@ -8,7 +8,7 @@ import ProjectRegime from './sections/projectRegime';
import Organization from './sections/organization';
import PatrolManage from './sections/patrolManage';
import IssueHandle from './sections/issueHandle'
import { Func } from '$utils';
const App = props => {
const { projectName } = props

41
web/client/src/sections/auth/containers/login.js

@ -11,7 +11,7 @@ import { login, LOGIN_ERROR } from '../actions/auth';
import { ExclamationCircleOutlined } from '@ant-design/icons';
import { Uploads } from '$components'
import { LockOutlined, UserOutlined } from '@ant-design/icons';
import { Func } from '$utils';
import '../style.less';
const FormItem = Form.Item;
@ -29,6 +29,43 @@ const Login = props => {
const [codCountDown, setCodeCountDown] = useState(60)
const codCountDownRef = useRef(0)
const [form] = Form.useForm();
const tourl = () => {
if (Func.isAuthorized("STRU_INFO_CONFIG")) {
return '/projectRegime/information'
}
if (Func.isAuthorized("QR_CODE_CONFIG")) {
return '/projectRegime/qrCode'
}
if (Func.isAuthorized("USER_CONFIG")) {
return '/organization/user'
}
if (Func.isAuthorized("AUTH_CONFIG")) {
return '/organization/authority'
}
if (Func.isAuthorized("PATROL_PLAN_CONFIG")) {
return '/patrolManage/patrolPlan'
}
if (Func.isAuthorized("PATROL_RECORD_VIEW")) {
return '/patrolManage/patrolRecord'
}
if (Func.isAuthorized("CHECKREPORT")) {
return '/patrolManage/patrolReport'
}
if (Func.isAuthorized("CHECKITEMSET")) {
return '/patrolManage/checkItems'
}
if (Func.isAuthorized("CHECKMOULD")) {
return '/patrolManage/patrolTemplate'
}
if (Func.isAuthorized("WENTICHULI")) {
return '/issueHandle'
}
else {
return message.warn('没有任何模块的查看权限')
}
}
useEffect(() => {
}, [])
@ -36,7 +73,7 @@ const Login = props => {
useEffect(() => {
if (user && user.authorized) {
dispatch(push('/projectRegime/information'));
dispatch(push(tourl()));
}
}, [user])

4
web/client/src/sections/issueHandle/components/isuue-handle-mdal.js

@ -245,7 +245,7 @@ export default (props) => {
values.startTime = values?.dateRange[0];
values.endTime = values?.dateRange[1];
values.repairPerson = { id: users?.find(s => s.value == values.repairPerson)?.value, name: users?.find(s => s.id == values.repairPerson)?.label }
values.checkPerson = { id: users?.find(s => s.value == values.checkPerson)?.value, name: users?.find(s => s.id == values.value)?.label }
values.checkPerson = { id: users?.find(s => s.value == values.checkPerson)?.value, name: users?.find(s => s.id == values.checkPerson)?.label }
onFinish && await onFinish(values, editData)
//message.success('提交成功');
return true;
@ -273,7 +273,7 @@ export default (props) => {
{/*问题处理计划表单*/}
{
((editData?.patrolRecordIssueHandles[0].state == 1 && title != '查看详情') || editData?.patrolRecordIssueHandles[0].state > 1) &&
((editData?.patrolRecordIssueHandles[0]?.state == 1 && title != '查看详情') || editData?.patrolRecordIssueHandles[0]?.state > 1) &&
<>
<div className="item-title">{"维修计划信息"}</div>
<Row>

8
web/client/src/sections/patrolManage/components/planModal.js

@ -33,7 +33,7 @@ const PlanModal = ({ visible, onCreate, onCancel, dispatch, userLoading, userLis
useEffect(() => {
if (userList.length) {
setUserOpt(userList.map(u => ({ label: u.name, value: u.id })))
setUserOpt(userList?.filter(f => f.structure?.includes(curRecord?.project?.id))?.map(u => ({ label: u.name, value: u.id })))
}
}, [userList])
@ -104,13 +104,15 @@ const PlanModal = ({ visible, onCreate, onCancel, dispatch, userLoading, userLis
{ required: true, message: '请选择结构物' },
]}
>
<Select disabled={type === 'view'} options={struOpt} loading={struLoading} onChange={(value) => {
dispatch(positionList({ projectId: value })).then(res => {
<Select disabled={type === 'view'} options={struOpt} loading={struLoading} onChange={(projectId) => {
dispatch(positionList({ projectId })).then(res => {
if (res.success) {
setPoints(res.payload.data?.rows)
setPointOpt(res.payload.data?.rows[0]?.points?.map(p => ({ label: p.name, value: p.id })))
}
})
form.setFieldsValue({ userId: null });
setUserOpt(userList?.filter(f => f.structure?.includes(projectId))?.map(u => ({ label: u.name, value: u.id })))
}} />
</Form.Item>
<Form.Item

93
web/client/src/sections/patrolManage/components/xiafagaojin.js

@ -0,0 +1,93 @@
import { Button, Form, Input, Modal, Select, DatePicker,Checkbox } from 'antd';
import React, { useState, useEffect } from 'react';
import { connect } from 'react-redux';
import { createPatrolTemplate, delPatrolTemplate, updatePatrolTemplate, getPatrolTemplate } from '../actions/template';
import moment from 'moment';
const { RangePicker } = DatePicker;
const { TextArea } = Input;
const PlanModal = ({ visible, onCancel, dispatch, type, curRecord, tableRef, checkItemsGroup }) => {
const [form] = Form.useForm();
const shigutypes = [{value:1,label: '邮件告警'},
{value:2,label:'短信告警'}]
return (
<Modal
visible={visible}
title="下发告警"
okText="确定"
cancelText="取消"
onCancel={() => {
form.resetFields();
onCancel();
}}
onOk={() => {
form
.validateFields()
.then((values) => {
const params = {
...values,
}
if (type === 'create') {
dispatch(createPatrolTemplate(params)).then(res => {
if (res.success) {
tableRef.current.reload();
form.resetFields();
onCancel();
}
})
} else {
dispatch(updatePatrolTemplate({
...params,
id: curRecord.id
})).then(res => {
if (res.success) {
tableRef.current.reload();
form.resetFields();
onCancel();
}
})
}
})
.catch((info) => {
console.log('Validate Failed:', info);
});
}}
>
<Form
form={form}
// layout="vertical"
name="form_in_modal"
initialValues={{
...curRecord,
checkItems: curRecord?.checkItems?.map(c => c.id)
}}
labelCol={{ span: 5 }} wrapperCol={{ span: 19 }} offe
>
<Form.Item
name="name"
label="告警接收人"
rules={[
{ required: true, message: '请输入告警接收人' },
]}
>
<Input />
</Form.Item>
<Form.Item label="告警方式">
<Checkbox.Group options={shigutypes}/>
</Form.Item>
</Form>
</Modal >
);
};
function mapStateToProps (state) {
const { auth, checkItemsGroup } = state
return {
user: auth.user,
checkItemsGroup: checkItemsGroup.data || []
}
}
export default connect(mapStateToProps)(PlanModal);

3
web/client/src/sections/patrolManage/containers/index.js

@ -5,5 +5,6 @@ import PatrolReocrd from './patrolRecord';
import PatrolReport from './patrolReport';
import CheckItems from './checkItems';
import PlanTemplate from './patrolTemplate';
import YujingGuanli from './yujingguanli';
export { PatrolPlan, PatrolReocrd, PatrolReport, CheckItems, PlanTemplate };
export { PatrolPlan, PatrolReocrd, PatrolReport, CheckItems, PlanTemplate,YujingGuanli };

4
web/client/src/sections/patrolManage/containers/patrolReport.js

@ -10,7 +10,7 @@ function patrolReport(props) {
const { dispatch } = props;
const tableRef = useRef();
const [selectOpts, setSelectOpts] = useState([]);
const [date, setDate] = useState([moment(), moment()]);
const [date, setDate] = useState([moment().subtract(1, 'days'), moment()]);
const [dataSource, setDataSource] = useState([]);
const qnDomain = localStorage.getItem('qnDomain');
@ -103,7 +103,7 @@ function patrolReport(props) {
total: res.payload.data.count ? res.payload.data.count : 0,
};
}}
onReset={() => { setDate([moment(), moment()]) }}
onReset={() => { setDate([moment().subtract(1, 'days'), moment()]) }}
/>
</>
)

213
web/client/src/sections/patrolManage/containers/yujingguanli.js

@ -0,0 +1,213 @@
import React, { useState, useRef, useEffect } from 'react';
import { connect } from 'react-redux';
import { Button, Popconfirm, Tag,Tabs } from 'antd';
import ProTable from '@ant-design/pro-table';
import Xiafagaojin from '../components/xiafagaojin';
import { createPatrolTemplate, delPatrolTemplate, updatePatrolTemplate, getPatrolTemplate } from '../actions/template';
import { getCheckItemsGroup } from '../actions/checkItems';
import moment from 'moment';
function YujingGuanli (props) {
const { dispatch, user,actions } = props;
const tableRef = useRef();
const format = 'YYYY-MM-DD HH:mm:ss'
const { patrolManage } = actions
const [dataSource, setDataSource] = useState([{}]);
const [visible, setVisible] = useState(false);
const [type, setType] = useState();
const [curRecord, setCurRecord] = useState();
const [data,setdata]= useState([])
const [tableList, settableList] = useState([])
const [name, setName] = useState('');
const [curState, setCurState] = useState('全部');
const times = [moment().subtract(70, 'years').format(format), moment().format(format)]
const [search, setSearch] = useState({ name: null, time: [times[0], times[1]], state: 'null' })
const STATE_TEXT = { 1: '待制定计划', 2: '待审核', 3: '计划驳回', 4: '待维修', 5: '待验收', 6: '验收通过', 7: '验收不通过', }
const onChange = (key) => {
console.log(key);
};
const renderOptionText = (currentState) => {
let text = '待制定计划'
return STATE_TEXT[currentState] || text
}
const queryData = () => {
dispatch(patrolManage.records(`patrolRecord/all/${times[0]}/${times[1]}/true/null`)).then(res => {
if (res.success) {
console.log(res,'水平')
let obj = {}
res?.payload?.data?.map(i=>{
if(obj[i?.points?.project?.id]){
// if(obj[i?.points?.project?.id.toString()][i.pointId.toString()]){
// obj[i?.points?.project?.id.toString()][i.pointId.toString()].ponintname=i.points?.itemData?.name
// obj[i?.points?.project?.id.toString()][i.pointId.toString()].num=obj[i?.points?.project?.id.toString()][i.pointId.toString()].num+i?.patrolRecordIssueHandles[0]?.state==6?1:0
// }else{
// obj[i?.points?.project?.id.toString()][i.pointId.toString()].ponintname=i.points?.itemData?.name
// obj[i?.points?.project?.id.toString()][i.pointId.toString()].num=i?.patrolRecordIssueHandles[0]?.state==6?1:0
// }
obj[i?.points?.project?.id].push({pointId:i.pointId,pointname:i.points.itemData.name})
// i?patrolRecordIssueHandles[0]?.state==6
obj[i?.points?.project?.id].num= obj[i?.points?.project?.id].num + i?.patrolRecordIssueHandles[0]?.state==6 ?1:0
}else{
obj[i?.points?.project?.id]={name:i?.points?.project?.name,num:i?.patrolRecordIssueHandles[0]?.state==6 ?1:0 }
}
console.log(obj,'obj')
})
}
})
}
useEffect(() => {
// dispatch(patrolManage.records(`patrolRecord/all/null/null/true/null`)).then(res=>{
// let obj = {}
// res?.payload?.data?.map(i=>{
// if(obj[i?.points?.project?.id]){
// obj[i?.points?.project?.id].name=i?.points?.project?.name;
// obj[i?.points?.project?.id].num=obj[i?.points?.project?.id].num +1
// }else{
// obj[i?.points?.project?.id]={name:i?.points?.project?.name,num:1}
// }
// })
// settableList(name != null ? res.payload.data?.filter(v =>
// (v.points.user.name.indexOf(name) != -1 || v.points.project.name.indexOf(name) != -1))
// .filter(x => curState == '全部' || curState == renderOptionText(x?.patrolRecordIssueHandles[0]?.state))
// .map(v => ({ ...v, key: v.id })) : res.payload.data?.map(v => ({ ...v, key: v.id })))
// const t1 = Object.keys(obj).map(i=>{
// return {id:i,name:obj[i].name,num:obj[i].num}
// })
// console.log(obj,'obj')
// console.log(res,'res')
// })
queryData()
dispatch(getCheckItemsGroup())
}, [])
console.log(tableList,'tablist')
const columns = [{
title: '结构物名称',
dataIndex: 'name',
key: 'name',
// search: false,
ellipsis: true,
}, {
title: '点位名称',
dataIndex: 'describe',
key: 'describe',
search: false,
ellipsis: true
}, {
title: '异常次数',
dataIndex: 'user.name',
key: 'user.name',
ellipsis: true,
search: false,
render: (t, r, i) => {
return r.user ? r.user.name : '-'
}
}, {
title: '产生时间',
dataIndex: 'checkItems',
key: 'checkItems',
ellipsis: true,
search: false,
render: (_, r) => {
return r?.checkItems ? r?.checkItems.map(c => <Tag>{c.name}</Tag>) : '-'
}
}, {
title: '更新时间',
dataIndex: 'checkItems',
key: 'checkItems',
search: false,
ellipsis: true,
render: (_, r) => {
return r?.checkItems ? r?.checkItems.map(c => <Tag>{c.name}</Tag>) : '-'
}
}, {
title: '操作',
dataIndex: 'action',
key: 'action',
search: false,
width: 200,
render: (_, record) => {
return <>
<Button type="link" onClick={() => {
setType('edit')
setCurRecord(record)
setVisible(true)
}}>下发告警</Button>
</>
},
}];
return (
<>
<Tabs
defaultActiveKey="1"
onChange={onChange}
style={{marginLeft:'20px',marginRight:'20px'}}
items={[
{
label: `未告警`,
key: '1',
children: <ProTable
columns={columns}
actionRef={tableRef}
options={false}
dataSource={dataSource || []}
rowKey='id'
pagination={{ pageSize: 10 }}
// search={false}
request={async (params = {}) => {
const res = await dispatch(getPatrolTemplate(params));
setDataSource(res?.payload.data?.rows);
return { ...res };
}}
// toolBarRender={() => [
// <Button
// type="primary"
// key="primary"
// onClick={() => {
// setType('create')
// setVisible(true)
// }}
// >查询</Button>
// ]}
/>,
},
{
label: `已告警`,
key: '2',
children: `Content of Tab Pane 2`,
}
]}
/>
{
visible ?
<Xiafagaojin
visible={visible}
type={type}
curRecord={curRecord}
onCancel={() => {
setVisible(false);
setCurRecord({})
}}
tableRef={tableRef}
/> : null
}
</>
)
}
function mapStateToProps (state) {
const { auth, global } = state
return {
user: auth.user,
actions: global.actions,
}
}
export default connect(mapStateToProps)(YujingGuanli);

3
web/client/src/sections/patrolManage/nav-item.js

@ -26,6 +26,9 @@ export function getNavItem (user, dispatch) {
{Func.isAuthorized('CHECKMOULD') && <Menu.Item key="patrolTemplate">
<Link to="/patrolManage/patrolTemplate">巡检模板</Link>
</Menu.Item>}
{/* { <Menu.Item key="yujingguanli">
<Link to="/patrolManage/yujingguanli">预警管理</Link>
</Menu.Item>} */}
</SubMenu>
);
}

11
web/client/src/sections/patrolManage/routes.js

@ -1,5 +1,5 @@
'use strict';
import { PatrolPlan, PatrolReocrd, PatrolReport, CheckItems, PlanTemplate } from './containers';
import { PatrolPlan, PatrolReocrd, PatrolReport, CheckItems, PlanTemplate ,YujingGuanli} from './containers';
export default [{
type: 'inner',
@ -32,6 +32,13 @@ export default [{
key: 'patrolTemplate',
component: PlanTemplate,
breadcrumb: '巡检模板',
}]
},
{
path: '/yujingguanli',
key: 'yujingguanli',
component: YujingGuanli,
breadcrumb: '预警管理',
}
]
}
}];
Loading…
Cancel
Save