CreateLink.vue 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. <template>
  2. <div>
  3. <el-dialog width="480px" title="创建链接" :visible="visible" :before-close="close" :close-on-click-modal="false">
  4. <el-form ref="form" :model="createForm" label-width="60px">
  5. <el-form-item label="教材" prop="book_name">
  6. <div class="select-book">
  7. <el-input v-model="createForm.book_name" placeholder="请选择教材" disabled />
  8. <el-button type="text" @click="selectBook">选择</el-button>
  9. </div>
  10. </el-form-item>
  11. <el-form-item label="类型">
  12. <el-select v-model="createForm.type" class="link-select">
  13. <el-option label="试用" :value="0" />
  14. <el-option label="一书一码" :value="1" />
  15. </el-select>
  16. </el-form-item>
  17. <el-form-item label="有效期">
  18. <el-select v-model="createForm.effective_day_count" class="link-select">
  19. <el-option label="永久" :value="-1" />
  20. <el-option
  21. v-for="item in Array.from({ length: 90 }, (_, i) => i + 1)"
  22. :key="item"
  23. :label="`${item}天`"
  24. :value="item"
  25. />
  26. </el-select>
  27. </el-form-item>
  28. </el-form>
  29. <div slot="footer">
  30. <el-button type="primary" @click="confirm">确定</el-button>
  31. <el-button @click="close">取消</el-button>
  32. </div>
  33. </el-dialog>
  34. <SelectBook :visible="visibleSelectBook" @close="closeSelectBook" @confirm="confirmSelectBook" />
  35. </div>
  36. </template>
  37. <script>
  38. export default {
  39. name: 'CreateLink'
  40. };
  41. </script>
  42. <script setup>
  43. import { ref, defineEmits } from 'vue';
  44. import SelectBook from './SelectBook.vue';
  45. defineProps({
  46. visible: Boolean
  47. });
  48. const emits = defineEmits(['close', 'confirm']);
  49. let createForm = ref({
  50. book_id: '',
  51. book_name: '',
  52. type: 1,
  53. effective_day_count: 3
  54. });
  55. let visibleSelectBook = ref(false);
  56. function selectBook() {
  57. visibleSelectBook.value = true;
  58. }
  59. function closeSelectBook() {
  60. visibleSelectBook.value = false;
  61. }
  62. function confirmSelectBook(id, name) {
  63. createForm.value.book_id = id;
  64. createForm.value.book_name = name;
  65. visibleSelectBook.value = false;
  66. }
  67. function close() {
  68. emits('close');
  69. }
  70. function confirm() {
  71. emits('confirm', createForm.value.book_id, createForm.value.type, createForm.value.effective_day_count);
  72. }
  73. </script>
  74. <style lang="scss" scoped>
  75. :deep .el-dialog__body {
  76. padding-bottom: 0;
  77. }
  78. .select-book {
  79. display: flex;
  80. column-gap: 12px;
  81. }
  82. .el-form {
  83. .link-select {
  84. width: calc(100% - 43px);
  85. }
  86. }
  87. </style>