index.vue 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. <template>
  2. <ele-page flex-table>
  3. <page-search @search="reload"></page-search>
  4. <common-table ref="pageRef" :pageConfig="pageConfig" :columns="columns">
  5. <template #toolbar>
  6. <el-button
  7. type="primary"
  8. plain
  9. :icon="PlusOutlined"
  10. v-permission="'recycle:remindArea:add'"
  11. @click="handleUpdate()"
  12. >
  13. 新增
  14. </el-button>
  15. <el-button
  16. type="danger"
  17. plain
  18. :icon="DeleteOutlined"
  19. v-permission="'recycle:remindArea:batchDelete'"
  20. @click="handleBatchDelete()"
  21. >
  22. 批量删除
  23. </el-button>
  24. </template>
  25. <template #action="{ row }">
  26. <el-button
  27. type="danger"
  28. link
  29. v-permission="'recycle:remindArea:delete'"
  30. @click="handleBatchDelete(row)"
  31. >
  32. 删除
  33. </el-button>
  34. </template>
  35. </common-table>
  36. <page-edit ref="editRef" @success="reload()"></page-edit>
  37. </ele-page>
  38. </template>
  39. <script setup>
  40. import { ref, reactive } from 'vue';
  41. import { ElMessageBox } from 'element-plus/es';
  42. import { EleMessage } from 'ele-admin-plus/es';
  43. import { PlusOutlined, DeleteOutlined } from '@/components/icons';
  44. import CommonTable from '@/components/CommonPage/CommonTable.vue';
  45. import pageSearch from './components/page-search.vue';
  46. import pageEdit from './components/page-edit.vue';
  47. import { useDictData } from '@/utils/use-dict-data';
  48. import { useRouter } from 'vue-router';
  49. import request from '@/utils/request';
  50. defineOptions({ name: 'remindBooks' });
  51. const [schoolLevelDicts] = useDictData(['school_level']);
  52. /** 表格列配置 */
  53. const columns = ref([
  54. { type: 'selection', columnKey: 'selection', width: 50, fixed: 'left' },
  55. { label: '图片', prop: 'picture', width: 140 },
  56. { label: 'isbn', prop: 'schoolName' },
  57. { label: '书名', prop: 'provinceName' },
  58. { label: '作者', prop: 'provinceName' },
  59. { label: '出版社', prop: 'provinceName' },
  60. { label: '出版时间', prop: 'provinceName' },
  61. { label: '定价', prop: 'provinceName' },
  62. { label: '需提醒仓库', prop: 'cityName' },
  63. { label: '添加时间', prop: 'createTime' },
  64. { columnKey: 'action', label: '操作', width: 120, slot: 'action' }
  65. ]);
  66. let router = useRouter();
  67. /** 页面组件实例 */
  68. const pageRef = ref(null);
  69. const pageConfig = reactive({
  70. pageUrl: '/baseinfo/schoolInfo/list',
  71. exportUrl: '/baseinfo/schoolInfo/export',
  72. fileName: '审核提醒书籍',
  73. cacheKey: 'remindBooksTable'
  74. });
  75. //刷新表格
  76. function reload(where) {
  77. pageRef.value?.reload(where);
  78. }
  79. //批量删除
  80. function handleBatchDelete(row) {
  81. let selections = row ? [row] : pageRef.value?.getSelections();
  82. let ids = selections.map((item) => item.id).join(',');
  83. let url = `/baseinfo/schoolInfo/removeById/${ids}`;
  84. pageRef.value?.operatBatch({
  85. title: '确认删除?',
  86. method: 'post',
  87. url,
  88. row
  89. });
  90. }
  91. </script>