ProjectPreview.vue 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. <template>
  2. <div class="audit">
  3. <MenuPage cur-key="/project_manage/project" />
  4. <CommonPreview ref="preview" :project-id="project_id">
  5. <template #operator="{ courseware, projectId }">
  6. <span v-if="isTrue(courseware.is_can_request_shangjia_book)" class="link" @click="openRequestBookDialog">
  7. 申请上架
  8. </span>
  9. <span v-if="isTrue(courseware.is_can_request_rollback_project)" class="link" @click="requestRollbackProject">
  10. 申请退回
  11. </span>
  12. <span class="link" @click="createBookPreviewURL(projectId)">生成预览链接</span>
  13. <span class="link" @click="goBackBookList">返回项目列表</span>
  14. </template>
  15. </CommonPreview>
  16. <RequestBook :project-id="project_id" :visible.sync="requestBookVisible" @confirm="requestShangjiaBook" />
  17. <PreviewURL :url="preview_url" :visible.sync="visible" />
  18. </div>
  19. </template>
  20. <script>
  21. import MenuPage from '@/views/personal_workbench/common/menu.vue';
  22. import CommonPreview from '@/components/CommonPreview.vue';
  23. import RequestBook from './components/RequestBook.vue';
  24. import PreviewURL from '@/views/project_manage/common/PreviewURL.vue';
  25. import { isTrue } from '@/utils/validate';
  26. import { RequestShangjiaBook, RequestRollbackProject } from '@/api/project';
  27. import { CreateBookPreviewURL } from '@/api/app';
  28. export default {
  29. name: 'AuditTaskPage',
  30. components: {
  31. MenuPage,
  32. CommonPreview,
  33. RequestBook,
  34. PreviewURL,
  35. },
  36. data() {
  37. return {
  38. project_id: this.$route.params.projectId || '',
  39. isTrue,
  40. requestBookVisible: false,
  41. preview_url: '',
  42. visible: false,
  43. };
  44. },
  45. methods: {
  46. goBackBookList() {
  47. this.$router.push({ path: `/project_manage/project` });
  48. },
  49. // 打开申请上架对话框
  50. openRequestBookDialog() {
  51. this.requestBookVisible = true;
  52. },
  53. // 申请上架
  54. requestShangjiaBook(data) {
  55. RequestShangjiaBook(data).then(() => {
  56. this.$message.success('申请上架成功');
  57. this.$refs.preview.getProjectBaseInfo();
  58. this.requestBookVisible = false;
  59. });
  60. },
  61. // 申请退回
  62. requestRollbackProject() {
  63. RequestRollbackProject({ project_id: this.project_id }).then(() => {
  64. this.$message.success('申请退回成功');
  65. this.$refs.preview.getProjectBaseInfo();
  66. });
  67. },
  68. createBookPreviewURL(book_id) {
  69. CreateBookPreviewURL({ book_id }).then(({ url }) => {
  70. this.preview_url = url;
  71. this.visible = true;
  72. });
  73. },
  74. },
  75. };
  76. </script>
  77. <style lang="scss" scoped>
  78. @use '@/styles/mixin.scss' as *;
  79. .audit {
  80. @include page-content(true);
  81. }
  82. </style>