123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177 |
- <template>
- <div>
- <el-card>
- <mx-condition ref="condition" :query-params="queryParams" :require-fields="requireFields" @query="handleQuery"
- @invalid="handleInvalidQuery"></mx-condition>
- </el-card>
- <div class="mt20">
- <el-button type="primary" plain icon="el-icon-plus" size="mini" class="mb5" @click="handleSettingAdd">新增
- </el-button>
- <mx-table :prop-defines="tableDefines" :rows="dataList">
- <template #actions="{row}">
- <el-button type="text" @click="handleSettingEdit(row)">
- <i class="el-icon-edit"></i>编辑
- </el-button>
- <el-button type="text" @click="handleSettingDelete(row)">
- <i class="el-icon-delete"></i>删除
- </el-button>
- </template>
- </mx-table>
- <pagination v-show="total>queryParams.pageSize" :total="total" :limit.sync="queryParams.pageSize"
- :page.sync="queryParams.pageNum" @pagination="handleQuery"></pagination>
- </div>
- <el-drawer v-if="stepsVisible" :visible.sync="stepsVisible" :title="modifyTitle" :append-to-body="true" size="70%">
- <round-setting-steps :settingModel="settingModel" :default-active-step="activeStep" :year-options="yearOptions"
- @do-post="handleSubmit" v-loading="loading"></round-setting-steps>
- </el-drawer>
- </div>
- </template>
- <script>
- import * as ext from '@/utils'
- import selectTranslateMixin from '@/components/Cache/modules/mx-select-translate-mixin'
- import RoundModelConvert from './round-model-convert'
- import MxCondition from '@/components/MxCondition/mx-condition'
- import { deleteRound, getScoreImportConfig, roundList, saveScoreImportConfig } from '@/api/webApi/selection'
- import RoundSettingSteps from '@/views/elective/publish/components/steps/round-setting-steps'
- export default {
- mixins: [selectTranslateMixin, RoundModelConvert],
- name: 'round-settings',
- components: { RoundSettingSteps, MxCondition },
- data() {
- return {
- loading: false,
- // drawer
- stepsVisible: false,
- activeStep: 0,
- // query list
- requireFields: ['year'],
- queryParams: {
- pageNum: 1,
- pageSize: 20,
- year: ''
- },
- dataList: [],
- total: 0,
- tableDefines: {
- 'year': {
- label: '学年'
- },
- 'name': {
- label: '次数'
- },
- 'groupIdsName': {
- label: '选科组合'
- },
- 'beginTime': {
- label: '开始'
- },
- 'endTime': {
- label: '结束'
- },
- 'stateName': {
- label: '状态'
- },
- 'actions': {
- label: '操作',
- slot: 'actions'
- }
- },
- // modify
- settingModel: {},
- settingDialogVisible: false
- }
- },
- computed: {
- modifyTitle() {
- const type = this.settingModel.roundId ? '编辑' : '新增'
- return type + '/' + this.settingModel.year + '/' + this.settingModel.name
- },
- yearOptions() {
- return this.$refs.condition.conditions.find(c => c.key === 'year').list || []
- }
- },
- mounted() {
- console.log('round-settings mounted')
- },
- methods: {
- handleSettingsOpen() {
- this.settingsVisible = !this.settingsVisible
- },
- handleInvalidQuery() {
- this.dataList = []
- },
- handleQuery() {
- roundList(this.queryParams).then(res => {
- this.total = res.total
- this.dataList = res.rows || []
- this.dataList.forEach(r => {
- this.translateStateName(r)
- this.translateGroupIds(r)
- })
- })
- },
- translateStateName(row) {
- this.$set(row, 'stateName', row.allowSelect ? '开启' : '关闭')
- },
- translateGroupReady() {
- this.dataList.forEach(this.translateGroupIds)
- },
- // modify
- handleSettingAdd() {
- this.settingModel = {
- year: this.queryParams.year,
- name: `第${this.dataList.length + 1}次选科`,
- groupModels: [],
- dateRange: ext.getDefaultSelectRange(),
- state: true,
- importWeight: [],
- roundGroups: [],
- enableEsign: false,
- enablePaperSign: false,
- preferenceCount: 1,
- rankInvisible: false,
- scoreInvisible: false
- }
- this.activeStep = 0
- this.stepsVisible = true
- },
- handleSettingEdit(row) {
- getScoreImportConfig(row.roundId).then(res => {
- const model = this.fromApiModel(res.data)
- this.settingModel = model
- this.activeStep = model.importWeight.length ? 1 : 0
- this.stepsVisible = true
- })
- },
- handleSettingDelete(row) {
- const fullName = row.year + row.name
- this.$confirm('确认删除' + fullName + '?').then(() => {
- deleteRound(row.roundId).then(res => {
- this.msgSuccess('删除成功')
- this.queryParams.pageNum = 1
- this.handleQuery()
- })
- })
- },
- handleSubmit(commit) {
- this.loading = true
- const round = this.toApiModel(commit)
- // 提交
- saveScoreImportConfig(round).then(res => {
- this.stepsVisible = false
- this.msgSuccess('保存成功')
- this.handleQuery()
- }).finally(() => this.loading = false)
- }
- }
- }
- </script>
- <style lang="scss">
- </style>
- <style scoped>
- </style>
|