peng.peng
2 years ago
15 changed files with 756 additions and 1 deletions
@ -0,0 +1,78 @@ |
|||||
|
'use strict'; |
||||
|
|
||||
|
import { basicAction } from '@peace/utils' |
||||
|
import { ApiTable } from '$utils' |
||||
|
|
||||
|
export function getCheckItemsGroup() { |
||||
|
return dispatch => basicAction({ |
||||
|
type: 'get', |
||||
|
dispatch: dispatch, |
||||
|
actionType: 'GET_CHECK_ITEMS_GRROUP', |
||||
|
url: ApiTable.checkItemsGroup, |
||||
|
msg: { error: '获取检查项分组失败' }, |
||||
|
reducer:{name:'checkItemsGroup'} |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
export function createCheckItemsGroup(data) { |
||||
|
return dispatch => basicAction({ |
||||
|
type: 'post', |
||||
|
data, |
||||
|
dispatch: dispatch, |
||||
|
actionType: 'CREATE_CHECK_ITEMS_GRROUP', |
||||
|
url: ApiTable.checkItemsGroup, |
||||
|
msg: { option: '创建检查项分组' }, |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
export function getCheckItems(query) { |
||||
|
return dispatch => basicAction({ |
||||
|
type: 'get', |
||||
|
dispatch: dispatch, |
||||
|
query: query, |
||||
|
actionType: 'GET_CHECK_ITEMS', |
||||
|
url: ApiTable.checkItems, |
||||
|
msg: { error: '获取检查项失败' } |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
export function createCheckItems(data) { |
||||
|
return dispatch => basicAction({ |
||||
|
type: 'post', |
||||
|
data, |
||||
|
dispatch: dispatch, |
||||
|
actionType: 'CREATE_CHECK_ITEMS', |
||||
|
url: ApiTable.checkItems, |
||||
|
msg: { option: '新建检查项' }, |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
export function updateCheckItems(id, data) { |
||||
|
return dispatch => basicAction({ |
||||
|
type: 'put', |
||||
|
data, |
||||
|
dispatch: dispatch, |
||||
|
actionType: 'UPDATE_CHECK_ITEMS', |
||||
|
url: ApiTable.updateCheckItems.replace('{id}', id), |
||||
|
msg: { option: '修改检查项' }, |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
export function delCheckItems(ids) { |
||||
|
return dispatch => basicAction({ |
||||
|
type: 'del', |
||||
|
dispatch: dispatch, |
||||
|
actionType: 'DEL_CHECK_ITEMS', |
||||
|
url: ApiTable.delCheckItems.replace('{ids}', ids), |
||||
|
msg: { option: '删除检查项' }, |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
export default { |
||||
|
getCheckItemsGroup, |
||||
|
createCheckItemsGroup, |
||||
|
getCheckItems, |
||||
|
createCheckItems, |
||||
|
updateCheckItems, |
||||
|
delCheckItems, |
||||
|
} |
@ -0,0 +1,13 @@ |
|||||
|
'use strict'; |
||||
|
|
||||
|
import * as plan from './plan' |
||||
|
import * as record from './record' |
||||
|
import * as template from './template' |
||||
|
import * as checkItems from './checkItems' |
||||
|
|
||||
|
export default { |
||||
|
...plan, |
||||
|
...record, |
||||
|
...template, |
||||
|
...checkItems, |
||||
|
} |
@ -0,0 +1,80 @@ |
|||||
|
'use strict'; |
||||
|
|
||||
|
import { basicAction } from '@peace/utils' |
||||
|
import { ApiTable } from '$utils' |
||||
|
|
||||
|
export function getPatrolPlan() { |
||||
|
return dispatch => basicAction({ |
||||
|
type: 'get', |
||||
|
dispatch: dispatch, |
||||
|
actionType: 'GET_PATROL_PLAN', |
||||
|
url: ApiTable.patrolPlan, |
||||
|
msg: { error: '获取巡检计划失败' }, |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
export function createPatrolPlan(data) { |
||||
|
return dispatch => basicAction({ |
||||
|
type: 'post', |
||||
|
data, |
||||
|
dispatch: dispatch, |
||||
|
actionType: 'CREATE_PATROL_PLAN', |
||||
|
url: ApiTable.patrolPlan, |
||||
|
msg: { error: '新增巡检计划失败' }, |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
export function delPatrolPlan(id) { |
||||
|
return dispatch => basicAction({ |
||||
|
type: 'del', |
||||
|
dispatch: dispatch, |
||||
|
actionType: 'DEL_PATROL_PLAN', |
||||
|
url: ApiTable.delPatrolPlan.replace('{id}', id), |
||||
|
msg: { error: '删除巡检计划失败' }, |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
export function updatePatrolPlan(data) { |
||||
|
return dispatch => basicAction({ |
||||
|
type: 'put', |
||||
|
data, |
||||
|
dispatch: dispatch, |
||||
|
actionType: 'UPDATE_PATROL_PLAN', |
||||
|
url: ApiTable.patrolPlan, |
||||
|
msg: { error: '修改巡检计划失败' }, |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
export function getUserList() { |
||||
|
return dispatch => basicAction({ |
||||
|
type: 'get', |
||||
|
dispatch: dispatch, |
||||
|
actionType: 'GET_USER_LIST', |
||||
|
url: ApiTable.getDepUser.replace('{depId}', null), |
||||
|
msg: { error: '获取人员列表失败' }, |
||||
|
reducer: { name: 'userList' } |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
export function getProjectList(query) { |
||||
|
return (dispatch) => basicAction({ |
||||
|
type: 'get', |
||||
|
query, |
||||
|
dispatch, |
||||
|
actionType: 'GET_PROJEECT_LIST', |
||||
|
url: ApiTable.getProjectList, |
||||
|
msg: { error: '获取结构物列表失败', }, |
||||
|
reducer: { name: 'structureList' } |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
export function positionList(query) { |
||||
|
return (dispatch) => basicAction({ |
||||
|
type: 'get', |
||||
|
query, |
||||
|
dispatch, |
||||
|
actionType: 'POSITION_LIST', |
||||
|
url: ApiTable.position, |
||||
|
msg: { error: '获取点位列表失败', }, |
||||
|
}); |
||||
|
} |
@ -0,0 +1,17 @@ |
|||||
|
'use strict'; |
||||
|
|
||||
|
import { basicAction } from '@peace/utils' |
||||
|
|
||||
|
export const GET_PATROL_RECORD_LIST = 'GET_PATROL_RECORD_LIST'; |
||||
|
export const GET_PATROL_RECORD_LIST_SUCCESS = 'GET_PATROL_RECORD_LIST_SUCCESS'; |
||||
|
export const GET_PATROL_RECORD_LIST_ERROR = 'GET_PATROL_RECORD_LIST_ERROR'; |
||||
|
export function records(url) { |
||||
|
return (dispatch) => basicAction({ |
||||
|
type: 'get', |
||||
|
dispatch, |
||||
|
actionType: GET_PATROL_RECORD_LIST, |
||||
|
url: url, |
||||
|
msg: { error: '获取巡检记录失败', }, |
||||
|
reducer: { name: 'record' } |
||||
|
}); |
||||
|
} |
@ -0,0 +1,47 @@ |
|||||
|
'use strict'; |
||||
|
|
||||
|
import { basicAction } from '@peace/utils' |
||||
|
import { ApiTable } from '$utils' |
||||
|
|
||||
|
export function getPatrolTemplate () { |
||||
|
return dispatch => basicAction({ |
||||
|
type: 'get', |
||||
|
dispatch: dispatch, |
||||
|
actionType: 'GET_PATROL_TEMPLATE', |
||||
|
url: ApiTable.patrolTemplate, |
||||
|
msg: { error: '获取巡检模板失败' }, |
||||
|
reducer: { name: 'patrolTemplate' } |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
export function createPatrolTemplate (data) { |
||||
|
return dispatch => basicAction({ |
||||
|
type: 'post', |
||||
|
data, |
||||
|
dispatch: dispatch, |
||||
|
actionType: 'CREATE_PATROL_TEMPLATE', |
||||
|
url: ApiTable.patrolTemplate, |
||||
|
msg: { option: '新增巡检模板' }, |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
export function delPatrolTemplate (id) { |
||||
|
return dispatch => basicAction({ |
||||
|
type: 'del', |
||||
|
dispatch: dispatch, |
||||
|
actionType: 'DEL_PATROL_TEMPLATE', |
||||
|
url: ApiTable.delPatrolTemplate.replace('{id}', id), |
||||
|
msg: { option: '删除巡检模板' }, |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
export function updatePatrolTemplate (data) { |
||||
|
return dispatch => basicAction({ |
||||
|
type: 'put', |
||||
|
data, |
||||
|
dispatch: dispatch, |
||||
|
actionType: 'UPDATE_PATROL_TEMPLATE', |
||||
|
url: ApiTable.patrolTemplate, |
||||
|
msg: { option: '修改巡检模板' }, |
||||
|
}); |
||||
|
} |
@ -0,0 +1,207 @@ |
|||||
|
import React, { useState, useRef } from 'react'; |
||||
|
import { Button, Form, Row, Col, Table, Popconfirm, Input, message } from 'antd'; |
||||
|
import { |
||||
|
ModalForm, |
||||
|
ProFormText, |
||||
|
ProFormSelect, |
||||
|
ProFormTextArea, |
||||
|
ProFormDatePicker |
||||
|
} from '@ant-design/pro-form'; |
||||
|
import Uploads from '$components/Uploads'; |
||||
|
import moment from 'moment'; |
||||
|
const FormItem = Form.Item; |
||||
|
//state: 1下发未上报 2已上报待审批 3整改完成 上报结果result: status 0 已上报未审批 1 审批通过 2 审批驳回
|
||||
|
export default (props) => { |
||||
|
const { title, triggerRender, editData = null, onFinish, readOnly, companyList, user } = props; |
||||
|
const formItemLayout = { labelCol: { span: 6 }, wrapperCol: { span: 16 } }; |
||||
|
const initialValues = editData ? { |
||||
|
...editData |
||||
|
} : {}; |
||||
|
const [reason, setReason] = useState('') |
||||
|
|
||||
|
|
||||
|
const columns = [ |
||||
|
{ |
||||
|
title: '序号', |
||||
|
dataIndex: 'index', |
||||
|
key: 'index', |
||||
|
render: (text, record, index) => index + 1 |
||||
|
}, |
||||
|
{ |
||||
|
title: '提交时间', |
||||
|
dataIndex: 'time', |
||||
|
key: 'time', |
||||
|
}, |
||||
|
{ |
||||
|
title: '整改附件', |
||||
|
dataIndex: 'file', |
||||
|
key: 'file', |
||||
|
render: (text, record) => { |
||||
|
return <Uploads |
||||
|
className='upload' |
||||
|
maxFilesNum={1}//没有固定个数
|
||||
|
maxFileSize={200} |
||||
|
isQiniu={true} |
||||
|
fileTypes={['rar', 'zip']} |
||||
|
defaultValue={record?.file || []} |
||||
|
disabled={true} |
||||
|
/> |
||||
|
} |
||||
|
}, |
||||
|
{ |
||||
|
title: '结论', |
||||
|
dataIndex: 'status', |
||||
|
key: 'status', |
||||
|
// 0 未审批 1 通过 2驳回
|
||||
|
render: (text, record) => { |
||||
|
return user?.departmentId != -1 && record?.status === 0 ? <> |
||||
|
<Popconfirm icon={null} title={<>驳回原因:<Input onChange={(e) => { |
||||
|
setReason(e.target.value) |
||||
|
}} /></>} |
||||
|
onConfirm={() => { |
||||
|
if (!reason) { |
||||
|
message.warning('未填写驳回原因'); |
||||
|
return; |
||||
|
} |
||||
|
handleResult(false) |
||||
|
}} > |
||||
|
<Button style={{ marginRight: 10 }}>驳回</Button> |
||||
|
</Popconfirm> |
||||
|
<Button onClick={() => { handleResult(true) }} type='primary'>通过</Button></> |
||||
|
: record?.status === 1 ? "整改完成" : record?.reason |
||||
|
} |
||||
|
}, |
||||
|
]; |
||||
|
|
||||
|
const handleResult = (approve) => { |
||||
|
const results = JSON.parse(JSON.stringify(editData?.result || [])) |
||||
|
results[results.length - 1] = { |
||||
|
...results[results.length - 1], status: approve ? 1 : 2, |
||||
|
reason |
||||
|
} |
||||
|
onFinish && onFinish({ |
||||
|
msg: approve ? '任务审批' : '任务驳回', |
||||
|
state: approve ? 3 : 1, |
||||
|
result: results |
||||
|
}, editData) |
||||
|
} |
||||
|
|
||||
|
return ( |
||||
|
<ModalForm |
||||
|
title={title || ''} |
||||
|
initialValues={initialValues} |
||||
|
trigger={ |
||||
|
triggerRender ? triggerRender : <Button type="primary" > |
||||
|
{title || ''} |
||||
|
</Button> |
||||
|
} |
||||
|
width={1200} |
||||
|
layout="horizontal" |
||||
|
// grid={true}
|
||||
|
{...formItemLayout} |
||||
|
modalProps={{ |
||||
|
destroyOnClose: true, |
||||
|
onCancel: () => { }, |
||||
|
bodyStyle: { height: 720, overflowY: 'auto' } |
||||
|
}} |
||||
|
onFinish={async (values) => { |
||||
|
|
||||
|
onFinish && await onFinish(values, editData) |
||||
|
//message.success('提交成功');
|
||||
|
return true; |
||||
|
}} |
||||
|
submitter={!readOnly} |
||||
|
> |
||||
|
<div> |
||||
|
{/* <Card title={'巡检信息'}> */} |
||||
|
<div className="item-title">{"巡检信息"}</div> |
||||
|
<Form> |
||||
|
<Row> |
||||
|
<Col span={12}> |
||||
|
<Form.Item label="结构物名称:" {...formItemLayout}> |
||||
|
<Input value={editData?.points?.project?.name} readOnly /> |
||||
|
</Form.Item> |
||||
|
<Form.Item label="巡检人:" {...formItemLayout}> |
||||
|
<Input value={editData?.points?.user?.name} readOnly /> |
||||
|
</Form.Item> |
||||
|
</Col> |
||||
|
<Col span={12}> |
||||
|
<Form.Item label="巡检单位:" {...formItemLayout}> |
||||
|
<Input value={editData?.points?.user?.department?.name} readOnly title={222} /> |
||||
|
</Form.Item> |
||||
|
|
||||
|
<Form.Item label="巡检时间:" {...formItemLayout}> |
||||
|
<Input value={editData?.inspectionTime && moment(editData?.inspectionTime).format('YYYY-MM-DD HH:mm:ss')} readOnly /> |
||||
|
</Form.Item> |
||||
|
</Col> |
||||
|
</Row> |
||||
|
</Form> |
||||
|
|
||||
|
<div className="item-title">{"问题详情"}</div> |
||||
|
<Row> |
||||
|
<Col span={6}> |
||||
|
<Form.Item label="点位名称:" {...formItemLayout}> |
||||
|
<Input value={editData?.points?.itemData?.name} readOnly /> |
||||
|
</Form.Item> |
||||
|
</Col> |
||||
|
|
||||
|
<Col span={18}> |
||||
|
{ |
||||
|
Object.keys(editData?.points?.inspectContent).map(key => { |
||||
|
if (editData?.points?.inspectContent[key]?.isNormal == false) { |
||||
|
return <Row style={{ marginBottom: 15 }}> |
||||
|
<Col span={12}> |
||||
|
<Form.Item label="检查项:" {...formItemLayout}> |
||||
|
<Input value={key} readOnly /> |
||||
|
</Form.Item> |
||||
|
<Form.Item label="异常等级:" {...formItemLayout}> |
||||
|
<Input value={editData?.points?.inspectContent[key]?.level} readOnly /> |
||||
|
</Form.Item> |
||||
|
</Col> |
||||
|
<Col span={12}> |
||||
|
<Form.Item label="问题描述:" {...formItemLayout}> |
||||
|
<Input value={editData?.points?.inspectContent[key]?.msgInp} readOnly title={222} /> |
||||
|
</Form.Item> |
||||
|
|
||||
|
<Form.Item label="现场图片:" {...formItemLayout}> |
||||
|
<Uploads |
||||
|
listType='picture-card' |
||||
|
uploadType='project' |
||||
|
maxFilesNum={1} |
||||
|
maxFileSize={10} |
||||
|
isQiniu={true} |
||||
|
disabled={true} |
||||
|
fileTypes={["png", "jpg"]} |
||||
|
defaultValue={ |
||||
|
(() => { |
||||
|
let nextV = [] |
||||
|
for (let s of (editData?.points?.inspectContent[key].imgs || [])) { |
||||
|
if (s) { |
||||
|
nextV.push({ |
||||
|
storageUrl: s |
||||
|
}) |
||||
|
} |
||||
|
} |
||||
|
return nextV |
||||
|
})() |
||||
|
} |
||||
|
/> |
||||
|
|
||||
|
</Form.Item> |
||||
|
</Col> |
||||
|
</Row> |
||||
|
} |
||||
|
}) |
||||
|
} |
||||
|
</Col> |
||||
|
</Row> |
||||
|
|
||||
|
|
||||
|
<div className="item-title">{"维修计划信息"}</div> |
||||
|
</div> |
||||
|
|
||||
|
|
||||
|
|
||||
|
</ModalForm> |
||||
|
); |
||||
|
}; |
@ -0,0 +1,5 @@ |
|||||
|
'use strict'; |
||||
|
|
||||
|
import PatrolReocrd from './patrolRecord'; |
||||
|
|
||||
|
export { PatrolReocrd }; |
@ -0,0 +1,211 @@ |
|||||
|
|
||||
|
'use strict' |
||||
|
|
||||
|
import React, { useEffect, useState } from 'react'; |
||||
|
import { connect } from 'react-redux'; |
||||
|
import { Form, Input, Select, Button, Table, Modal, DatePicker, Checkbox, Row, Col, Collapse } from 'antd'; |
||||
|
import moment from "moment"; |
||||
|
import Uploads from '$components/Uploads'; |
||||
|
import IssueHandleModal from '../components/isuue-handle-mdal' |
||||
|
import '../style.less' |
||||
|
|
||||
|
const { Panel } = Collapse; |
||||
|
|
||||
|
const PatrolRecord = (props) => { |
||||
|
const { dispatch, actions, user } = props |
||||
|
const { patrolManage } = actions |
||||
|
const [tableList, settableList] = useState([]) |
||||
|
const [showDetailModal, setShowDetail] = useState(false) |
||||
|
const [modelData, setModelData] = useState({}) |
||||
|
const [query, setQuery] = useState({ limit: 10, page: 0 }) |
||||
|
const [limits, setLimits] = useState() |
||||
|
const format = 'YYYY-MM-DD HH:mm:ss' |
||||
|
const times = [moment().subtract(70, 'years').format(format), moment().format(format)] |
||||
|
const [search, setSearch] = useState({ name: null, time: [times[0], times[1]], state: 'null' }) |
||||
|
|
||||
|
useEffect(() => { |
||||
|
record(search) |
||||
|
}, []) |
||||
|
|
||||
|
const record = (params) => { |
||||
|
dispatch(patrolManage.records(`patrolRecord/all/${times[0]}/${times[1]}/null/null`)).then(res => { |
||||
|
if (res.success) { |
||||
|
settableList(params.name != null ? res.payload.data?.filter(v => |
||||
|
(v.points.user.name.indexOf(params.name) != -1 || v.points.project.name.indexOf(params.name) != -1)) |
||||
|
.map(v => ({ ...v, key: v.id })) : res.payload.data?.map(v => ({ ...v, key: v.id }))) |
||||
|
setLimits(res.payload.data?.length) |
||||
|
} |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
const onFinish = () => { |
||||
|
|
||||
|
} |
||||
|
|
||||
|
const renderOptionText = (currentState) => { |
||||
|
let text = '查看' |
||||
|
if (user?.departmentId == -1) { |
||||
|
if (currentState == 1) text = '整改' |
||||
|
} else { |
||||
|
if (currentState == 2) text = '审批' |
||||
|
} |
||||
|
|
||||
|
return text |
||||
|
} |
||||
|
|
||||
|
const columns = [{ |
||||
|
title: '结构物名称', |
||||
|
dataIndex: 'name', |
||||
|
key: 'name', |
||||
|
width: '10%', |
||||
|
showInDetail: true, |
||||
|
render: (text, record, index) => { |
||||
|
return !record.points?.project ? '' : <div>{record.points.project.name}</div> |
||||
|
} |
||||
|
}, { |
||||
|
title: '巡检计划', |
||||
|
dataIndex: 'name', |
||||
|
key: 'name', |
||||
|
width: '10%', |
||||
|
showInDetail: true, |
||||
|
render: (text, record, index) => { |
||||
|
return !record.patrolPlan ? '' : <div>{record.patrolPlan.name}</div> |
||||
|
} |
||||
|
}, { |
||||
|
title: '巡检点位', |
||||
|
dataIndex: 'type', |
||||
|
key: 'type', |
||||
|
showInDetail: true, |
||||
|
width: '10%', |
||||
|
render: (text, record, index) => { |
||||
|
return !record.points?.user ? '' : <div>{record.points.itemData.name}</div> |
||||
|
} |
||||
|
}, { |
||||
|
title: '巡检人', |
||||
|
dataIndex: 'type', |
||||
|
key: 'type', |
||||
|
showInDetail: true, |
||||
|
width: '10%', |
||||
|
render: (text, record, index) => { |
||||
|
return !record.points?.user ? '' : <div>{record.points.user.name}</div> |
||||
|
} |
||||
|
}, { |
||||
|
title: '巡检单位', |
||||
|
dataIndex: 'type', |
||||
|
showInDetail: true, |
||||
|
key: 'type', |
||||
|
width: '10%', |
||||
|
render: (text, record, index) => { |
||||
|
return !record.points?.user ? '' : <div>{record.points.user.department.name}</div> |
||||
|
} |
||||
|
}, { |
||||
|
title: '巡检频次', |
||||
|
dataIndex: 'describe', |
||||
|
key: 'describe', |
||||
|
showInDetail: true, |
||||
|
width: '10%', |
||||
|
render: (text, record, index) => { |
||||
|
return !record.points ? '' : <div>{record.points.frequency}</div> |
||||
|
} |
||||
|
}, { |
||||
|
title: '上次巡检日期', |
||||
|
dataIndex: 'describe', |
||||
|
showInDetail: true, |
||||
|
key: 'describe', |
||||
|
render: (text, record, index) => record.lastInspectionTime ? moment(record.lastInspectionTime).format('YYYY-MM-DD HH:mm:ss') : '--' |
||||
|
}, { |
||||
|
title: '本次巡检日期', |
||||
|
dataIndex: 'describe', |
||||
|
key: 'describe', |
||||
|
showInDetail: true, |
||||
|
render: (text, record, index) => moment(record.inspectionTime).format('YYYY-MM-DD HH:mm:ss') || '--' |
||||
|
}, { |
||||
|
title: '巡检结果', |
||||
|
dataIndex: 'describe', |
||||
|
key: 'describe', |
||||
|
render: (text, record, index) => !record.alarm ? '正常' : '异常' |
||||
|
}, { |
||||
|
title: '操作', |
||||
|
dataIndex: 'operation', |
||||
|
key: 'operation', |
||||
|
render: (text, record, index) => { |
||||
|
return ( |
||||
|
<IssueHandleModal |
||||
|
editData={record} |
||||
|
readOnly={true} |
||||
|
key="edit" |
||||
|
title="置顶计划" |
||||
|
triggerRender={<a>{renderOptionText(1)}</a>} |
||||
|
user={{}} |
||||
|
onFinish={onFinish} /> |
||||
|
) |
||||
|
} |
||||
|
} |
||||
|
] |
||||
|
|
||||
|
return ( |
||||
|
<div id='patrol-record'> |
||||
|
<div style={{ display: 'flex', justifyContent: 'space-between', padding: '0 10px' }}> |
||||
|
<Form |
||||
|
style={{ display: 'flex', }} |
||||
|
onFinish={r => { |
||||
|
record({ |
||||
|
name: r.name, |
||||
|
}) |
||||
|
}} |
||||
|
> |
||||
|
<Form.Item |
||||
|
name="name" |
||||
|
style={{ marginRight: 16, minWidth: 250 }} |
||||
|
> |
||||
|
<Input placeholder="请输入结构物名称或巡检人" allowClear /> |
||||
|
</Form.Item> |
||||
|
|
||||
|
<Form.Item |
||||
|
name="state" |
||||
|
style={{ marginRight: 16, width: 130 }} |
||||
|
initialValue={'null'} |
||||
|
> |
||||
|
<Select allowClear |
||||
|
options={[ |
||||
|
{ value: 'null', label: '全部' }, |
||||
|
{ value: 1, label: '待制定计划' }, |
||||
|
{ value: 2, label: '待审核' }, |
||||
|
{ value: 3, label: '计划驳回' }, |
||||
|
{ value: 4, label: '待维修' }, |
||||
|
{ value: 5, label: '待验收' }, |
||||
|
{ value: 6, label: '验收通过' }, |
||||
|
{ value: 7, label: '验收不通过' }, |
||||
|
]} /> |
||||
|
</Form.Item> |
||||
|
<Form.Item wrapperCol={{}}> |
||||
|
<Button type="primary" htmlType="submit"> |
||||
|
搜索 |
||||
|
</Button> |
||||
|
</Form.Item> |
||||
|
</Form> |
||||
|
</div> |
||||
|
<Table |
||||
|
columns={columns} |
||||
|
dataSource={tableList} |
||||
|
pagination={{ |
||||
|
showSizeChanger: true, |
||||
|
pageSizeOptions: [10, 20, 50], |
||||
|
|
||||
|
}} |
||||
|
/> |
||||
|
|
||||
|
|
||||
|
</div> |
||||
|
) |
||||
|
} |
||||
|
|
||||
|
function mapStateToProps(state) { |
||||
|
const { auth, global } = state; |
||||
|
return { |
||||
|
user: auth.user, |
||||
|
actions: global.actions, |
||||
|
}; |
||||
|
} |
||||
|
|
||||
|
export default connect(mapStateToProps)(PatrolRecord); |
@ -0,0 +1,15 @@ |
|||||
|
'use strict'; |
||||
|
|
||||
|
import reducers from './reducers'; |
||||
|
import routes from './routes'; |
||||
|
import actions from './actions'; |
||||
|
import { getNavItem } from './nav-item'; |
||||
|
|
||||
|
export default { |
||||
|
key: 'issueHandle', |
||||
|
name: '', |
||||
|
reducers: reducers, |
||||
|
routes: routes, |
||||
|
actions: actions, |
||||
|
getNavItem: getNavItem |
||||
|
}; |
@ -0,0 +1,18 @@ |
|||||
|
import React from 'react'; |
||||
|
import { Link } from 'react-router-dom'; |
||||
|
import { Menu } from 'antd'; |
||||
|
import { SettingOutlined } from '@ant-design/icons'; |
||||
|
|
||||
|
const SubMenu = Menu.SubMenu; |
||||
|
|
||||
|
export function getNavItem(user, dispatch) { |
||||
|
// if (!Func.isAuthorized("ORG_MANAGE")) {
|
||||
|
// return null
|
||||
|
// }
|
||||
|
return ( |
||||
|
<Menu.Item icon={<SettingOutlined />} key="issueHandle"> |
||||
|
<Link to="/issueHandle">维修处理</Link> |
||||
|
</Menu.Item> |
||||
|
|
||||
|
); |
||||
|
} |
@ -0,0 +1,5 @@ |
|||||
|
'use strict'; |
||||
|
|
||||
|
export default { |
||||
|
|
||||
|
}; |
@ -0,0 +1,32 @@ |
|||||
|
'use strict'; |
||||
|
import * as actionTypes from '../actions/record'; |
||||
|
import Immutable from 'immutable'; |
||||
|
|
||||
|
const initState = { |
||||
|
data: {}, |
||||
|
isRequesting: false, |
||||
|
error: null |
||||
|
}; |
||||
|
|
||||
|
function record(state = initState, action) { |
||||
|
const payload = action.payload; |
||||
|
switch (action.type){ |
||||
|
case actionTypes.GET_PATROL_RECORD_LIST: |
||||
|
return Immutable.fromJS(state).set('data', |
||||
|
payload.data).toJS(); |
||||
|
case actionTypes.GET_PATROL_RECORD_LIST_SUCCESS: |
||||
|
return Immutable.fromJS(state).merge({ |
||||
|
isRequesting: false, |
||||
|
data: payload.data |
||||
|
}).toJS(); |
||||
|
case actionTypes.GET_PATROL_RECORD_LIST_ERROR: |
||||
|
return Immutable.fromJS(state).merge({ |
||||
|
isRequesting: false, |
||||
|
error: payload.error |
||||
|
}).toJS(); |
||||
|
default: |
||||
|
return state; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
export default record; |
@ -0,0 +1,13 @@ |
|||||
|
'use strict'; |
||||
|
import { PatrolReocrd } from './containers'; |
||||
|
|
||||
|
export default [{ |
||||
|
type: 'inner', |
||||
|
route: { |
||||
|
path: '/issueHandle', |
||||
|
key: 'issueHandle', |
||||
|
breadcrumb: '维修处理', |
||||
|
component: PatrolReocrd, |
||||
|
|
||||
|
} |
||||
|
}]; |
@ -0,0 +1,13 @@ |
|||||
|
.patrol-record-detail-modal { |
||||
|
.ant-collapse>.ant-collapse-item>.ant-collapse-header { |
||||
|
padding: 0 |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.item-title { |
||||
|
background-color: #4A93DF; |
||||
|
padding: 10px; |
||||
|
color: #fff; |
||||
|
margin-bottom: 20px; |
||||
|
padding-left: 20px; |
||||
|
} |
Loading…
Reference in new issue