index.vue 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. <template>
  2. <div class="edit-task">
  3. <MenuPage cur-key="edit_task" />
  4. <div class="edit-task__header">
  5. <div class="menu">
  6. <span></span>
  7. <span class="link" @click="goBackBookList">返回教材列表</span>
  8. </div>
  9. <div class="courseware">
  10. <span class="name-path">{{ courseware_info.name_path }}</span>
  11. <div class="switch">
  12. <span :class="['link', { active: isEdit }]" @click="toggleEditMode(true)">内容编辑</span>
  13. <span :class="['link', { active: !isEdit }]" @click="toggleEditMode(false)">位置调整</span>
  14. </div>
  15. <div class="operator">
  16. <span class="link" @click="saveCoursewareContent('quit')">退出编辑</span>
  17. <span class="link" @click="saveCoursewareContent">保存</span>
  18. </div>
  19. </div>
  20. </div>
  21. <CreatePage ref="create" class="edit-task__content" @goBackPreview="goBackPreview" />
  22. </div>
  23. </template>
  24. <script>
  25. import { GetBookCoursewareInfo, GetMyBookCoursewareTaskList } from '@/api/project';
  26. import CreatePage from '@/views/book/courseware/create/index.vue';
  27. import MenuPage from '@/views/personal_workbench/menu.vue';
  28. export default {
  29. name: 'EditTaskPage',
  30. components: {
  31. CreatePage,
  32. MenuPage,
  33. },
  34. data() {
  35. return {
  36. id: this.$route.params.courseware_id,
  37. project_id: this.$route.query.project_id,
  38. courseware_info: {},
  39. courseware_list: [],
  40. isEdit: true, // 是否编辑状态
  41. };
  42. },
  43. created() {
  44. this.getBookCoursewareInfo();
  45. this.getMyBookCoursewareTaskList();
  46. },
  47. mounted() {
  48. this.$nextTick(() => {
  49. this.$watch(
  50. () => this.$refs.create.isEdit,
  51. (newVal) => {
  52. this.isEdit = newVal;
  53. },
  54. { immediate: true },
  55. );
  56. });
  57. },
  58. methods: {
  59. /**
  60. * 得到教材课件信息
  61. */
  62. getBookCoursewareInfo() {
  63. GetBookCoursewareInfo({ id: this.id }).then(({ courseware_info }) => {
  64. this.courseware_info = courseware_info;
  65. });
  66. },
  67. goBackBookList() {
  68. this.$router.push({ path: '/personal_workbench/edit_task', query: { book_id: this.courseware_info.book_id } });
  69. },
  70. toggleEditMode(isEdit) {
  71. if (this.isEdit !== isEdit) {
  72. this.saveCoursewareContent('edit');
  73. }
  74. },
  75. saveCoursewareContent(type = '') {
  76. this.$refs.create.saveCoursewareContent(type);
  77. },
  78. goBackPreview() {
  79. this.$router.push({ path: `/personal_workbench/edit_task/preview/${this.id}` });
  80. },
  81. /**
  82. * 得到我的教材课件任务列表
  83. */
  84. getMyBookCoursewareTaskList() {
  85. GetMyBookCoursewareTaskList({ project_id: this.project_id }).then(({ courseware_list }) => {
  86. this.courseware_list = courseware_list;
  87. });
  88. },
  89. },
  90. };
  91. </script>
  92. <style lang="scss" scoped>
  93. @use '@/styles/mixin.scss' as *;
  94. .edit-task {
  95. height: calc(100% - 52px);
  96. min-height: calc(100% - 52px) !important;
  97. @include page-content(true);
  98. &__header {
  99. display: flex;
  100. align-items: center;
  101. border-top: $border;
  102. border-bottom: $border;
  103. .menu {
  104. display: flex;
  105. justify-content: space-between;
  106. width: 360px;
  107. padding: 4px 8px;
  108. border-right: $border;
  109. }
  110. .courseware {
  111. display: flex;
  112. flex-grow: 1;
  113. align-items: center;
  114. justify-content: space-between;
  115. padding: 4px 8px;
  116. .name-path {
  117. font-size: 14px;
  118. }
  119. .link {
  120. padding: 4px;
  121. border-radius: 4px;
  122. &.active {
  123. background-color: $main-active-color;
  124. }
  125. }
  126. }
  127. }
  128. &__content {
  129. flex: 1;
  130. flex-direction: row !important;
  131. }
  132. }
  133. </style>