Browse Source

feat:修改课程统计

DESKTOP-USV654P\pc 5 months ago
parent
commit
e108529421

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

@@ -35,6 +35,9 @@ export async function getClassTimeStatisticsLastDate(params:any,mode: ErrorMessa
 /** 课时统计列表(分页) GET /classtime/classTimeStatistics/page */
 export async function getClassTimeStatisticsPage(params:any,mode: ErrorMessageMode = 'modal'){ return defHttp.get<API.PageOutput<API.ClassTimeStatisticsPageVo>>
         ({url: '/classtime/classTimeStatistics/page', params:params},{errorMessageMode:mode});}
+/** 课时统计详情明细-导出 GET /classtime/classTimeStatistics/record-detail-export-query */
+export async function getClassTimeStatisticsRecordDetailExportQuery(params:any,mode: ErrorMessageMode = 'modal'){ return defHttp.download<string>
+        ({url: '/classtime/classTimeStatistics/record-detail-export-query',responseType:'blob',method:'POST', params:params},{errorMessageMode:mode});}
 /** 课时统计详情明细 GET /classtime/classTimeStatistics/record-detail-info */
 export async function getClassTimeStatisticsRecordDetailInfo(params:any,mode: ErrorMessageMode = 'modal'){ return defHttp.get<any>
         ({url: '/classtime/classTimeStatistics/record-detail-info', params:params},{errorMessageMode:mode});}

+ 5 - 2
src/views/bedRoomManager/studentsStayOvernight/index.vue

@@ -12,7 +12,7 @@
     getWfRoomStayOvernightPage,
   } from '/@/services/apis/WfRoomStayOvernightController';
   import { downloadFileByBlob } from '/@/utils/file/download';
-  const [registerTable, {}] = useTable({
+  const [registerTable, { getForm }] = useTable({
     api: getWfRoomStayOvernightPage,
     rowKey: 'id',
     useSearchForm: true,
@@ -33,10 +33,13 @@
   });
   const { createMessage } = useMessage();
   const handleExport = async () => {
+    const fromData = getForm().getFieldsValue();
+    fromData.startTime = fromData.stayTime?.length ? fromData.stayTime[0] : undefined;
+    fromData.endTime = fromData.stayTime?.length ? fromData.stayTime[1] : undefined;
     try {
       await downloadFileByBlob(
         (
-          await getWfRoomStayOvernightExport({})
+          await getWfRoomStayOvernightExport(fromData)
         ).data,
         `学生留宿名单${new Date().toLocaleDateString().replace(/\//g, '-')}.xlsx`,
       );

+ 17 - 4
src/views/course/statistics/components/detail.vue

@@ -14,7 +14,7 @@
     <div class="h-full">
       <BasicTable @register="registerTable">
         <template #toolbar>
-          <div class="flex-1 flex">
+          <div class="flex-1 flex items-center">
             <div class="flex flex-1 items-center justify-center text-lg font-bold">
               <a-button
                 type="primary"
@@ -40,6 +40,7 @@
             </div>
             <div class="flex items-center">
               <Space>
+                <a-button type="primary" @click="handleExport">导出</a-button>
                 <div class="flex items-center">
                   <div
                     style="width: 10px; height: 10px; border-radius: 50%; background-color: #facd91"
@@ -64,14 +65,17 @@
   </BasicModal>
 </template>
 <script setup lang="ts">
-  import { ref, computed, unref, h, reactive, nextTick } from 'vue';
+  import { ref, computed, unref, h, reactive } from 'vue';
   import { Space } from 'ant-design-vue';
   import { BasicModal, useModalInner } from '/@/components/Modal';
   import { useTable, BasicTable, BasicColumn } from '/@/components/Table';
-  import { getClassTimeStatisticsRecordDetailInfo } from '/@/services/apis/ClassTimeStatisticsController';
+  import {
+    getClassTimeStatisticsRecordDetailExportQuery,
+    getClassTimeStatisticsRecordDetailInfo,
+  } from '/@/services/apis/ClassTimeStatisticsController';
   import { useLoading } from '/@/components/Loading';
   import { formatToDate } from '/@/utils/dateUtil';
-  import { set } from 'nprogress';
+  import { downloadByData } from '/@/utils/file/download';
 
   const isUpdate = ref(true);
   const modelRef = ref<Recordable>({});
@@ -246,6 +250,15 @@
     }
     await loadData();
   };
+
+  const handleExport = async () => {
+    setModalProps({ loading: true, confirmLoading: true });
+    downloadByData(
+      (await getClassTimeStatisticsRecordDetailExportQuery({ id: unref(modelRef).id })).data,
+      `课时明细统计表${formatToDate(new Date())}.xlsx`,
+    );
+    setModalProps({ loading: false, confirmLoading: false });
+  };
 </script>
 
 <style scoped lang="less"></style>

+ 14 - 4
src/views/course/statistics/components/edit.vue

@@ -80,6 +80,9 @@
   const [registerWeightModal, { openModal: openWeightModal }] = useModal();
   const [registerCostModal, { openModal: openCostModal }] = useModal();
   const [registerDetailModal, { openModal: openDetailModal }] = useModal();
+  const state = reactive({
+    status: 0,
+  });
 
   const [registerTable, { reload, getDataSource }] = useTable({
     api: getClassTimeStatisticsRecordList,
@@ -97,11 +100,12 @@
   const [registerModal, { closeModal, setModalProps }] = useModalInner(async (data) => {
     setModalProps({
       confirmLoading: true,
-      okText: '锁定',
+      okText: data.baseData.status === 1 || data.baseData.status === 2 ? '锁定' : '解锁',
       cancelText: '关闭',
-      okButtonProps: { disabled: data.baseData.status === 3 },
+      okButtonProps: { disabled: data.baseData.status === 0 },
     });
     isUpdate.value = false;
+    state.status = data.baseData.status;
 
     const resData = await getClassTimeStatisticsInfo({ id: data.baseData.id });
     modelRef.value = { ...resData };
@@ -113,12 +117,16 @@
   const getTitle = computed(() => (!unref(isUpdate) ? '统计明细' : '统计明细'));
   const handleSubmit = async () => {
     try {
-      await postClassTimeStatisticsChangeStatus({ id: modelRef.value.id, status: 3 });
+      setModalProps({ loading: true, confirmLoading: true });
+      await postClassTimeStatisticsChangeStatus({
+        id: modelRef.value.id,
+        status: state.status === 3 ? 2 : 3,
+      });
       closeModal();
 
       emit('success');
     } finally {
-      setModalProps({ confirmLoading: false });
+      setModalProps({ loading: false, confirmLoading: false });
     }
   };
 
@@ -159,10 +167,12 @@
   };
 
   const handleExport = async () => {
+    setModalProps({ loading: true, confirmLoading: true });
     downloadByData(
       (await postClassTimeStatisticsRecordExportQuery({ id: unref(modelRef).id })).data,
       `课时统计表${formatToDate(new Date())}.xlsx`,
     );
+    setModalProps({ loading: false, confirmLoading: false });
   };
 </script>