Преглед на файлове

feat: 科目增加客观分满分 & 编辑用户时大组长不需要选择小组

chenhao преди 2 години
родител
ревизия
8601671d8f
променени са 3 файла, в които са добавени 40 реда и са изтрити 23 реда
  1. 2 0
      src/api/api-types/subject.d.ts
  2. 11 0
      src/modules/admin-subject/manage/index.vue
  3. 27 23
      src/modules/admin-user/bulk-add-user/index.vue

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

@@ -10,6 +10,8 @@ export namespace Subject {
     code: string
     /** 科目名称 */
     name: string
+    /** 科目客观分 */
+    objectiveScore: number
     /** 启用/禁用 */
     enable: boolean
   }

+ 11 - 0
src/modules/admin-subject/manage/index.vue

@@ -112,6 +112,7 @@ const initModel = {
   id: void 0,
   code: '',
   name: '',
+  objectiveScore: 0,
   enable: true,
 }
 
@@ -129,6 +130,10 @@ const rules = computed<EpFormRules>(() => {
       { required: true, message: '请填写科目名称' },
       { max: 50, message: '科目名称限制50字以内' },
     ],
+    objectiveScore: [
+      { required: true, message: '请填写科目客观分总分' },
+      { type: 'number', min: 0, max: 200, message: '客观分总分限制0-200分以内' },
+    ],
   }
 })
 
@@ -136,6 +141,12 @@ const items = computed<EpFormItem[]>(() => {
   return [
     { label: '科目代码', prop: 'code', slotType: 'input', slot: { placeholder: '科目代码', disabled: !!editInfo.id } },
     { label: '科目名称', prop: 'name', slotType: 'input', slot: { placeholder: '科目名称' } },
+    {
+      label: '客观分',
+      prop: 'objectiveScore',
+      slotType: 'inputNumber',
+      slot: { placeholder: '客观分', stepStrictly: true, step: 1 },
+    },
     { label: '状态', prop: 'enable', slotType: 'select', slot: { placeholder: '状态', options: StatusMap } },
   ]
 })

+ 27 - 23
src/modules/admin-user/bulk-add-user/index.vue

@@ -54,18 +54,20 @@ const model = reactive<ExtractApiParams<'bulkSaveUser'>>(initModel)
 
 const { formRef, elFormRef, defineColumn, _ } = useForm()
 
-const rules: EpFormRules = {
-  subjectCode: [{ required: true, message: '请选择科目' }],
-  mainNumber: [{ required: true, message: '请选择大题' }],
-  markingGroupNumber: [{ required: true, message: '请选择小组' }],
-  role: [{ required: true, message: '请选择用户角色' }],
-  loginNameLength: [{ required: true, message: '请填写账号代码位数' }],
-  password: [{ required: true, message: '请填写用户密码' }],
-  enable: [{ required: true, message: '请选择用户状态' }],
-  markingGroupAccounts: [{ required: true, message: '请填写分组账号数量' }],
-  prefix: [{ required: true, message: '请填写账号前缀' }],
-  start: [{ required: true, message: '请填写账号起始数' }],
-}
+const rules = computed<EpFormRules>(() => {
+  return {
+    subjectCode: [{ required: true, message: '请选择科目' }],
+    mainNumber: [{ required: true, message: '请选择大题' }],
+    markingGroupNumber: model.role !== 'CHIEF' ? [{ required: true, message: '请选择小组' }] : [],
+    role: [{ required: true, message: '请选择用户角色' }],
+    loginNameLength: [{ required: true, message: '请填写账号代码位数' }],
+    password: [{ required: true, message: '请填写用户密码' }],
+    enable: [{ required: true, message: '请选择用户状态' }],
+    markingGroupAccounts: [{ required: true, message: '请填写分组账号数量' }],
+    prefix: [{ required: true, message: '请填写账号前缀' }],
+    start: [{ required: true, message: '请填写账号起始数' }],
+  }
+})
 
 watch(dataModel, () => {
   model.subjectCode = dataModel.subject || ''
@@ -118,16 +120,18 @@ const items = computed<EpFormItem[]>(() => {
         options: mainQuestionList.value,
       },
     }),
-    span7({
-      label: '小组',
-      slotType: 'select',
-      prop: 'markingGroupNumber',
-      slot: {
-        placeholder: '用户所在小组',
-        options: groupList.value,
-        onChange: changeModelValue('group'),
-      },
-    }),
+    model.role !== 'CHIEF'
+      ? span7({
+          label: '小组',
+          slotType: 'select',
+          prop: 'markingGroupNumber',
+          slot: {
+            placeholder: '用户所在小组',
+            options: groupList.value,
+            onChange: changeModelValue('group'),
+          },
+        })
+      : null,
     span7({
       label: '用户角色',
       slotType: 'select',
@@ -193,7 +197,7 @@ const items = computed<EpFormItem[]>(() => {
         placeholder: '设置用户角色',
       },
     }),
-  ]
+  ].filter(Boolean) as EpFormItem[]
 })
 
 const { fetch, loading } = useFetch('bulkSaveUser')