|
@@ -172,7 +172,7 @@ import EquipContainerForm from '@/components/EquipContainerForm/index.vue'
|
|
|
import EquipBoilerForm from '@/components/EquipBoilerForm/index.vue'
|
|
import EquipBoilerForm from '@/components/EquipBoilerForm/index.vue'
|
|
|
import EquipPipeForm from '@/components/EquipPipeForm/index.vue'
|
|
import EquipPipeForm from '@/components/EquipPipeForm/index.vue'
|
|
|
import AreaSelect from '@/views/system/equipcontainer/components/AreaSelect.vue'
|
|
import AreaSelect from '@/views/system/equipcontainer/components/AreaSelect.vue'
|
|
|
-import { getStrDictOptions, DICT_TYPE } from '@/utils/dict'
|
|
|
|
|
|
|
+import { getStrDictOptions, getDictLabel, DICT_TYPE } from '@/utils/dict'
|
|
|
import FetchApis from './index.api'
|
|
import FetchApis from './index.api'
|
|
|
import { cloneDeep } from 'lodash-es'
|
|
import { cloneDeep } from 'lodash-es'
|
|
|
import { isEmpty } from '@/utils/is'
|
|
import { isEmpty } from '@/utils/is'
|
|
@@ -230,83 +230,100 @@ const pageSize = ref(10)
|
|
|
const total = ref(0)
|
|
const total = ref(0)
|
|
|
const loading = ref(false)
|
|
const loading = ref(false)
|
|
|
|
|
|
|
|
-// 转换前端设备类型到后端设备类型
|
|
|
|
|
-const getBackendEquipMainType = (type: string) => {
|
|
|
|
|
- switch (type) {
|
|
|
|
|
- case 'container':
|
|
|
|
|
- return 100
|
|
|
|
|
- case 'boiler':
|
|
|
|
|
- return 200
|
|
|
|
|
- case 'pipe':
|
|
|
|
|
- return 300
|
|
|
|
|
- default:
|
|
|
|
|
- return 200
|
|
|
|
|
- }
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
// 设备类型变化处理
|
|
// 设备类型变化处理
|
|
|
const handleEquipTypeChange = (value: string) => {
|
|
const handleEquipTypeChange = (value: string) => {
|
|
|
- selectedEquipMainType.value = value // 同步更新显示的设备类型
|
|
|
|
|
|
|
+ selectedEquipMainType.value = value
|
|
|
searchFormData.value.equipTypeList = []
|
|
searchFormData.value.equipTypeList = []
|
|
|
pageNo.value = 1
|
|
pageNo.value = 1
|
|
|
getListPageFn()
|
|
getListPageFn()
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-const getListPageFn = async () => {
|
|
|
|
|
- loading.value = true
|
|
|
|
|
- try {
|
|
|
|
|
- const baseParams = cloneDeep(searchFormDataTable.value)
|
|
|
|
|
- // 清理空值
|
|
|
|
|
- for (const key in baseParams) {
|
|
|
|
|
- if (isEmpty(baseParams[key])) {
|
|
|
|
|
- delete baseParams[key]
|
|
|
|
|
- }
|
|
|
|
|
|
|
+// 构建通用请求参数(匹配后端 PendingInspectionEquipReqVO)
|
|
|
|
|
+const buildCommonRequestParams = (baseParams: any) => {
|
|
|
|
|
+ const data: any = {
|
|
|
|
|
+ ...cloneDeep(baseParams),
|
|
|
|
|
+ ...searchFormData.value,
|
|
|
|
|
+ equipMainType: selectedEquipMainType.value,
|
|
|
|
|
+ flag: Number(isClaim.value),
|
|
|
|
|
+ pageNo: pageNo.value,
|
|
|
|
|
+ pageSize: pageSize.value
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 清理空值
|
|
|
|
|
+ for (const key in data) {
|
|
|
|
|
+ if (isEmpty(data[key])) {
|
|
|
|
|
+ delete data[key]
|
|
|
}
|
|
}
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- const equipMainType = selectedEquipMainType.value
|
|
|
|
|
- const backendEquipMainType = getBackendEquipMainType(equipMainType)
|
|
|
|
|
-
|
|
|
|
|
- // 构建请求参数
|
|
|
|
|
- const requestParams: any = {
|
|
|
|
|
- ...baseParams,
|
|
|
|
|
- scene: 0, // 前台约检场景
|
|
|
|
|
- equipMainType: backendEquipMainType,
|
|
|
|
|
- pageNo: pageNo.value,
|
|
|
|
|
- pageSize: pageSize.value
|
|
|
|
|
|
|
+ // 处理检验日期范围:checkDate 数组 → checkDateStart / checkDateEnd
|
|
|
|
|
+ if (data?.checkDate) {
|
|
|
|
|
+ if (Array.isArray(data.checkDate) && data.checkDate.length === 2) {
|
|
|
|
|
+ data.checkDateStart = data.checkDate[0]
|
|
|
|
|
+ data.checkDateEnd = data.checkDate[1]
|
|
|
}
|
|
}
|
|
|
|
|
+ delete data.checkDate
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 处理拒检设备筛选:'flag'→不筛选, 'true'/'false'→布尔
|
|
|
|
|
+ if (data.isRefused === 'flag') {
|
|
|
|
|
+ delete data.isRefused
|
|
|
|
|
+ } else if (data.isRefused !== undefined) {
|
|
|
|
|
+ data.isRefused = data.isRefused === 'true'
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return data
|
|
|
|
|
+}
|
|
|
|
|
|
|
|
- // 根据设备类型调用不同的接口
|
|
|
|
|
|
|
+// 将后端返回的设备数据映射为表格列所需的字段名
|
|
|
|
|
+const mapEquipDataForTable = (item: any) => {
|
|
|
|
|
+ const mapped = { ...item }
|
|
|
|
|
+ // 检验性质:后端 checkTypeStr → 前端 checkNature(如果后端未设置,根据 checkType 推导)
|
|
|
|
|
+ if (mapped.checkTypeStr !== undefined && mapped.checkTypeStr !== null && mapped.checkTypeStr !== '') {
|
|
|
|
|
+ mapped.checkNature = mapped.checkTypeStr
|
|
|
|
|
+ } else if (mapped.checkType !== undefined && mapped.checkType !== null) {
|
|
|
|
|
+ // checkType: 100=定检, 200=年检, 300=超年限
|
|
|
|
|
+ const checkTypeMap: Record<number, string> = { 100: '定检', 200: '年检', 300: '超年限' }
|
|
|
|
|
+ mapped.checkNature = checkTypeMap[mapped.checkType] || ''
|
|
|
|
|
+ }
|
|
|
|
|
+ // 设备分类:后端 equipType(dict ID) → 前端 equipTypeName(dict label)
|
|
|
|
|
+ if (mapped.equipType !== undefined && mapped.equipType !== null) {
|
|
|
|
|
+ if (selectedEquipMainType.value === 'boiler') {
|
|
|
|
|
+ mapped.equipTypeName = getDictLabel(DICT_TYPE.SYSTEM_EQUIP_BOILER_TYPE, mapped.equipType)
|
|
|
|
|
+ } else if (selectedEquipMainType.value === 'pipe') {
|
|
|
|
|
+ mapped.equipTypeName = getDictLabel(DICT_TYPE.PIPE_TYPE, mapped.equipType)
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ // 管道特殊映射:后端 equipCode → 前端 projectNo,equipName → projectName
|
|
|
|
|
+ if (selectedEquipMainType.value === 'pipe') {
|
|
|
|
|
+ mapped.projectNo = mapped.equipCode
|
|
|
|
|
+ mapped.projectName = mapped.equipName
|
|
|
|
|
+ }
|
|
|
|
|
+ return mapped
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+const getListPageFn = async () => {
|
|
|
|
|
+ loading.value = true
|
|
|
|
|
+ try {
|
|
|
|
|
+ const equipMainType = selectedEquipMainType.value
|
|
|
|
|
+ const data = buildCommonRequestParams(searchFormDataTable.value)
|
|
|
let result
|
|
let result
|
|
|
- if (equipMainType === 'container') {
|
|
|
|
|
- // 容器使用pressure1模块的接口
|
|
|
|
|
- const data: any = {
|
|
|
|
|
- ...requestParams,
|
|
|
|
|
- ...searchFormData.value,
|
|
|
|
|
- flag: Number(isClaim.value)
|
|
|
|
|
- }
|
|
|
|
|
- // 处理日期
|
|
|
|
|
- if (data?.checkDate) {
|
|
|
|
|
- if (Array.isArray(data.checkDate) && data.checkDate.length === 2) {
|
|
|
|
|
- data.checkDateStart = data.checkDate[0]
|
|
|
|
|
- data.checkDateEnd = data.checkDate[1]
|
|
|
|
|
- }
|
|
|
|
|
- delete data.checkDate
|
|
|
|
|
- }
|
|
|
|
|
- // 处理拒检设备筛选参数
|
|
|
|
|
- if (data.isRefused === 'flag') {
|
|
|
|
|
- delete data.isRefused
|
|
|
|
|
- } else {
|
|
|
|
|
- data.isRefused = data.isRefused === 'true'
|
|
|
|
|
- }
|
|
|
|
|
|
|
|
|
|
|
|
+ if (equipMainType === 'container') {
|
|
|
|
|
+ // 容器使用 pressure 模块的 POST 接口
|
|
|
result = await FetchApis.getContainerPage(data)
|
|
result = await FetchApis.getContainerPage(data)
|
|
|
- } else {
|
|
|
|
|
- // 锅炉和管道使用pressure2模块的接口
|
|
|
|
|
- result = await FetchApis.getPage(requestParams)
|
|
|
|
|
|
|
+ } else if (equipMainType === 'boiler') {
|
|
|
|
|
+ // 锅炉使用 pressure2 模块的 GET 接口
|
|
|
|
|
+ result = await FetchApis.getBoilerPage(data)
|
|
|
|
|
+ } else if (equipMainType === 'pipe') {
|
|
|
|
|
+ // 管道使用 pressure2 模块的 GET 接口
|
|
|
|
|
+ result = await FetchApis.getPipePage(data)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
if (result) {
|
|
if (result) {
|
|
|
- tableData.value = result.list || []
|
|
|
|
|
|
|
+ const list = result.list || []
|
|
|
|
|
+ // 将后端字段映射为前端表格列所需的字段名
|
|
|
|
|
+ tableData.value = list.map(mapEquipDataForTable)
|
|
|
total.value = result.total || 0
|
|
total.value = result.total || 0
|
|
|
}
|
|
}
|
|
|
} catch (error) {
|
|
} catch (error) {
|
|
@@ -334,36 +351,18 @@ const handleReset = () => {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
const handleExportFn = async () => {
|
|
const handleExportFn = async () => {
|
|
|
|
|
+ const equipMainType = selectedEquipMainType.value
|
|
|
|
|
+ if (equipMainType !== 'container') {
|
|
|
|
|
+ ElMessage.warning('锅炉和管道的导出功能暂未开放,请使用容器设备导出')
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
loading.value = true
|
|
loading.value = true
|
|
|
try {
|
|
try {
|
|
|
- const data: any = {
|
|
|
|
|
- ...cloneDeep(searchFormDataTable.value),
|
|
|
|
|
- ...searchFormData.value,
|
|
|
|
|
- flag: Number(isClaim.value),
|
|
|
|
|
- pageNo: pageNo.value,
|
|
|
|
|
- pageSize: selectedRows.value.length ? pageSize.value : total.value,
|
|
|
|
|
- ids: selectedRows.value.map((item: any) => item.id)
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- // 清理空值
|
|
|
|
|
- for (const key in data) {
|
|
|
|
|
- if (isEmpty(data[key])) {
|
|
|
|
|
- delete data[key]
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- if (data?.checkDate) {
|
|
|
|
|
- if (Array.isArray(data.checkDate) && data.checkDate.length === 2) {
|
|
|
|
|
- data.checkDateStart = data.checkDate[0]
|
|
|
|
|
- data.checkDateEnd = data.checkDate[1]
|
|
|
|
|
- }
|
|
|
|
|
- delete data.checkDate
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- if (data.isRefused === 'flag') {
|
|
|
|
|
- delete data.isRefused
|
|
|
|
|
- } else {
|
|
|
|
|
- data.isRefused = data.isRefused === 'true'
|
|
|
|
|
|
|
+ const data = buildCommonRequestParams(searchFormDataTable.value)
|
|
|
|
|
+ data.ids = selectedRows.value.map((item: any) => item.id)
|
|
|
|
|
+ // 导出时如果没有选中行,则导出全部
|
|
|
|
|
+ if (!selectedRows.value.length) {
|
|
|
|
|
+ data.pageSize = total.value
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
const response = await FetchApis.downloadExportEquipsExcelApi(data)
|
|
const response = await FetchApis.downloadExportEquipsExcelApi(data)
|
|
@@ -408,7 +407,7 @@ const handleAppointment = (row: any) => {
|
|
|
} else if (selectedEquipMainType.value === 'boiler') {
|
|
} else if (selectedEquipMainType.value === 'boiler') {
|
|
|
// 锅炉使用pressure2模块的锅炉详情页
|
|
// 锅炉使用pressure2模块的锅炉详情页
|
|
|
router.push({
|
|
router.push({
|
|
|
- path: '/pressure2/planNew/boilerDetail',
|
|
|
|
|
|
|
+ path: '/ywgl/planNew/boilerDetail',
|
|
|
query: {
|
|
query: {
|
|
|
id: row.id || row.taskId,
|
|
id: row.id || row.taskId,
|
|
|
equipCode: row.equipCode
|
|
equipCode: row.equipCode
|
|
@@ -417,7 +416,7 @@ const handleAppointment = (row: any) => {
|
|
|
} else if (selectedEquipMainType.value === 'pipe') {
|
|
} else if (selectedEquipMainType.value === 'pipe') {
|
|
|
// 管道使用pressure2模块的管道详情页
|
|
// 管道使用pressure2模块的管道详情页
|
|
|
router.push({
|
|
router.push({
|
|
|
- path: '/pressure2/planNew/pipeDetail',
|
|
|
|
|
|
|
+ path: '/ywgl/planNew/pipeDetail',
|
|
|
query: {
|
|
query: {
|
|
|
id: row.id || row.taskId,
|
|
id: row.id || row.taskId,
|
|
|
equipCode: row.equipCode
|
|
equipCode: row.equipCode
|