Browse Source

fix: change teachingManager textbookPushManager

DESKTOP-USV654P\pc 3 weeks ago
parent
commit
33ac11cac5

+ 1 - 1
Makefile

@@ -12,7 +12,7 @@ build:
 
 commit:
 	git add . && \
-	git commit --no-verify -m "fix: change user selected"
+	git commit --no-verify -m "fix: change teachingManager textbookPushManager"
 
 checkPre:
 	git checkout pre

+ 40 - 0
src/services/apis/TextbookDiscountAlterRecordController.ts

@@ -0,0 +1,40 @@
+// @ts-ignore
+/* eslint-disable */
+
+// 该文件自动生成,请勿手动修改!
+import { defHttp } from '/@/utils/http/axios';
+import { ErrorMessageMode } from '/#/axios';
+            // --------------------------------------------------------------------------
+            // Textbook Discount Alter Record Controller
+            // --------------------------------------------------------------------------
+
+            ;
+
+
+            /** 新增教材折扣变更记录 POST /textbook/textbookDiscountAlterRecord */
+export async function postTextbookTextbookDiscountAlterRecord(params:API.AddTextbookDiscountAlterRecordDto
+,mode: ErrorMessageMode = 'modal'){ return defHttp.post<any>
+        ({url: '/textbook/textbookDiscountAlterRecord', data:params},{errorMessageMode:mode});}
+/** 修改教材折扣变更记录 PUT /textbook/textbookDiscountAlterRecord */
+export async function putTextbookTextbookDiscountAlterRecord(params:API.UpdateTextbookDiscountAlterRecordDto
+,mode: ErrorMessageMode = 'modal'){ return defHttp.put<any>
+        ({url: '/textbook/textbookDiscountAlterRecord', data:params},{errorMessageMode:mode});}
+/** 删除教材折扣变更记录 DELETE /textbook/textbookDiscountAlterRecord */
+export async function deleteTextbookTextbookDiscountAlterRecord(params:string[],mode: ErrorMessageMode = 'modal'){ return defHttp.delete<any>
+        ({url: '/textbook/textbookDiscountAlterRecord', data:params},{errorMessageMode:mode});}
+/** 导出 GET /textbook/textbookDiscountAlterRecord/export */
+export async function getTextbookDiscountAlterRecordExport(params:any,mode: ErrorMessageMode = 'modal'){ return defHttp.download<any>
+        ({url: '/textbook/textbookDiscountAlterRecord/export',responseType:'blob', params:params},{errorMessageMode:mode});}
+/** 导入 POST /textbook/textbookDiscountAlterRecord/import */
+export async function postTextbookDiscountAlterRecordImport(params:any,mode: ErrorMessageMode = 'modal'){ return defHttp.post<any>
+        ({url: '/textbook/textbookDiscountAlterRecord/import',headers:{'Content-Type':'multipart/form-data'}, data:params},{errorMessageMode:mode});}
+/** 根据id查询教材折扣变更记录信息 GET /textbook/textbookDiscountAlterRecord/info */
+export async function getTextbookDiscountAlterRecordInfo(params:any,mode: ErrorMessageMode = 'modal'){ return defHttp.get<API.TextbookDiscountAlterRecordVo>
+        ({url: '/textbook/textbookDiscountAlterRecord/info', params:params},{errorMessageMode:mode});}
+/** 教材折扣变更记录列表(不分页) GET /textbook/textbookDiscountAlterRecord/list */
+export async function getTextbookDiscountAlterRecordList(params:any,mode: ErrorMessageMode = 'modal'){ return defHttp.get<API.TextbookDiscountAlterRecordListVo[]>
+        ({url: '/textbook/textbookDiscountAlterRecord/list', params:params},{errorMessageMode:mode});}
+/** 教材折扣变更记录列表(分页) GET /textbook/textbookDiscountAlterRecord/page */
+export async function getTextbookDiscountAlterRecordPage(params:any,mode: ErrorMessageMode = 'modal'){ return defHttp.get<API.PageOutput<API.TextbookDiscountAlterRecordPageVo>>
+        ({url: '/textbook/textbookDiscountAlterRecord/page', params:params},{errorMessageMode:mode});}
+            

+ 6 - 0
src/services/apis/TextbookStudentClaimController.ts

@@ -25,6 +25,12 @@ export async function deleteTextbookTextbookStudentClaim(params:string[],mode: E
 /** 学生自己确认已经领取 PUT /textbook/textbookStudentClaim/confirm */
 export async function putTextbookStudentClaimConfirm(params:string[],mode: ErrorMessageMode = 'modal'){ return defHttp.put<any>
         ({url: '/textbook/textbookStudentClaim/confirm', data:params},{errorMessageMode:mode});}
+/** 班主任查看班级教材页面 GET /textbook/textbookStudentClaim/head-tea-look-class-book */
+export async function getTextbookStudentClaimHeadTeaLookClassBook(params:any,mode: ErrorMessageMode = 'modal'){ return defHttp.get<API.HeadTeaLookClassBookVo>
+        ({url: '/textbook/textbookStudentClaim/head-tea-look-class-book', params:params},{errorMessageMode:mode});}
+/** 班主任查看班级教材学期页面 GET /textbook/textbookStudentClaim/head-tea-look-class-book-semester */
+export async function getTextbookStudentClaimHeadTeaLookClassBookSemester(params:any,mode: ErrorMessageMode = 'modal'){ return defHttp.get<API.HeadTeaLookClassBookSemesterVo[]>
+        ({url: '/textbook/textbookStudentClaim/head-tea-look-class-book-semester', params:params},{errorMessageMode:mode});}
 /** 根据id查询学生教材认领记录信息 GET /textbook/textbookStudentClaim/info */
 export async function getTextbookStudentClaimInfo(params:any,mode: ErrorMessageMode = 'modal'){ return defHttp.get<API.TextbookStudentClaimVo>
         ({url: '/textbook/textbookStudentClaim/info', params:params},{errorMessageMode:mode});}

+ 4 - 0
src/services/apis/TextbookWarehouseRecordController.ts

@@ -35,4 +35,8 @@ export async function getTextbookWarehouseRecordPage(params:any,mode: ErrorMessa
 export async function postTextbookWarehouseRecordTextbookWarehouse(params:API.AddTextbookWarehouseRecordDto
 ,mode: ErrorMessageMode = 'modal'){ return defHttp.post<any>
         ({url: '/textbook/textbookWarehouseRecord/textbook-warehouse', data:params},{errorMessageMode:mode});}
+/** 修改入库后的折扣 POST /textbook/textbookWarehouseRecord/update-discount */
+export async function postTextbookWarehouseRecordUpdateDiscount(params:API.UpdateDiscountDto
+,mode: ErrorMessageMode = 'modal'){ return defHttp.post<any>
+        ({url: '/textbook/textbookWarehouseRecord/update-discount', data:params},{errorMessageMode:mode});}
             

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

@@ -209,6 +209,7 @@ import * as SubjectGroupController from './SubjectGroupController';
 import * as SubjectGroupCourseController from './SubjectGroupCourseController';
 import * as TextbookController from './TextbookController';
 import * as TextbookCoreAttributeController from './TextbookCoreAttributeController';
+import * as TextbookDiscountAlterRecordController from './TextbookDiscountAlterRecordController';
 import * as TextbookIssueRecordController from './TextbookIssueRecordController';
 import * as TextbookStudentClaimController from './TextbookStudentClaimController';
 import * as TextbookSubscriptionController from './TextbookSubscriptionController';
@@ -644,6 +645,8 @@ SubjectGroupCourseController,
 TextbookController,
 /** Textbook Core Attribute Controller */
 TextbookCoreAttributeController,
+/** Textbook Discount Alter Record Controller */
+TextbookDiscountAlterRecordController,
 /** Textbook Issue Record Controller */
 TextbookIssueRecordController,
 /** Textbook Student Claim Controller */

+ 140 - 0
src/services/typing.d.ts

@@ -3659,6 +3659,17 @@ publishingHouse?: string;
 sortCode?: number;
 }
 
+type AddTextbookDiscountAlterRecordDto = {
+/** 新的折扣 */
+newDiscount?: number;
+/** 旧的折扣 */
+oldDiscount?: number;
+/** 序号 */
+sortCode?: number;
+/** 入库编号 */
+textbookWarehouseRecordId?: string;
+}
+
 type AddTextbookDto = {
 /** 书名 */
 bookName?: string;
@@ -10933,6 +10944,50 @@ name?: string;
 parentId?: string;
 }
 
+type HeadTeaLookClassBookCategoryDetailVo = {
+/** 书名 */
+bookName?: string;
+/** 申领数量 */
+claimNum?: number;
+/** 申领时间 */
+claimTime?: string;
+/** 价格 */
+price?: number;
+/** 教材分类(xjr_dictionary_item[textbook_type]) */
+textbookType?: string;
+/** 教材分类(xjr_dictionary_item[textbook_type]) */
+textbookTypeCn?: string;
+}
+
+type HeadTeaLookClassBookCategoryVo = {
+/** 分类合计总价 */
+categoryDetailVos?: HeadTeaLookClassBookCategoryDetailVo[];
+/** 分类合计总价 */
+categoryTotalPrice?: number;
+/** 教材分类(xjr_dictionary_item[textbook_type]) */
+textbookType?: string;
+/** 教材分类(xjr_dictionary_item[textbook_type]) */
+textbookTypeCn?: string;
+}
+
+type HeadTeaLookClassBookSemesterVo = {
+/** 班级主键编号 */
+baseClassId?: string;
+/** 班级主键编号 */
+baseClassIdCn?: string;
+/** 学期主键编号 */
+baseSemesterId?: string;
+/** 学期主键编号 */
+baseSemesterIdCn?: string;
+}
+
+type HeadTeaLookClassBookVo = {
+/** 教材教辅详细列表 */
+categoryVos?: HeadTeaLookClassBookCategoryVo[];
+/** 教材教辅合计总价 */
+totalPrice?: number;
+}
+
 type HeadTeaRoomCadreAppointPageVo = {
 /** 入住性别 */
 genderCn?: string;
@@ -14533,6 +14588,14 @@ total?: number;
 totalPage?: number;
 }
 
+type PageOutput<TextbookDiscountAlterRecordPageVo> = {
+currentPage?: number;
+list?: TextbookDiscountAlterRecordPageVo[];
+pageSize?: number;
+total?: number;
+totalPage?: number;
+}
+
 type PageOutput<TextbookIssueRecordPageVo> = {
 currentPage?: number;
 list?: TextbookIssueRecordPageVo[];
@@ -18353,6 +18416,61 @@ publishingHouse?: string;
 sortCode?: number;
 }
 
+type TextbookDiscountAlterRecordListVo = {
+/** 创建时间 */
+createDate?: string;
+/** 创建人 */
+createUserId?: string;
+/** 创建人 */
+createUserIdCn?: string;
+/** 主键编号 */
+id?: string;
+/** 新的折扣 */
+newDiscount?: number;
+/** 旧的折扣 */
+oldDiscount?: number;
+/** 入库编号 */
+textbookWarehouseRecordId?: string;
+}
+
+type TextbookDiscountAlterRecordPageVo = {
+/** 创建时间 */
+createDate?: string;
+/** 创建人 */
+createUserId?: string;
+/** 删除标记 */
+deleteMark?: number;
+/** 有效标志 */
+enabledMark?: number;
+/** 主键编号 */
+id?: string;
+/** 修改时间 */
+modifyDate?: string;
+/** 修改人 */
+modifyUserId?: string;
+/** 新的折扣 */
+newDiscount?: number;
+/** 旧的折扣 */
+oldDiscount?: number;
+/** 序号 */
+sortCode?: number;
+/** 入库编号 */
+textbookWarehouseRecordId?: string;
+}
+
+type TextbookDiscountAlterRecordVo = {
+/** 主键编号 */
+id?: string;
+/** 新的折扣 */
+newDiscount?: number;
+/** 旧的折扣 */
+oldDiscount?: number;
+/** 序号 */
+sortCode?: number;
+/** 入库编号 */
+textbookWarehouseRecordId?: string;
+}
+
 type TextbookInstockroomDto = {
 /** 实际折扣 */
 discount?: number;
@@ -19047,6 +19165,8 @@ type TextbookWarehouseRecordDetailPageVo = {
 /** 创建时间 */
 createDate?: string;
 /** 创建人 */
+createUserId?: string;
+/** 创建人 */
 createUserIdCn?: string;
 /** 主键编号 */
 id?: string;
@@ -21144,6 +21264,13 @@ remark?: string;
 sortCode?: number;
 }
 
+type UpdateDiscountDto = {
+/** 新的折扣 */
+discount?: number;
+/** 入库记录主键id */
+id?: string;
+}
+
 type UpdateDraftDto = {
 /** 表单数据 */
 formData?: any;
@@ -22634,6 +22761,19 @@ publishingHouse?: string;
 sortCode?: number;
 }
 
+type UpdateTextbookDiscountAlterRecordDto = {
+/** 主键编号 */
+id?: string;
+/** 新的折扣 */
+newDiscount?: number;
+/** 旧的折扣 */
+oldDiscount?: number;
+/** 序号 */
+sortCode?: number;
+/** 入库编号 */
+textbookWarehouseRecordId?: string;
+}
+
 type UpdateTextbookDto = {
 /** 书名 */
 bookName?: string;

+ 6 - 6
src/views/notice/components/userModal.vue

@@ -83,12 +83,12 @@
         align: 'left',
         width: 120,
       },
-      {
-        title: '任课状况',
-        dataIndex: 'teachingStatus',
-        align: 'left',
-        width: 150,
-      },
+      // {
+      //   title: '任课状况',
+      //   dataIndex: 'teachingStatus',
+      //   align: 'left',
+      //   width: 150,
+      // },
     ],
     beforeFetch: (params) => {
       return params;

+ 77 - 0
src/views/teachingManager/textbookPushManager/components/editDiscount.vue

@@ -0,0 +1,77 @@
+<template>
+  <BasicModal
+    @ok="handleSubmit"
+    :destroyOnClose="true"
+    :maskClosable="false"
+    v-bind="$attrs"
+    @register="registerModal"
+    :title="getTitle"
+    :width="1002"
+    showFooter
+  >
+    <BasicForm @register="registerForm" />
+  </BasicModal>
+</template>
+<script setup lang="ts">
+  import { ref, computed, unref } from 'vue';
+  import { useMessage } from '/@/hooks/web/useMessage';
+  import { BasicModal, useModalInner } from '/@/components/Modal';
+  import { BasicForm, useForm } from '/@/components/Form/index';
+  import { postTextbookWarehouseRecordUpdateDiscount } from '/@/services/apis/TextbookWarehouseRecordController';
+
+  const isUpdate = ref(true);
+  const modelRef = ref<Recordable>({});
+  const emit = defineEmits(['success', 'register']);
+  const { createMessage } = useMessage();
+
+  const [registerForm, { validate, setFieldsValue, resetFields }] = useForm({
+    labelWidth: 100,
+    schemas: [
+      {
+        label: '书名',
+        field: 'bookName',
+        component: 'Input',
+        dynamicDisabled: true,
+        colProps: { span: 24 },
+      },
+      {
+        label: '折扣',
+        field: 'discount',
+        component: 'InputNumber',
+        colProps: { span: 24 },
+      },
+    ],
+    showActionButtonGroup: false,
+  });
+
+  const [registerModal, { closeModal, setModalProps }] = useModalInner(async (data) => {
+    resetFields();
+    setModalProps({ confirmLoading: false });
+    isUpdate.value = !!data?.isUpdate;
+    modelRef.value = { ...data.baseData };
+
+    setFieldsValue({ ...data.baseData });
+  });
+
+  const getTitle = computed(() => (!unref(isUpdate) ? '修改折扣' : '修改折扣'));
+  const handleSubmit = async () => {
+    try {
+      const values = await validate();
+      setModalProps({ confirmLoading: true });
+      const postParams = {
+        id: unref(modelRef).id,
+      };
+      Object.assign(postParams, values);
+
+      await postTextbookWarehouseRecordUpdateDiscount(postParams);
+
+      createMessage.success('操作成功');
+      closeModal();
+      emit('success');
+    } finally {
+      setModalProps({ confirmLoading: false });
+    }
+  };
+</script>
+
+<style scoped lang="less"></style>

+ 151 - 0
src/views/teachingManager/textbookPushManager/components/storeList.vue

@@ -0,0 +1,151 @@
+<script setup lang="ts">
+  import { useModalInner } from '/@/components/Modal';
+  import BasicModal from '/@/components/Modal/src/BasicModal.vue';
+  import BasicTable from '/@/components/Table/src/BasicTable.vue';
+  import { useTable } from '/@/components/Table';
+  import { computed, reactive } from 'vue';
+  import { getTextbookWarehouseRecordDetailPage } from '/@/services/apis/TextbookWarehouseRecordDetailController';
+  import { getDataOption } from '/@/api/system/dic';
+
+  defineEmits(['register']);
+  const searchInfo = reactive<Recordable>({});
+  const state = reactive({
+    type: 1,
+  });
+
+  const getTitle = computed(() => (state.type === 1 ? '入库记录' : '退书记录'));
+  const searchFormSchema = computed(() =>
+    state.type === 1
+      ? [
+          {
+            label: '入库类型',
+            field: 'warehouseMode',
+            component: 'ApiSelect',
+            colProps: { span: 8 },
+            componentProps: {
+              getPopupContainer: () => document.body,
+              api: getDataOption,
+              params: { code: 'warehouse_mode' },
+            },
+          },
+          {
+            label: '入库时间',
+            field: '[startCreateDate,endCreateDate]',
+            component: 'RangePicker',
+            colProps: { span: 8 },
+            componentProps: {
+              getPopupContainer: () => document.body,
+              placeholder: ['开始时间', '结束时间'],
+              format: 'YYYY-MM-DD HH:mm:ss',
+              showTime: { format: 'HH:mm:ss' },
+            },
+          },
+        ]
+      : [
+          {
+            label: '退书人',
+            field: 'createUserIdCn',
+            component: 'Input',
+            colProps: { span: 8 },
+          },
+          {
+            label: '入库时间',
+            field: '[startCreateDate,endCreateDate]',
+            component: 'RangePicker',
+            colProps: { span: 8 },
+            componentProps: {
+              getPopupContainer: () => document.body,
+              placeholder: ['开始时间', '结束时间'],
+              format: 'YYYY-MM-DD HH:mm:ss',
+              showTime: { format: 'HH:mm:ss' },
+            },
+          },
+        ],
+  );
+
+  const [tableReg, { reload, setColumns, getForm }] = useTable({
+    title: '',
+    api: getTextbookWarehouseRecordDetailPage,
+    pagination: true,
+    immediate: false,
+    showTableSetting: true,
+    bordered: true,
+    resizeHeightOffset: 50,
+    columns: [
+      {
+        title: '入库方式',
+        dataIndex: 'warehouseModeCn',
+        align: 'left',
+      },
+    ],
+    formConfig: {
+      labelWidth: 100,
+      schemas: searchFormSchema,
+    },
+    useSearchForm: true,
+  });
+
+  const [register] = useModalInner((data) => {
+    searchInfo.textbookWarehouseRecordId = data.baseData.id;
+    searchInfo.warehouseModeInt = state.type === 1 ? 2 : 1;
+    state.type = data.type;
+    getForm().resetFields();
+    if (state.type === 1) {
+      setColumns([
+        {
+          title: '入库数量',
+          dataIndex: 'warehouseNumber',
+          align: 'left',
+        },
+        {
+          title: '入库时间',
+          dataIndex: 'createDate',
+          align: 'left',
+        },
+        {
+          title: '入库人员',
+          dataIndex: 'createUserIdCn',
+          align: 'left',
+        },
+      ]);
+    } else {
+      setColumns([
+        {
+          title: '退书人',
+          dataIndex: 'createUserIdCn',
+          align: 'left',
+        },
+        {
+          title: '退书数量',
+          dataIndex: 'warehouseNumber',
+          align: 'left',
+        },
+        {
+          title: '入库时间',
+          dataIndex: 'createDate',
+          align: 'left',
+        },
+        {
+          title: '入库人员',
+          dataIndex: 'createUserIdCn',
+          align: 'left',
+        },
+      ]);
+    }
+    reload();
+  });
+</script>
+
+<template>
+  <BasicModal
+    :title="getTitle"
+    v-bind="$attrs"
+    default-fullscreen
+    @register="register"
+    :footer="null"
+  >
+    <BasicTable @register="tableReg" :search-info="searchInfo" />
+  </BasicModal>
+</template>
+
+<style scoped lang="less"></style>

+ 33 - 1
src/views/teachingManager/textbookPushManager/index.vue

@@ -19,11 +19,15 @@
   import FormImport from '/@/views/sys/import/index.vue';
   import { postTextbookWarehouseRecordDetailImport } from '/@/services/apis/TextbookWarehouseRecordDetailController';
   import FormStore from './components/store.vue';
+  import ListStore from './components/storeList.vue';
+  import FormDiscount from './components/editDiscount.vue';
 
   const [formReg, {}] = useDrawer();
   const [formDetailReg, { openModal }] = useModal();
   const [formStoreRegister, { openDrawer }] = useDrawer();
   const [registerImportModal, { openModal: openImportModal }] = useModal();
+  const [formStoreListRegister, { openModal: openStoreListModal }] = useModal();
+  const [formDiscountRegister, { openModal: openDiscountModal }] = useModal();
   const selectedRowKeysList = ref<string[] | number[]>([]);
   const [registerTable, { reload }] = useTable({
     api: getTextbookWarehouseRecordPage,
@@ -49,7 +53,7 @@
     },
 
     actionColumn: {
-      width: 100,
+      width: 140,
       title: '操作',
       dataIndex: 'action',
       slots: { customRender: 'action' },
@@ -94,6 +98,18 @@
   const handelStore = () => {
     openDrawer(true, {});
   };
+
+  const handleStoreList = (record, type) => {
+    openStoreListModal(true, {
+      baseData: { id: record.id },
+      type: type,
+    });
+  };
+  const handleEditDiscount = (record, type) => {
+    openDiscountModal(true, {
+      baseData: { ...record },
+    });
+  };
 </script>
 
 <template>
@@ -117,14 +133,30 @@
               label: '查看',
               onClick: handleView.bind(null, record),
             },
+            {
+              label: '修改折扣',
+              onClick: handleEditDiscount.bind(null, record),
+            },
           ]"
         />
       </template>
+      <template #warehouseNumber="{ record }">
+        <a @click="handleStoreList(record, 1)">
+          {{ record.warehouseNumber }}
+        </a>
+      </template>
+      <template #recedeNumber="{ record }">
+        <a @click="handleStoreList(record, 2)">
+          {{ record.recedeNumber }}
+        </a>
+      </template>
     </BasicTable>
     <formEdit @register="formReg" @success="reload" />
     <FormDetail @register="formDetailReg" />
     <FormImport @register="registerImportModal" @success="reload" />
     <FormStore @register="formStoreRegister" @success="reload" />
+    <ListStore @register="formStoreListRegister" />
+    <FormDiscount @register="formDiscountRegister" @success="reload" />
   </PageWrapper>
 </template>