|
|
@@ -1,13 +1,13 @@
|
|
|
/* eslint-disable no-underscore-dangle */
|
|
|
import React, { useState, useEffect, useRef } from 'react'
|
|
|
import BasicTable from '@/components/Table'
|
|
|
-import { dayjsFormat, generateSortField } from '@/utils/utils'
|
|
|
+import { dayjsFormat } from '@/utils/utils'
|
|
|
import { queryRoadpricingList } from '@/services/product'
|
|
|
import { Input, Tag, Tooltip } from 'antd'
|
|
|
-import consts from '@/consts'
|
|
|
-import { useLocation, useSelector, useDispatch } from '@umijs/max'
|
|
|
import { useModal } from '@/components/ModalStore'
|
|
|
import { PageContainer } from '@ant-design/pro-layout'
|
|
|
+import { useCreation } from 'ahooks'
|
|
|
+import { connect } from '@@/plugin-dva'
|
|
|
|
|
|
export const roadpricingEnum = {
|
|
|
CURING: 1, // 养护云
|
|
|
@@ -16,44 +16,36 @@ export const roadpricingEnum = {
|
|
|
GS: 4 // 大司空概算
|
|
|
}
|
|
|
|
|
|
-const Cloud = () => {
|
|
|
- const { pathname = '' } = useLocation()
|
|
|
+const Cloud = ({ cloud, dispatch }) => {
|
|
|
const tRef = useRef()
|
|
|
- const columnStateType = pathname?.match(/\/([^/]*)$/)[1]?.toUpperCase()
|
|
|
- const dispatch = useDispatch()
|
|
|
const dispatchModal = useModal()
|
|
|
- const { cloud } = useSelector(state => ({
|
|
|
- cloud: state.cloud,
|
|
|
- shouldUpdate: state.refresh.cloud
|
|
|
- }))
|
|
|
- const compilation = cloud.compilation[roadpricingEnum[columnStateType]]
|
|
|
- const province = cloud.province[roadpricingEnum[columnStateType]]
|
|
|
-
|
|
|
const [state, setState] = useState({
|
|
|
- params: {
|
|
|
- projectType: roadpricingEnum[columnStateType],
|
|
|
- search: null
|
|
|
- }
|
|
|
+ search: null
|
|
|
})
|
|
|
-
|
|
|
+ const memoRef = useCreation(() => {
|
|
|
+ const columnStateType = window.location.pathname?.match(/\/([^/]*)$/)[1]?.toUpperCase()
|
|
|
+ const compilation = cloud.compilation[roadpricingEnum[columnStateType]]
|
|
|
+ const province = cloud.province[roadpricingEnum[columnStateType]]
|
|
|
+ return { columnStateType, compilation, province }
|
|
|
+ }, [window.location.pathname, cloud])
|
|
|
useEffect(() => {
|
|
|
- if (!compilation?.length) {
|
|
|
+ if (!cloud.compilation[roadpricingEnum[memoRef.columnStateType]]?.length) {
|
|
|
dispatch({
|
|
|
type: 'cloud/fetchCompilation',
|
|
|
payload: {
|
|
|
- projectType: roadpricingEnum[columnStateType]
|
|
|
+ projectType: roadpricingEnum[memoRef.columnStateType]
|
|
|
}
|
|
|
})
|
|
|
}
|
|
|
- if (!province?.length) {
|
|
|
+ if (!cloud.province[roadpricingEnum[memoRef.columnStateType]]?.length) {
|
|
|
dispatch({
|
|
|
type: 'cloud/fetchProvince',
|
|
|
payload: {
|
|
|
- projectType: roadpricingEnum[columnStateType]
|
|
|
+ projectType: roadpricingEnum[memoRef.columnStateType]
|
|
|
}
|
|
|
})
|
|
|
}
|
|
|
- }, [])
|
|
|
+ }, [memoRef.columnStateType])
|
|
|
|
|
|
const columns = [
|
|
|
{
|
|
|
@@ -67,7 +59,7 @@ const Cloud = () => {
|
|
|
onClick={() =>
|
|
|
dispatchModal('D_CLOUD_DETAIL', {
|
|
|
dataId: record.ssoId,
|
|
|
- projectType: roadpricingEnum[columnStateType]
|
|
|
+ projectType: roadpricingEnum[memoRef.columnStateType]
|
|
|
})
|
|
|
}
|
|
|
className="text-primary cursor-pointer hover:text-[#967bbd]">
|
|
|
@@ -166,7 +158,7 @@ const Cloud = () => {
|
|
|
filters: true,
|
|
|
filterMultiple: false,
|
|
|
width: 120,
|
|
|
- valueEnum: compilation.reduce((prev, curr) => {
|
|
|
+ valueEnum: memoRef.compilation.reduce((prev, curr) => {
|
|
|
const obj = { ...prev }
|
|
|
if (curr._id) {
|
|
|
obj[curr._id] = {
|
|
|
@@ -182,7 +174,7 @@ const Cloud = () => {
|
|
|
dataIndex: 'province',
|
|
|
key: 'province',
|
|
|
filters: true,
|
|
|
- valueEnum: province.reduce((prev, curr) => {
|
|
|
+ valueEnum: memoRef.province.reduce((prev, curr) => {
|
|
|
const obj = { ...prev }
|
|
|
obj[curr.value] = {
|
|
|
text: curr.label
|
|
|
@@ -208,7 +200,7 @@ const Cloud = () => {
|
|
|
width: 150,
|
|
|
filters: true,
|
|
|
filterMultiple: false,
|
|
|
- valueEnum: compilation.reduce((prev, curr) => {
|
|
|
+ valueEnum: memoRef.compilation.reduce((prev, curr) => {
|
|
|
const obj = { ...prev }
|
|
|
if (curr._id) {
|
|
|
obj[curr._id] = {
|
|
|
@@ -221,12 +213,13 @@ const Cloud = () => {
|
|
|
<div className="!children:m-2px">
|
|
|
{record.upgrade_list
|
|
|
.filter(
|
|
|
- item => item.isUpgrade && compilation?.findIndex(i => i._id === item.compilationID) !== -1
|
|
|
+ item =>
|
|
|
+ item.isUpgrade && memoRef.compilation?.findIndex(i => i._id === item.compilationID) !== -1
|
|
|
)
|
|
|
.map(item => {
|
|
|
return (
|
|
|
<Tag color="purple" key={item.compilationID}>
|
|
|
- {compilation?.find(i => i._id === item.compilationID)?.name}
|
|
|
+ {memoRef.compilation?.find(i => i._id === item.compilationID)?.name}
|
|
|
</Tag>
|
|
|
)
|
|
|
})}
|
|
|
@@ -265,13 +258,11 @@ const Cloud = () => {
|
|
|
<BasicTable
|
|
|
actionRef={tRef}
|
|
|
rowKey={record => record._id}
|
|
|
- columnStateType={columnStateType}
|
|
|
- params={state.params}
|
|
|
+ params={{ searhc: state.search, projectType: roadpricingEnum[memoRef.columnStateType] }}
|
|
|
request={async (params, sort, filter) => {
|
|
|
- const sortOrder = generateSortField(sort)
|
|
|
const {
|
|
|
data: { list = [], total = 0 }
|
|
|
- } = await queryRoadpricingList({ ...params, ...sortOrder, ...filter })
|
|
|
+ } = await queryRoadpricingList({ ...params, ...sort, ...filter })
|
|
|
return {
|
|
|
data: list,
|
|
|
total
|
|
|
@@ -300,4 +291,6 @@ const Cloud = () => {
|
|
|
)
|
|
|
}
|
|
|
|
|
|
-export default Cloud
|
|
|
+export default connect(({ cloud }) => ({
|
|
|
+ cloud
|
|
|
+}))(Cloud)
|