|
|
@@ -1,155 +1,248 @@
|
|
|
<template>
|
|
|
- <div>
|
|
|
- <h1>题目审查</h1>
|
|
|
- <el-tabs v-model="activeName" @tab-click="handleClick">
|
|
|
- <el-tab-pane label="未审核" name="checking">
|
|
|
- <div class="el-pagination-body">
|
|
|
- <el-pagination
|
|
|
- @size-change="handleSizeChange"
|
|
|
- @current-change="handleCurrentChange(currentPage, questionList, 'CHECKING')"
|
|
|
- :current-page="currentPage"
|
|
|
- :page-sizes="[5, 10, 15, 20]"
|
|
|
- :page-size="pageSize"
|
|
|
- layout="total, sizes, prev, pager, next, jumper"
|
|
|
- :total=this.totalNum
|
|
|
- v-if="this.questionList.length !== 0"
|
|
|
- >
|
|
|
- </el-pagination>
|
|
|
- </div>
|
|
|
- <div>
|
|
|
- <checkQuestionCard v-for="(item, index) in questionList"
|
|
|
- :questionvo="item"
|
|
|
- :key="item.id"
|
|
|
- :cur-num="index+(currentPage-1)*pageSize"
|
|
|
- :total-num="totalNum"
|
|
|
- @approved="handleApproved(item)"
|
|
|
- ></checkQuestionCard>
|
|
|
- </div>
|
|
|
- </el-tab-pane>
|
|
|
- <el-tab-pane label="未通过" name="refused">
|
|
|
- <div class="el-pagination-body">
|
|
|
- <el-pagination
|
|
|
- @size-change="handleSizeChange"
|
|
|
- @current-change="handleCurrentChange(refusedCurrentPage, refusedQuestionList, 'REFUSED')"
|
|
|
- :current-page="refusedCurrentPage"
|
|
|
- :page-sizes="[5, 10, 15, 20]"
|
|
|
- :page-size="pageSize"
|
|
|
- layout="total, sizes, prev, pager, next, jumper"
|
|
|
- :total=refusedTotalNum
|
|
|
- v-if="refusedQuestionList.length !== 0"
|
|
|
- >
|
|
|
- </el-pagination>
|
|
|
- </div>
|
|
|
- <div>
|
|
|
- <checkQuestionCard v-for="(item, index) in refusedQuestionList"
|
|
|
- :questionvo="item"
|
|
|
- :key="item.id"
|
|
|
- :cur-num="index+(refusedCurrentPage-1)*pageSize"
|
|
|
- :total-num="refusedTotalNum"
|
|
|
- @approved="handleApproved(item, refusedQuestionList)"
|
|
|
- ></checkQuestionCard>
|
|
|
- </div>
|
|
|
- </el-tab-pane>
|
|
|
- </el-tabs>
|
|
|
-
|
|
|
- </div>
|
|
|
+ <div>
|
|
|
+ <h1>题目审查</h1>
|
|
|
+ <el-tabs v-model="activeName" @tab-click="handleClick">
|
|
|
+ <el-tab-pane label="新建审核" name="create">
|
|
|
+ <el-pagination
|
|
|
+ @size-change="handleSizeChange"
|
|
|
+ @current-change="handleCurrentChange(createCurrentPage, createQuestionList, 'CHECKING')"
|
|
|
+ :current-page="createCurrentPage"
|
|
|
+ :page-sizes="[5, 10, 15, 20]"
|
|
|
+ :page-size="pageSize"
|
|
|
+ layout="total, sizes, prev, pager, next, jumper"
|
|
|
+ :total=this.createTotalNum
|
|
|
+ v-if="this.createQuestionList.length !== 0"
|
|
|
+ />
|
|
|
+ <creating-question-card
|
|
|
+ v-for="(item, index) in createQuestionList"
|
|
|
+ :question-v-o="item"
|
|
|
+ :key="item.id"
|
|
|
+ :cur-num="index+(createCurrentPage-1)*pageSize"
|
|
|
+ :total-num="createTotalNum"
|
|
|
+ @approve="handleApproved(item, createQuestionList)"
|
|
|
+ />
|
|
|
+ </el-tab-pane>
|
|
|
+
|
|
|
+ <el-tab-pane label="更新审核" name="update">
|
|
|
+ <!--todo: 设计UpdateQuestionCard并且在这里应用-->
|
|
|
+ <el-pagination
|
|
|
+ @size-change="handleSizeChange"
|
|
|
+ @current-change="handleCurrentChange(updateCurrentPage, updateQuestionList, 'UPDATE')"
|
|
|
+ :current-page="updateCurrentPage"
|
|
|
+ :page-sizes="[5, 10, 15, 20]"
|
|
|
+ :page-size="pageSize"
|
|
|
+ layout="total, sizes, prev, pager, next, jumper"
|
|
|
+ :total=updateTotalNum
|
|
|
+ v-if="updateQuestionList.length !== 0"
|
|
|
+ />
|
|
|
+ <updating-question-card
|
|
|
+ v-for="(item, index) in updateQuestionList"
|
|
|
+ :old-question-v-o="item.oldQuestionVO"
|
|
|
+ :new-question-v-o="item.newQuestionVO"
|
|
|
+ :key="item.id"
|
|
|
+ :cur-num="index+(updateCurrentPage-1)*pageSize"
|
|
|
+ :total-num="updateTotalNum"
|
|
|
+ />
|
|
|
+ </el-tab-pane>
|
|
|
+
|
|
|
+ <el-tab-pane label="审核失败" name="refuse">
|
|
|
+ <!--todo: 设计RefuseQuestionCard并且在这里应用-->
|
|
|
+ </el-tab-pane>
|
|
|
+
|
|
|
+ <el-tab-pane label="删除审核" name="execute">
|
|
|
+ <!--todo: 设计DeleteQuestionCard并且在这里应用-->
|
|
|
+ <el-pagination
|
|
|
+ @size-change="handleSizeChange"
|
|
|
+ @current-change="handleCurrentChange(executeCurrentPage, executeQuestionList, 'EXECUTED')"
|
|
|
+ :current-page="executeCurrentPage"
|
|
|
+ :page-sizes="[5, 10, 15, 20]"
|
|
|
+ :page-size="pageSize"
|
|
|
+ layout="total, sizes, prev, pager, next, jumper"
|
|
|
+ :total=executeTotalNum
|
|
|
+ v-if="executeQuestionList.length !== 0"
|
|
|
+ />
|
|
|
+ <executing-question-card v-for="(item, index) in executeQuestionList"
|
|
|
+ :question-v-o="item"
|
|
|
+ :key="item.id"
|
|
|
+ :cur-num="index+(executeCurrentPage-1)*pageSize"
|
|
|
+ :total-num="executeTotalNum"
|
|
|
+ />
|
|
|
+ </el-tab-pane>
|
|
|
+
|
|
|
+ <el-tab-pane label="删除完成" name="delete">
|
|
|
+ <!--todo: 设计DeleteQuestionCard并且在这里应用-->
|
|
|
+ <el-pagination
|
|
|
+ @size-change="handleSizeChange"
|
|
|
+ @current-change="handleCurrentChange(deleteCurrentPage, deleteQuestionList, 'DELETED')"
|
|
|
+ :current-page="deleteCurrentPage"
|
|
|
+ :page-sizes="[5, 10, 15, 20]"
|
|
|
+ :page-size="pageSize"
|
|
|
+ layout="total, sizes, prev, pager, next, jumper"
|
|
|
+ :total=deleteTotalNum
|
|
|
+ v-if="deleteQuestionList.length !== 0"
|
|
|
+ />
|
|
|
+ <deleted-question-card v-for="(item, index) in deleteQuestionList"
|
|
|
+ :question-v-o="item"
|
|
|
+ :key="item.id"
|
|
|
+ :cur-num="index+(deleteCurrentPage-1)*pageSize"
|
|
|
+ :total-num="deleteTotalNum"
|
|
|
+ />
|
|
|
+ </el-tab-pane>
|
|
|
+ </el-tabs>
|
|
|
+ </div>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
import checkQuestionCard from "../../../components/checkQuestionCard";
|
|
|
+import CreatingQuestionCard from "@/components/QuestionCard/CreatingQuestionCard";
|
|
|
+import * as mockApi from "@/api/mock";
|
|
|
+import UpdatingQuestionCard from "@/components/QuestionCard/UpdatingQuestionCard";
|
|
|
+import ExecutingQuestionCard from "@/components/QuestionCard/ExecutingQuestionCard";
|
|
|
+import DeletedQuestionCard from "@/components/QuestionCard/DeletedQuestionCard";
|
|
|
|
|
|
export default {
|
|
|
- name: "Check",
|
|
|
- components: {
|
|
|
- checkQuestionCard,
|
|
|
- },
|
|
|
- data() {
|
|
|
- return {
|
|
|
- questionList: [],
|
|
|
- currentPage: 1,
|
|
|
- pageSize: 20,
|
|
|
- totalNum: 0,
|
|
|
-
|
|
|
- // 分页所需数据
|
|
|
- activeName: "checking",
|
|
|
-
|
|
|
- // 未通过审核题目列表
|
|
|
- refusedQuestionList: [],
|
|
|
- refusedCurrentPage: 1,
|
|
|
- refusedTotalNum: 0,
|
|
|
- }
|
|
|
+ name: "Check",
|
|
|
+ components: {
|
|
|
+ DeletedQuestionCard,
|
|
|
+ checkQuestionCard,
|
|
|
+ CreatingQuestionCard,
|
|
|
+ UpdatingQuestionCard,
|
|
|
+ ExecutingQuestionCard,
|
|
|
+ },
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ pageSize: 20,
|
|
|
+
|
|
|
+ // 分页所需数据
|
|
|
+ activeName: "create",
|
|
|
+
|
|
|
+ // 新建审核题目列表
|
|
|
+ createQuestionList: [],
|
|
|
+ createCurrentPage: 1,
|
|
|
+ createTotalNum: 0,
|
|
|
+
|
|
|
+ // 审核失败题目列表
|
|
|
+ refuseQuestionList: [],
|
|
|
+ refuseCurrentPage: 1,
|
|
|
+ refuseTotalNum: 0,
|
|
|
+
|
|
|
+ // 更新审核题目列表
|
|
|
+ updateQuestionList: [],
|
|
|
+ updateCurrentPage: 1,
|
|
|
+ updateTotalNum: 0,
|
|
|
+
|
|
|
+ // 删除审核题目列表
|
|
|
+ executeQuestionList: [],
|
|
|
+ executeCurrentPage: 1,
|
|
|
+ executeTotalNum: 0,
|
|
|
+
|
|
|
+ // 删除完成题目列表
|
|
|
+ deleteQuestionList: [],
|
|
|
+ deleteCurrentPage: 1,
|
|
|
+ deleteTotalNum: 0,
|
|
|
+ }
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+
|
|
|
+ handleSizeChange(val) {
|
|
|
+ console.log(`QuestionRepository/index-handleSizeChange 每页 ${val} 条`);
|
|
|
+ this.pageSize = val;
|
|
|
},
|
|
|
- methods: {
|
|
|
- handleSizeChange(val) {
|
|
|
- console.log(`QuestionRepository/index-handleSizeChange 每页 ${val} 条`);
|
|
|
- this.pageSize = val;
|
|
|
- },
|
|
|
- handleCurrentChange(val, currentPage, questionList, states) { // 当点击新的页面时才请求新的数据
|
|
|
- console.log(`Check-handleCurrentChange 当前页: ${val}`);
|
|
|
- currentPage = val;
|
|
|
- this.$api.getStateQuestion(states, val - 1, this.pageSize)
|
|
|
- .then(res => {
|
|
|
- console.log("handleCurrentChange-check");
|
|
|
- console.log(res);
|
|
|
- questionList = res.data.result.content;
|
|
|
- }).catch(error => {
|
|
|
- console.log(error);
|
|
|
- })
|
|
|
- },
|
|
|
-
|
|
|
- // 切换分页
|
|
|
- handleClick(tab, event) {
|
|
|
- switch (tab.props.name){
|
|
|
- case "checking":
|
|
|
- this.$api.getStateQuestion(tab.props.name.toUpperCase(), 0, this.pageSize)
|
|
|
- .then(res => {
|
|
|
- console.log("getStateQuestion-CHECKING");
|
|
|
- console.log(res);
|
|
|
- this.questionList = res.data.result.content;
|
|
|
- this.totalNum = res.data.result.totalElements;
|
|
|
- }).catch(err => {
|
|
|
- console.log(err);
|
|
|
- })
|
|
|
- break;
|
|
|
- case "refused":
|
|
|
- this.$api.getStateQuestion(tab.props.name.toUpperCase(), 0, this.pageSize)
|
|
|
- .then(res => {
|
|
|
- console.log("getStateQuestion-REFUSED");
|
|
|
- console.log(res);
|
|
|
- this.refusedQuestionList = res.data.result.content;
|
|
|
- this.refusedTotalNum = res.data.result.totalElements;
|
|
|
- }).catch(err => {
|
|
|
- console.log(err);
|
|
|
- })
|
|
|
- break;
|
|
|
- }
|
|
|
- },
|
|
|
-
|
|
|
- // 处理题目审核通过
|
|
|
- handleApproved(item, questionList){
|
|
|
- questionList = questionList.filter(function (q, index){
|
|
|
- return q !== item
|
|
|
- })
|
|
|
- },
|
|
|
+ handleCurrentChange(val, currentPage, questionList, states) { // 当点击新的页面时才请求新的数据
|
|
|
+ console.log(`Check-handleCurrentChange 当前页: ${val}`);
|
|
|
+ currentPage = val;
|
|
|
+ this.$api.getStateQuestion(states, val - 1, this.pageSize)
|
|
|
+ .then(res => {
|
|
|
+ console.log("handleCurrentChange-check");
|
|
|
+ console.log(res);
|
|
|
+ questionList = res.data.result.content;
|
|
|
+ }).catch(error => {
|
|
|
+ console.log(error);
|
|
|
+ })
|
|
|
},
|
|
|
- mounted() {
|
|
|
- let states = "CHECKING"
|
|
|
- this.$api.getStateQuestion(states, 0, this.pageSize)
|
|
|
+
|
|
|
+ // 切换分页
|
|
|
+ handleClick(tab, event) {
|
|
|
+ const _this = this
|
|
|
+ switch (tab.props.name) {
|
|
|
+ // 新建审核
|
|
|
+ case "create":
|
|
|
+ // todo: 用真实代码替换mockjs
|
|
|
+ // this.$api.getStateQuestion(tab.props.name.toUpperCase(), 0, this.pageSize)
|
|
|
+ // .then(res => {
|
|
|
+ // // mjh change
|
|
|
+ // // console.log("getStateQuestion-CHECKING");
|
|
|
+ // // console.log(res);
|
|
|
+ // this.createQuestionList = res.data.result.content;
|
|
|
+ // this.createTotalNum = res.data.result.totalElements;
|
|
|
+ // })
|
|
|
+ // .catch(err => {
|
|
|
+ // console.log(err);
|
|
|
+ // })
|
|
|
+ mockApi.mockGetCreateQuestion().then().catch(err => {
|
|
|
+ _this.createQuestionList = err.data
|
|
|
+ _this.createTotalNum = err.data.length
|
|
|
+ })
|
|
|
+ break;
|
|
|
+ // 更新审核
|
|
|
+ case "update":
|
|
|
+ mockApi.mockGetUpdateQuestion().then().catch(err => {
|
|
|
+ _this.updateTotalNum = err.data.length;
|
|
|
+ _this.updateQuestionList = err.data
|
|
|
+ })
|
|
|
+ break;
|
|
|
+ // 审核失败
|
|
|
+ case "refuse":
|
|
|
+ this.$api.getStateQuestion(tab.props.name.toUpperCase(), 0, this.pageSize)
|
|
|
.then(res => {
|
|
|
- console.log("getStateQuestion-CHECKING");
|
|
|
- console.log(res);
|
|
|
- this.questionList = res.data.result.content;
|
|
|
- this.totalNum = res.data.result.totalElements;
|
|
|
+ console.log("getStateQuestion-REFUSED");
|
|
|
+ console.log(res);
|
|
|
+ this.refuseQuestionList = res.data.result.content;
|
|
|
+ this.refuseTotalNum = res.data.result.totalElements;
|
|
|
}).catch(err => {
|
|
|
console.log(err);
|
|
|
- })
|
|
|
- }
|
|
|
+ })
|
|
|
+ break;
|
|
|
+ // 删除审核
|
|
|
+ case "execute":
|
|
|
+ mockApi.mockGetExecuteQuestion().then().catch(err => {
|
|
|
+ console.log(err)
|
|
|
+ _this.executeTotalNum = err.data.length;
|
|
|
+ _this.executeQuestionList = err.data
|
|
|
+ })
|
|
|
+ break;
|
|
|
+ case "delete":
|
|
|
+ mockApi.mockGetExecuteQuestion().then().catch(err => {
|
|
|
+ console.log(err)
|
|
|
+ _this.deleteTotalNum = err.data.length;
|
|
|
+ _this.deleteQuestionList = err.data
|
|
|
+ })
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ // 处理题目审核通过
|
|
|
+ handleApproved(index, questionList) {
|
|
|
+ const _this = this
|
|
|
+ _this.$message({
|
|
|
+ type: "success",
|
|
|
+ message: "handle approved"
|
|
|
+ })
|
|
|
+ // todo: 更换真实代码后取消注释
|
|
|
+ // questionList.splice(index, 1)
|
|
|
+ },
|
|
|
+ },
|
|
|
+ mounted() {
|
|
|
+ this.handleClick({props: {name: "create"}}, null);
|
|
|
+ }
|
|
|
}
|
|
|
</script>
|
|
|
|
|
|
<style>
|
|
|
-.el-tabs__header{
|
|
|
- padding-left: 20px;
|
|
|
- padding-right: 20px;
|
|
|
+.el-tabs__header {
|
|
|
+ padding-left: 20px;
|
|
|
+ padding-right: 20px;
|
|
|
}
|
|
|
</style>
|