Browse Source

统计相关的时间区间选择器改为天下拉列表选择以及相关接口对接

刘洋 2 years ago
parent
commit
942c58edc8

+ 2 - 0
src/api/api-types/statistics.d.ts

@@ -496,6 +496,7 @@ export namespace Statistics {
   >
 
   type GetSystemCheckLevel = BaseDefine<null, any>
+  type GetDayList = BaseDefine<any, any>
 
   /** 系统抽查卷打分 */
   type MarkSystemSpotPaper = BaseDefine<{ id?: number; scores: number[] }>
@@ -636,5 +637,6 @@ export namespace Statistics {
     getStatisticSubjectiveByMarker: GetStatisticSubjectiveByMarker
     getProvinceProcess: GetProvinceProcess
     getCompareList: GetCompareList
+    getDayList: GetDayList
   }
 }

+ 1 - 0
src/api/statistics.ts

@@ -165,6 +165,7 @@ const StatisticsApi: DefineApiModule<Statistics.ApiMap> = {
       'Content-Type': 'application/json',
     },
   },
+  getDayList: '/api/statistic/mark/day/list',
 }
 
 export default StatisticsApi

+ 25 - 0
src/hooks/useDayList.ts

@@ -0,0 +1,25 @@
+import { ref, computed, watch } from 'vue'
+import useFetch from './useFetch'
+import { getTodayByDay } from '@/utils/common'
+
+const useDayOptions = (dataModel: any) => {
+  const dayList = ref([])
+  const today = getTodayByDay()
+  watch([() => dataModel.subject, () => dataModel.question], (a: any, b: any) => {
+    if (a && b) {
+      useFetch('getDayList')
+        .fetch({ subjectCode: dataModel.subject, questionMainNumber: dataModel.question })
+        .then((res: any) => {
+          dayList.value = res
+            .filter((item: any) => item.key != today)
+            .map((item: any) => ({ label: item.value, value: item.key }))
+        })
+    }
+  })
+
+  const dayOptions = computed(() => [{ label: '当天', value: today }, { label: '全部', value: '' }, ...dayList.value])
+  return {
+    dayOptions,
+  }
+}
+export default useDayOptions

+ 3 - 4
src/modules/analysis/monitoring/index.vue

@@ -119,7 +119,6 @@ watch(fetchModel, () => {
 watch(
   dataModel,
   () => {
-    console.log('ddd', dataModel)
     model.subjectCode = dataModel.subject
     model.questionMainNumber = dataModel.question
     model.markingGroupNumber = dataModel.group
@@ -339,9 +338,9 @@ const onRefresh = () => {
   if (fetchModel.subjectCode && fetchModel.questionMainNumber) {
     fetch({
       ...omit(fetchModel, 'refresh'),
-      startTime: `${year}${month}${day}000000`,
-      endTime: `${year}${month}${day}235959`,
-      // curDay: `${year}${month}${day}`,
+      // startTime: `${year}${month}${day}000000`,
+      // endTime: `${year}${month}${day}235959`,
+      curDay: `${year}${month}${day}`,
     })
   }
 }

+ 29 - 12
src/modules/analysis/personnel-compare/hooks/useCompareFilter.ts

@@ -1,8 +1,9 @@
 import useOptions from '@/hooks/useOptions'
 import { omit } from 'lodash-es'
 import useForm from '@/hooks/useForm'
-import { getCurDayRange } from '@/utils/common'
+import { getCurDayRange, getTodayByDay } from '@/utils/common'
 import { reactive, computed, watch } from 'vue'
+import useDayList from '@/hooks/useDayList'
 const useCompareFilter = () => {
   const {
     subjectList,
@@ -19,12 +20,19 @@ const useCompareFilter = () => {
     subjectCode: dataModel.subject || '',
     questionMainNumber: dataModel.question,
     markingGroupNumber: dataModel.group,
-    time: [curDayRange[0], curDayRange[1]],
+    // time: [curDayRange[0], curDayRange[1]],
+    curDay: getTodayByDay(),
   })
+  const { dayOptions } = useDayList(dataModel)
+  watch(dayOptions, () => {
+    model.curDay = getTodayByDay()
+  })
+
   const fetchModel = computed(() => {
-    return Object.assign(omit(model, 'time'), {
-      startTime: model.time?.[0],
-      endTime: model.time?.[1],
+    return Object.assign(omit(model, 'curDay'), {
+      // startTime: model.time?.[0],
+      // endTime: model.time?.[1],
+      curDay: model.curDay,
       // markingGroupNumber:
       //   typeof model.markingGroupNumber === 'number' ? [model.markingGroupNumber] : model.markingGroupNumber,
       markingGroupNumber: model.markingGroupNumber,
@@ -80,16 +88,25 @@ const useCompareFilter = () => {
       },
     }),
 
-    OneRowSpan6({
+    // OneRowSpan6({
+    //   labelWidth: '52px',
+    //   label: '时间',
+    //   slotType: 'dateTime',
+    //   prop: 'time',
+    //   slot: {
+    //     type: 'datetimerange',
+    //     valueFormat: 'YYYYMMDDHHmmss',
+    //     startPlaceholder: '开始时间',
+    //     endPlaceholder: '结束时间',
+    //   },
+    // }),
+    OneRowSpan4({
       labelWidth: '52px',
       label: '时间',
-      slotType: 'dateTime',
-      prop: 'time',
+      slotType: 'select',
+      prop: 'curDay',
       slot: {
-        type: 'datetimerange',
-        valueFormat: 'YYYYMMDDHHmmss',
-        startPlaceholder: '开始时间',
-        endPlaceholder: '结束时间',
+        options: dayOptions.value,
       },
     }),
     OneRowSpan3({

+ 33 - 14
src/modules/analysis/personnel-statistics/hooks/useStatisticsFilter.ts

@@ -5,21 +5,23 @@ import useOptions from '@/hooks/useOptions'
 import useVW from '@/hooks/useVW'
 import { getCurDayRange } from '@/utils/common'
 import useFetch from '@/hooks/useFetch'
-
+import useDayList from '@/hooks/useDayList'
+import { getTodayByDay } from '@/utils/common'
 import type { EpFormItem, EpFormRows } from 'global-type'
 import type { ExtractApiParams } from '@/api/api'
 
 type FormMode = Omit<
   ExtractApiParams<'getStatisticsByGroup'>,
-  'endTime' | 'startTime' | 'hasGroupLeaderScore' | 'markingGroupNumber'
+  'curDay' | 'hasGroupLeaderScore' | 'markingGroupNumber'
 > & {
-  time: string[]
+  curDay: string
   hasGroupLeaderScore: string[]
   expand: string[]
   markingGroupNumber?: number | string
 }
 
 const useStatisticsFilter = () => {
+  // console.log('dayList:', dayList)
   const {
     subjectList,
     mainQuestionList,
@@ -30,18 +32,25 @@ const useStatisticsFilter = () => {
     isExpert,
     isLeader,
   } = useOptions(['subject', 'question', 'group'])
+
   const curDayRange = getCurDayRange()
   const model = reactive<any>({
     subjectCode: dataModel.subject || '',
     questionMainNumber: dataModel.question,
     markingGroupNumber: dataModel.group,
-    time: [curDayRange[0], curDayRange[1]],
+    // time: [curDayRange[0], curDayRange[1]],
+    curDay: getTodayByDay(),
     // hasGroupLeaderScore: ['true'],
     hasGroupLeaderScore: [],
     expand: [],
     markerId: '',
     online: '',
   })
+  const { dayOptions } = useDayList(dataModel)
+  watch(dayOptions, () => {
+    model.curDay = getTodayByDay()
+  })
+
   const { fetch: getMarkerList, result: markerList } = useFetch('getMarkerList')
   watch(
     () => [model.subjectCode, model.questionMainNumber, model.markingGroupNumber],
@@ -61,9 +70,10 @@ const useStatisticsFilter = () => {
   )
   // const fetchModel = computed<ExtractApiParams<'getStatisticsByGroup'> & { expand: boolean }>(() => {
   const fetchModel = computed<any>(() => {
-    return Object.assign(omit(model, 'time'), {
-      startTime: model.time?.[0],
-      endTime: model.time?.[1],
+    return Object.assign(omit(model, 'curDay'), {
+      // startTime: model.time?.[0],
+      // endTime: model.time?.[1],
+      curDay: model.curDay,
       hasGroupLeaderScore: model.hasGroupLeaderScore.length > 0,
       expand: model.expand.length > 0,
       // markingGroupNumber:
@@ -153,16 +163,25 @@ const useStatisticsFilter = () => {
       labelWidth: '0px',
       slotName: 'columns-setting',
     }),
-    TwoRowSpan8({
+    // TwoRowSpan8({
+    //   labelWidth: '52px',
+    //   label: '时间',
+    //   slotType: 'dateTime',
+    //   prop: 'time',
+    //   slot: {
+    //     type: 'datetimerange',
+    //     valueFormat: 'YYYYMMDDHHmmss',
+    //     startPlaceholder: '开始时间',
+    //     endPlaceholder: '结束时间',
+    //   },
+    // }),
+    TwoRowSpan4({
       labelWidth: '52px',
       label: '时间',
-      slotType: 'dateTime',
-      prop: 'time',
+      slotType: 'select',
+      prop: 'curDay',
       slot: {
-        type: 'datetimerange',
-        valueFormat: 'YYYYMMDDHHmmss',
-        startPlaceholder: '开始时间',
-        endPlaceholder: '结束时间',
+        options: dayOptions.value,
       },
     }),
     TwoRowSpan4({

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

@@ -15,9 +15,11 @@
         </template>
         <template #form-item-columns-setting>
           <div class="setting-box">
-            <el-icon color="#333" :size="24" class="setting-icon" @click="showColumnsSetting = true">
-              <setting />
-            </el-icon>
+            <el-tooltip effect="dark" content="表头配置" placement="bottom">
+              <el-icon color="#333" :size="24" class="setting-icon" @click="showColumnsSetting = true">
+                <setting />
+              </el-icon>
+            </el-tooltip>
           </div>
         </template>
       </base-form>

+ 32 - 13
src/modules/analysis/statistics/index.vue

@@ -48,6 +48,8 @@ import useFetch from '@/hooks/useFetch'
 import useForm from '@/hooks/useForm'
 import useOptions from '@/hooks/useOptions'
 import useVW from '@/hooks/useVW'
+import { getTodayByDay } from '@/utils/common'
+import useDayList from '@/hooks/useDayList'
 
 import type { EpTableColumn, EpFormItem } from 'global-type'
 import type { ExtractApiParams, ExtractApiResponse } from '@/api/api'
@@ -67,20 +69,25 @@ const {
 
 const model = reactive<
   Omit<ExtractApiParams<'getStatistics'>, 'markingGroupNumber'> & {
-    time: string[] | null
+    curDay: string
     markingGroupNumber?: number | string
   }
 >({
   subjectCode: dataModel.subject || '',
   questionMainNumber: dataModel.question,
   markingGroupNumber: dataModel.group,
-  time: null,
+  curDay: '',
+})
+const { dayOptions } = useDayList(dataModel)
+watch(dayOptions, () => {
+  model.curDay = ''
 })
 
 const fetchModel = computed<any>(() => {
-  return Object.assign(omit(model, 'time'), {
-    startTime: model.time?.[0],
-    endTime: model.time?.[1],
+  return Object.assign(omit(model, 'curDay'), {
+    // startTime: model.time?.[0],
+    // endTime: model.time?.[1],
+    curDay: model.curDay,
     // markingGroupNumbers:
     //   typeof model.markingGroupNumbers === 'number' ? [model.markingGroupNumbers] : model.markingGroupNumbers,
     markingGroupNumber: model.markingGroupNumber,
@@ -114,6 +121,7 @@ const formItems = computed<EpFormItem[]>(() => [
     label: '大题',
     slotType: 'select',
     prop: 'questionMainNumber',
+    labelWidth: '52px',
     slot: {
       options: mainQuestionList.value,
       onChange: changeModelValue('question'),
@@ -124,23 +132,34 @@ const formItems = computed<EpFormItem[]>(() => [
     label: '小组',
     slotType: 'select',
     prop: 'markingGroupNumber',
+    labelWidth: '52px',
     slot: {
       options: groupListWithAll.value,
       onChange: changeModelValue('group'),
     },
   }),
-  OneRowSpan6({
+  // OneRowSpan6({
+  //   label: '时间',
+  //   slotType: 'dateTime',
+  //   prop: 'time',
+  //   slot: {
+  //     clearable: true,
+  //     type: 'datetimerange',
+  //     valueFormat: 'YYYYMMDDHHmmss',
+  //     startPlaceholder: '开始时间',
+  //     endPlaceholder: '结束时间',
+  //   },
+  // }),
+  OneRowSpan4({
+    labelWidth: '52px',
     label: '时间',
-    slotType: 'dateTime',
-    prop: 'time',
+    slotType: 'select',
+    prop: 'curDay',
     slot: {
-      clearable: true,
-      type: 'datetimerange',
-      valueFormat: 'YYYYMMDDHHmmss',
-      startPlaceholder: '开始时间',
-      endPlaceholder: '结束时间',
+      options: dayOptions.value,
     },
   }),
+
   OneRowSpan4({
     labelWidth: '20px',
     slotName: 'operation',

+ 10 - 0
src/utils/common.ts

@@ -225,6 +225,16 @@ export const getCurDayRange = () => {
   return [`${year}${month}${day}000000`, `${tomorrowYear}${tomorrowMonth}${tomorrowDay}000000`]
 }
 
+export function getTodayByDay() {
+  const date = new Date()
+  const year = date.getFullYear()
+  let month: number | string = date.getMonth() + 1
+  let day: number | string = date.getDate()
+  month < 10 && (month = '0' + month)
+  day < 10 && (day = '0' + day)
+  return `${year}${month}${day}`
+}
+
 export const transHtmlContent = (content: string) => {
   return content
     .replaceAll(/<[^>]+>/gim, '')