|
@@ -9,15 +9,15 @@
|
|
|
<el-table ref="TableList" :data="dataList">
|
|
|
<el-table-column prop="courseCode" label="课程代码"></el-table-column>
|
|
|
<el-table-column prop="courseName" label="课程名称"> </el-table-column>
|
|
|
- <el-table-column prop="firstName" label="一级知识维度">
|
|
|
+ <el-table-column prop="namePrimary" label="一级知识维度">
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="firstCode" label="一级维度编号">
|
|
|
+ <el-table-column prop="codePrimary" label="一级维度编号">
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="secondName" label="二级知识维度">
|
|
|
+ <el-table-column prop="nameSecond" label="二级知识维度">
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="secondCode" label="二级维度编号">
|
|
|
+ <el-table-column prop="codeSecond" label="二级维度编号">
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="firsetNameDesc" label="一级维度术语解释">
|
|
|
+ <el-table-column prop="interpretation" label="一级维度术语解释">
|
|
|
</el-table-column>
|
|
|
<el-table-column
|
|
|
class-name="action-column"
|
|
@@ -64,8 +64,8 @@
|
|
|
title="上传文件"
|
|
|
:upload-url="uploadUrl"
|
|
|
:upload-data="uploadData"
|
|
|
- :download-url="downloadUrl"
|
|
|
- :download-filename="downloadFilename"
|
|
|
+ :download-handle="downloadHandle"
|
|
|
+ download-filename="知识维度模板"
|
|
|
:format="['xls', 'xlsx']"
|
|
|
@upload-success="fileUploaded"
|
|
|
>
|
|
@@ -82,8 +82,8 @@
|
|
|
|
|
|
<script>
|
|
|
import ImportFile from "@/components/ImportFile";
|
|
|
-import dimenData from "./dimenData";
|
|
|
import ModifyKnowledgeDim from "./ModifyKnowledgeDim.vue";
|
|
|
+import { paperDimensionExport, paperDimensionList } from "../../api";
|
|
|
|
|
|
export default {
|
|
|
name: "dimension-knowledge-list",
|
|
@@ -94,40 +94,56 @@ export default {
|
|
|
default() {
|
|
|
return {};
|
|
|
}
|
|
|
+ },
|
|
|
+ datas: {
|
|
|
+ type: Object,
|
|
|
+ default() {
|
|
|
+ return {};
|
|
|
+ }
|
|
|
}
|
|
|
},
|
|
|
data() {
|
|
|
return {
|
|
|
- dataList: dimenData,
|
|
|
- // dataList: [],
|
|
|
+ dataList: [],
|
|
|
dataDict: [],
|
|
|
curRow: {},
|
|
|
loading: false,
|
|
|
// upload
|
|
|
uploadUrl: "/api/admin/grade/paper/dimension/import",
|
|
|
- downloadUrl: "/path/要下载的文件.xls",
|
|
|
- downloadFilename: "要下载的文件.xls",
|
|
|
- uploadData: {}
|
|
|
+ uploadData: {},
|
|
|
+ downloading: false
|
|
|
};
|
|
|
},
|
|
|
mounted() {
|
|
|
- this.getDict();
|
|
|
+ this.initData();
|
|
|
},
|
|
|
methods: {
|
|
|
- getList() {},
|
|
|
+ initData() {
|
|
|
+ this.dataList = this.datas.map(item => {
|
|
|
+ return { ...item };
|
|
|
+ });
|
|
|
+ this.sortDataList();
|
|
|
+ this.getDict();
|
|
|
+ this.uploadData = {
|
|
|
+ paperNumber: this.course.paperNumber,
|
|
|
+ paperType: this.course.paperType,
|
|
|
+ paperName: this.course.paperName,
|
|
|
+ dimensionType: "KNOWLEDGE"
|
|
|
+ };
|
|
|
+ },
|
|
|
getDict() {
|
|
|
let dataDict = {};
|
|
|
this.dataList.forEach(item => {
|
|
|
- if (!dataDict[item.firstCode]) {
|
|
|
- dataDict[item.firstCode] = {
|
|
|
- name: item.firstName,
|
|
|
- code: item.firstCode,
|
|
|
+ if (!dataDict[item.codePrimary]) {
|
|
|
+ dataDict[item.codePrimary] = {
|
|
|
+ name: item.namePrimary,
|
|
|
+ code: item.codePrimary,
|
|
|
children: []
|
|
|
};
|
|
|
}
|
|
|
- dataDict[item.firstCode].children.push({
|
|
|
- name: item.secondName,
|
|
|
- code: item.secondCode
|
|
|
+ dataDict[item.codePrimary].children.push({
|
|
|
+ name: item.nameSecond,
|
|
|
+ code: item.codeSecond
|
|
|
});
|
|
|
});
|
|
|
this.dataDict = Object.values(dataDict);
|
|
@@ -135,13 +151,58 @@ export default {
|
|
|
toImport() {
|
|
|
this.$refs.ImportFile.open();
|
|
|
},
|
|
|
- fileUploaded() {
|
|
|
+ async downloadHandle() {
|
|
|
+ if (this.downloading) return;
|
|
|
+ this.downloading = true;
|
|
|
+
|
|
|
+ const res = await downloadByApi(() => {
|
|
|
+ return paperDimensionExport({
|
|
|
+ courseCode: this.course.courseCode,
|
|
|
+ courseName: this.course.courseName,
|
|
|
+ dimensionType: "KNOWLEDGE"
|
|
|
+ });
|
|
|
+ }).catch(e => {
|
|
|
+ this.$message.error(e || "下载失败,请重新尝试!");
|
|
|
+ });
|
|
|
+ this.downloading = false;
|
|
|
+
|
|
|
+ if (!res) return;
|
|
|
+ this.$message.success("下载成功!");
|
|
|
+ },
|
|
|
+ async fileUploaded() {
|
|
|
this.$message.success("导入成功!");
|
|
|
- this.getList();
|
|
|
+ const data = await paperDimensionList({
|
|
|
+ paperNumber: this.course.paperNumber,
|
|
|
+ paperType: this.course.paperType
|
|
|
+ });
|
|
|
+ this.dataList = data
|
|
|
+ .filter(item => item.dimensionType === "KNOWLEDGE")
|
|
|
+ .map(item => {
|
|
|
+ return { ...item, id: this.$randomCode() };
|
|
|
+ });
|
|
|
+ this.sortDataList();
|
|
|
+ this.emitChange();
|
|
|
},
|
|
|
modified(data) {
|
|
|
- this.dataList.push(data);
|
|
|
- // TODO:排序
|
|
|
+ if (data.id) {
|
|
|
+ const pos = this.dataList.findIndex(item => item.id === data.id);
|
|
|
+ this.dataList.splice(pos, 1, data);
|
|
|
+ } else {
|
|
|
+ this.dataList.push(data);
|
|
|
+ this.sortDataList();
|
|
|
+ }
|
|
|
+ this.emitChange();
|
|
|
+ },
|
|
|
+ sortDataList() {
|
|
|
+ this.dataList.sort((a, b) => {
|
|
|
+ if (a.codePrimary < b.codePrimary) return -1;
|
|
|
+ if (a.codePrimary > b.codePrimary) return 1;
|
|
|
+
|
|
|
+ const anoSecond = a.codeSecond.substring(1) * 1;
|
|
|
+ const bnoSecond = b.codeSecond.substring(1) * 1;
|
|
|
+
|
|
|
+ return anoSecond < bnoSecond ? -1 : 1;
|
|
|
+ });
|
|
|
},
|
|
|
toAdd() {
|
|
|
this.curRow = {
|
|
@@ -156,28 +217,34 @@ export default {
|
|
|
},
|
|
|
toDelete({ $index }) {
|
|
|
this.dataList.splice($index, 1);
|
|
|
+ this.emitChange();
|
|
|
},
|
|
|
toUp({ row, $index }) {
|
|
|
const pos = $index;
|
|
|
const rowSecondInd = row.secondInd;
|
|
|
- const rowFirstCode = row.firstCode;
|
|
|
+ const rowFirstCode = row.codePrimary;
|
|
|
this.dataList.splice(pos, 1);
|
|
|
this.dataList.splice(pos - 1, 0, row);
|
|
|
this.dataList[pos - 1].secondInd = rowSecondInd - 1;
|
|
|
- this.dataList[pos - 1].secondCode = `${rowFirstCode}${rowSecondInd - 1}`;
|
|
|
+ this.dataList[pos - 1].codeSecond = `${rowFirstCode}${rowSecondInd - 1}`;
|
|
|
this.dataList[pos].secondInd = rowSecondInd;
|
|
|
- this.dataList[pos].secondCode = `${rowFirstCode}${rowSecondInd}`;
|
|
|
+ this.dataList[pos].codeSecond = `${rowFirstCode}${rowSecondInd}`;
|
|
|
+ this.emitChange();
|
|
|
},
|
|
|
toDown({ row, $index }) {
|
|
|
const pos = $index;
|
|
|
const rowSecondInd = row.secondInd;
|
|
|
- const rowFirstCode = row.firstCode;
|
|
|
+ const rowFirstCode = row.codePrimary;
|
|
|
this.dataList.splice(pos, 1);
|
|
|
this.dataList.splice(pos, 0, row);
|
|
|
this.dataList[pos + 1].secondInd = rowSecondInd + 1;
|
|
|
- this.dataList[pos + 1].secondCode = `${rowFirstCode}${rowSecondInd + 1}`;
|
|
|
+ this.dataList[pos + 1].codeSecond = `${rowFirstCode}${rowSecondInd + 1}`;
|
|
|
this.dataList[pos].secondInd = rowSecondInd;
|
|
|
- this.dataList[pos].secondCode = `${rowFirstCode}${rowSecondInd}`;
|
|
|
+ this.dataList[pos].codeSecond = `${rowFirstCode}${rowSecondInd}`;
|
|
|
+ this.emitChange();
|
|
|
+ },
|
|
|
+ emitChange() {
|
|
|
+ this.$emit("data-change", this.dataList);
|
|
|
}
|
|
|
}
|
|
|
};
|