刘洋 2 vuotta sitten
vanhempi
commit
6c89198543

+ 1 - 0
src/constants/app.ts

@@ -5,4 +5,5 @@ export const ROLE_BUTTON_CODES = [
   'analysis-personnel_statistics_export',
   'analysis-personnel_statistics_export',
   'analysis-marking_progress_export',
   'analysis-marking_progress_export',
   'analysis-marking_progress_province_export',
   'analysis-marking_progress_province_export',
+  'user-manage_name_import',
 ]
 ]

+ 8 - 1
src/modules/admin-user/manage/index.vue

@@ -67,7 +67,14 @@
             :on-exceed="onExceed"
             :on-exceed="onExceed"
             :auto-upload="false"
             :auto-upload="false"
           >
           >
-            <el-button size="small" custom-1 class="m-l-base" :loading="importUsersLoading">导入姓名</el-button>
+            <el-button
+              v-permBtn="'user-manage_name_import'"
+              size="small"
+              custom-1
+              class="m-l-base"
+              :loading="importUsersLoading"
+              >导入姓名</el-button
+            >
           </el-upload>
           </el-upload>
           <!-- <el-link class="m-l-base" type="primary" @click="downTpl">导入姓名模板下载</el-link> -->
           <!-- <el-link class="m-l-base" type="primary" @click="downTpl">导入姓名模板下载</el-link> -->
         </div>
         </div>

+ 7 - 6
src/modules/analysis/group-monitoring/hooks/useFormFilter.ts

@@ -20,18 +20,19 @@ const useFormFilter = () => {
   const { formRef, elFormRef, defineColumn, _ } = useForm()
   const { formRef, elFormRef, defineColumn, _ } = useForm()
 
 
   const model = reactive<
   const model = reactive<
-    Omit<ExtractApiParams<'getGroupMonitor'>, 'markingGroupNumbers'> & { markingGroupNumbers?: number | string }
+    Omit<ExtractApiParams<'getGroupMonitor'>, 'markingGroupNumber'> & { markingGroupNumber?: number | string }
   >({
   >({
     subjectCode: dataModel.subject || '',
     subjectCode: dataModel.subject || '',
-    markingGroupNumbers: dataModel.group,
+    markingGroupNumber: dataModel.group,
     questionMainNumber: dataModel.question,
     questionMainNumber: dataModel.question,
   })
   })
 
 
   const formModel = computed<any>(() => {
   const formModel = computed<any>(() => {
     return {
     return {
       subjectCode: model.subjectCode,
       subjectCode: model.subjectCode,
-      markingGroupNumbers:
-        typeof model.markingGroupNumbers === 'number' ? [model.markingGroupNumbers] : model.markingGroupNumbers,
+      // markingGroupNumber:
+      //   typeof model.markingGroupNumber === 'number' ? [model.markingGroupNumber] : model.markingGroupNumber,
+      markingGroupNumber: model.markingGroupNumber,
       questionMainNumber: model.questionMainNumber,
       questionMainNumber: model.questionMainNumber,
     }
     }
   })
   })
@@ -39,7 +40,7 @@ const useFormFilter = () => {
   watch(dataModel, () => {
   watch(dataModel, () => {
     model.subjectCode = dataModel.subject || ''
     model.subjectCode = dataModel.subject || ''
     model.questionMainNumber = dataModel.question
     model.questionMainNumber = dataModel.question
-    model.markingGroupNumbers = dataModel.group
+    model.markingGroupNumber = dataModel.group
   })
   })
 
 
   const OneRowSpan5 = defineColumn(_, 'row-1', { span: 5 })
   const OneRowSpan5 = defineColumn(_, 'row-1', { span: 5 })
@@ -66,7 +67,7 @@ const useFormFilter = () => {
       },
       },
     }),
     }),
     OneRowSpan5({
     OneRowSpan5({
-      prop: 'markingGroupNumbers',
+      prop: 'markingGroupNumber',
       label: '小组',
       label: '小组',
       slotType: 'select',
       slotType: 'select',
       slot: {
       slot: {

+ 9 - 7
src/modules/analysis/monitoring/index.vue

@@ -91,21 +91,22 @@ const {
 } = useOptions(['subject', 'question', 'group'])
 } = useOptions(['subject', 'question', 'group'])
 
 
 const model = reactive<
 const model = reactive<
-  Omit<ExtractApiParams<'getStatistics'>, 'markingGroupNumbers'> & {
+  Omit<ExtractApiParams<'getStatistics'>, 'markingGroupNumber'> & {
     refresh: number
     refresh: number
-    markingGroupNumbers?: number | string
+    markingGroupNumber?: number | string
   }
   }
 >({
 >({
   subjectCode: dataModel.subject || '',
   subjectCode: dataModel.subject || '',
   questionMainNumber: dataModel.question,
   questionMainNumber: dataModel.question,
-  markingGroupNumbers: dataModel.group,
+  markingGroupNumber: dataModel.group,
   refresh: localStorage.get('MONITORING_REFRESH_RATE') || 0,
   refresh: localStorage.get('MONITORING_REFRESH_RATE') || 0,
 })
 })
 
 
 const modelToFetchModel = () => {
 const modelToFetchModel = () => {
   return Object.assign({}, model, {
   return Object.assign({}, model, {
-    markingGroupNumbers:
-      typeof model.markingGroupNumbers === 'number' ? [model.markingGroupNumbers] : model.markingGroupNumbers,
+    // markingGroupNumbers:
+    //   typeof model.markingGroupNumbers === 'number' ? [model.markingGroupNumbers] : model.markingGroupNumbers,
+    markingGroupNumber: model.markingGroupNumber,
   })
   })
 }
 }
 
 
@@ -118,9 +119,10 @@ watch(fetchModel, () => {
 watch(
 watch(
   dataModel,
   dataModel,
   () => {
   () => {
+    console.log('ddd', dataModel)
     model.subjectCode = dataModel.subject
     model.subjectCode = dataModel.subject
     model.questionMainNumber = dataModel.question
     model.questionMainNumber = dataModel.question
-    model.markingGroupNumbers = dataModel.group
+    model.markingGroupNumber = dataModel.group
   },
   },
   { immediate: true }
   { immediate: true }
 )
 )
@@ -148,7 +150,7 @@ const formItems = computed<EpFormItem[]>(() => [
   {
   {
     label: '小组',
     label: '小组',
     slotType: 'select',
     slotType: 'select',
-    prop: 'markingGroupNumbers',
+    prop: 'markingGroupNumber',
     slot: {
     slot: {
       options: groupListWithAll.value,
       options: groupListWithAll.value,
       onChange: changeModelValue('group'),
       onChange: changeModelValue('group'),

+ 6 - 5
src/modules/analysis/personnel-compare/hooks/useCompareFilter.ts

@@ -18,22 +18,23 @@ const useCompareFilter = () => {
   const model = reactive({
   const model = reactive({
     subjectCode: dataModel.subject || '',
     subjectCode: dataModel.subject || '',
     questionMainNumber: dataModel.question,
     questionMainNumber: dataModel.question,
-    markingGroupNumbers: dataModel.group,
+    markingGroupNumber: dataModel.group,
     time: [curDayRange[0], curDayRange[1]],
     time: [curDayRange[0], curDayRange[1]],
   })
   })
   const fetchModel = computed(() => {
   const fetchModel = computed(() => {
     return Object.assign(omit(model, 'time'), {
     return Object.assign(omit(model, 'time'), {
       startTime: model.time?.[0],
       startTime: model.time?.[0],
       endTime: model.time?.[1],
       endTime: model.time?.[1],
-      markingGroupNumbers:
-        typeof model.markingGroupNumbers === 'number' ? [model.markingGroupNumbers] : model.markingGroupNumbers,
+      // markingGroupNumber:
+      //   typeof model.markingGroupNumber === 'number' ? [model.markingGroupNumber] : model.markingGroupNumber,
+      markingGroupNumber: model.markingGroupNumber,
     })
     })
   })
   })
   const { formRef, elFormRef, defineColumn, _ } = useForm()
   const { formRef, elFormRef, defineColumn, _ } = useForm()
   watch(dataModel, () => {
   watch(dataModel, () => {
     model.subjectCode = dataModel.subject || ''
     model.subjectCode = dataModel.subject || ''
     model.questionMainNumber = dataModel.question
     model.questionMainNumber = dataModel.question
-    model.markingGroupNumbers = dataModel.group
+    model.markingGroupNumber = dataModel.group
   })
   })
 
 
   const rows = reactive({
   const rows = reactive({
@@ -69,7 +70,7 @@ const useCompareFilter = () => {
       },
       },
     }),
     }),
     OneRowSpan4({
     OneRowSpan4({
-      prop: 'markingGroupNumbers',
+      prop: 'markingGroupNumber',
       label: '小组',
       label: '小组',
       slotType: 'select',
       slotType: 'select',
       labelWidth: '52px',
       labelWidth: '52px',

+ 10 - 9
src/modules/analysis/personnel-statistics/hooks/useStatisticsFilter.ts

@@ -11,12 +11,12 @@ import type { ExtractApiParams } from '@/api/api'
 
 
 type FormMode = Omit<
 type FormMode = Omit<
   ExtractApiParams<'getStatisticsByGroup'>,
   ExtractApiParams<'getStatisticsByGroup'>,
-  'endTime' | 'startTime' | 'hasGroupLeaderScore' | 'markingGroupNumbers'
+  'endTime' | 'startTime' | 'hasGroupLeaderScore' | 'markingGroupNumber'
 > & {
 > & {
   time: string[]
   time: string[]
   hasGroupLeaderScore: string[]
   hasGroupLeaderScore: string[]
   expand: string[]
   expand: string[]
-  markingGroupNumbers?: number | string
+  markingGroupNumber?: number | string
 }
 }
 
 
 const useStatisticsFilter = () => {
 const useStatisticsFilter = () => {
@@ -34,7 +34,7 @@ const useStatisticsFilter = () => {
   const model = reactive<any>({
   const model = reactive<any>({
     subjectCode: dataModel.subject || '',
     subjectCode: dataModel.subject || '',
     questionMainNumber: dataModel.question,
     questionMainNumber: dataModel.question,
-    markingGroupNumbers: dataModel.group,
+    markingGroupNumber: dataModel.group,
     time: [curDayRange[0], curDayRange[1]],
     time: [curDayRange[0], curDayRange[1]],
     // hasGroupLeaderScore: ['true'],
     // hasGroupLeaderScore: ['true'],
     hasGroupLeaderScore: [],
     hasGroupLeaderScore: [],
@@ -44,13 +44,13 @@ const useStatisticsFilter = () => {
   })
   })
   const { fetch: getMarkerList, result: markerList } = useFetch('getMarkerList')
   const { fetch: getMarkerList, result: markerList } = useFetch('getMarkerList')
   watch(
   watch(
-    () => [model.subjectCode, model.questionMainNumber, model.markingGroupNumbers],
+    () => [model.subjectCode, model.questionMainNumber, model.markingGroupNumber],
     () => {
     () => {
       if (model.subjectCode && model.questionMainNumber) {
       if (model.subjectCode && model.questionMainNumber) {
         getMarkerList({
         getMarkerList({
           subjectCode: model.subjectCode,
           subjectCode: model.subjectCode,
           mainNumber: model.questionMainNumber,
           mainNumber: model.questionMainNumber,
-          markingGroupNumber: model.markingGroupNumbers,
+          markingGroupNumber: model.markingGroupNumber,
         })
         })
         model.markerId = ''
         model.markerId = ''
       }
       }
@@ -66,8 +66,9 @@ const useStatisticsFilter = () => {
       endTime: model.time?.[1],
       endTime: model.time?.[1],
       hasGroupLeaderScore: model.hasGroupLeaderScore.length > 0,
       hasGroupLeaderScore: model.hasGroupLeaderScore.length > 0,
       expand: model.expand.length > 0,
       expand: model.expand.length > 0,
-      markingGroupNumbers:
-        typeof model.markingGroupNumbers === 'number' ? [model.markingGroupNumbers] : model.markingGroupNumbers,
+      // markingGroupNumber:
+      //   typeof model.markingGroupNumber === 'number' ? [model.markingGroupNumber] : model.markingGroupNumber,
+      markingGroupNumber: model.markingGroupNumber,
     })
     })
   })
   })
 
 
@@ -76,7 +77,7 @@ const useStatisticsFilter = () => {
   watch(dataModel, () => {
   watch(dataModel, () => {
     model.subjectCode = dataModel.subject || ''
     model.subjectCode = dataModel.subject || ''
     model.questionMainNumber = dataModel.question
     model.questionMainNumber = dataModel.question
-    model.markingGroupNumbers = dataModel.group
+    model.markingGroupNumber = dataModel.group
   })
   })
 
 
   const rows: EpFormRows = reactive({
   const rows: EpFormRows = reactive({
@@ -118,7 +119,7 @@ const useStatisticsFilter = () => {
     }),
     }),
     OneRowSpan4({
     OneRowSpan4({
       labelWidth: '52px',
       labelWidth: '52px',
-      prop: 'markingGroupNumbers',
+      prop: 'markingGroupNumber',
       label: '小组',
       label: '小组',
       slotType: 'select',
       slotType: 'select',
       slot: {
       slot: {

+ 8 - 7
src/modules/analysis/statistics/index.vue

@@ -66,14 +66,14 @@ const {
 } = useOptions(['subject', 'question', 'group'])
 } = useOptions(['subject', 'question', 'group'])
 
 
 const model = reactive<
 const model = reactive<
-  Omit<ExtractApiParams<'getStatistics'>, 'markingGroupNumbers'> & {
+  Omit<ExtractApiParams<'getStatistics'>, 'markingGroupNumber'> & {
     time: string[] | null
     time: string[] | null
-    markingGroupNumbers?: number | string
+    markingGroupNumber?: number | string
   }
   }
 >({
 >({
   subjectCode: dataModel.subject || '',
   subjectCode: dataModel.subject || '',
   questionMainNumber: dataModel.question,
   questionMainNumber: dataModel.question,
-  markingGroupNumbers: dataModel.group,
+  markingGroupNumber: dataModel.group,
   time: null,
   time: null,
 })
 })
 
 
@@ -81,8 +81,9 @@ const fetchModel = computed<any>(() => {
   return Object.assign(omit(model, 'time'), {
   return Object.assign(omit(model, 'time'), {
     startTime: model.time?.[0],
     startTime: model.time?.[0],
     endTime: model.time?.[1],
     endTime: model.time?.[1],
-    markingGroupNumbers:
-      typeof model.markingGroupNumbers === 'number' ? [model.markingGroupNumbers] : model.markingGroupNumbers,
+    // markingGroupNumbers:
+    //   typeof model.markingGroupNumbers === 'number' ? [model.markingGroupNumbers] : model.markingGroupNumbers,
+    markingGroupNumber: model.markingGroupNumber,
   })
   })
 })
 })
 
 
@@ -91,7 +92,7 @@ const { defineColumn, _ } = useForm()
 watch(dataModel, () => {
 watch(dataModel, () => {
   model.subjectCode = dataModel.subject
   model.subjectCode = dataModel.subject
   model.questionMainNumber = dataModel.question
   model.questionMainNumber = dataModel.question
-  model.markingGroupNumbers = dataModel.group
+  model.markingGroupNumber = dataModel.group
 })
 })
 
 
 const OneRowSpan4 = defineColumn(_, 'row-1', { span: 4 })
 const OneRowSpan4 = defineColumn(_, 'row-1', { span: 4 })
@@ -122,7 +123,7 @@ const formItems = computed<EpFormItem[]>(() => [
   OneRowSpan4({
   OneRowSpan4({
     label: '小组',
     label: '小组',
     slotType: 'select',
     slotType: 'select',
-    prop: 'markingGroupNumbers',
+    prop: 'markingGroupNumber',
     slot: {
     slot: {
       options: groupListWithAll.value,
       options: groupListWithAll.value,
       onChange: changeModelValue('group'),
       onChange: changeModelValue('group'),

+ 68 - 3
src/modules/quality/ending-check/components/SubjectProgress.vue

@@ -1,5 +1,12 @@
 <template>
 <template>
   <div class="p-base">
   <div class="p-base">
+    <div class="fill-blank radius-base p-t-base">
+      <base-form :items="items" :model="model" :label-width="'80px'" size="small">
+        <template #form-item-button>
+          <el-button type="primary" @click="onSearch">查询</el-button>
+        </template>
+      </base-form>
+    </div>
     <div class="fill-blank radius-base p-base chart-info">
     <div class="fill-blank radius-base p-base chart-info">
       <vue-e-charts v-loading="loading" class="full" :option="totalChartsOption" autoresize></vue-e-charts>
       <vue-e-charts v-loading="loading" class="full" :option="totalChartsOption" autoresize></vue-e-charts>
     </div>
     </div>
@@ -19,25 +26,83 @@
 
 
 <script setup lang="ts" name="SubjectProgress">
 <script setup lang="ts" name="SubjectProgress">
 /** 科目进度 */
 /** 科目进度 */
-import { reactive, ref, computed } from 'vue'
+import { reactive, ref, computed, watch } from 'vue'
 import { minus } from '@/utils/common'
 import { minus } from '@/utils/common'
 import useFetch from '@/hooks/useFetch'
 import useFetch from '@/hooks/useFetch'
 import useMainStore from '@/store/main'
 import useMainStore from '@/store/main'
 import VueECharts from 'vue-echarts'
 import VueECharts from 'vue-echarts'
 import BaseTable from '@/components/element/BaseTable.vue'
 import BaseTable from '@/components/element/BaseTable.vue'
+import BaseForm from '@/components/element/BaseForm.vue'
+import useForm from '@/hooks/useForm'
+import useOptions from '@/hooks/useOptions'
+import { ElButton } from 'element-plus'
 
 
 import type { EChartsOption } from 'echarts'
 import type { EChartsOption } from 'echarts'
 import type { ExtractApiResponse } from '@/api/api'
 import type { ExtractApiResponse } from '@/api/api'
 import type { EpTableColumn, InstanceTable } from 'global-type'
 import type { EpTableColumn, InstanceTable } from 'global-type'
 
 
 type SubjectProgress = ExtractArrayValue<ExtractApiResponse<'subjectProgressEnd'>>
 type SubjectProgress = ExtractArrayValue<ExtractApiResponse<'subjectProgressEnd'>>
+const {
+  subjectList,
+  mainQuestionList,
+  groupListWithAll,
+  onOptionInit,
+  dataModel,
+  changeModelValue,
+  isExpert,
+  isLeader,
+} = useOptions(['subject', 'question', 'group'])
+const model = reactive<any>({
+  // markingGroupNumber: dataModel.group,
+  // questionMainNumber: dataModel.question,
+  subjectCode: dataModel.subject || '',
+})
+watch(dataModel, () => {
+  model.subjectCode = dataModel.subject || ''
+  // model.questionMainNumber = dataModel.question
+  // model.markingGroupNumber = dataModel.group
+})
+
+const { defineColumn, _ } = useForm()
+
+const OneRow = defineColumn(_, 'row-1', { span: 6 })
+const btnRow = defineColumn(_, 'row-1', { span: 2 })
+
+const items = computed<any>(() => [
+  OneRow({
+    label: '科目',
+    prop: 'subjectCode',
+    slotType: 'select',
+    labelWidth: '46px',
+    slot: { options: subjectList.value, onChange: changeModelValue('subject'), disabled: !isExpert.value },
+  }),
+  // OneRow({
+  //   label: '大题',
+  //   prop: 'questionMainNumber',
+  //   slotType: 'select',
+  //   labelWidth: '60px',
+  //   slot: {
+  //     options: mainQuestionList.value,
+  //     onChange: changeModelValue('question'),
+  //     disabled: !isExpert.value && !isLeader.value,
+  //   },
+  // }),
+
+  btnRow({
+    slotName: 'button',
+    labelWidth: '20px',
+  }),
+])
 
 
 const mainStore = useMainStore()
 const mainStore = useMainStore()
 
 
 const { fetch: subjectProgressEnd, result: subjectProgressEndList, loading } = useFetch('subjectProgressEnd')
 const { fetch: subjectProgressEnd, result: subjectProgressEndList, loading } = useFetch('subjectProgressEnd')
 
 
-subjectProgressEnd({ subjectCode: mainStore.myUserInfo?.subjectCode || '' })
-
+// subjectProgressEnd({ subjectCode: mainStore.myUserInfo?.subjectCode || '' })
+const onSearch = () => {
+  subjectProgressEnd({ subjectCode: model.subjectCode })
+}
+onOptionInit(onSearch)
 const getMainName = (row?: SubjectProgress) => {
 const getMainName = (row?: SubjectProgress) => {
   const { questionMainName: name, questionMainNumber: number } = row || {}
   const { questionMainName: name, questionMainNumber: number } = row || {}
   return [number, name].filter(Boolean).join('-')
   return [number, name].filter(Boolean).join('-')

+ 4 - 4
src/modules/quality/subjective-check/index.vue

@@ -311,11 +311,11 @@ const columns: EpTableColumn<RowType>[] = [
   { label: '大题名称', prop: 'mainName', minWidth: 100 },
   { label: '大题名称', prop: 'mainName', minWidth: 100 },
   {
   {
     label: '成绩',
     label: '成绩',
-    prop: 'headerScore',
+    prop: 'markScore',
     minWidth: 60,
     minWidth: 60,
-    formatter(row: any) {
-      return row.headerScore || row.markScore
-    },
+    // formatter(row: any) {
+    //   return row.headerScore || row.markScore
+    // },
   },
   },
   { label: '处理结果', prop: 'status', minWidth: 100 },
   { label: '处理结果', prop: 'status', minWidth: 100 },
   { label: '处理人', prop: 'headerName', minWidth: 100 },
   { label: '处理人', prop: 'headerName', minWidth: 100 },