yujialong 2 months ago
parent 58fc15212f
commit 730fb9ddd3
  1. 1
      src/api/index.js
  2. 2
      src/pages/allocationReview/list/index.vue
  3. 33
      src/pages/allocationReview/records/index.vue
  4. 11
      src/pages/myReview/list/index.vue
  5. 34
      src/pages/myReview/records/index.vue
  6. 23
      src/pages/myReview/theoryReview/index.vue
  7. 2
      src/router/permission.js

@ -10,6 +10,7 @@ export default {
treeListArch: `/nakadai/nakadai/staffAccountArchitecture/treeList`,
staffList: `/nakadai/nakadai/backstageStaff/staffList`,
querySchoolByReadAndAppraise: `/nakadai/nakadai/school/querySchoolByReadAndAppraise`,
querySchool: `/nakadai/nakadai/school/querySchool`,
getDetailedExamScores: `/exam/exam/paper/getDetailedExamScores`,
reviewSettingsList: `/competition/competition/readAndAppraise/reviewSettingsList`,

@ -218,7 +218,6 @@ export default {
})
this.list = list
this.getNow()
this.handleStage()
this.total = pageList.total
} finally {
this.loading = false
@ -264,6 +263,7 @@ export default {
async getNow () {
if (!this.now) {
this.now = await Util.getNow()
this.handleStage()
clearInterval(this.timer)
this.timer = setInterval(() => {
this.now = new Date(this.now.setSeconds(this.now.getSeconds() + 1))

@ -15,14 +15,13 @@
<li>
<label>城市</label>
<el-select v-model="filter.cityId" clearable placeholder="请选择城市" :disabled="!filter.provinceId"
@clear="clearCity" @change="cityChange">
@change="initData">
<el-option v-for="(item, i) in cities" :key="i" :label="item.cityName" :value="item.cityId"></el-option>
</el-select>
</li>
<li>
<label>学校</label>
<el-select v-model="filter.realSchoolId" clearable filterable placeholder="请选择学校" :disabled="!filter.cityId"
@change="initData">
<el-select v-model="filter.realSchoolId" clearable filterable placeholder="请选择学校" @change="initData">
<el-option v-for="(item, i) in schools" :key="i" :label="item.schoolName"
:value="item.schoolId"></el-option>
</el-select>
@ -74,8 +73,7 @@
<el-table-column prop="lastEditor" label="是否完成分配" align="center" width="100">
<template slot-scope="scope">{{ scope.row.isDistribution ? '是' : '否' }}</template>
</el-table-column>
<el-table-column prop="evaluator" label="评阅人员" align="center" min-width="90"
show-overflow-tooltip></el-table-column>
<el-table-column prop="evaluator" label="评阅人员" align="center" min-width="120"></el-table-column>
<el-table-column prop="evaluatorCount" label="评阅人数" align="center" width="80"></el-table-column>
<el-table-column prop="evaluationStatus" label="评阅状态" align="center" width="90">
<template slot-scope="scope">
@ -83,9 +81,7 @@
}}</el-tag>
</template>
</el-table-column>
<el-table-column prop="score" label="成绩" align="center" width="60">
<template slot-scope="scope">{{ scope.row.evaluationStatus === '待评阅' ? '—' : scope.row.score }}</template>
</el-table-column>
<el-table-column prop="score" label="成绩" align="center" width="60"></el-table-column>
<el-table-column prop="latestDistributionTime" label="最新分配时间" align="center" width="150"></el-table-column>
<el-table-column prop="latestDistributionUser" label="最新分配人" align="center" width="90"></el-table-column>
<el-table-column label="操作" align="center" width="100" fixed="right">
@ -189,11 +185,11 @@ export default {
keyWord: keyword || '',
}
provinceId && this.getCity()
cityId && this.getSchool()
this.$router.push(`records?competitionId=${query.competitionId}&stageId=${query.stageId}`).catch(() => { })
}
this.getProvince()
this.getSchool()
this.getList()
},
methods: {
@ -239,7 +235,6 @@ export default {
//
clearProvince () {
this.filter.cityId = ''
this.filter.realSchoolId = ''
},
//
provinceChange () {
@ -257,26 +252,10 @@ export default {
this.cities = list
}
},
//
clearCity () {
this.filter.realSchoolId = ''
},
//
cityChange () {
this.filter.realSchoolId = ''
this.getSchool()
this.initData()
},
//
async getSchool () {
const { provinceId, cityId } = this.filter
if (cityId) {
const { list } = await this.$get(this.api.querySchoolByReadAndAppraise, {
provinceId,
cityId,
})
const { list } = await this.$get(this.api.querySchool)
this.schools = list
}
},

@ -47,7 +47,8 @@
<el-table-column prop="reviewStatusName" label="评阅情况" align="center" width="90"></el-table-column>
<el-table-column label="操作" align="center" width="90" fixed="right">
<template slot-scope="scope">
<el-button type="text" @click="toReview(scope.row)">评阅</el-button>
<el-button type="text" :disabled="scope.row.stage === '已结束'" @click="toReview(scope.row)">评阅</el-button>
<el-button type="text" @click="toReview(scope.row, 1)">查看</el-button>
</template>
</el-table-column>
</el-table>
@ -104,7 +105,7 @@ export default {
},
{
id: 2,
name: '已完成'
name: '已结束'
},
],
reviewStatus: [
@ -183,7 +184,6 @@ export default {
})
this.list = list
this.getNow()
this.handleStage()
this.total = page.total
} finally {
this.loading = false
@ -227,6 +227,7 @@ export default {
async getNow () {
if (!this.now) {
this.now = await Util.getNow()
this.handleStage()
clearInterval(this.timer)
this.timer = setInterval(() => {
this.now = new Date(this.now.setSeconds(this.now.getSeconds() + 1))
@ -257,12 +258,12 @@ export default {
},
//
toReview (row) {
toReview (row, readonly = 0) {
this.$store.commit('user/setReferrer', {
i: 1,
url: `${this.$route.path}?${Qs.stringify(this.filter)}&month=${this.month}&page=${this.page}&pageSize=${this.pageSize}`
})
this.$router.push(`records?competitionId=${row.competitionId}&stageId=${row.stageId}`)
this.$router.push(`records?competitionId=${row.competitionId}&stageId=${row.stageId}&readonly=${row.stage === '已结束' && readonly ? 1 : 0}`)
},
}
};

@ -16,14 +16,13 @@
<li>
<label>城市</label>
<el-select v-model="filter.cityId" clearable placeholder="请选择城市" :disabled="!filter.provinceId"
@clear="clearCity" @change="cityChange">
@change="initData">
<el-option v-for="(item, i) in cities" :key="i" :label="item.cityName" :value="item.cityId"></el-option>
</el-select>
</li>
<li>
<label>学校</label>
<el-select v-model="filter.realSchoolId" clearable filterable placeholder="请选择学校" :disabled="!filter.cityId"
@change="initData">
<el-select v-model="filter.realSchoolId" clearable filterable placeholder="请选择学校" @change="initData">
<el-option v-for="(item, i) in schools" :key="i" :label="item.schoolName"
:value="item.schoolId"></el-option>
</el-select>
@ -76,7 +75,8 @@
</el-table-column>
<el-table-column label="操作" align="center" width="90" fixed="right">
<template slot-scope="scope">
<el-button type="text" @click="toReview(scope.row, scope.$index)">评阅</el-button>
<el-button type="text" :disabled="readonly" @click="toReview(scope.row)">评阅</el-button>
<el-button type="text" @click="toReview(scope.row, 1)">查看</el-button>
</template>
</el-table-column>
</el-table>
@ -102,6 +102,7 @@ export default {
crumbs: [],
competitionId: this.$route.query.competitionId,
stageId: this.$route.query.stageId,
readonly: !!(+this.$route.query.readonly), //
loading: false,
provinces: [],
@ -163,11 +164,11 @@ export default {
keyWord: keyword || '',
}
provinceId && this.getCity()
cityId && this.getSchool()
this.$router.push(`records?competitionId=${query.competitionId}&stageId=${query.stageId}`).catch(() => { })
}
this.getProvince()
this.getSchool()
this.getList()
},
methods: {
@ -230,7 +231,6 @@ export default {
//
clearProvince () {
this.filter.cityId = ''
this.filter.realSchoolId = ''
},
//
provinceChange () {
@ -248,26 +248,10 @@ export default {
this.cities = list
}
},
//
clearCity () {
this.filter.realSchoolId = ''
},
//
cityChange () {
this.filter.realSchoolId = ''
this.getSchool()
this.initData()
},
//
async getSchool () {
const { provinceId, cityId } = this.filter
if (cityId) {
const { list } = await this.$get(this.api.querySchoolByReadAndAppraise, {
provinceId,
cityId,
})
const { list } = await this.$get(this.api.querySchool)
this.schools = list
}
},
//
@ -295,8 +279,8 @@ export default {
}
},
//
toReview (row, i) {
window.open(this.$router.resolve(`/theoryReview?id=${row.reportId}&u=${+this.showUserInfo}&m=${this.setup.hasManualScoreType}&c=${this.competitionId}&s=${this.stageId}`).href)
toReview (row, readonly = 0) {
window.open(this.$router.resolve(`/theoryReview?id=${row.reportId}&u=${+this.showUserInfo}&m=${this.setup.hasManualScoreType}&c=${this.competitionId}&s=${this.stageId}&r=${readonly ? 1 : 0}`).href)
},
}
};

@ -6,7 +6,7 @@
<div class="actions">
<el-button v-if="showPrev" class="btn" @click="switchRecord(0)">上一个</el-button>
<el-button v-if="showNext" class="btn" @click="switchRecord(1)">下一个</el-button>
<el-button class="btn" @click="saveAll">一键保存分数</el-button>
<el-button v-if="!readonly" class="btn" @click="saveAll">一键保存分数</el-button>
<img class="exit" src="@/assets/images/exit.svg" alt="" @click="close">
</div>
</div>
@ -44,8 +44,8 @@
@click="filterStatus(item.id)">{{ item.name }}</li>
</ul>
</div>
<div :class="['middle', { none: !paper || !paper.length }]">
<ul v-if="paper && paper.length" class="ques-wrap" id="quesWrap">
<div :class="['middle', { none: !paper || !paper.length }]" id="middle">
<ul v-if="paper && paper.length" class="ques-wrap">
<li v-for="(item, i) in paper" :key="i">
<div class="outline">
{{ arabicToChinese(i + 1) }}{{ item.outlineName }}本题共{{ item.questionNum }}小题{{
@ -141,13 +141,13 @@
<div class="line">题目分值{{ ques.questionScore }}</div>
<div class="line">
考生得分<el-input class="score-input hide-spin" type="number" placeholder="请输入分数" size="small"
:disabled="item.questionType === 'fill_blank'" v-model.number="ques.reviewScore" />
:disabled="item.questionType === 'fill_blank' || readonly" v-model.number="ques.reviewScore" />
<span class="m-r-10"></span>
<span v-if="item.questionType === 'fill_blank'">(如需修改填空题的得分请直接修改考生答案的对错)</span>
<el-button v-if="ques.originUserScore !== ques.reviewScore" class="m-l-10" type="primary"
size="mini" @click="saveScore(ques)">保存分数</el-button>
<el-popover class="m-l-20" placement="bottom" width="400" trigger="click">
<el-button v-if="ques.originUserScore !== ques.reviewScore && !readonly" class="m-l-10"
type="primary" size="mini" @click="saveScore(ques)">保存分数</el-button>
<el-popover v-if="!readonly" class="m-l-20" placement="bottom" width="400" trigger="click">
<el-input type="textarea" :rows="3" :autosize="{ minRows: 3 }" resize="none" placeholder="请输入"
v-model="ques.newComments" />
<div class="m-t-10 text-right">
@ -162,7 +162,7 @@
<span class="line-label">评语</span>
<div>
<span>{{ ques.commentSetTime }}</span>
<i class="el-icon-delete-solid del-comment" @click="delComment(ques)"></i>
<i v-if="!readonly" class="el-icon-delete-solid del-comment" @click="delComment(ques)"></i>
<div class="comment" v-html="ques.comments"></div>
</div>
@ -221,6 +221,7 @@ export default {
stageId: this.$route.query.s,
showUserInfo: +this.$route.query.u, //
hasManualScoreType: +this.$route.query.m, //
readonly: !!(+this.$route.query.r), //
curIndex: 0,
paperName: '',
outline: [],
@ -385,7 +386,7 @@ export default {
function scroll () {
let now = Date.now()
let progress = Math.min(1, (now - startTime) / duration)
document.querySelector('#quesWrap').scrollTo(0, position * progress)
document.querySelector('#middle').scrollTo(0, position * progress)
if (progress < 1) {
window.requestAnimationFrame(scroll)
@ -399,7 +400,7 @@ export default {
item.shrink = false
const el = document.querySelector('#ques' + e.id)
this.$nextTick(() => {
el && this.scrollToSmooth(el.offsetTop - document.querySelector('#quesWrap').offsetTop, 200)
el && this.scrollToSmooth(el.offsetTop - document.querySelector('#middle').offsetTop, 200)
})
},
//
@ -520,7 +521,7 @@ export default {
const id = res[isNext ? 'nextReportId' : 'previousReportId']
if (id) {
this.reportId = id
this.$router.push(`/theoryReview?id=${id}&u=${this.showUserInfo}&m=${this.hasManualScoreType}&c=${this.competitionId}&s=${this.stageId}`)
this.$router.push(`/theoryReview?id=${id}&u=${this.showUserInfo}&m=${this.hasManualScoreType}&c=${this.competitionId}&s=${this.stageId}&r=${this.readonly ? 1 : 0}`)
this.getData()
}
}

@ -4,5 +4,5 @@ import Setting from '@/setting'
router.beforeEach((to, from, next) => {
document.title = Setting.titleSuffix
next()
localStorage.setItem('reviewPath', to.fullPath)
to.path !== '/theoryReview' && localStorage.setItem('reviewPath', to.fullPath)
})

Loading…
Cancel
Save