Jelajahi Sumber

refactor(pressure): 替换big.js为decimal.js并优化承压模块路由逻辑

- 将big.js替换为decimal.js以提高数值计算精度
- 添加PRESSURE2_EQUIP_MAIN_TYPE字典类型定义
- 更新计划排程API接口路径从/pressure到/pressure2
- 新增锅炉和管道详情组件并集成到受理订单页面
- 实现根据不同设备类型跳转对应详情页面的路由逻辑
- 在计划新建页面添加设备类型筛选条件并设置默认值
xuzhancheng 1 hari lalu
induk
melakukan
cec6a8ec3b

+ 3 - 2
yudao-ui-admin-vue3/src/api/pressure/planScheduling/index.ts

@@ -119,7 +119,8 @@ export const PlanSchedulingApi = {
 
 
   // 前台约检,列表分页
   // 前台约检,列表分页
   getFrontDeskPage: async (params: any) => {
   getFrontDeskPage: async (params: any) => {
-    return request.get({ url: '/pressure/plan-scheduling/frontDeskPage', params })
+    // return request.get({ url: '/pressure/plan-scheduling/frontDeskPage', params })
+    return request.get({ url: '/pressure2/plan-scheduling/frontDeskPage', params })
   },
   },
 
 
   // 计划排期分配人员和日期
   // 计划排期分配人员和日期
@@ -215,4 +216,4 @@ export interface PlanNewPageVO {
   taskOrderIds: string
   taskOrderIds: string
   taskOrderCount: string
   taskOrderCount: string
   id: string
   id: string
-}
+}

+ 2 - 0
yudao-ui-admin-vue3/src/utils/dict.ts

@@ -249,4 +249,6 @@ export enum DICT_TYPE {
 
 
   // ========== PRESSURE - 承压模块 ==========
   // ========== PRESSURE - 承压模块 ==========
   PIPE_TYPE = 'PIPE_TYPE' // 管道类别
   PIPE_TYPE = 'PIPE_TYPE' // 管道类别
+
+  ,PRESSURE2_EQUIP_MAIN_TYPE='pressure2_equip_main_type',
 }
 }

+ 2 - 2
yudao-ui-admin-vue3/src/views/pressure/acceptorder/detail.vue

@@ -847,7 +847,7 @@ import FileUploadModal from '@/views/pressure/orderConfirm/components/ImportFile
 import { buildFileUrl } from '@/utils'
 import { buildFileUrl } from '@/utils'
 import { useRoute } from 'vue-router'
 import { useRoute } from 'vue-router'
 import { Icon } from '@/components/Icon'
 import { Icon } from '@/components/Icon'
-import Big from 'big.js';
+import { Decimal } from 'decimal.js'
 import { useDictStore } from '@/store/modules/dict'
 import { useDictStore } from '@/store/modules/dict'
 
 
 const route = useRoute()
 const route = useRoute()
@@ -1087,7 +1087,7 @@ const getDetail = async () => {
       useUnitPhone: orderDetail.value?.useUnitPhone,
       useUnitPhone: orderDetail.value?.useUnitPhone,
       deptPhone: orderDetail.value?.deptPhone,
       deptPhone: orderDetail.value?.deptPhone,
       feeNature: String(orderDetail.value?.feeNature),
       feeNature: String(orderDetail.value?.feeNature),
-      reductionRadio: orderDetail.value?.reductionRadio ? Big(orderDetail.value.reductionRadio).times(100).toString() : 0,
+      reductionRadio: orderDetail.value?.reductionRadio ? Decimal(orderDetail.value.reductionRadio).times(100).toString() : 0,
       feeDate: orderDetail.value?.feeDate || 0,
       feeDate: orderDetail.value?.feeDate || 0,
       payerContact,
       payerContact,
       payerContactName,
       payerContactName,

+ 4 - 0
yudao-ui-admin-vue3/src/views/pressure/acceptorder/index.vue

@@ -64,6 +64,8 @@
     :id="recordId"
     :id="recordId"
   />
   />
   <AcceptOrderDetail v-if="detailVisible" v-model:visible="detailVisible" :id="detailId" :pageType="pageType" @success="handleSubmitSuccess"/>
   <AcceptOrderDetail v-if="detailVisible" v-model:visible="detailVisible" :id="detailId" :pageType="pageType" @success="handleSubmitSuccess"/>
+  <AcceptOrderBoilerDetail v-if="boilerDetailVisible" v-model:visible="boilerDetailVisible" :id="detailId" :pageType="pageType" @success="handleSubmitSuccess"/>
+  <AcceptOrderPipeDetail v-if="pipeDetailVisible" v-model:visible="pipeDetailVisible" :id="detailId" :pageType="pageType" @success="handleSubmitSuccess"/>
   <unitContainerForm ref="unitContainerFormRef" />
   <unitContainerForm ref="unitContainerFormRef" />
 </template>
 </template>
   
   
@@ -71,6 +73,8 @@
   import RejectDialog from '@/views/pressure/components/RejectDialog.vue'
   import RejectDialog from '@/views/pressure/components/RejectDialog.vue'
   import AcceptOrderFlowRecord from '@/views/pressure/components/AcceptOrderFlowRecord.vue'
   import AcceptOrderFlowRecord from '@/views/pressure/components/AcceptOrderFlowRecord.vue'
   import AcceptOrderDetail from '@/views/pressure/acceptorder/detail.vue'
   import AcceptOrderDetail from '@/views/pressure/acceptorder/detail.vue'
+  import AcceptOrderBoilerDetail from '@/views/pressure2/acceptorder/boilerDetail.vue'
+  import AcceptOrderPipeDetail from '@/views/pressure2/acceptorder/pipeDetail.vue'
   import unitContainerForm from '@/components/unitContainerForm/index.vue'
   import unitContainerForm from '@/components/unitContainerForm/index.vue'
   import SmartTable from '@/components/SmartTable/SmartTable'
   import SmartTable from '@/components/SmartTable/SmartTable'
   import dayjs from 'dayjs'
   import dayjs from 'dayjs'

+ 35 - 7
yudao-ui-admin-vue3/src/views/pressure/orderConfirm/index.vue

@@ -500,12 +500,40 @@
   
   
   /** 约检按钮操作 */
   /** 约检按钮操作 */
   const handleAppointment = (row: AppointmentConfirmOrderVO) => {
   const handleAppointment = (row: AppointmentConfirmOrderVO) => {
-    router.push({
-      name: 'OrderConfirmDetail',
-      query: {
-        id: row.id
-      }
-    })
+    // 根据不同设备类型跳转不同页面
+    switch (row.equipMainType){
+      case 200:
+        router.push({
+          name: 'OrderBoilerDetail',
+          query: {
+            id: row.id
+          }
+        })
+        break;
+      case 300:
+        router.push({
+          name: 'OrderPipeDetail',
+          query: {
+            id: row.id
+          }
+        })
+        break
+      case 100:
+      default:
+        router.push({
+          name: 'OrderConfirmDetail',
+          query: {
+            id: row.id
+          }
+        })
+        break;
+    }
+    // router.push({
+    //   name: 'OrderConfirmDetail',
+    //   query: {
+    //     id: row.id
+    //   }
+    // })
   }
   }
 
 
   /** 选择框操作 */
   /** 选择框操作 */
@@ -667,4 +695,4 @@
   padding-bottom: 16px;
   padding-bottom: 16px;
 }
 }
 
 
-</style>
+</style>

+ 35 - 7
yudao-ui-admin-vue3/src/views/pressure/planNew/index.vue

@@ -38,6 +38,11 @@
       <el-form-item label="产品编号" prop="productNo">
       <el-form-item label="产品编号" prop="productNo">
         <el-input v-model="queryParams.productNo" placeholder="请输入产品编号" clearable @keyup.enter="handleQuery" />
         <el-input v-model="queryParams.productNo" placeholder="请输入产品编号" clearable @keyup.enter="handleQuery" />
       </el-form-item>
       </el-form-item>
+      <el-form-item label="设备类型" prop="equipMainType" required>
+        <el-select v-model="queryParams.equipMainType" placeholder="请选择设备类型" clearable>
+          <el-option v-for="dict in getIntDictOptions(DICT_TYPE.PRESSURE2_EQUIP_MAIN_TYPE)" :key="dict.value" :label="dict.label" :value="dict.value" />
+        </el-select>
+      </el-form-item>
       <!-- 操作按钮 -->
       <!-- 操作按钮 -->
       <el-form-item label-width="0px">
       <el-form-item label-width="0px">
         <div class="w-full flex justify-center gap-80px">
         <div class="w-full flex justify-center gap-80px">
@@ -84,6 +89,7 @@ import SmartTable from '@/components/SmartTable/SmartTable'
 import { usePlanNewStore } from '@/store/modules/planNew'
 import { usePlanNewStore } from '@/store/modules/planNew'
 import { usePageParamsStore } from '@/hooks/web/usePageParamsStore'
 import { usePageParamsStore } from '@/hooks/web/usePageParamsStore'
 import { useTagsViewStore } from '@/store/modules/tagsView'
 import { useTagsViewStore } from '@/store/modules/tagsView'
+import {DICT_TYPE, getIntDictOptions} from "@/utils/dict";
 const tagsViewStore = useTagsViewStore()
 const tagsViewStore = useTagsViewStore()
 defineOptions({ name: 'NewPressurePlan' })
 defineOptions({ name: 'NewPressurePlan' })
 
 
@@ -96,7 +102,8 @@ const queryFormRef = ref<InstanceType<typeof ElForm>>()
 const queryParams = ref<Record<string, any>>({
 const queryParams = ref<Record<string, any>>({
   scene: 0,
   scene: 0,
   pageNo: 1,
   pageNo: 1,
-  pageSize: 10
+  pageSize: 10,
+  equipMainType: getIntDictOptions(DICT_TYPE.PRESSURE2_EQUIP_MAIN_TYPE)[0].value
 })
 })
 
 
 const tableData = ref<PlanNewPageVO[]>([]) // 列表的数据
 const tableData = ref<PlanNewPageVO[]>([]) // 列表的数据
@@ -367,12 +374,33 @@ const handleEdit = (row: PlanNewPageVO) => {
   tagsViewStore.delVisitedNameView(routerValue)
   tagsViewStore.delVisitedNameView(routerValue)
   console.log('handleEdit', row)
   console.log('handleEdit', row)
   addPlanNewData(row)
   addPlanNewData(row)
-  router.push({
-    name: 'PlanNewDetail',
-    query: {
-      id: row.id
-    }
-  })
+  switch (queryParams.value.equipMainType) {
+    case 200:
+      router.push({
+        name: 'BoilerDetail',
+        query: {
+          id: row.id
+        }
+      })
+      break;
+    case 300:
+      router.push({
+        name: 'PipeDetail',
+        query: {
+          id: row.id
+        }
+      })
+      break
+    case 100:
+    default:
+      router.push({
+        name: 'PlanNewDetail',
+        query: {
+          id: row.id
+        }
+      })
+      break;
+  }
 }
 }
 
 
 /** 初始化 **/
 /** 初始化 **/