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`, treeListArch: `/nakadai/nakadai/staffAccountArchitecture/treeList`,
staffList: `/nakadai/nakadai/backstageStaff/staffList`, staffList: `/nakadai/nakadai/backstageStaff/staffList`,
querySchoolByReadAndAppraise: `/nakadai/nakadai/school/querySchoolByReadAndAppraise`, querySchoolByReadAndAppraise: `/nakadai/nakadai/school/querySchoolByReadAndAppraise`,
querySchool: `/nakadai/nakadai/school/querySchool`,
getDetailedExamScores: `/exam/exam/paper/getDetailedExamScores`, getDetailedExamScores: `/exam/exam/paper/getDetailedExamScores`,
reviewSettingsList: `/competition/competition/readAndAppraise/reviewSettingsList`, reviewSettingsList: `/competition/competition/readAndAppraise/reviewSettingsList`,

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

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

@ -47,7 +47,8 @@
<el-table-column prop="reviewStatusName" label="评阅情况" align="center" width="90"></el-table-column> <el-table-column prop="reviewStatusName" label="评阅情况" align="center" width="90"></el-table-column>
<el-table-column label="操作" align="center" width="90" fixed="right"> <el-table-column label="操作" align="center" width="90" fixed="right">
<template slot-scope="scope"> <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> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -104,7 +105,7 @@ export default {
}, },
{ {
id: 2, id: 2,
name: '已完成' name: '已结束'
}, },
], ],
reviewStatus: [ reviewStatus: [
@ -183,7 +184,6 @@ export default {
}) })
this.list = list this.list = list
this.getNow() this.getNow()
this.handleStage()
this.total = page.total this.total = page.total
} finally { } finally {
this.loading = false this.loading = false
@ -227,6 +227,7 @@ export default {
async getNow () { async getNow () {
if (!this.now) { if (!this.now) {
this.now = await Util.getNow() this.now = await Util.getNow()
this.handleStage()
clearInterval(this.timer) clearInterval(this.timer)
this.timer = setInterval(() => { this.timer = setInterval(() => {
this.now = new Date(this.now.setSeconds(this.now.getSeconds() + 1)) 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', { this.$store.commit('user/setReferrer', {
i: 1, i: 1,
url: `${this.$route.path}?${Qs.stringify(this.filter)}&month=${this.month}&page=${this.page}&pageSize=${this.pageSize}` 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> <li>
<label>城市</label> <label>城市</label>
<el-select v-model="filter.cityId" clearable placeholder="请选择城市" :disabled="!filter.provinceId" <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-option v-for="(item, i) in cities" :key="i" :label="item.cityName" :value="item.cityId"></el-option>
</el-select> </el-select>
</li> </li>
<li> <li>
<label>学校</label> <label>学校</label>
<el-select v-model="filter.realSchoolId" clearable filterable placeholder="请选择学校" :disabled="!filter.cityId" <el-select v-model="filter.realSchoolId" clearable filterable placeholder="请选择学校" @change="initData">
@change="initData">
<el-option v-for="(item, i) in schools" :key="i" :label="item.schoolName" <el-option v-for="(item, i) in schools" :key="i" :label="item.schoolName"
:value="item.schoolId"></el-option> :value="item.schoolId"></el-option>
</el-select> </el-select>
@ -76,7 +75,8 @@
</el-table-column> </el-table-column>
<el-table-column label="操作" align="center" width="90" fixed="right"> <el-table-column label="操作" align="center" width="90" fixed="right">
<template slot-scope="scope"> <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> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -102,6 +102,7 @@ export default {
crumbs: [], crumbs: [],
competitionId: this.$route.query.competitionId, competitionId: this.$route.query.competitionId,
stageId: this.$route.query.stageId, stageId: this.$route.query.stageId,
readonly: !!(+this.$route.query.readonly), //
loading: false, loading: false,
provinces: [], provinces: [],
@ -163,11 +164,11 @@ export default {
keyWord: keyword || '', keyWord: keyword || '',
} }
provinceId && this.getCity() provinceId && this.getCity()
cityId && this.getSchool()
this.$router.push(`records?competitionId=${query.competitionId}&stageId=${query.stageId}`).catch(() => { }) this.$router.push(`records?competitionId=${query.competitionId}&stageId=${query.stageId}`).catch(() => { })
} }
this.getProvince() this.getProvince()
this.getSchool()
this.getList() this.getList()
}, },
methods: { methods: {
@ -230,7 +231,6 @@ export default {
// //
clearProvince () { clearProvince () {
this.filter.cityId = '' this.filter.cityId = ''
this.filter.realSchoolId = ''
}, },
// //
provinceChange () { provinceChange () {
@ -248,26 +248,10 @@ export default {
this.cities = list this.cities = list
} }
}, },
//
clearCity () {
this.filter.realSchoolId = ''
},
//
cityChange () {
this.filter.realSchoolId = ''
this.getSchool()
this.initData()
},
// //
async getSchool () { async getSchool () {
const { provinceId, cityId } = this.filter const { list } = await this.$get(this.api.querySchool)
if (cityId) {
const { list } = await this.$get(this.api.querySchoolByReadAndAppraise, {
provinceId,
cityId,
})
this.schools = list this.schools = list
}
}, },
// //
@ -295,8 +279,8 @@ export default {
} }
}, },
// //
toReview (row, i) { 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}`).href) 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"> <div class="actions">
<el-button v-if="showPrev" class="btn" @click="switchRecord(0)">上一个</el-button> <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 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"> <img class="exit" src="@/assets/images/exit.svg" alt="" @click="close">
</div> </div>
</div> </div>
@ -44,8 +44,8 @@
@click="filterStatus(item.id)">{{ item.name }}</li> @click="filterStatus(item.id)">{{ item.name }}</li>
</ul> </ul>
</div> </div>
<div :class="['middle', { none: !paper || !paper.length }]"> <div :class="['middle', { none: !paper || !paper.length }]" id="middle">
<ul v-if="paper && paper.length" class="ques-wrap" id="quesWrap"> <ul v-if="paper && paper.length" class="ques-wrap">
<li v-for="(item, i) in paper" :key="i"> <li v-for="(item, i) in paper" :key="i">
<div class="outline"> <div class="outline">
{{ arabicToChinese(i + 1) }}{{ item.outlineName }}本题共{{ item.questionNum }}小题{{ {{ arabicToChinese(i + 1) }}{{ item.outlineName }}本题共{{ item.questionNum }}小题{{
@ -141,13 +141,13 @@
<div class="line">题目分值{{ ques.questionScore }}</div> <div class="line">题目分值{{ ques.questionScore }}</div>
<div class="line"> <div class="line">
考生得分<el-input class="score-input hide-spin" type="number" placeholder="请输入分数" size="small" 考生得分<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 class="m-r-10"></span>
<span v-if="item.questionType === 'fill_blank'">(如需修改填空题的得分请直接修改考生答案的对错)</span> <span v-if="item.questionType === 'fill_blank'">(如需修改填空题的得分请直接修改考生答案的对错)</span>
<el-button v-if="ques.originUserScore !== ques.reviewScore" class="m-l-10" type="primary" <el-button v-if="ques.originUserScore !== ques.reviewScore && !readonly" class="m-l-10"
size="mini" @click="saveScore(ques)">保存分数</el-button> type="primary" size="mini" @click="saveScore(ques)">保存分数</el-button>
<el-popover class="m-l-20" placement="bottom" width="400" trigger="click"> <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="请输入" <el-input type="textarea" :rows="3" :autosize="{ minRows: 3 }" resize="none" placeholder="请输入"
v-model="ques.newComments" /> v-model="ques.newComments" />
<div class="m-t-10 text-right"> <div class="m-t-10 text-right">
@ -162,7 +162,7 @@
<span class="line-label">评语</span> <span class="line-label">评语</span>
<div> <div>
<span>{{ ques.commentSetTime }}</span> <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 class="comment" v-html="ques.comments"></div>
</div> </div>
@ -221,6 +221,7 @@ export default {
stageId: this.$route.query.s, stageId: this.$route.query.s,
showUserInfo: +this.$route.query.u, // showUserInfo: +this.$route.query.u, //
hasManualScoreType: +this.$route.query.m, // hasManualScoreType: +this.$route.query.m, //
readonly: !!(+this.$route.query.r), //
curIndex: 0, curIndex: 0,
paperName: '', paperName: '',
outline: [], outline: [],
@ -385,7 +386,7 @@ export default {
function scroll () { function scroll () {
let now = Date.now() let now = Date.now()
let progress = Math.min(1, (now - startTime) / duration) 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) { if (progress < 1) {
window.requestAnimationFrame(scroll) window.requestAnimationFrame(scroll)
@ -399,7 +400,7 @@ export default {
item.shrink = false item.shrink = false
const el = document.querySelector('#ques' + e.id) const el = document.querySelector('#ques' + e.id)
this.$nextTick(() => { 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'] const id = res[isNext ? 'nextReportId' : 'previousReportId']
if (id) { if (id) {
this.reportId = 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() this.getData()
} }
} }

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

Loading…
Cancel
Save