|
@@ -7,7 +7,7 @@
|
|
|
:close-on-press-escape="false"
|
|
|
top="20px"
|
|
|
append-to-body
|
|
|
- width="900px"
|
|
|
+ width="750px"
|
|
|
@opened="getList"
|
|
|
>
|
|
|
<div slot="title">
|
|
@@ -29,17 +29,31 @@
|
|
|
></el-table-column>
|
|
|
<el-table-column prop="name" label="材料名称"></el-table-column>
|
|
|
<el-table-column
|
|
|
- prop="number"
|
|
|
+ prop="fileCount"
|
|
|
label="数量"
|
|
|
- width="100"
|
|
|
+ width="80"
|
|
|
></el-table-column>
|
|
|
<el-table-column
|
|
|
class-name="action-column"
|
|
|
label="操作"
|
|
|
width="120px"
|
|
|
+ align="right"
|
|
|
fixed="right"
|
|
|
>
|
|
|
<template slot-scope="scope">
|
|
|
+ <upload-button
|
|
|
+ v-if="checkUpload(scope.row)"
|
|
|
+ btn-content="上传"
|
|
|
+ btn-type="text"
|
|
|
+ btn-class="btn-primary"
|
|
|
+ :upload-url="uploadUrl"
|
|
|
+ :upload-data="{ id: scope.row.id }"
|
|
|
+ :format="format"
|
|
|
+ style="margin: 0"
|
|
|
+ @valid-error="validError"
|
|
|
+ @upload-success="uploadSuccess"
|
|
|
+ >
|
|
|
+ </upload-button>
|
|
|
<el-button
|
|
|
v-if="checkView(scope.row)"
|
|
|
class="btn-primary"
|
|
@@ -55,24 +69,20 @@
|
|
|
>删除</el-button
|
|
|
>
|
|
|
<el-button
|
|
|
+ v-if="checkDownload(scope.row)"
|
|
|
class="btn-primary"
|
|
|
type="text"
|
|
|
:disabled="downloading"
|
|
|
@click="toDownload(scope.row)"
|
|
|
>下载</el-button
|
|
|
>
|
|
|
- <upload-button
|
|
|
- v-if="checkUpload(scope.row)"
|
|
|
- btn-content="上传"
|
|
|
- btn-type="success"
|
|
|
- :upload-url="uploadUrl"
|
|
|
- :upload-data="{ id: scope.row.id }"
|
|
|
- :format="['xls', 'xlsx']"
|
|
|
- accept=".xls,.xlsx"
|
|
|
- @valid-error="validError"
|
|
|
- @upload-success="uploadSuccess"
|
|
|
+ <el-button
|
|
|
+ v-if="checkDownloadUrl(scope.row)"
|
|
|
+ class="btn-primary"
|
|
|
+ type="text"
|
|
|
+ @click="toDownloadUrl(scope.row)"
|
|
|
+ >下载</el-button
|
|
|
>
|
|
|
- </upload-button>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
</el-table>
|
|
@@ -87,6 +97,16 @@
|
|
|
:course="course"
|
|
|
@modified="getList"
|
|
|
></add-document-dialog>
|
|
|
+ <!-- ScoreReportPreview -->
|
|
|
+ <score-report-preview
|
|
|
+ ref="ScoreReportPreview"
|
|
|
+ :instance="reportParams"
|
|
|
+ ></score-report-preview>
|
|
|
+ <!-- PaperApproveTable -->
|
|
|
+ <paper-approve-table
|
|
|
+ :instance="course"
|
|
|
+ ref="PaperApproveTable"
|
|
|
+ ></paper-approve-table>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
@@ -94,6 +114,9 @@
|
|
|
import { downloadByApi } from "@/plugins/download";
|
|
|
import { documentListPage, documentDownload, documentDelete } from "../api";
|
|
|
import AddDocumentDialog from "./AddDocumentDialog.vue";
|
|
|
+import UploadButton from "@/components/UploadButton.vue";
|
|
|
+import ScoreReportPreview from "@/modules/mark/components/ScoreReportPreview.vue";
|
|
|
+import PaperApproveTable from "@/modules/exam/components/PaperApproveTable.vue";
|
|
|
|
|
|
/*
|
|
|
SYLLABUS("课程教学大纲", 1),
|
|
@@ -113,7 +136,12 @@ CUSTOM("自定义", 13),
|
|
|
|
|
|
export default {
|
|
|
name: "course-document-detail",
|
|
|
- components: { AddDocumentDialog },
|
|
|
+ components: {
|
|
|
+ AddDocumentDialog,
|
|
|
+ UploadButton,
|
|
|
+ ScoreReportPreview,
|
|
|
+ PaperApproveTable,
|
|
|
+ },
|
|
|
props: {
|
|
|
course: {
|
|
|
type: Object,
|
|
@@ -128,7 +156,10 @@ export default {
|
|
|
dataList: [],
|
|
|
curRow: {},
|
|
|
downloading: false,
|
|
|
- uploadUrl: "/api/admin/mark/archive/document/save",
|
|
|
+ uploadUrl: "/api/admin/mark/archive/document/import",
|
|
|
+ reportParams: {},
|
|
|
+ curExamTask: {},
|
|
|
+ format: ["docx", "doc", "xlsx", "xls", "pdf", "jpg", "png", "zip"],
|
|
|
};
|
|
|
},
|
|
|
methods: {
|
|
@@ -139,21 +170,29 @@ export default {
|
|
|
this.modalIsShow = true;
|
|
|
},
|
|
|
checkView(row) {
|
|
|
- return [
|
|
|
- "PAPER",
|
|
|
- "ANSWER",
|
|
|
- "PAPER_REPORT",
|
|
|
- "APPROVE_RECORD",
|
|
|
- "SCORE_REPORT",
|
|
|
- "SIGN",
|
|
|
- "CHECK_IN",
|
|
|
- ].includes(row.code);
|
|
|
+ return ["PAPER", "ANSWER", "APPROVE_RECORD", "SCORE_REPORT"].includes(
|
|
|
+ row.type
|
|
|
+ );
|
|
|
},
|
|
|
checkDelete(row) {
|
|
|
- return ["CUSTOM"].includes(row.code);
|
|
|
+ return ["CUSTOM"].includes(row.type);
|
|
|
},
|
|
|
checkUpload(row) {
|
|
|
- return ["SYLLABUS", "PROCESS_SCORE"].includes(row.code);
|
|
|
+ return ["SYLLABUS", "PROCESS_SCORE", "PAPER_REPORT", "CHECK_IN"].includes(
|
|
|
+ row.type
|
|
|
+ );
|
|
|
+ },
|
|
|
+ checkDownload(row) {
|
|
|
+ return ["SCORE", "SHEET", "TRACK", "SIGN"].includes(row.type);
|
|
|
+ },
|
|
|
+ checkDownloadUrl(row) {
|
|
|
+ return [
|
|
|
+ "SYLLABUS",
|
|
|
+ "PROCESS_SCORE",
|
|
|
+ "PAPER_REPORT",
|
|
|
+ "CHECK_IN",
|
|
|
+ "CUSTOM",
|
|
|
+ ].includes(row.type);
|
|
|
},
|
|
|
async getList() {
|
|
|
const datas = {
|
|
@@ -164,12 +203,30 @@ export default {
|
|
|
this.dataList = res || [];
|
|
|
},
|
|
|
toView(row) {
|
|
|
- if (!row.url) {
|
|
|
- this.$message.error("当前无文档可预览");
|
|
|
+ // 试卷审批记录
|
|
|
+ if (row.type === "APPROVE_RECORD") {
|
|
|
+ this.$refs.PaperApproveTable.open();
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ // 学生期末考试成绩分析
|
|
|
+ if (row.type === "SCORE_REPORT") {
|
|
|
+ this.reportParams = {
|
|
|
+ ...this.course,
|
|
|
+ filter: {},
|
|
|
+ };
|
|
|
+ this.$refs.ScoreReportPreview.open();
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- window.open(row.url);
|
|
|
+ this.toDownloadUrl(row);
|
|
|
+ },
|
|
|
+ toDownloadUrl(row) {
|
|
|
+ if (!row.filePath) {
|
|
|
+ this.$message.error("当前无文档可下载");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ window.open(row.filePath);
|
|
|
},
|
|
|
async toDownload(row) {
|
|
|
if (this.downloading) return;
|
|
@@ -200,16 +257,12 @@ export default {
|
|
|
.catch(() => {});
|
|
|
},
|
|
|
// upload
|
|
|
- toUpload(row) {
|
|
|
- this.uploadData = { id: row.id };
|
|
|
- },
|
|
|
validError(errorData) {
|
|
|
this.$message.error(errorData.message);
|
|
|
},
|
|
|
uploadSuccess(data) {
|
|
|
- this.$message.success(data.data || "课程导入成功!");
|
|
|
- this.$emit("modified");
|
|
|
- this.cancel();
|
|
|
+ this.$message.success(data.data || "文档上传成功!");
|
|
|
+ this.getList();
|
|
|
},
|
|
|
},
|
|
|
};
|