刘洋 1 tahun lalu
induk
melakukan
83a577d45e

+ 17 - 2
src/modules/analysis/monitoring/index.vue

@@ -60,7 +60,7 @@
 
 <script setup lang="tsx" name="AnalysisMonitoring">
 /** 决策分析-监控 */
-import { computed, reactive, ref, watch, nextTick } from 'vue'
+import { computed, reactive, ref, watch, nextTick, onBeforeUnmount, onDeactivated } from 'vue'
 import { useRouter } from 'vue-router'
 import { ElButton, ElFormItem } from 'element-plus'
 import { omit } from 'lodash-es'
@@ -75,9 +75,10 @@ import BaseDialog from '@/components/element/BaseDialog.vue'
 import BaseForm from '@/components/element/BaseForm.vue'
 import ConfirmButton from '@/components/common/ConfirmButton.vue'
 import Empty from '@/components/common/Empty.vue'
-
+import useMainStore from '@/store/main'
 import type { EpTableColumn, EpFormItem, EpTableProps } from 'global-type'
 import type { ExtractApiParams, ExtractApiResponse } from '@/api/api'
+const mainStore = useMainStore()
 
 const { push } = useRouter()
 const toMore = (key: string) => {
@@ -393,6 +394,20 @@ watch([interval, initFinish], () => {
     resume()
   }
 })
+onBeforeUnmount(() => {
+  pause()
+})
+onDeactivated(() => {
+  pause()
+})
+
+watch(groupListWithAll, () => {
+  if (mainStore.myUserInfo && mainStore.myUserInfo.role === 'DEPUTY') {
+    setTimeout(() => {
+      changeModelValue('group')(mainStore.myUserInfo?.markingGroupNumber)
+    }, 0)
+  }
+})
 </script>
 
 <style scoped lang="scss">

+ 2 - 0
src/modules/analysis/personnel-compare/hooks/useCompareFilter.ts

@@ -147,6 +147,8 @@ const useCompareFilter = () => {
     items,
     rows,
     onOptionInit,
+    changeModelValue,
+    groupListWithAll,
   }
 }
 export default useCompareFilter

+ 54 - 7
src/modules/analysis/personnel-compare/index.vue

@@ -79,7 +79,9 @@ import useCompareFilter from './hooks/useCompareFilter'
 import VueECharts from 'vue-echarts'
 import { CircleClose } from '@element-plus/icons-vue'
 import { myColorList } from '@/utils/common'
-
+import { cloneDeep } from 'lodash-es'
+import useMainStore from '@/store/main'
+const mainStore = useMainStore()
 const curRow = ref<any>(null)
 const onDbClick = (row: any) => {
   curRow.value = row
@@ -94,9 +96,25 @@ const dataTypeLabelMap = reactive<any>({
   xyRelate: '相关系数',
 })
 const multLineXdatas = ref([])
-const { model, fetchModel, items, onOptionInit } = useCompareFilter()
+const { model, fetchModel, items, onOptionInit, changeModelValue, groupListWithAll } = useCompareFilter()
 
-const { fetch, result: allResult, loading } = useFetch('getCompareList')
+const { fetch, result: allResult2, loading } = useFetch('getCompareList')
+const allResult = computed(() => {
+  if (allResult2.value) {
+    if (mainStore.myUserInfo?.role === 'DEPUTY') {
+      let markingGroupNumber = mainStore.myUserInfo.markingGroupNumber
+      let target = allResult2.value.groups.find((item: any) => item.markingGroupNumber == markingGroupNumber)
+      let zeroGroup = cloneDeep(target)
+      zeroGroup.markingGroupNumber = 0
+      zeroGroup.markerCompares = []
+      return { columns: allResult2.value.columns, groups: [target, zeroGroup] }
+    } else {
+      return allResult2.value
+    }
+  } else {
+    return { columns: [], groups: [] }
+  }
+})
 const result = computed(() => {
   let groups = (allResult.value?.groups || []).filter((item: any) => {
     if (
@@ -106,7 +124,7 @@ const result = computed(() => {
     ) {
       return item
     } else {
-      return fetchModel.value.markingGroupNumber.includes(item.markingGroupNumber)
+      return fetchModel.value.markingGroupNumber.includes(item.markingGroupNumber) || item.markingGroupNumber == 0
     }
   })
   return { columns: allResult.value?.columns || [], groups }
@@ -134,11 +152,13 @@ const filterAverageDatas = computed(() => {
 })
 const allTableData = computed(() => {
   if (result.value) {
+    let groups = cloneDeep(result.value.groups)
     let arr = []
-    for (let i = 0; i < result.value.groups.length; i++) {
-      let g = result.value.groups[i]
+    for (let i = 0; i < groups.length; i++) {
+      let g = groups[i]
       arr.push(...g.markerCompares)
     }
+    console.log('allTableData', arr)
     return arr
   } else {
     return []
@@ -303,6 +323,23 @@ const rowChartOptions = computed(() => {
 })
 const lineChartOptions = computed(() => {
   let xData = allTableData.value.map((item) => item.loginName)
+  // console.log('xData:', xData)
+  // console.log('allTableData.value:', allTableData.value)
+  // console.log(
+  //   'allTableData.value.map((item) => item[dataType.value])',
+  //   allTableData.value.map((item) => item[dataType.value])
+  // )
+  console.log(
+    'yAxis',
+    averageDatas.value,
+    averageDatas.value.find((item: any) => {
+      return item.markingGroupNumber == 0
+    }),
+    dataType.value,
+    averageDatas.value.find((item: any) => {
+      return item.markingGroupNumber == 0
+    })?.[dataType.value === 'markingCount' ? 'avgMarkingCount' : dataType.value]
+  )
   return {
     grid: {
       left: 60,
@@ -333,7 +370,10 @@ const lineChartOptions = computed(() => {
             {
               name: '总体' + dataTypeLabelMap[dataType.value],
               yAxis: averageDatas.value.find((item: any) => {
-                return item.markingGroupNumber == 0
+                return (
+                  item.markingGroupNumber ==
+                  (mainStore.myUserInfo?.role === 'DEPUTY' ? mainStore.myUserInfo.markingGroupNumber : 0)
+                )
               })?.[dataType.value === 'markingCount' ? 'avgMarkingCount' : dataType.value],
               label: {
                 show: true,
@@ -414,6 +454,13 @@ const onSearch = () => {
   })
 }
 onOptionInit(onSearch)
+watch(groupListWithAll, () => {
+  if (mainStore.myUserInfo && mainStore.myUserInfo.role === 'DEPUTY') {
+    setTimeout(() => {
+      changeModelValue('group')([mainStore.myUserInfo?.markingGroupNumber])
+    }, 0)
+  }
+})
 </script>
 <style scoped lang="scss">
 .personnel-compare-view {

+ 13 - 3
src/modules/analysis/personnel-statistics/index.vue

@@ -56,7 +56,7 @@
 
 <script setup lang="ts" name="AnalysisPersonnelStatistics">
 /** 人员数据统计 */
-import { computed, onMounted, ref, watch, watchEffect } from 'vue'
+import { computed, onMounted, ref, watch, watchEffect, onBeforeUnmount, onDeactivated } from 'vue'
 import { omit } from 'lodash-es'
 import { ElButton, ElIcon, ElCheckboxGroup, ElCheckbox } from 'element-plus'
 import BaseForm from '@/components/element/BaseForm.vue'
@@ -72,8 +72,10 @@ import ConfirmButton from '@/components/common/ConfirmButton.vue'
 import { cloneDeep } from 'lodash-es'
 import { useIntervalFn } from '@vueuse/core'
 import { getTodayByDay } from '@/utils/common'
+import { useRoute } from 'vue-router'
 import type { ExtractApiResponse } from '@/api/api'
-
+const route = useRoute()
+console.log('route', route)
 const { model, fetchModel, items, onOptionInit, groupListWithAll, changeModelValue } = useStatisticsFilter()
 const showColumnsSetting = ref(false)
 function cancel() {
@@ -245,11 +247,19 @@ watchEffect(() => {
     model.curDay == getTodayByDay() &&
     !isActive.value
   ) {
-    resume()
+    if (route.path === '/analysis/personnel-statistics') {
+      resume()
+    }
   } else {
     pause()
   }
 })
+onBeforeUnmount(() => {
+  pause()
+})
+onDeactivated(() => {
+  pause()
+})
 </script>
 
 <style scoped lang="scss">