yujialong 3 weeks ago
parent b6b4764d9a
commit 63f3d7ced3
  1. 4
      src/api/index.js
  2. 2
      src/layouts/navbar/index.vue
  3. 17
      src/pages/allocationReview/list/index.vue
  4. 24
      src/pages/allocationReview/list/setup.vue
  5. 3
      src/pages/allocationReview/records/allocation.vue
  6. 6
      src/pages/allocationReview/records/index.vue
  7. 58
      src/pages/allocationReview/records/people.vue
  8. 20
      src/pages/myReview/list/index.vue
  9. 6
      src/pages/myReview/records/index.vue

@ -26,6 +26,9 @@ export default {
queryCity: `/nakadai/nakadai/city/queryCity`, queryCity: `/nakadai/nakadai/city/queryCity`,
treeListArch: `/nakadai/nakadai/staffAccountArchitecture/treeList`, treeListArch: `/nakadai/nakadai/staffAccountArchitecture/treeList`,
staffList: `/nakadai/nakadai/backstageStaff/staffList`, staffList: `/nakadai/nakadai/backstageStaff/staffList`,
professionalList: `/occupationlab/occupationlab/staff/professionalList`,
staffGradeList: `/occupationlab/occupationlab/staff/staffGradeList`,
occupationlabStaff: `/occupationlab/occupationlab/staff/staffList`,
querySchoolByReadAndAppraise: `/nakadai/nakadai/school/querySchoolByReadAndAppraise`, querySchoolByReadAndAppraise: `/nakadai/nakadai/school/querySchoolByReadAndAppraise`,
querySchool: `/nakadai/nakadai/school/querySchool`, querySchool: `/nakadai/nakadai/school/querySchool`,
@ -38,6 +41,7 @@ export default {
getPaperQuestionInfoByReviewSetting: `/nakadai/evaluation/getPaperQuestionInfoByReviewSetting`, getPaperQuestionInfoByReviewSetting: `/nakadai/evaluation/getPaperQuestionInfoByReviewSetting`,
assignReviewers: `/nakadai/evaluationAssignments/assignReviewers`, assignReviewers: `/nakadai/evaluationAssignments/assignReviewers`,
myReviewTask: `/nakadai/evaluation/myReviewTask`, myReviewTask: `/nakadai/evaluation/myReviewTask`,
myReviewTaskForAssessment: `/nakadai/evaluation/myReviewTaskForAssessment`,
myReviewTaskByReviewList: `/nakadai/evaluation/myReviewTaskByReviewList`, myReviewTaskByReviewList: `/nakadai/evaluation/myReviewTaskByReviewList`,
reviewTheDetailsReport: `/exam/exam/paper/reviewTheDetailsReport`, reviewTheDetailsReport: `/exam/exam/paper/reviewTheDetailsReport`,
reviewPaper: `/nakadai/evaluation/reviewPaper`, reviewPaper: `/nakadai/evaluation/reviewPaper`,

@ -101,7 +101,7 @@ export default {
}, },
async getPer () { async getPer () {
const res = await this.$get(this.api.getUserRolesPermissionMenu, { const res = await this.$get(this.api.getUserRolesPermissionMenu, {
platformId: 3 platformId: this.$route.query.nakadai ? 3 : 1
}) })
const routes = res.permissionMenu[0].children.find(e => e.path === '/review') // const routes = res.permissionMenu[0].children.find(e => e.path === '/review') //
routes && addRoutes(routes.children) routes && addRoutes(routes.children)

@ -1,8 +1,8 @@
<template> <template>
<div class="page"> <div class="page">
<el-tabs v-if="!fromNakadai" v-model="curTab" @tab-click="tabChange"> <!-- <el-tabs v-if="!fromNakadai" v-model="curTab" @tab-click="tabChange">
<el-tab-pane v-for="(item, i) in tabs" :key="i" :label="item.name" :name="item.id"></el-tab-pane> <el-tab-pane v-for="(item, i) in tabs" :key="i" :label="item.name" :name="item.id"></el-tab-pane>
</el-tabs> </el-tabs> -->
<h6 class="page-name">筛选</h6> <h6 class="page-name">筛选</h6>
<div class="tool"> <div class="tool">
@ -46,7 +46,7 @@
<el-table :data="list" v-loading="loading" class="table" ref="table" stripe header-align="center" row-key="stageId"> <el-table :data="list" v-loading="loading" class="table" ref="table" stripe header-align="center" row-key="stageId">
<el-table-column type="index" width="50" label="序号" align="center"></el-table-column> <el-table-column type="index" width="50" label="序号" align="center"></el-table-column>
<template v-if="curTab === '1'"> <template v-if="fromNakadai">
<el-table-column :key="1" prop="competitionName" label="大赛名称" align="center" min-width="120" <el-table-column :key="1" prop="competitionName" label="大赛名称" align="center" min-width="120"
show-overflow-tooltip></el-table-column> show-overflow-tooltip></el-table-column>
<el-table-column :key="2" prop="stageName" label="阶段赛名称" align="center" min-width="100"></el-table-column> <el-table-column :key="2" prop="stageName" label="阶段赛名称" align="center" min-width="100"></el-table-column>
@ -92,12 +92,14 @@ import Util from '@/libs/util'
import Setting from '@/setting' import Setting from '@/setting'
import Qs from 'qs' import Qs from 'qs'
import dayjs from 'dayjs' import dayjs from 'dayjs'
const fromNakadai = localStorage.getItem('reviewFromNakadai')
export default { export default {
components: { Setup, Progress }, components: { Setup, Progress },
data () { data () {
return { return {
loading: false, loading: false,
fromNakadai: localStorage.getItem('reviewFromNakadai'), fromNakadai, //
tabs: [ tabs: [
{ {
id: '1', id: '1',
@ -224,7 +226,7 @@ export default {
async getList () { async getList () {
try { try {
this.loading = true this.loading = true
const { pageList } = await this.$post(this.api[this.curTab === '1' ? 'reviewSettingsList' : 'assessmentReviewSettingList'], { const { pageList } = await this.$post(this.api[fromNakadai ? 'reviewSettingsList' : 'assessmentReviewSettingList'], {
...this.filter, ...this.filter,
isTimed: this.month === 0 ? 0 : '', isTimed: this.month === 0 ? 0 : '',
pageNum: this.page, pageNum: this.page,
@ -236,7 +238,7 @@ export default {
list.forEach(e => { list.forEach(e => {
e.stage = '-' e.stage = '-'
e.seted = e.evaluationId && (e.hasManualScoreType || e.allowManualGrading) // e.seted = e.evaluationId && (e.hasManualScoreType || e.allowManualGrading) //
e.isTimed = e.resultsDetails ? e.isTimed : 1 e.isTimed = !fromNakadai || e.resultsDetails ? e.isTimed : 1
e.time = e.seted ? e.time = e.seted ?
e.isTimed ? e.isTimed ?
e.startTime + ' ~ ' + e.endTime : e.startTime + ' ~ ' + e.endTime :
@ -340,7 +342,8 @@ export default {
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}`
}) })
localStorage.setItem('reviewRow', JSON.stringify(row)) localStorage.setItem('reviewRow', JSON.stringify(row))
this.$router.push(`records?competitionId=${row.id}&stageId=${row.stageId}`)
this.$router.push(`records?competitionId=${fromNakadai ? row.id : ''}&assessmentId=${!fromNakadai ? row.id : ''}&stageId=${row.stageId || ''}`)
}, },
} }
}; };

@ -21,7 +21,7 @@
</el-form-item> </el-form-item>
<el-form-item v-if="row.hasManualScoreType || form.allowManualGrading" prop="name" label="评阅的时间限制"> <el-form-item v-if="row.hasManualScoreType || form.allowManualGrading" prop="name" label="评阅的时间限制">
<div class="relative"> <div class="relative">
<el-radio-group :disabled="!row.resultsDetails" v-model="form.isTimed"> <el-radio-group :disabled="fromNakadai && !row.resultsDetails" v-model="form.isTimed">
<el-radio :label="0">不限时</el-radio> <el-radio :label="0">不限时</el-radio>
<el-radio :label="1">限时</el-radio> <el-radio :label="1">限时</el-radio>
</el-radio-group> </el-radio-group>
@ -98,11 +98,13 @@ import TestPaperConst from '@/const/testPaper'
import _ from 'lodash' import _ from 'lodash'
import Decimal from 'decimal.js' import Decimal from 'decimal.js'
import dayjs from 'dayjs' import dayjs from 'dayjs'
const fromNakadai = localStorage.getItem('reviewFromNakadai') //
export default { export default {
props: ['visible', 'row'], props: ['visible', 'row'],
data () { data () {
return { return {
fromNakadai: localStorage.getItem('reviewFromNakadai'), fromNakadai,
arabicToChinese: Util.arabicToChinese, arabicToChinese: Util.arabicToChinese,
difficults: TestPaperConst.difficults, difficults: TestPaperConst.difficults,
questionTypes: QuesConst.questionTypes, questionTypes: QuesConst.questionTypes,
@ -178,7 +180,7 @@ export default {
allowManualGrading: data.allowManualGrading, allowManualGrading: data.allowManualGrading,
anonymizeStudents: data.anonymizeStudents, anonymizeStudents: data.anonymizeStudents,
evaluationId: data.evaluationId, evaluationId: data.evaluationId,
isTimed: row.resultsDetails ? data.isTimed : 1, // isTimed isTimed: !fromNakadai || row.resultsDetails ? data.isTimed : 1, // isTimed
reviewersPerQuestion: data.reviewersPerQuestion, reviewersPerQuestion: data.reviewersPerQuestion,
scoreAggregationRule: data.scoreAggregationRule, scoreAggregationRule: data.scoreAggregationRule,
} }
@ -192,14 +194,21 @@ export default {
const form = _.cloneDeep(this.form) const form = _.cloneDeep(this.form)
const { row, timed } = this const { row, timed } = this
const { hasManualScoreType } = row const { hasManualScoreType } = row
const isAss = !this.fromNakadai //
if (timed.length) { if (timed.length) {
if (timed[0]) form.startTime = dayjs(timed[0]).format('YYYY-MM-DD HH:mm:ss') if (timed[0]) form.startTime = dayjs(timed[0]).format('YYYY-MM-DD HH:mm:ss')
if (timed[1]) form.endTime = dayjs(timed[1]).format('YYYY-MM-DD HH:mm:ss') if (timed[1]) form.endTime = dayjs(timed[1]).format('YYYY-MM-DD HH:mm:ss')
} }
if (form.isTimed && (!form.startTime || !form.endTime)) return Util.warningMsg(`请选择时间限制`) if (((form.hasManualScoreType || form.allowManualGrading) && form.isTimed) && (!form.startTime || !form.endTime)) return Util.warningMsg(`请选择时间限制`)
if (hasManualScoreType && form.reviewersPerQuestion === '') return Util.warningMsg(`请输入评阅人数`) if (hasManualScoreType && form.reviewersPerQuestion === '') return Util.warningMsg(`请输入评阅人数`)
form.competitionId = row.id if (!form.isTimed) {
form.stageId = row.stageId form.startTime = ''
form.endTime = ''
}
form[isAss ? 'assessmentId' : 'competitionId'] = row.id
form.stageId = row.stageId || ''
this.submiting = true this.submiting = true
try { try {
const res = await this.$post(this.api.evaluationSave, form) const res = await this.$post(this.api.evaluationSave, form)
@ -215,7 +224,8 @@ export default {
}) })
row.evaluationId = res.evaluationId row.evaluationId = res.evaluationId
localStorage.setItem('reviewRow', JSON.stringify(row)) localStorage.setItem('reviewRow', JSON.stringify(row))
this.$router.push(`records?competitionId=${row.id}&stageId=${row.stageId}`)
this.$router.push(`records?competitionId=${!isAss ? row.id : ''}&assessmentId=${isAss ? row.id : ''}&stageId=${row.stageId || ''}`)
} catch (e) { } catch (e) {
this.close() this.close()
} }

@ -88,7 +88,8 @@ import Outline from './outline'
import Setting from '@/setting' import Setting from '@/setting'
import Util from '@/libs/util' import Util from '@/libs/util'
import _ from 'lodash' import _ from 'lodash'
import Decimal from 'decimal.js'
const fromNakadai = localStorage.getItem('reviewFromNakadai') //
export default { export default {
components: { People, Outline }, components: { People, Outline },
props: ['visible', 'row', 'curRecords'], props: ['visible', 'row', 'curRecords'],

@ -115,8 +115,9 @@ export default {
data () { data () {
return { return {
crumbs: [], crumbs: [],
competitionId: this.$route.query.competitionId, competitionId: this.$route.query.competitionId || '',
stageId: this.$route.query.stageId, assessmentId: this.$route.query.assessmentId || '',
stageId: this.$route.query.stageId || '',
loading: false, loading: false,
provinces: [], provinces: [],
@ -208,6 +209,7 @@ export default {
pageNum: this.page, pageNum: this.page,
pageSize: this.pageSize, pageSize: this.pageSize,
competitionId: this.competitionId, competitionId: this.competitionId,
assessmentId: this.assessmentId,
stageId: this.stageId, stageId: this.stageId,
}) })
this.list = page.records this.list = page.records

@ -3,7 +3,7 @@
<h6 class="page-name m-t-20" style="margin-bottom: 10px;">选择评阅人员</h6> <h6 class="page-name m-t-20" style="margin-bottom: 10px;">选择评阅人员</h6>
<div :class="['wrap', { dia }]"> <div :class="['wrap', { dia }]">
<div class="item"> <div class="item">
<el-radio-group class="m-b-10" v-model="userType" size="small" @change="userTypeChange"> <el-radio-group v-if="fromNakadai" class="m-b-10" v-model="userType" size="small" @change="userTypeChange">
<el-radio-button :label="0">平台用户</el-radio-button> <el-radio-button :label="0">平台用户</el-radio-button>
<el-radio-button :label="1">专家</el-radio-button> <el-radio-button :label="1">专家</el-radio-button>
</el-radio-group> </el-radio-group>
@ -15,8 +15,7 @@
</div> </div>
<div v-else class="dep-wrap"> <div v-else class="dep-wrap">
<el-tree :data="nakadaiDeps" default-expand-all ref="nakadais" node-key="id" highlight-current <el-tree :data="nakadaiDeps" default-expand-all ref="nakadais" node-key="id" highlight-current
:expand-on-click-node="false" @node-click="depClick" :expand-on-click-node="false" @node-click="depClick"></el-tree>
:props="{ children: 'children', label: 'organizationName', isLeaf: 'leaf' }"></el-tree>
</div> </div>
</div> </div>
<div class="item"> <div class="item">
@ -87,11 +86,13 @@
import Setting from '@/setting' import Setting from '@/setting'
import Util from '@/libs/util' import Util from '@/libs/util'
import _ from 'lodash' import _ from 'lodash'
import Decimal from 'decimal.js'
const fromNakadai = localStorage.getItem('reviewFromNakadai') //
export default { export default {
props: ['dia', 'row', 'curRecords'], props: ['dia', 'row', 'curRecords'],
data () { data () {
return { return {
fromNakadai,
nakadaiDeps: [], nakadaiDeps: [],
curDep: {}, curDep: {},
searchTimer: null, searchTimer: null,
@ -119,8 +120,8 @@ export default {
}, },
}, },
mounted () { mounted () {
this.getNakadaiDep() fromNakadai ? this.getNakadaiDep() : this.getTeacherDep()
this.users.length ? this.getDetail(1) : this.getNakadaiUser(1) this.users.length ? this.getDetail(1) : this[fromNakadai ? 'getNakadaiUser' : 'getTeacher'](1)
}, },
methods: { methods: {
// //
@ -160,7 +161,7 @@ export default {
this.nakadaiDeps = [ this.nakadaiDeps = [
{ {
id: 0, id: 0,
organizationName: '全部', label: '全部',
children: list children: list
} }
] ]
@ -168,6 +169,7 @@ export default {
// //
handleList (list) { handleList (list) {
list.map(e => { list.map(e => {
e.label = e.organizationName
if (e.children && e.children.length) { if (e.children && e.children.length) {
this.handleList(e.children) this.handleList(e.children)
} else { } else {
@ -189,7 +191,7 @@ export default {
depClick (data) { depClick (data) {
this.curDep = data this.curDep = data
this.userCheck = false this.userCheck = false
this.getNakadaiUser() fromNakadai ? this.getNakadaiUser() : this.getTeacher()
}, },
// //
async getNakadaiUser (init) { async getNakadaiUser (init) {
@ -216,6 +218,46 @@ export default {
}).catch(err => { }) }).catch(err => { })
}, },
//
getTeacherDep () {
this.$get(this.api.professionalList).then(res => {
if (res.data && res.data.length) {
res.data.map(e => {
e.label = e.staffArchitectureName
e.id = e.staffArchitectureId
this.$get(this.api.staffGradeList, {
staffArchitectureId: e.staffArchitectureId
}).then(res => {
res.data.map(e => {
e.label = e.gradeName
e.id = e.gradeId
})
e.children = res.data
}).catch(res => { })
});
}
setTimeout(() => {
this.nakadaiDeps = [
{
id: 0,
label: '全部',
children: res.data
}
]
}, 500)
}).catch(res => { })
},
//
async getTeacher (init) {
const { page } = await this.$post(this.api.occupationlabStaff, {
pageNum: 1,
pageSize: 1000,
staffArchitectureId: this.curDep.id
})
this.users = page.records
this.getDetail(init)
},
// //
userAllCheckChange (val) { userAllCheckChange (val) {
this.users.map(e => { this.users.map(e => {

@ -35,10 +35,14 @@
<el-table :data="list" v-loading="loading" class="table" ref="table" stripe header-align="center" row-key="id"> <el-table :data="list" v-loading="loading" class="table" ref="table" stripe header-align="center" row-key="id">
<el-table-column type="index" width="50" label="序号" align="center"></el-table-column> <el-table-column type="index" width="50" label="序号" align="center"></el-table-column>
<el-table-column prop="competitionName" label="大赛名称" align="center" min-width="120" <template v-if="fromNakadai">
<el-table-column prop="competitionName" label="大赛名称" align="center" min-width="120"
show-overflow-tooltip></el-table-column>
<el-table-column prop="stageName" label="阶段赛名称" align="center" min-width="100"></el-table-column>
<el-table-column prop="competitionContent" label="比赛内容" align="center" min-width="100"></el-table-column>
</template>
<el-table-column v-else :key="4" prop="competitionName" label="考核名称" align="center" min-width="120"
show-overflow-tooltip></el-table-column> show-overflow-tooltip></el-table-column>
<el-table-column prop="stageName" label="阶段赛名称" align="center" min-width="100"></el-table-column>
<el-table-column prop="competitionContent" label="比赛内容" align="center" min-width="100"></el-table-column>
<el-table-column prop="totalAnswer" label="分配答卷数" align="center" width="90"></el-table-column> <el-table-column prop="totalAnswer" label="分配答卷数" align="center" width="90"></el-table-column>
<el-table-column prop="unReviewedAnswer" label="待评答卷数" align="center" width="90"></el-table-column> <el-table-column prop="unReviewedAnswer" label="待评答卷数" align="center" width="90"></el-table-column>
<el-table-column prop="reviewedAnswer" label="已评答卷数" align="center" width="90"></el-table-column> <el-table-column prop="reviewedAnswer" label="已评答卷数" align="center" width="90"></el-table-column>
@ -66,9 +70,12 @@ import Setting from '@/setting'
import Const from '@/const/ques' import Const from '@/const/ques'
import Qs from 'qs' import Qs from 'qs'
import dayjs from 'dayjs' import dayjs from 'dayjs'
const fromNakadai = localStorage.getItem('reviewFromNakadai') //
export default { export default {
data () { data () {
return { return {
fromNakadai,
difficults: Const.difficults, difficults: Const.difficults,
questionTypes: Const.questionTypes, questionTypes: Const.questionTypes,
loading: false, loading: false,
@ -166,7 +173,7 @@ export default {
async getList () { async getList () {
try { try {
this.loading = true this.loading = true
const { page } = await this.$post(this.api.myReviewTask, { const { page } = await this.$post(this.api[fromNakadai ? 'myReviewTask' : 'myReviewTaskForAssessment'], {
...this.filter, ...this.filter,
isTimed: this.month === 0 ? 0 : '', isTimed: this.month === 0 ? 0 : '',
pageNum: this.page, pageNum: this.page,
@ -175,7 +182,7 @@ export default {
const list = page.records const list = page.records
list.forEach(e => { list.forEach(e => {
// e.reviewStageName = this.reviewStage.find(n => n.id === e.reviewStage).name // e.reviewStageName = this.reviewStage.find(n => n.id === e.reviewStage).name
if (e.reviewStatus !== null) e.reviewStatusName = this.reviewStatus.find(n => n.id === +e.reviewStatus).name if (e.reviewStatus !== null && e.reviewStatus !== undefined) e.reviewStatusName = this.reviewStatus.find(n => n.id === +e.reviewStatus).name
// e.reviewStageName = this.reviewStage.find(n => n.id === e.reviewStage).name // e.reviewStageName = this.reviewStage.find(n => n.id === e.reviewStage).name
e.stage = '-' e.stage = '-'
e.time = e.isTimed ? e.time = e.isTimed ?
@ -263,7 +270,8 @@ export default {
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}&readonly=${row.stage !== '进行中' && readonly ? 1 : 0}`)
this.$router.push(`records?competitionId=${row.competitionId || ''}&stageId=${row.stageId || ''}&assessmentId=${row.assessmentId || ''}&readonly=${row.stage !== '进行中' && readonly ? 1 : 0}`)
}, },
} }
}; };

@ -100,8 +100,9 @@ export default {
data () { data () {
return { return {
crumbs: [], crumbs: [],
competitionId: this.$route.query.competitionId, competitionId: this.$route.query.competitionId || '',
stageId: this.$route.query.stageId, stageId: this.$route.query.stageId || '',
assessmentId: this.$route.query.assessmentId || '',
readonly: !!(+this.$route.query.readonly), // readonly: !!(+this.$route.query.readonly), //
loading: false, loading: false,
@ -181,6 +182,7 @@ export default {
pageSize: this.pageSize, pageSize: this.pageSize,
competitionId: this.competitionId, competitionId: this.competitionId,
stageId: this.stageId, stageId: this.stageId,
assessmentId: this.assessmentId,
}) })
const list = page.records const list = page.records
if (list.length) { if (list.length) {

Loading…
Cancel
Save