MrShi
2023-12-20 d8e493052309db7180c3ee5d3ec9e01b78e12bdc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
<template>
    <GlobalWindow
            :title="title"
            :visible.sync="visible"
            :confirm-working="isWorking"
            @confirm="confirm"
    >
        <el-form :model="form" ref="form" :rules="rules">
            <el-form-item label="题目" prop="title">
                <el-input v-model="form.title" placeholder="请输入题目" v-trim/>
            </el-form-item>
            <el-form-item label="题目类型" prop="type">
                <el-select v-model="form.type" placeholder="请选择">
                    <el-option label="判断" value="0"></el-option>
                    <el-option label="单选" value="1"></el-option>
                    <el-option label="多选" value="2"></el-option>
                </el-select>
            </el-form-item>
            <el-form-item label="适用用户" prop="useType">
                <el-radio-group v-model="form.useType">
                    <el-radio :label="0">劳务人员</el-radio>
                    <el-radio :label="1">普通访客</el-radio>
                </el-radio-group>
            </el-form-item>
            <el-form-item label="题目顺序(升序)" prop="sortnu">
                <el-input v-model="form.sortnu" placeholder="请输入" v-trim/>
            </el-form-item>
            <el-form-item label="选项集合" prop="options" v-if="form.type === '1' || form.type === '2'">
                <el-button type="primary" style="width: 120px; margin-bottom: 15px;" @click="add" icon="el-icon-plus">添加选项</el-button>
                <el-tabs v-model="editableTabsValue" type="card" closable @tab-remove="removeTab">
                    <el-tab-pane
                        v-for="item in problems"
                        :key="item.name"
                        :label="item.name"
                        :name="item.id"
                    >
                        <el-input v-model="item.val" placeholder="请输入" v-trim/>
                    </el-tab-pane>
                </el-tabs>
            </el-form-item>
            <el-form-item label="正确答案" prop="answer">
                <el-select v-model="form.answer" multiple placeholder="请选择正确答案">
                    <el-option
                        v-for="item in problems"
                        :key="item.id"
                        :label="item.name"
                        :value="item.id">
                    </el-option>
                </el-select>
            </el-form-item>
        </el-form>
    </GlobalWindow>
</template>
 
<script>
import BaseOpera from '@/components/base/BaseOpera'
import GlobalWindow from '@/components/common/GlobalWindow'
export default {
  name: 'OperaProblemsWindow',
  extends: BaseOpera,
  components: { GlobalWindow },
  data () {
    return {
      // 表单数据
      form: {
        id: null,
        title: '',
        options: '',
        answer: '',
        sortnu: '',
        type: '',
        useType: ''
      },
      // 验证规则
      rules: {
      },
      editableTabsValue: '0',
      problems: [
        { name: '选择A', val: '', id: '0' }
      ],
      arr: ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']
    }
  },
  created () {
    this.config({
      api: '/business/problems',
      'field.id': 'id'
    })
  },
  methods: {
    removeTab (e) {
      this.problems.splice(e, 1)
      if (e === this.editableTabsValue) {
        this.editableTabsValue = '0'
      }
      this.problems.forEach((item, index) => {
        item.name = '选项' + this.arr[index]
        item.id = index.toString()
      })
    },
    add () {
      const name = '选项' + this.arr[this.problems.length]
      this.problems.push({ name, val: '', id: this.problems.length.toString() })
    }
  }
}
</script>