Browse Source

feat: 教师人脸导入

DESKTOP-USV654P\pc 8 months ago
parent
commit
3c67ae96b6

+ 3 - 0
src/services/apis/LoginController.ts

@@ -38,6 +38,9 @@ export async function postSystemFindUserByCode(params:API.LoginByCodeDto
 /** 图形验证码 GET /system/imgcaptcha */
 export async function getSystemImgcaptcha(params:any,mode: ErrorMessageMode = 'modal'){ return defHttp.get<any>
         ({url: '/system/imgcaptcha', params:params},{errorMessageMode:mode});}
+/** 图形验证码 GET /system/imgcaptcha-answer */
+export async function getSystemImgcaptchaAnswer(params:any,mode: ErrorMessageMode = 'modal'){ return defHttp.get<any>
+        ({url: '/system/imgcaptcha-answer', params:params},{errorMessageMode:mode});}
 /** 登录 POST /system/login */
 export async function postSystemLogin(params:API.LoginDto
 ,mode: ErrorMessageMode = 'modal'){ return defHttp.post<any>

+ 3 - 0
src/services/apis/PbCseFeeobjupdateController.ts

@@ -34,6 +34,9 @@ export async function getPbCseFeeobjupdateEnrollmentStatisticsGraduation(params:
 /** 导出 GET /student/pbCseFeeobjupdate/export */
 export async function getPbCseFeeobjupdateExport(params:any,mode: ErrorMessageMode = 'modal'){ return defHttp.download<any>
         ({url: '/student/pbCseFeeobjupdate/export',responseType:'blob', params:params},{errorMessageMode:mode});}
+/** 年级招生类型树 GET /student/pbCseFeeobjupdate/grade-enrolltype-tree */
+export async function getPbCseFeeobjupdateGradeEnrolltypeTree(params:any,mode: ErrorMessageMode = 'modal'){ return defHttp.get<API.GradeEnrolltypeTreeVo[]>
+        ({url: '/student/pbCseFeeobjupdate/grade-enrolltype-tree', params:params},{errorMessageMode:mode});}
 /** 导入 POST /student/pbCseFeeobjupdate/import */
 export async function postPbCseFeeobjupdateImport(params:any,mode: ErrorMessageMode = 'modal'){ return defHttp.post<any>
         ({url: '/student/pbCseFeeobjupdate/import',headers:{'Content-Type':'multipart/form-data'}, data:params},{errorMessageMode:mode});}

+ 3 - 0
src/services/apis/TeacherFaceProcessController.ts

@@ -22,6 +22,9 @@ export async function putPersonnelTeacherFaceProcess(params:API.UpdateTeacherFac
 /** 删除人脸信息审核 DELETE /personnel/teacherFaceProcess */
 export async function deletePersonnelTeacherFaceProcess(params:string[],mode: ErrorMessageMode = 'modal'){ return defHttp.delete<any>
         ({url: '/personnel/teacherFaceProcess', data:params},{errorMessageMode:mode});}
+/** 批量新增教师人脸 POST /personnel/teacherFaceProcess/batch-import */
+export async function postTeacherFaceProcessBatchImport(params:any,mode: ErrorMessageMode = 'modal'){ return defHttp.post<any>
+        ({url: '/personnel/teacherFaceProcess/batch-import',headers:{'Content-Type':'multipart/form-data'}, data:params},{errorMessageMode:mode});}
 /** 根据id查询人脸信息审核信息 GET /personnel/teacherFaceProcess/info */
 export async function getTeacherFaceProcessInfo(params:any,mode: ErrorMessageMode = 'modal'){ return defHttp.get<API.TeacherFaceProcessVo>
         ({url: '/personnel/teacherFaceProcess/info', params:params},{errorMessageMode:mode});}

+ 3 - 3
src/services/apis/WfTextbookSubscriptionController.ts

@@ -29,9 +29,6 @@ export async function getWfTextbookSubscriptionBaseclassPage(params:any,mode: Er
 export async function putWfTextbookSubscriptionChangeStatus(params:API.UpdateWfTextbookSubscriptionDto
 ,mode: ErrorMessageMode = 'modal'){ return defHttp.put<any>
         ({url: '/textbook/wfTextbookSubscription/change-status', data:params},{errorMessageMode:mode});}
-/** 导出 GET /textbook/wfTextbookSubscription/export */
-export async function getWfTextbookSubscriptionExport(params:any,mode: ErrorMessageMode = 'modal'){ return defHttp.download<any>
-        ({url: '/textbook/wfTextbookSubscription/export',responseType:'blob', params:params},{errorMessageMode:mode});}
 /** 教材教辅征订历史列表(分页) GET /textbook/wfTextbookSubscription/history-list */
 export async function getWfTextbookSubscriptionHistoryList(params:any,mode: ErrorMessageMode = 'modal'){ return defHttp.get<API.TextbookSubscriptionHistoryListVo[]>
         ({url: '/textbook/wfTextbookSubscription/history-list', params:params},{errorMessageMode:mode});}
@@ -41,6 +38,9 @@ export async function getWfTextbookSubscriptionInfo(params:any,mode: ErrorMessag
 /** 教材教辅征订列表(分页) GET /textbook/wfTextbookSubscription/page */
 export async function getWfTextbookSubscriptionPage(params:any,mode: ErrorMessageMode = 'modal'){ return defHttp.get<API.PageOutput<API.WfTextbookSubscriptionPageVo>>
         ({url: '/textbook/wfTextbookSubscription/page', params:params},{errorMessageMode:mode});}
+/** 导出 GET /textbook/wfTextbookSubscription/subscription-export-query */
+export async function getWfTextbookSubscriptionSubscriptionExportQuery(params:any,mode: ErrorMessageMode = 'modal'){ return defHttp.download<string>
+        ({url: '/textbook/wfTextbookSubscription/subscription-export-query',responseType:'blob',method:'POST', params:params},{errorMessageMode:mode});}
 /** 教材征订条件导出 POST /textbook/wfTextbookSubscription/textbook-subscription-export-query */
 export async function postWfTextbookSubscriptionTextbookSubscriptionExportQuery(params:API.TextbookSubscriptionExportQueryListDto
 ,mode: ErrorMessageMode = 'modal'){ return defHttp.download<string>

+ 46 - 2
src/services/typing.d.ts

@@ -6617,7 +6617,7 @@ absenteeismCount?: number;
 /** 实到人数 */
 actualCount?: number;
 /** 出勤率 */
-attendanceRate?: number;
+attendanceRate?: string;
 /** 班级id */
 id?: string;
 /** 迟到人数 */
@@ -6929,7 +6929,10 @@ bookId?: string;
 bookName?: string;
 courseId?: string;
 courseName?: string;
+editorInChief?: string;
 id?: string;
+issn?: string;
+version?: string;
 }
 
 type CourseDetailVo = {
@@ -8249,6 +8252,17 @@ name?: string;
 parentId?: string;
 }
 
+type GradeEnrolltypeTreeVo = {
+/** children */
+children?: GradeEnrolltypeTreeVo[];
+/** id */
+id?: string;
+/** name */
+name?: string;
+/** parentId */
+parentId?: string;
+}
+
 type HeadTeaRoomCadreAppointPageVo = {
 /** 入住性别 */
 genderCn?: string;
@@ -10930,37 +10944,67 @@ shortname?: string;
 }
 
 type PbCseFeeobjupdatePageVo = {
+/** 地址 */
 address?: string;
+/** 出生年月 */
 birthday?: string;
+/** 所属班级代码 */
 classcode?: string;
+/** 所属班级名称 */
 classname?: string;
+/** 创建时间 */
 cratetime?: string;
+/** 所属院系编码 */
 deptcode?: string;
+/** 所属院系名称 */
 deptname?: string;
+/** 入校年度 */
 enteryear?: string;
+/** 姓名 */
 feeobjname?: string;
+/** 毕业学校 */
 graduations?: string;
+/** 家长联系电话 */
 jzlxdh?: string;
+/** 离校年度 */
 leaveyear?: string;
+/** 民族 */
 nationality?: string;
+/** 身份证号 */
 personalid?: string;
+/** 学生主键 */
 pkfeeobj?: string;
+/** 住宿类型 */
 quartername?: string;
+/** 学制 */
 ratetypename?: string;
+/** 招生老师 */
 recruiters?: string;
+/** 备注 */
 remarks?: string;
+/** 资助类型 */
 resourcename?: string;
 rn?: string;
+/** 性别 */
 sex?: string;
+/** 身高 */
 sg?: string;
+/** 所属专业代码 */
 speccode?: string;
+/** 所属专业名称 */
 specname?: string;
+/** 在校状态 */
 state?: string;
+/** 学号 */
 studentcode?: string;
+/** 学生联系电话 */
 telephone?: string;
+/** 体重 */
 tz?: string;
+/** 更新时间 */
 updatetime?: string;
 userdef3?: string;
+/** 志愿调剂专业 */
 zytjspec?: string;
 }
 
@@ -13632,7 +13676,7 @@ actualCount?: string;
 /** 总人数 */
 allCount?: string;
 /** 出勤率 */
-attendanceRate?: number;
+attendanceRate?: string;
 /** 迟到人数 */
 lateCount?: string;
 /** 请假人数 */

+ 1 - 3
src/views/attendance/face/student/index.vue

@@ -4,9 +4,7 @@
     <BasicTable @register="registerTable" class="w-2/3 xl:w-3/4" :searchInfo="searchInfo">
       <template #toolbar>
         <Upload :showUploadList="false" :before-upload="beforeUpload" accept=".rar,.zip">
-          <a-button block type="primary">
-            导入
-          </a-button>
+          <a-button block type="primary"> 导入 </a-button>
         </Upload>
       </template>
       <template #facePhotoUrl="{ text }">

+ 30 - 1
src/views/attendance/face/teacher/index.vue

@@ -2,6 +2,11 @@
   <PageWrapper dense contentFullHeight fixedHeight contentClass="flex">
     <DeptTree class="w-1/3 xl:w-1/4" @select="handleSelect" />
     <BasicTable @register="registerTable" class="w-2/3 xl:w-3/4" :searchInfo="searchInfo">
+      <template #toolbar>
+        <Upload :showUploadList="false" :before-upload="beforeUpload" accept=".rar,.zip">
+          <a-button block type="primary"> 导入 </a-button>
+        </Upload>
+      </template>
       <template #facePhotoUrl="{ text }">
         <TableImg :size="40" :simpleShow="true" :showBadge="false" :imgList="[text]" />
       </template>
@@ -14,7 +19,18 @@
   import { PageWrapper } from '/@/components/Page';
   import { BasicTable, useTable, TableImg } from '/@/components/Table';
   import DeptTree from '/@/views/system/user/components/DeptTree.vue';
-  import { getTeacherFaceProcessPage } from '/@/services/apis/TeacherFaceProcessController';
+  import {
+    getTeacherFaceProcessPage,
+    postTeacherFaceProcessBatchImport,
+  } from '/@/services/apis/TeacherFaceProcessController';
+  import { useLoading } from '/@/components/Loading';
+  import { useMessage } from '/@/hooks/web/useMessage';
+  import { Upload } from 'ant-design-vue';
+
+  const { createMessage } = useMessage();
+  const [openFullLoading, closeFullLoading] = useLoading({
+    tip: '处理中...',
+  });
 
   const [registerTable, { reload }] = useTable({
     api: getTeacherFaceProcessPage,
@@ -87,6 +103,19 @@
     searchInfo.depId = id;
     reload();
   }
+
+  const beforeUpload = async (e) => {
+    try {
+      openFullLoading();
+      await postTeacherFaceProcessBatchImport({ file: e });
+      closeFullLoading();
+      createMessage.success('导入成功');
+      reload();
+    } catch {
+      closeFullLoading();
+    }
+    return false;
+  };
 </script>
 
 <style scoped lang="less"></style>

+ 1 - 1
src/views/attendance/statistics/components/Gauge.vue

@@ -68,7 +68,7 @@
             },
             data: [
               {
-                value: val * 100,
+                value: parseFloat((val * 100).toFixed(2)),
                 name: '出勤率',
                 title: {
                   offsetCenter: ['0%', '-10%'],

+ 1 - 0
src/views/attendance/studentRecord/data.config.ts

@@ -128,6 +128,7 @@ export const tableStudentColumns: BasicColumn[] = [
     align: 'left',
     width: 140,
   },
+
   {
     title: '考勤时间',
     dataIndex: 'recordTime',