Ver código fonte

fix: 修复瑞都设备利用率跳转参数生效问题

- 将瑞都看板设备利用率跳转目标改为 RdSummary
- 为瑞都日报汇总页补充路由 query 参数同步
- 支持根据 defaultView 切换日报统计表格/看板视图
Zimo 2 dias atrás
pai
commit
fd1ac10e6d

+ 11 - 0
src/views/pms/iotrddailyreport/components/DailyStatistics.vue

@@ -20,6 +20,7 @@ interface Query {
 const props = defineProps<{
   query: Query
   deptName: string
+  defaultView?: '表格' | '看板'
   refreshKey: number
 }>()
 
@@ -190,6 +191,8 @@ const currentTab = ref<'表格' | '看板'>('表格')
 const direction = ref<'left' | 'right'>('right')
 
 const handleSelectTab = (val: '表格' | '看板') => {
+  if (tab.value === val && currentTab.value === val) return
+
   tab.value = val
   direction.value = val === '看板' ? 'right' : 'left'
   nextTick(() => {
@@ -200,6 +203,14 @@ const handleSelectTab = (val: '表格' | '看板') => {
   })
 }
 
+watch(
+  () => props.defaultView,
+  (val) => {
+    handleSelectTab(val || '表格')
+  },
+  { immediate: true }
+)
+
 const chartRef = ref<HTMLDivElement | null>(null)
 let chart: echarts.ECharts | null = null
 

+ 50 - 0
src/views/pms/iotrddailyreport/summary.vue

@@ -9,6 +9,7 @@ defineOptions({
   name: 'RdSummary'
 })
 
+const route = useRoute()
 const deptId = useUserStore().getUser.deptId
 
 interface Query {
@@ -35,9 +36,46 @@ const createDefaultQuery = (): Query => ({
 
 const query = ref<Query>(createDefaultQuery())
 const activeTab = ref<'日报统计' | '非生产时效'>('日报统计')
+const defaultView = ref<'表格' | '看板'>('表格')
 const deptName = ref('四川瑞都')
 const refreshKey = ref(0)
 
+const getRouteCreateTime = () => {
+  const createTime = route.query.createTime
+
+  if (Array.isArray(createTime)) {
+    const values = createTime.filter((item): item is string => typeof item === 'string')
+    return values.length === 2 ? values : undefined
+  }
+
+  if (typeof createTime === 'string') {
+    const values = createTime.split(',').filter(Boolean)
+    return values.length === 2 ? values : undefined
+  }
+
+  return undefined
+}
+
+const getRouteActiveTab = () => {
+  return route.query.activeTab === '非生产时效' ? '非生产时效' : '日报统计'
+}
+
+const getRouteDefaultView = () => {
+  return route.query.view === 'kanban' || route.query.defaultView === '看板' ? '看板' : '表格'
+}
+
+const syncQueryFromRoute = () => {
+  const createTime = getRouteCreateTime()
+
+  if (createTime) {
+    query.value.createTime = createTime
+  }
+
+  activeTab.value = getRouteActiveTab()
+  defaultView.value = getRouteDefaultView()
+  handleQuery()
+}
+
 const handleDeptNodeClick = (node: any) => {
   deptName.value = node.name
   handleQuery()
@@ -53,6 +91,17 @@ const resetQuery = () => {
   deptName.value = '四川瑞都'
   handleQuery()
 }
+
+onMounted(() => {
+  syncQueryFromRoute()
+})
+
+watch(
+  () => [route.query.createTime, route.query.activeTab, route.query.view, route.query.defaultView],
+  () => {
+    syncQueryFromRoute()
+  }
+)
 </script>
 
 <template>
@@ -125,6 +174,7 @@ const resetQuery = () => {
       v-if="activeTab === '日报统计'"
       :query="query"
       :dept-name="deptName"
+      :default-view="defaultView"
       :refresh-key="refreshKey" />
     <NonProductionEfficiency
       v-else

+ 2 - 2
src/views/pms/stat/rdkb/rd-rate.vue

@@ -163,10 +163,10 @@ function handleChartClick() {
   if (!createTime) return
 
   router.push({
-    name: 'IotRhDailyReportSummary',
+    name: 'RdSummary',
     query: {
       activeTab: '日报统计',
-      view: 'kanban',
+      view: 'biaoge',
       createTime
     }
   })