123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255 |
- <template>
- <div class="app-container">
- <el-card shadow="hover">
- <template #header>选科信息</template>
- <el-row :gutter="20">
- <el-col :span="12">
- <el-form ref="form" v-if="selectObj" :model="form" :rules="rule" label-position="right" label-width="80px">
- <el-form-item label="选科轮次" class="form-item-readonly">{{ selectObj.year }}{{ selectObj.name }}
- </el-form-item>
- <el-form-item label="选科时间" class="form-item-readonly">{{ selectObj.beginTime }} 至 {{ selectObj.endTime }}
- </el-form-item>
- <el-form-item label="选科状态" class="form-item-readonly">
- 未选择/已选择<span class="f-red">缺字段</span>
- </el-form-item>
- <el-form-item label="AI选科" class="form-item-readonly">
- 进入/查看<span class="f-red">缺字段</span>
- </el-form-item>
- </el-form>
- </el-col>
- <el-col :span="12" style="vertical-align: center">
- 为了让同学们更好地选科,请完成左侧几项功能,如有疑问,请观看此
- <el-link type="primary" icon="el-icon-video-play" underline @click="helpVideo.visible=true">介绍视频</el-link>
- 、咨询客服或拨打电话4001797985
- </el-col>
- </el-row>
- </el-card>
- <!-- 自选专业 推荐专业 -->
- <select-subject class="mt20" :evaluationMajors="evaluationMajors" :optionalMajors="optionalMajors" :list="reportInfo.models"></select-subject>
- <!-- 选科报名表 -->
- <el-card class="box-card mt20" >
- <template #header>
- <elective-generation-steps v-if="allowSelect" v-model="activeStep" :generation="generations"></elective-generation-steps>
- </template>
- <report-table ref="reportRef" ></report-table>
- </el-card>
- <el-card shadow="hover" class="mt20">
- <template #header>意向选科</template>
- <el-row :gutter="20">
- <el-col :span="12">
- <el-card shadow="hover">
- <template #header>
- <div class="fx-row fx-bet-cen">
- <div>专业选科</div>
- <div>
- <el-button type="primary" plain size="small" round>点击进入</el-button>
- </div>
- </div>
- </template>
- <div>介绍文案、测评结果</div>
- </el-card>
- </el-col>
- <el-col :span="12">
- <el-card shadow="hover">
- <template #header>
- <div class="fx-row fx-bet-cen">
- <div>组合选科</div>
- <div>
- <el-button type="primary" plain size="small" round>点击进入</el-button>
- </div>
- </div>
- </template>
- <div>介绍文案、测评结果</div>
- </el-card>
- </el-col>
- </el-row>
- </el-card>
- <el-card shadow="hover" class="mt20">
- <template #header>选科报名</template>
- <div class="fx-column">
- <div v-if="!allowSelect" class="mb30">
- <span class="f-red">*</span>
- 当前时段未开启选科
- </div>
- <el-form ref="form" v-if="selectObj" :model="form" :rules="rule" label-position="right" label-width="80px">
- <el-form-item label="选科轮次" class="form-item-readonly">{{ selectObj.year }}{{ selectObj.name }}</el-form-item>
- <el-form-item label="选科时间" class="form-item-readonly">{{ selectObj.beginTime }} 至 {{ selectObj.endTime }}
- </el-form-item>
- <el-form-item prop="groupId" label="选科组合">
- <el-radio-group v-model="form.groupId" :disabled="!allowSelect">
- <el-radio v-for="(opt,idx) in selectGroupOptions" :key="idx" :label="opt.value">{{ opt.text }}
- </el-radio>
- </el-radio-group>
- </el-form-item>
- <div class="fx-row fx-cen-cen mt20" v-if="allowSelect">
- <el-button v-loading="submitting" type="primary" @click="handleSubmit" style="width: 150px" round>保存
- </el-button>
- </div>
- </el-form>
- </div>
- </el-card>
- <el-card shadow="hover" class="mt20">
- <template #header>选科通知</template>
- </el-card>
- <el-dialog :visible.sync="helpVideo.visible">
- <mx-video v-if="helpVideo.visible" :src="helpVideo.src" :ali-id-type="helpVideo.aliIdType"
- class="mt15"></mx-video>
- </el-dialog>
- </div>
- </template>
- <script>
- import { getStudentSelected, saveStudentSelected } from '@/api/webApi/selection'
- import TestEntry from '@/views/elective/test/components/test-entry'
- import TestResult from '@/views/elective/test/components/test-result'
- import SelectSubject from '@/views/system/user/profile/components/select-subject'
- import ReportTable from '@/views/system/user/profile/components/report-table'
- import ElectiveGenerationSteps from '@/views/elective/generation/components/elective-generation-steps'
- import config from '@/common/mx-config'
- import {
- getOptionalMajors,
- getRecommendMajor,
- getPrimaryElectivesModels
- } from '@/api/webApi/elective/ selected-subject'
- export default {
- provide(){
- return {
- optionalMajors: this.getOptionalMajors
- }
- },
- components: { SelectSubject, TestResult, TestEntry,ReportTable,ElectiveGenerationSteps },
- name: 'round-select',
- data() {
- return {
- helpVideo: {
- visible: false,
- src: '9fca0b997b8346ce8c3ce69feaf89294',
- aliIdType: 2
- },
- reportInfo: [],
- optionalMajors: [],
- evaluationMajors: [],
- form: {
- groupId: ''
- },
- rule: {
- groupId: [{
- required: true,
- message: '选科组合必填'
- }]
- },
- //
- selectObj: null,
- allowSelect: false,
- submitting: false,
- propData: {},
- stepOptions: config.electiveGenerationOptions,
- activeStep: ''
- }
- },
- computed: {
- currentOpt() {
- /// 当前进程代对应的配置项,可能没有值
- return Object.values(this.stepOptions).find(opt => opt.value == this.selectObj.currentGeneration)
- },
- activeOpt() {
- /// 当前选中的进程代,可能没有值
- console.log('round select active step changed', this.activeStep)
- return this.stepOptions[this.activeStep]
- },
- // stepOptions() {
- // const steps = {}
- // const stepOptions = config.electiveGenerationOptions
- // for (let key in stepOptions) {
- // if(stepOptions[key].value <= this.selectObj.currentGeneration){
- // steps['a'+ key] = stepOptions[key]
- // }
- // }
- // return steps
- // },
- generations() {
- if(!this.selectObj) return {}
- return {
- // generation key value
- hiddenGenerations: [],
- options: this.stepOptions,
- current: this.selectObj.currentGeneration,
- currentOpt: this.currentOpt,
- active: this.active,
- activeOpt: this.activeOpt,
- status: {
- roundName: this.selectObj.name || '',
- year: this.selectObj.year || '',
- },
- }
- },
- stepChange(key) {
- console.log(key)
- },
- selectGroupOptions() {
- return this.selectObj.groupList?.map(g => ({
- text: g.name,
- value: g.groupId
- })) || []
- }
- },
- mounted() {
- this.loadStudentSelected()
- this.getOptionalMajors()
- this.getReportList()
- this.getRecommendMajor()
- },
- methods: {
- getRecommendMajor() {
- getRecommendMajor().then(res => {
- this.evaluationMajors= res.data
- })
- },
- getReportList() {
- getPrimaryElectivesModels().then(res => {
- this.reportInfo= res.data
- this.$refs.reportRef.init(this.reportInfo)
- })
- },
- getOptionalMajors() {
- getOptionalMajors().then(res => {
- console.log(res)
- this.optionalMajors= res.data.reverse().splice(0,6)
- this.$refs.reportRef.initOption(this.optionalMajors)
- })
- },
- loadStudentSelected() {
- getStudentSelected().then(res => {
- console.log('getStudentSelected', res)
- const selectStatus = res.data.selectResult
- selectStatus.currentGeneration = 6 // 当前所处的状态
- selectStatus.preferenceCount = 1 // 志愿数
- this.selectObj = selectStatus
- this.allowSelect = res.data.allowSelect
- this.form.groupId = this.selectObj?.groupId
- })
- },
- handleSubmit() {
- this.$refs.form.validate((valid) => {
- if (!valid) return
- this.submitting = true
- saveStudentSelected({
- groupId: this.form.groupId
- }).then(res => {
- this.msgSuccess('保存成功')
- this.loadStudentSelected()
- }).finally(() => this.submitting = false)
- })
- }
- }
- }
- </script>
- <style scoped>
- </style>
|