|
@@ -1,55 +1,97 @@
|
|
|
<template>
|
|
|
<div class="home-page">
|
|
|
- <div v-if="hasWaitTaskPrivilege" class="tab-summary">
|
|
|
- <div class="tab-summary-item">
|
|
|
- <i v-if="summary.waitTaskCount" class="tab-summary-rp"></i>
|
|
|
- <i class="tab-summary-icon icon icon-wait"></i>
|
|
|
- <h4 class="tab-summary-title">待办任务</h4>
|
|
|
- <p class="tab-summary-cont">{{ summary.waitTaskCount }}</p>
|
|
|
- </div>
|
|
|
- <div class="tab-summary-item">
|
|
|
- <i class="tab-summary-icon icon icon-done"></i>
|
|
|
- <h4 class="tab-summary-title">已办任务</h4>
|
|
|
- <p class="tab-summary-cont">{{ summary.doneTaskCount }}</p>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div v-if="shortcutList.length" class="tab-box tab-shortcut">
|
|
|
- <h2 class="tab-box-title">快捷入口</h2>
|
|
|
- <div class="tab-box-body shortcut-list">
|
|
|
- <div
|
|
|
- v-for="(item, ind) in shortcutList"
|
|
|
- :key="ind"
|
|
|
- class="shortcut-item"
|
|
|
- @click="toMenu(item)"
|
|
|
- >
|
|
|
- <div class="shortcut-icon"><i :class="['icon', item.icon]"></i></div>
|
|
|
- <div class="shortcut-name">{{ item.name }}</div>
|
|
|
+ <div class="hp-top">
|
|
|
+ <div v-if="hasWaitTaskPrivilege" class="hp-top-left">
|
|
|
+ <el-row class="tab-summary" type="flex" :gutter="10">
|
|
|
+ <el-col :span="12">
|
|
|
+ <div class="tab-summary-item">
|
|
|
+ <i class="tab-summary-icon icon icon-wait-task"></i>
|
|
|
+ <h4 class="tab-summary-title">待办任务</h4>
|
|
|
+ <p class="tab-summary-cont">{{ summary.waitTaskCount }}</p>
|
|
|
+ </div>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <div class="tab-summary-item item-done">
|
|
|
+ <i class="tab-summary-icon icon icon-done-task"></i>
|
|
|
+ <h4 class="tab-summary-title">已办任务</h4>
|
|
|
+ <p class="tab-summary-cont">{{ summary.doneTaskCount }}</p>
|
|
|
+ </div>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <div class="tab-box tab-task">
|
|
|
+ <h2 class="tab-box-title">待办任务</h2>
|
|
|
+ <div class="tab-box-body tab-task-list">
|
|
|
+ <div
|
|
|
+ v-for="item in waitTaskList"
|
|
|
+ :key="item.id"
|
|
|
+ class="tab-task-item"
|
|
|
+ >
|
|
|
+ <div :class="['tab-task-item-type', `type-${item.type}`]">
|
|
|
+ {{ typeNames[item.type] }}
|
|
|
+ </div>
|
|
|
+ <div
|
|
|
+ class="tab-task-item-cont"
|
|
|
+ title="立即处理"
|
|
|
+ @click="toDo(item)"
|
|
|
+ >
|
|
|
+ {{ item.content }}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</div>
|
|
|
- </div>
|
|
|
- <div v-if="hasWaitTaskPrivilege" class="tab-box tab-task">
|
|
|
- <h2 class="tab-box-title">代办任务</h2>
|
|
|
- <div class="tab-box-body tab-task-list">
|
|
|
- <div v-for="item in waitTaskList" :key="item.id" class="tab-task-item">
|
|
|
- <div :class="['tab-task-item-type', `type-${item.type}`]">
|
|
|
- {{ typeNames[item.type] }}
|
|
|
- </div>
|
|
|
- <div class="tab-task-item-cont">{{ item.content }}</div>
|
|
|
- <div class="tab-task-item-action action-column">
|
|
|
- <el-button
|
|
|
- class="btn-primary"
|
|
|
- size="small"
|
|
|
- type="text"
|
|
|
- @click="toDo(item)"
|
|
|
- >立即处理</el-button
|
|
|
- >
|
|
|
+ <div v-if="shortcutList.length" class="tab-box tab-shortcut hp-top-right">
|
|
|
+ <h2 class="tab-box-title">快捷入口</h2>
|
|
|
+ <div class="tab-box-body shortcut-list">
|
|
|
+ <div
|
|
|
+ v-for="(item, ind) in shortcutList"
|
|
|
+ :key="ind"
|
|
|
+ class="shortcut-item"
|
|
|
+ @click="toMenu(item)"
|
|
|
+ >
|
|
|
+ <i :class="['icon', item.icon]"></i>
|
|
|
+ <span class="shortcut-name">{{ item.name }}</span>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
+
|
|
|
<div class="tab-box tab-guide">
|
|
|
<h2 class="tab-box-title">业务引导图</h2>
|
|
|
- <div class="tab-box-body"></div>
|
|
|
+ <div class="tab-box-body guide-map">
|
|
|
+ <div class="guide-item">
|
|
|
+ <div class="guide-spin">命题组卷</div>
|
|
|
+ </div>
|
|
|
+ <div class="guide-item">
|
|
|
+ <div class="guide-spin spin-large spin-light">试卷题卡线上审核</div>
|
|
|
+ </div>
|
|
|
+ <div class="guide-item guide-island">
|
|
|
+ <div class="island-item island-top">
|
|
|
+ <h4 class="island-title">线上考试</h4>
|
|
|
+ <div class="island-cont">
|
|
|
+ <div class="island-btn">
|
|
|
+ AI防作弊考试 / 集中无纸化机考
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="island-item island-bottom">
|
|
|
+ <h4 class="island-title">线下考试</h4>
|
|
|
+ <div class="island-cont">
|
|
|
+ <div class="island-btn">印刷+智能分拣</div>
|
|
|
+ <div class="island-btn">高速扫描</div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="guide-item">
|
|
|
+ <div class="guide-spin spin-small">阅卷</div>
|
|
|
+ </div>
|
|
|
+ <div class="guide-item">
|
|
|
+ <div class="guide-spin spin-light">教研分析</div>
|
|
|
+ </div>
|
|
|
+ <div class="guide-item">
|
|
|
+ <div class="guide-spin">归档管理</div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</template>
|
|
@@ -75,6 +117,7 @@ export default {
|
|
|
doneTaskCount: 0
|
|
|
},
|
|
|
shortcutList: [],
|
|
|
+ taskList: [[], [], []],
|
|
|
waitTaskList: [],
|
|
|
waitTaskFilter: {
|
|
|
pageNumber: 1,
|
|
@@ -148,10 +191,25 @@ export default {
|
|
|
await this.updateWaitTaskCount();
|
|
|
this.summary.waitTaskCount = this.waitTaskCount;
|
|
|
|
|
|
- this.waitTaskList = [];
|
|
|
- this.getFlowWaitTaskList();
|
|
|
- this.getStmmsWaitTaskList();
|
|
|
- this.getAnalysisWaitTaskList();
|
|
|
+ await this.getFlowWaitTaskList();
|
|
|
+ await this.getStmmsWaitTaskList();
|
|
|
+ await this.getAnalysisWaitTaskList();
|
|
|
+ this.getWaitTaskList();
|
|
|
+ },
|
|
|
+ getWaitTaskList() {
|
|
|
+ let waitTaskList = [];
|
|
|
+ const hasAllTypeTask = !this.taskList.some(item => !item.length);
|
|
|
+ if (hasAllTypeTask) {
|
|
|
+ this.taskList.forEach(item => {
|
|
|
+ waitTaskList.push(item[0]);
|
|
|
+ });
|
|
|
+ this.waitTaskList = waitTaskList;
|
|
|
+ } else {
|
|
|
+ this.taskList.forEach(item => {
|
|
|
+ waitTaskList.push(...item);
|
|
|
+ });
|
|
|
+ this.waitTaskList = waitTaskList.slice(0, 3);
|
|
|
+ }
|
|
|
},
|
|
|
async getFlowWaitTaskList() {
|
|
|
const data = await waitExamTaskListPage(this.waitTaskFilter);
|
|
@@ -163,7 +221,7 @@ export default {
|
|
|
content: `${flowTaskName},试卷编号${item.paperNumber},${item.courseName}(${item.courseCode})`
|
|
|
};
|
|
|
});
|
|
|
- this.waitTaskList.push(...dataList);
|
|
|
+ this.taskList[0] = dataList;
|
|
|
},
|
|
|
async getStmmsWaitTaskList() {
|
|
|
const data = await stmmsTaskListPage(this.waitTaskFilter);
|
|
@@ -174,7 +232,7 @@ export default {
|
|
|
content: `${item.thirdRelateName}(${item.thirdRelateId}),试卷编号${paperNumber},${item.paperType}`
|
|
|
};
|
|
|
});
|
|
|
- this.waitTaskList.push(...dataList);
|
|
|
+ this.taskList[1] = dataList;
|
|
|
},
|
|
|
async getAnalysisWaitTaskList() {
|
|
|
const data = await analysisTaskListPage(this.waitTaskFilter);
|
|
@@ -185,7 +243,7 @@ export default {
|
|
|
content: `${item.semesterName},${item.examName},${item.courseName}(${item.courseCode})`
|
|
|
};
|
|
|
});
|
|
|
- this.waitTaskList.push(...dataList);
|
|
|
+ this.taskList[2] = dataList;
|
|
|
},
|
|
|
toMenu(item) {
|
|
|
this.$router.push({
|