|
@@ -42,14 +42,11 @@
|
|
|
</div>
|
|
|
</template>
|
|
|
<script>
|
|
|
-import consts from '@/common/mx-const'
|
|
|
-import { mapGetters } from 'vuex'
|
|
|
import MxSelectTranslate from '@/components/Cache/modules/mx-select-translate-mixin.js'
|
|
|
import ChooseSubjectDialog from '../../../system/user/profile/components/choose-subject-dialog'
|
|
|
import SelectSubjectReportDialog from '@/views/system/user/profile/components/select-subject-report-dialog'
|
|
|
import OverUnderBadge from '@/views/elective/publish/components/steps/fauclty/over-under-badge'
|
|
|
import ElectiveEnrollInfo from '@/views/elective/select/components/elective-enroll-info'
|
|
|
-import ElectiveToolsMixin from './elective-tools-mixins'
|
|
|
import ElectivePreferenceInfo from '@/views/elective/select/components/elective-preference-info'
|
|
|
import ElectivePreferenceReject from '@/views/elective/select/components/elective-preference-reject'
|
|
|
import ElectivePreferenceCommand from '@/views/elective/select/components/elective-preference-command'
|
|
@@ -60,11 +57,10 @@ import ElectiveMajorCollege from '@/views/elective/select/components/elective-ma
|
|
|
import ElectivePreferenceBatch from '@/views/elective/select/components/elective-preference-batch'
|
|
|
import ElectiveTableGroupTag from '@/views/elective/select/components/elective-table-group-tag'
|
|
|
|
|
|
-const resolverModules = require.context('./round-select-resolvers', false, /\.js$/)
|
|
|
-const resolvers = resolverModules.keys().map(key => resolverModules(key).default)
|
|
|
+import ElectiveTableMixin from './elective-table-mixins'
|
|
|
|
|
|
export default {
|
|
|
- mixins: [ElectiveToolsMixin, MxSelectTranslate, ...resolvers],
|
|
|
+ mixins: [ElectiveTableMixin, MxSelectTranslate],
|
|
|
name: 'elective-table',
|
|
|
props: {
|
|
|
generation: Object,
|
|
@@ -93,30 +89,9 @@ export default {
|
|
|
}
|
|
|
},
|
|
|
computed: {
|
|
|
- ...mapGetters(['hasPermissions']),
|
|
|
enrollInfoVisible() {
|
|
|
return this.generation.active > this.generation.options.primary.value
|
|
|
},
|
|
|
- enrollStatus() {
|
|
|
- const enrolledGroup = this.generation.activeModel.models?.find(this.isGroupEnrolled)
|
|
|
- if (enrolledGroup) {
|
|
|
- let enrolledModel = this.generation.activeModel
|
|
|
- do {
|
|
|
- const matched = enrolledModel.models?.find(this.isGroupEnrolled)
|
|
|
- if (matched
|
|
|
- && matched.groupId == enrolledGroup.groupId
|
|
|
- && enrolledModel.selectedList.includes(matched)) {
|
|
|
- return {
|
|
|
- enrolledGroup,
|
|
|
- enrolledModel
|
|
|
- }
|
|
|
- }
|
|
|
- enrolledModel = enrolledModel.prevModel
|
|
|
- }
|
|
|
- while (enrolledModel)
|
|
|
- }
|
|
|
- return { enrolledGroup, enrolledModel: null }
|
|
|
- },
|
|
|
stepMatched() {
|
|
|
return this.generation.active == this.generation.current
|
|
|
},
|
|
@@ -142,108 +117,6 @@ export default {
|
|
|
return !this.generation.activeOpt.decisionMaking
|
|
|
&& this.generation.activeOpt != this.generation.options.primary
|
|
|
&& !this.readonly
|
|
|
- },
|
|
|
- resolveTablePrefix() {
|
|
|
- return {
|
|
|
- index: {
|
|
|
-
|
|
|
- type: 'index',
|
|
|
- label: '编号'
|
|
|
- },
|
|
|
- groupName: {
|
|
|
- label: '选科组合',
|
|
|
- slot: 'group',
|
|
|
- width: '85px'
|
|
|
- },
|
|
|
- scoreSumGroup: {
|
|
|
- label: '组合成绩',
|
|
|
- hidden: this.hasPermissions([consts.enum.electivePermission.rankInGroup.scoreByGroup])
|
|
|
- },
|
|
|
- classCount: {
|
|
|
- label: '开设班级数'
|
|
|
- },
|
|
|
- personCount: {
|
|
|
- label: '人数设置'
|
|
|
- }
|
|
|
- }
|
|
|
- },
|
|
|
- resolveTableSuffix() {
|
|
|
- const stepMatched = this.generation.active == this.generation.current
|
|
|
- const enableApply = !this.generation.currentOpt.decisionMaking
|
|
|
- const enableSignUp = stepMatched && enableApply && !this.readonly
|
|
|
-
|
|
|
- return {
|
|
|
- rankInGroup: {
|
|
|
- label: '当前组合实时排名',
|
|
|
- hidden: this.hasPermissions([consts.enum.electivePermission.rankInGroup])
|
|
|
- },
|
|
|
- rankInGrade: {
|
|
|
- label: '选科全校排名',
|
|
|
- hidden: this.hasPermissions([consts.enum.electivePermission.rankInGrade])
|
|
|
- },
|
|
|
- allowSelectTips: {
|
|
|
- label: '报名状态'
|
|
|
- },
|
|
|
- temp: {
|
|
|
- label: '选择专业',
|
|
|
- width: '140',
|
|
|
- slot: 'temp',
|
|
|
- hidden: this.readonly
|
|
|
- },
|
|
|
- subjects: {
|
|
|
- label: '自选专业',
|
|
|
- slot: 'subjects',
|
|
|
- minWidth: '150'
|
|
|
- },
|
|
|
- colleges: {
|
|
|
- label: '院校',
|
|
|
- slot: 'colleges',
|
|
|
- minWidth: '250'
|
|
|
- },
|
|
|
- signUp: {
|
|
|
- label: '操作',
|
|
|
- slot: 'signUp',
|
|
|
- width: '100',
|
|
|
- fixed: 'right',
|
|
|
- hidden: !enableSignUp
|
|
|
- }
|
|
|
- }
|
|
|
- },
|
|
|
- resolveDynamicTable() {
|
|
|
- if (!Object.keys(this.formatRows).length) return {}
|
|
|
- const options = this.generation.options
|
|
|
- if (!options || !this.generation.active) return {}
|
|
|
- const dynamicColumns = {}
|
|
|
- this.generation.activeModels.forEach(model => {
|
|
|
- const resolverKey = model.option.key + 'Resolver'
|
|
|
- const resolver = this[resolverKey]
|
|
|
- if (typeof resolver === 'function') {
|
|
|
- const genColumns = resolver(model, this.generation.activeModel, dynamicColumns)
|
|
|
- Object.assign(dynamicColumns, genColumns)
|
|
|
- }
|
|
|
- })
|
|
|
- return dynamicColumns
|
|
|
- },
|
|
|
- formatRows() {
|
|
|
- if (!this.optionalMajors) return []
|
|
|
- if (!this.generation.roundGroups?.length) return []
|
|
|
- if (!this.generation.activeModels?.length) return []
|
|
|
- const activeModel = this.generation.activeModel
|
|
|
- return this.generation.roundGroups.map(rg => {
|
|
|
- const row = activeModel.models?.find(item => item.groupId == rg.groupId) || {}
|
|
|
- this.$set(row, 'allowSelectTips', this.combineGroupStatus(row, activeModel))
|
|
|
- const matchedMajors = this.optionalMajors.filter(college => college.matchedGroupIds.includes(row.groupId))
|
|
|
- this.$set(row, 'colleges', matchedMajors.map(m => ({ college: m.collegeName, major: m.majorCategoryName })))
|
|
|
- this.$set(row, 'subjects', matchedMajors.map(m => m['majorCategoryName']))
|
|
|
- return row
|
|
|
- })
|
|
|
- },
|
|
|
- formatCols() {
|
|
|
- return {
|
|
|
- ...this.resolveTablePrefix,
|
|
|
- ...this.resolveDynamicTable,
|
|
|
- ...this.resolveTableSuffix
|
|
|
- }
|
|
|
}
|
|
|
},
|
|
|
methods: {
|