index.vue 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. <script setup lang="ts">
  2. import { PageWrapper } from '/@/components/Page';
  3. import { useTable, TableAction, BasicTable } from '/@/components/Table';
  4. import { TableColumns } from './components/data.config';
  5. import formEdit from './components/formEdit.vue';
  6. import FormDetail from './components/detail.vue';
  7. import { useDrawer } from '/@/components/Drawer';
  8. import { ref } from 'vue';
  9. import { useMessage } from '/@/hooks/web/useMessage';
  10. import { searchFormSchema } from './components/data.config';
  11. import {
  12. getTextbookWarehouseRecordExportQuery,
  13. getTextbookWarehouseRecordPage,
  14. } from '/@/services/apis/TextbookWarehouseRecordController';
  15. import { downloadByData } from '/@/utils/file/download';
  16. import { formatToDate } from '/@/utils/dateUtil';
  17. import { useModal } from '/@/components/Modal';
  18. import FormImport from '/@/views/sys/import/index.vue';
  19. import FormStore from './components/store.vue';
  20. import ListStore from './components/storeList.vue';
  21. import FormDiscount from './components/editDiscount.vue';
  22. import DiscountList from './components/discountList.vue';
  23. import {
  24. postTextbookSubscriptionInstockroomExcelImport,
  25. postTextbookSubscriptionSubscriptionInstockroomExportQuery,
  26. } from '/@/services/apis/TextbookSubscriptionController';
  27. const [formReg, {}] = useDrawer();
  28. const [formDetailReg, { openModal }] = useModal();
  29. const [formStoreRegister, { openDrawer }] = useDrawer();
  30. const [registerImportModal, { openModal: openImportModal }] = useModal();
  31. const [formStoreListRegister, { openModal: openStoreListModal }] = useModal();
  32. const [formDiscountRegister, { openModal: openDiscountModal }] = useModal();
  33. const [formDiscountListRegister, { openModal: openDiscountListModal }] = useModal();
  34. const selectedRowKeysList = ref<string[] | number[]>([]);
  35. const [registerTable, { reload, getForm }] = useTable({
  36. api: getTextbookWarehouseRecordPage,
  37. rowKey: 'id',
  38. columns: TableColumns,
  39. title: '教材入库记录',
  40. bordered: true,
  41. showTableSetting: true,
  42. beforeFetch: (params) => {
  43. return params;
  44. },
  45. rowSelection: {
  46. type: 'checkbox',
  47. fixed: true,
  48. onChange: (selectedRowKeys) => {
  49. selectedRowKeysList.value = selectedRowKeys;
  50. },
  51. },
  52. useSearchForm: true,
  53. formConfig: {
  54. labelWidth: 100,
  55. schemas: searchFormSchema,
  56. },
  57. actionColumn: {
  58. width: 100,
  59. title: '操作',
  60. dataIndex: 'action',
  61. slots: { customRender: 'action' },
  62. fixed: 'right',
  63. },
  64. });
  65. const { createMessage } = useMessage();
  66. const handleExport = async () => {
  67. const fromData = getForm().getFieldsValue();
  68. const data = await getTextbookWarehouseRecordExportQuery(fromData);
  69. downloadByData(data.data, `教材入库记录${formatToDate(new Date())}.xlsx`);
  70. createMessage.success('导出成功');
  71. };
  72. const handleView = (record) => {
  73. openModal(true, {
  74. baseData: { id: record.id },
  75. });
  76. };
  77. const handelImport = () => {
  78. openImportModal(true, {
  79. baseData: {
  80. title: '教材导入',
  81. upload: postTextbookSubscriptionInstockroomExcelImport,
  82. params: {},
  83. errorName: '教材导入错误记录',
  84. download: postTextbookSubscriptionSubscriptionInstockroomExportQuery,
  85. // templatePath:
  86. // 'https://zhxy.cqtlzjzx.com/minio/static/resources/%E7%99%BD%E5%90%8D%E5%8D%95%E5%AF%BC%E5%85%A5%E6%A8%A1%E6%9D%BF.xlsx',
  87. templateName: '教材导入模板',
  88. },
  89. });
  90. };
  91. const handelStore = () => {
  92. openDrawer(true, {});
  93. };
  94. const handleStoreList = (record, type) => {
  95. openStoreListModal(true, {
  96. baseData: { id: record.id },
  97. type: type,
  98. });
  99. };
  100. const handleEditDiscount = (record) => {
  101. openDiscountModal(true, {
  102. baseData: { ...record },
  103. });
  104. };
  105. const handleDiscountList = (record) => {
  106. openDiscountListModal(true, {
  107. baseData: { ...record },
  108. });
  109. };
  110. </script>
  111. <template>
  112. <PageWrapper dense contentFullHeight fixedHeight contentClass="flex">
  113. <BasicTable @register="registerTable">
  114. <template #toolbar>
  115. <a-button type="primary" @click="handelStore"> 教材入库 </a-button>
  116. <a-button type="primary" @click="handelImport"> 教材导入 </a-button>
  117. <!-- <a-button type="primary" @click="handleExport()"> 导出指定记录 </a-button> -->
  118. <a-button type="primary" @click="handleExport">导出记录</a-button>
  119. </template>
  120. <template #action="{ record }">
  121. <TableAction
  122. :actions="[
  123. // {
  124. // label: '查看',
  125. // onClick: handleView.bind(null, record),
  126. // },
  127. {
  128. label: '修改折扣',
  129. onClick: handleEditDiscount.bind(null, record),
  130. },
  131. ]"
  132. />
  133. </template>
  134. <template #warehouseNumber="{ record }">
  135. <a @click="handleStoreList(record, 1)">
  136. {{ record.warehouseNumber }}
  137. </a>
  138. </template>
  139. <template #recedeNumber="{ record }">
  140. <a @click="handleStoreList(record, 2)">
  141. {{ record.recedeNumber }}
  142. </a>
  143. </template>
  144. <template #discount="{ record }">
  145. <a @click="handleDiscountList(record)">
  146. {{ record.discount }}
  147. </a>
  148. </template>
  149. </BasicTable>
  150. <formEdit @register="formReg" @success="reload" />
  151. <FormDetail @register="formDetailReg" />
  152. <FormImport @register="registerImportModal" @success="reload" />
  153. <FormStore @register="formStoreRegister" @success="reload" />
  154. <ListStore @register="formStoreListRegister" />
  155. <FormDiscount @register="formDiscountRegister" @success="reload" />
  156. <DiscountList @register="formDiscountListRegister" />
  157. </PageWrapper>
  158. </template>
  159. <style scoped lang="less"></style>