|
@@ -1,198 +1,200 @@
|
|
-<template>
|
|
|
|
- <Modal
|
|
|
|
- v-model="modalIsShow"
|
|
|
|
- class="leader-progress marker-modal"
|
|
|
|
- :title="title"
|
|
|
|
- footer-hide
|
|
|
|
- fullscreen
|
|
|
|
- :transition-names="['slide-left', 'fade']"
|
|
|
|
- @on-visible-change="visibleChange"
|
|
|
|
- >
|
|
|
|
- <div class="leader-progress-part">
|
|
|
|
- <h3>总体</h3>
|
|
|
|
- <table class="table table-dark">
|
|
|
|
- <colgroup>
|
|
|
|
- <col width="120" />
|
|
|
|
- <col width="390" />
|
|
|
|
- <col width="60" />
|
|
|
|
- </colgroup>
|
|
|
|
- <tr>
|
|
|
|
- <th>区域</th>
|
|
|
|
- <th>进度</th>
|
|
|
|
- <th></th>
|
|
|
|
- </tr>
|
|
|
|
- <tr v-for="(item, aindex) in areaProgress" :key="aindex">
|
|
|
|
- <td>{{ item.areaName }}</td>
|
|
|
|
- <td>
|
|
|
|
- <progress-line
|
|
|
|
- :sum="item.totalCount"
|
|
|
|
- :current="item.successCount"
|
|
|
|
- ></progress-line>
|
|
|
|
- </td>
|
|
|
|
- <td class="td-nopad">{{ item.progress }}%</td>
|
|
|
|
- </tr>
|
|
|
|
- </table>
|
|
|
|
- </div>
|
|
|
|
-
|
|
|
|
- <div v-if="kzzInfo.length && IS_LEVEL" class="leader-progress-part">
|
|
|
|
- <table class="table table-dark">
|
|
|
|
- <tr v-for="(user, uindex) in kzzInfo" :key="uindex">
|
|
|
|
- <td>科组长</td>
|
|
|
|
- <td>{{ user.loginName }}</td>
|
|
|
|
- <td>仲裁</td>
|
|
|
|
- <td>{{ user.arbitrated }}</td>
|
|
|
|
- </tr>
|
|
|
|
- </table>
|
|
|
|
- </div>
|
|
|
|
-
|
|
|
|
- <div
|
|
|
|
- v-for="(group, index) in groupMarkers"
|
|
|
|
- :key="index"
|
|
|
|
- class="leader-progress-part"
|
|
|
|
- >
|
|
|
|
- <div v-if="IS_LEVEL">
|
|
|
|
- <div v-for="(kzz, kindex) in group.kzzProgress" :key="kindex">
|
|
|
|
- 科组长:{{ kzz.loginName }},仲裁:{{ kzz.arbitrated }}
|
|
|
|
- </div>
|
|
|
|
- <table class="table table-dark">
|
|
|
|
- <colgroup>
|
|
|
|
- <col width="120" />
|
|
|
|
- <col width="310" />
|
|
|
|
- <col width="60" />
|
|
|
|
- <col width="80" />
|
|
|
|
- </colgroup>
|
|
|
|
- <tr>
|
|
|
|
- <th>评卷员</th>
|
|
|
|
- <th>进度</th>
|
|
|
|
- <th></th>
|
|
|
|
- <th>打回</th>
|
|
|
|
- </tr>
|
|
|
|
- <tr v-for="(item, aindex) in group.markerProgress" :key="aindex">
|
|
|
|
- <td>{{ item.loginName }}</td>
|
|
|
|
- <td>
|
|
|
|
- <progress-line
|
|
|
|
- :sum="item.totalCount"
|
|
|
|
- :current="item.successCount"
|
|
|
|
- ></progress-line>
|
|
|
|
- </td>
|
|
|
|
- <td class="td-nopad">{{ item.progress }}%</td>
|
|
|
|
- <td>{{ item.rejectedCount }}</td>
|
|
|
|
- </tr>
|
|
|
|
- </table>
|
|
|
|
- </div>
|
|
|
|
-
|
|
|
|
- <div v-if="IS_SCORE">
|
|
|
|
- <div v-for="(kzz, kindex) in group.kzzProgress" :key="kindex">
|
|
|
|
- 科组长:{{ kzz.loginName }}
|
|
|
|
- </div>
|
|
|
|
- <table class="table table-dark">
|
|
|
|
- <colgroup>
|
|
|
|
- <col width="120" />
|
|
|
|
- <col width="210" />
|
|
|
|
- <col width="60" />
|
|
|
|
- <col width="80" />
|
|
|
|
- <col width="100" />
|
|
|
|
- </colgroup>
|
|
|
|
- <tr>
|
|
|
|
- <th>评卷员</th>
|
|
|
|
- <th>进度</th>
|
|
|
|
- <th></th>
|
|
|
|
- <th>改档</th>
|
|
|
|
- <th>改档打分</th>
|
|
|
|
- </tr>
|
|
|
|
- <tr v-for="(item, aindex) in group.markerProgress" :key="aindex">
|
|
|
|
- <td>{{ item.loginName }}</td>
|
|
|
|
- <td>
|
|
|
|
- <progress-line
|
|
|
|
- :sum="item.totalCount"
|
|
|
|
- :current="item.successCount"
|
|
|
|
- ></progress-line>
|
|
|
|
- </td>
|
|
|
|
- <td class="td-nopad">{{ item.progress }}%</td>
|
|
|
|
- <td>{{ item.shiftCount }}</td>
|
|
|
|
- <td>{{ item.shiftScoreCount }}</td>
|
|
|
|
- </tr>
|
|
|
|
- </table>
|
|
|
|
- </div>
|
|
|
|
- </div>
|
|
|
|
- </Modal>
|
|
|
|
-</template>
|
|
|
|
-
|
|
|
|
-<script>
|
|
|
|
-import { mapState } from "vuex";
|
|
|
|
-import { markLeaderGradingProgressDetail } from "@/api";
|
|
|
|
-import ProgressLine from "../components/ProgressLine";
|
|
|
|
-
|
|
|
|
-export default {
|
|
|
|
- name: "leader-progress",
|
|
|
|
- components: { ProgressLine },
|
|
|
|
- data() {
|
|
|
|
- return {
|
|
|
|
- modalIsShow: false,
|
|
|
|
- kzzInfo: [],
|
|
|
|
- totalProgress: {},
|
|
|
|
- areaProgress: [],
|
|
|
|
- groupMarkers: []
|
|
|
|
- };
|
|
|
|
- },
|
|
|
|
- computed: {
|
|
|
|
- ...mapState("marker", ["paramsSet", "curSubject"]),
|
|
|
|
- IS_LEVEL() {
|
|
|
|
- return this.curSubject.stage === "LEVEL";
|
|
|
|
- },
|
|
|
|
- IS_SCORE() {
|
|
|
|
- return this.curSubject.stage === "SCORE";
|
|
|
|
- },
|
|
|
|
- title() {
|
|
|
|
- return this.IS_LEVEL ? "分档进度" : "打分进度";
|
|
|
|
- }
|
|
|
|
- },
|
|
|
|
- methods: {
|
|
|
|
- visibleChange(visible) {
|
|
|
|
- if (visible) {
|
|
|
|
- this.initData();
|
|
|
|
- }
|
|
|
|
- },
|
|
|
|
- async initData() {
|
|
|
|
- const subjectId = this.$route.params.subjectId.split("-");
|
|
|
|
- const data = await markLeaderGradingProgressDetail({
|
|
|
|
- workId: subjectId[0],
|
|
|
|
- subject: subjectId[1]
|
|
|
|
- });
|
|
|
|
- this.kzzInfo = data.kzz || [];
|
|
|
|
- this.totalProgress = data.totalProgress;
|
|
|
|
- const totalInfo = {
|
|
|
|
- successCount: data.totalProgress.successCount,
|
|
|
|
- totalCount: data.totalProgress.totalCount,
|
|
|
|
- progress: data.totalProgress.progress.toFixed(2),
|
|
|
|
- areaName: "总体进度"
|
|
|
|
- };
|
|
|
|
- if (this.curSubject.stage === "INIT") {
|
|
|
|
- this.areaProgress = [totalInfo];
|
|
|
|
- this.groupMarkers = [];
|
|
|
|
- } else {
|
|
|
|
- this.areaProgress = [totalInfo, ...this.addProgress(data.areaProgress)];
|
|
|
|
- this.groupMarkers = data.groupMarkers.map(group => {
|
|
|
|
- group.markerProgress = this.addProgress(group.markerProgress);
|
|
|
|
- return group;
|
|
|
|
- });
|
|
|
|
- }
|
|
|
|
- },
|
|
|
|
- addProgress(data) {
|
|
|
|
- return data.map(item => {
|
|
|
|
- item.successCount = item.totalCount - item.leftCount;
|
|
|
|
- item.progress = item.totalCount
|
|
|
|
- ? ((100 * item.successCount) / item.totalCount).toFixed(2)
|
|
|
|
- : "0.00";
|
|
|
|
- return item;
|
|
|
|
- });
|
|
|
|
- },
|
|
|
|
- cancel() {
|
|
|
|
- this.modalIsShow = false;
|
|
|
|
- },
|
|
|
|
- open() {
|
|
|
|
- this.modalIsShow = true;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-};
|
|
|
|
-</script>
|
|
|
|
|
|
+<template>
|
|
|
|
+ <Modal
|
|
|
|
+ v-model="modalIsShow"
|
|
|
|
+ class="leader-progress marker-modal"
|
|
|
|
+ :title="title"
|
|
|
|
+ footer-hide
|
|
|
|
+ fullscreen
|
|
|
|
+ :transition-names="['slide-left', 'fade']"
|
|
|
|
+ @on-visible-change="visibleChange"
|
|
|
|
+ >
|
|
|
|
+ <div class="leader-progress-part">
|
|
|
|
+ <h3>总体</h3>
|
|
|
|
+ <table class="table table-dark">
|
|
|
|
+ <colgroup>
|
|
|
|
+ <col width="120" />
|
|
|
|
+ <col width="390" />
|
|
|
|
+ <col width="60" />
|
|
|
|
+ </colgroup>
|
|
|
|
+ <tr>
|
|
|
|
+ <th>区域</th>
|
|
|
|
+ <th>进度</th>
|
|
|
|
+ <th></th>
|
|
|
|
+ </tr>
|
|
|
|
+ <tr v-for="(item, aindex) in areaProgress" :key="aindex">
|
|
|
|
+ <td>{{ item.areaName }}</td>
|
|
|
|
+ <td>
|
|
|
|
+ <progress-line
|
|
|
|
+ :sum="item.totalCount"
|
|
|
|
+ :current="item.successCount"
|
|
|
|
+ ></progress-line>
|
|
|
|
+ </td>
|
|
|
|
+ <td class="td-nopad">{{ item.progress }}%</td>
|
|
|
|
+ </tr>
|
|
|
|
+ </table>
|
|
|
|
+ </div>
|
|
|
|
+
|
|
|
|
+ <div v-if="kzzInfo.length && IS_LEVEL" class="leader-progress-part">
|
|
|
|
+ <table class="table table-dark">
|
|
|
|
+ <tr v-for="(user, uindex) in kzzInfo" :key="uindex">
|
|
|
|
+ <td>科组长</td>
|
|
|
|
+ <td>{{ user.loginName }}</td>
|
|
|
|
+ <td>仲裁</td>
|
|
|
|
+ <td>{{ user.arbitrated }}</td>
|
|
|
|
+ </tr>
|
|
|
|
+ </table>
|
|
|
|
+ </div>
|
|
|
|
+
|
|
|
|
+ <div
|
|
|
|
+ v-for="(group, index) in groupMarkers"
|
|
|
|
+ :key="index"
|
|
|
|
+ class="leader-progress-part"
|
|
|
|
+ >
|
|
|
|
+ <div v-if="IS_LEVEL">
|
|
|
|
+ <div v-for="(kzz, kindex) in group.kzzProgress" :key="kindex">
|
|
|
|
+ 科组长:{{ kzz.loginName }},仲裁:{{ kzz.arbitrated }}
|
|
|
|
+ </div>
|
|
|
|
+ <table class="table table-dark">
|
|
|
|
+ <colgroup>
|
|
|
|
+ <col width="120" />
|
|
|
|
+ <col width="310" />
|
|
|
|
+ <col width="60" />
|
|
|
|
+ <col width="80" />
|
|
|
|
+ </colgroup>
|
|
|
|
+ <tr>
|
|
|
|
+ <th>评卷员</th>
|
|
|
|
+ <th>进度</th>
|
|
|
|
+ <th></th>
|
|
|
|
+ <th>打回</th>
|
|
|
|
+ </tr>
|
|
|
|
+ <tr v-for="(item, aindex) in group.markerProgress" :key="aindex">
|
|
|
|
+ <td>{{ item.loginName }}</td>
|
|
|
|
+ <td>
|
|
|
|
+ <progress-line
|
|
|
|
+ :sum="item.totalCount"
|
|
|
|
+ :current="item.successCount"
|
|
|
|
+ ></progress-line>
|
|
|
|
+ </td>
|
|
|
|
+ <td class="td-nopad">{{ item.progress }}%</td>
|
|
|
|
+ <td>{{ item.rejectedCount }}</td>
|
|
|
|
+ </tr>
|
|
|
|
+ </table>
|
|
|
|
+ </div>
|
|
|
|
+
|
|
|
|
+ <div v-if="IS_SCORE">
|
|
|
|
+ <div v-for="(kzz, kindex) in group.kzzProgress" :key="kindex">
|
|
|
|
+ 科组长:{{ kzz.loginName }}
|
|
|
|
+ </div>
|
|
|
|
+ <table class="table table-dark">
|
|
|
|
+ <colgroup>
|
|
|
|
+ <col width="120" />
|
|
|
|
+ <col width="210" />
|
|
|
|
+ <col width="60" />
|
|
|
|
+ <col width="80" />
|
|
|
|
+ <col width="100" />
|
|
|
|
+ </colgroup>
|
|
|
|
+ <tr>
|
|
|
|
+ <th>评卷员</th>
|
|
|
|
+ <th>进度</th>
|
|
|
|
+ <th></th>
|
|
|
|
+ <th>改档</th>
|
|
|
|
+ <th>改档打分</th>
|
|
|
|
+ </tr>
|
|
|
|
+ <tr v-for="(item, aindex) in group.markerProgress" :key="aindex">
|
|
|
|
+ <td>{{ item.loginName }}</td>
|
|
|
|
+ <td>
|
|
|
|
+ <progress-line
|
|
|
|
+ :sum="item.totalCount"
|
|
|
|
+ :current="item.successCount"
|
|
|
|
+ ></progress-line>
|
|
|
|
+ </td>
|
|
|
|
+ <td class="td-nopad">{{ item.progress }}%</td>
|
|
|
|
+ <td>{{ item.shiftCount }}</td>
|
|
|
|
+ <td>{{ item.shiftScoreCount }}</td>
|
|
|
|
+ </tr>
|
|
|
|
+ </table>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ </Modal>
|
|
|
|
+</template>
|
|
|
|
+
|
|
|
|
+<script>
|
|
|
|
+import { mapState } from "vuex";
|
|
|
|
+import { markLeaderGradingProgressDetail } from "@/api";
|
|
|
|
+import ProgressLine from "../components/ProgressLine";
|
|
|
|
+
|
|
|
|
+export default {
|
|
|
|
+ name: "leader-progress",
|
|
|
|
+ components: { ProgressLine },
|
|
|
|
+ data() {
|
|
|
|
+ return {
|
|
|
|
+ modalIsShow: false,
|
|
|
|
+ kzzInfo: [],
|
|
|
|
+ totalProgress: {},
|
|
|
|
+ areaProgress: [],
|
|
|
|
+ groupMarkers: []
|
|
|
|
+ };
|
|
|
|
+ },
|
|
|
|
+ computed: {
|
|
|
|
+ ...mapState("marker", ["paramsSet", "curSubject"]),
|
|
|
|
+ IS_LEVEL() {
|
|
|
|
+ return this.curSubject.stage === "LEVEL";
|
|
|
|
+ },
|
|
|
|
+ IS_SCORE() {
|
|
|
|
+ return this.curSubject.stage === "SCORE";
|
|
|
|
+ },
|
|
|
|
+ title() {
|
|
|
|
+ return this.IS_LEVEL ? "分档进度" : "打分进度";
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ methods: {
|
|
|
|
+ visibleChange(visible) {
|
|
|
|
+ if (visible) {
|
|
|
|
+ this.initData();
|
|
|
|
+ } else {
|
|
|
|
+ this.$emit("on-close");
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ async initData() {
|
|
|
|
+ const subjectId = this.$route.params.subjectId.split("-");
|
|
|
|
+ const data = await markLeaderGradingProgressDetail({
|
|
|
|
+ workId: subjectId[0],
|
|
|
|
+ subject: subjectId[1]
|
|
|
|
+ });
|
|
|
|
+ this.kzzInfo = data.kzz || [];
|
|
|
|
+ this.totalProgress = data.totalProgress;
|
|
|
|
+ const totalInfo = {
|
|
|
|
+ successCount: data.totalProgress.successCount,
|
|
|
|
+ totalCount: data.totalProgress.totalCount,
|
|
|
|
+ progress: data.totalProgress.progress.toFixed(2),
|
|
|
|
+ areaName: "总体进度"
|
|
|
|
+ };
|
|
|
|
+ if (this.curSubject.stage === "INIT") {
|
|
|
|
+ this.areaProgress = [totalInfo];
|
|
|
|
+ this.groupMarkers = [];
|
|
|
|
+ } else {
|
|
|
|
+ this.areaProgress = [totalInfo, ...this.addProgress(data.areaProgress)];
|
|
|
|
+ this.groupMarkers = data.groupMarkers.map(group => {
|
|
|
|
+ group.markerProgress = this.addProgress(group.markerProgress);
|
|
|
|
+ return group;
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ addProgress(data) {
|
|
|
|
+ return data.map(item => {
|
|
|
|
+ item.successCount = item.totalCount - item.leftCount;
|
|
|
|
+ item.progress = item.totalCount
|
|
|
|
+ ? ((100 * item.successCount) / item.totalCount).toFixed(2)
|
|
|
|
+ : "0.00";
|
|
|
|
+ return item;
|
|
|
|
+ });
|
|
|
|
+ },
|
|
|
|
+ cancel() {
|
|
|
|
+ this.modalIsShow = false;
|
|
|
|
+ },
|
|
|
|
+ open() {
|
|
|
|
+ this.modalIsShow = true;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+};
|
|
|
|
+</script>
|