UploadPaper.vue 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. <template>
  2. <div class="upload-paper">
  3. <table class="table table-width">
  4. <tr>
  5. <th>考区</th>
  6. <th v-for="(subject, index) in subjects" :key="index">
  7. {{ subject.subjectName }}
  8. </th>
  9. </tr>
  10. <tr v-for="(area, index) in papers" :key="index">
  11. <td>{{ area.questionName }}</td>
  12. <td v-for="(subject, index) in area.subjects" :key="index">
  13. <upload-button
  14. :btn-type="subject.url ? 'primary' : 'default'"
  15. btn-icon="md-cloud-upload"
  16. btn-content="上传试卷"
  17. :upload-url="subject.uploadUrl"
  18. :format="['pdf', 'png', 'jpg']"
  19. @upload-success="getData"
  20. ></upload-button>
  21. </td>
  22. </tr>
  23. </table>
  24. </div>
  25. </template>
  26. <script>
  27. import UploadButton from "@/components/UploadButton";
  28. import { uploadPaperList } from "@/api";
  29. export default {
  30. name: "upload-paper",
  31. components: { UploadButton },
  32. data() {
  33. return {
  34. workId: this.$route.params.workId,
  35. papers: [],
  36. subjects: []
  37. };
  38. },
  39. mounted() {
  40. this.getData();
  41. },
  42. methods: {
  43. async getData() {
  44. const data = await uploadPaperList(this.workId);
  45. this.papers = data.map(area => {
  46. area.subjects = area.subjects
  47. .filter(item => item.enable)
  48. .map(subject => {
  49. subject.uploadUrl = `${this.GLOBAL.domain}/api/papers/${this.workId}/${area.questionId}/${subject.subject}/uploadPaperFile`;
  50. return subject;
  51. });
  52. return area;
  53. });
  54. this.subjects = this.papers[0].subjects;
  55. }
  56. }
  57. };
  58. </script>