SelectBook.vue 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. <template>
  2. <el-dialog width="1000px" title="选择教材" :visible="visible" :before-close="close" :close-on-click-modal="false">
  3. <div class="book-search">
  4. <el-input v-model="name" placeholder="教材名称" @keyup.enter.native="pageQueryBookList" />
  5. <el-button type="primary" @click="pageQueryBookList">搜索</el-button>
  6. </div>
  7. <CommonTable
  8. :page-size="page_capacity"
  9. :min-height="350"
  10. :total="total_count"
  11. :current-page="cur_page"
  12. @prev-click="changePage($event, pageQueryBookList)"
  13. @next-click="changePage($event, pageQueryBookList)"
  14. @current-change="changePage($event, pageQueryBookList)"
  15. @size-change="changePageSize($event, pageQueryBookList)"
  16. >
  17. <el-table :data="list" max-height="400px" highlight-current-row @current-change="handleCurrentChange">
  18. <el-table-column label="序号" width="64">
  19. <template slot-scope="{ $index }">
  20. <span>{{ $index + 1 }}</span>
  21. </template>
  22. </el-table-column>
  23. <el-table-column prop="name" label="教材名称" width="248" />
  24. <el-table-column prop="label_name_list_desc" label="标签" width="124" />
  25. <el-table-column prop="creator_name" label="创建者" width="160" />
  26. <el-table-column prop="create_time" label="创建时间" width="180" />
  27. <el-table-column prop="last_modifier_name" label="最近编辑" width="180" />
  28. <el-table-column prop="last_modify_time" label="最近编辑时间" width="180" />
  29. <el-table-column prop="description" label="简介" />
  30. </el-table>
  31. </CommonTable>
  32. <div slot="footer">
  33. <el-button type="primary" @click="confirm">确定</el-button>
  34. <el-button @click="close">取消</el-button>
  35. </div>
  36. </el-dialog>
  37. </template>
  38. <script>
  39. export default {
  40. name: 'SelectBook'
  41. };
  42. </script>
  43. <script setup>
  44. import { ref, defineEmits } from 'vue';
  45. import { useList } from '@/utils/list';
  46. import { PageQueryBookList } from '@/api/list';
  47. import { MessageBox } from 'element-ui';
  48. import CommonTable from '@/components/common/CommonTable.vue';
  49. defineProps({
  50. visible: Boolean
  51. });
  52. const emits = defineEmits(['confirm', 'close']);
  53. const { page_capacity, cur_page, total_count, list, changePage, changePageSize } = useList();
  54. let name = ref('');
  55. function pageQueryBookList() {
  56. PageQueryBookList({
  57. name: name.value,
  58. org_id: '',
  59. publish_status: 1,
  60. creator_id: '',
  61. sys_version_type: -1,
  62. page_capacity: page_capacity.value,
  63. cur_page: cur_page.value
  64. }).then(({ book_list, total_count: total, cur_page: page }) => {
  65. list.value = book_list;
  66. total_count.value = total;
  67. cur_page.value = page;
  68. });
  69. }
  70. pageQueryBookList();
  71. let book = ref({
  72. book_id: '',
  73. book_name: ''
  74. });
  75. function handleCurrentChange(curRow) {
  76. if (curRow === null) {
  77. book.value = { book_id: '', book_name: '' };
  78. return;
  79. }
  80. const { id, name } = curRow;
  81. book.value = { book_id: id, book_name: name };
  82. }
  83. function confirm() {
  84. if (!book.value.book_id) {
  85. MessageBox.alert('请先选择教材', '提示', {
  86. confirmButtonText: '确定',
  87. type: 'warning'
  88. });
  89. return;
  90. }
  91. emits('confirm', book.value.book_id, book.value.book_name);
  92. }
  93. function close() {
  94. emits('close');
  95. }
  96. </script>
  97. <style lang="scss" scoped>
  98. .book-search {
  99. display: flex;
  100. align-items: center;
  101. .el-input {
  102. width: 200px;
  103. margin-right: 20px;
  104. }
  105. }
  106. </style>