Blame view

src/views/examinationPaper/addAsk.vue 33.5 KB
4c4f7640   梁保满   路由表,路由前端文件
1
  <template>
ca39cc52   阿宝   飞书问题处理
2
    <div ref="content" class="content-box">
13b58a42   梁保满   备题组卷部分前端页面基本完成
3
4
      <back-box>
        <template slot="title">
8af7657f   梁保满   修改添加备题,组卷
5
          <span>导入课件</span>
13b58a42   梁保满   备题组卷部分前端页面基本完成
6
7
8
        </template>
      </back-box>
      <div class="content">
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
9
        <el-steps :active="step" finish-status="success" simple style="margin: 20px 0">
13b58a42   梁保满   备题组卷部分前端页面基本完成
10
11
          <el-step title="基础信息" icon="el-icon-edit"></el-step>
          <el-step title="题目编辑" icon="el-icon-tickets"></el-step>
8af7657f   梁保满   修改添加备题,组卷
12
          <el-step title="课件预览" icon="el-icon-edit-outline"></el-step>
13b58a42   梁保满   备题组卷部分前端页面基本完成
13
14
        </el-steps>
        <div v-show="step == 0">
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
15
          <el-form ref="forms" :model="form" :rules="formRules" label-width="140px">
8af7657f   梁保满   修改添加备题,组卷
16
            <el-form-item label="课件名称:" prop="title">
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
17
18
              <el-input class="sel2" type="text" placeholder="请输入答题卡名称" v-model.trim="form.title" maxlength="30" size="45"
                show-word-limit>
ca39cc52   阿宝   飞书问题处理
19
              </el-input>
13b58a42   梁保满   备题组卷部分前端页面基本完成
20
            </el-form-item>
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
21
22
23
            <el-form-item v-if="role != 'ROLE_PERSONAL'" label="年级:" prop="gradeName">
              <el-select class="sel" v-model="form.gradeName" placeholder="" @change="changeGrade">
                <el-option v-for="item in gradeList" :key="item" :label="item" :value="item">
13b58a42   梁保满   备题组卷部分前端页面基本完成
24
25
26
                </el-option>
              </el-select>
            </el-form-item>
ee6e7628   梁保满   备题组卷借口数据对接调整
27
28
            <el-form-item label="科目:" prop="subjectName">
              <el-select class="sel" v-model="form.subjectName" placeholder="">
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
29
30
                <el-option v-for="item in subjectList" :key="item.value" :label="item.label" :value="item.value">{{
                  item.label }}
13b58a42   梁保满   备题组卷部分前端页面基本完成
31
32
33
                </el-option>
              </el-select>
            </el-form-item>
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
34
            <el-form-item v-if="role != 'ROLE_PERSONAL'" label="分享范围:" prop="sharingType">
ee6e7628   梁保满   备题组卷借口数据对接调整
35
              <el-radio-group v-model="form.sharingType">
f356590c   阿宝   即时测列表,分析页面
36
37
                <el-radio :label="0">任课班级分享</el-radio>
                <el-radio :label="1">全年级分享</el-radio>
13b58a42   梁保满   备题组卷部分前端页面基本完成
38
39
40
41
              </el-radio-group>
            </el-form-item>
          </el-form>
          <div class="btn-box">
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
42
            <el-button type="danger" plain round @click="linkBack">取消</el-button>
13b58a42   梁保满   备题组卷部分前端页面基本完成
43
44
            <el-button type="primary" round @click="setStep1">下一步</el-button>
          </div>
13b58a42   梁保满   备题组卷部分前端页面基本完成
45
46
        </div>
        <div v-show="step == 1">
f26ecfa4   阿宝   测试bug
47
48
          <div class="answer-title">
            <p class="name">{{ form.title }}</p>
f26ecfa4   阿宝   测试bug
49
          </div>
8af7657f   梁保满   修改添加备题,组卷
50
          <div class="question-box">
f5729396   梁保满   批量设置答案
51
52
53
54
55
56
57
            <ul class="questions-ul">
              <li class="sub-questions">
                <div class="qs-num">题号</div>
                <div class="qs-type">题型</div>
                <div class="qs-score">分数</div>
                <div class="qs-partScore">漏选得分</div>
                <div class="qs-options qs-options2">选项设置</div>
8af7657f   梁保满   修改添加备题,组卷
58
59
                <div class="qs-upload">提干</div>
                <div class="qs-set"></div>
f5729396   梁保满   批量设置答案
60
              </li>
8af7657f   梁保满   修改添加备题,组卷
61
              <li v-for="(subQuestions, index) in form.questionList" :key="index">
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
62
63
64
65
                <p class="set-ans-btn" v-if="subQuestions.qusType &&
                  subQuestions.subNum &&
                  subQuestions.subNum > 4
                  ">
8af7657f   梁保满   修改添加备题,组卷
66
                  <el-button type="primary" @click="setFormAns(index)">批量设置答案</el-button>
f5729396   梁保满   批量设置答案
67
68
69
                </p>
                <div v-else class="sub-questions">
                  <div class="qs-num">
8af7657f   梁保满   修改添加备题,组卷
70
                    {{ index + 1 }}
3ba60a63   梁保满   发卡补卡,设备状态上传下载接口联调
71
                  </div>
f5729396   梁保满   批量设置答案
72
                  <div class="qs-type">
8af7657f   梁保满   修改添加备题,组卷
73
74
75
76
77
78
79
                    <el-select v-model="subQuestions.questionType" placeholder="选择题目类型"
                      @change="changeSubQuestions($event, subQuestions)">
                      <el-option label="单选题" :value="2"></el-option>
                      <el-option label="多选题" :value="3"></el-option>
                      <el-option label="判断题" :value="4"></el-option>
                      <el-option label="主观题" :value="5"></el-option>
                    </el-select>
f5729396   梁保满   批量设置答案
80
81
                  </div>
                  <div class="qs-score">
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
82
83
                    <el-input-number class="number-ipt" size="medium" :min="1" :max="200" :precision="2"
                      v-model="subQuestions.score" label="单题分值"></el-input-number>
f5729396   梁保满   批量设置答案
84
85
86
                  </div>
                  <div class="qs-partScore">
                    <p v-if="subQuestions.questionType != 3">--</p>
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
87
88
                    <el-input-number class="number-ipt" v-else size="medium" :min="0" :precision="2"
                      :max="subQuestions.score" :step="0.5" v-model="subQuestions.partScore" label="漏选得分"></el-input-number>
f5729396   梁保满   批量设置答案
89
90
91
92
                  </div>
                  <div class="qs-options qs-options2">
                    <p v-if="subQuestions.questionType == 5">--</p>
                    <p v-if="subQuestions.questionType == 4" class="answer-box">
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
93
94
95
96
                      <span class="answer-s" :class="subQuestions.correctAnswer == 1 ? 'active' : ''"
                        @click="subQuestions.correctAnswer = 1">✓</span>
                      <span class="answer-s" :class="subQuestions.correctAnswer == 2 ? 'active' : ''"
                        @click="subQuestions.correctAnswer = 2">✗</span>
f5729396   梁保满   批量设置答案
97
98
                    </p>
                    <p v-if="subQuestions.questionType == 3" class="answer-box">
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
99
100
101
102
                      <span class="answer-s" v-for="option in subQuestions.answerOptions.split(',')" :class="subQuestions.correctAnswer?.includes(option)
                        ? 'active'
                        : ''
                        " :key="option" @click="changAnswer(subQuestions, option)">{{ option }}</span>
f5729396   梁保满   批量设置答案
103
104
                    </p>
                    <p v-if="subQuestions.questionType == 2" class="answer-box">
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
105
106
                      <span class="answer-s" v-for="option in subQuestions.answerOptions.split(',')" :class="subQuestions.correctAnswer == option ? 'active' : ''
                        " :key="option" @click="subQuestions.correctAnswer = option">{{ option }}</span>
f5729396   梁保满   批量设置答案
107
108
                    </p>
                  </div>
8af7657f   梁保满   修改添加备题,组卷
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
                  <div class="qs-upload">
                    <el-popover placement="right" width="400" trigger="click">
                      <div class="screenshot-box">
                        <iframe class="screenshot"
                          v-if="subQuestions.screenshot && subQuestions.screenshot.includes('html')"
                          :src="subQuestions.screenshot"></iframe>
                        <img class="screenshot screenshot-img"
                          v-if="subQuestions.screenshot && !subQuestions.screenshot.includes('html')"
                          :src="subQuestions.screenshot" alt="">
                        <p style="textAlign:center"><el-button type="primary" round size="mini" icon="el-icon-upload"
                            @click="openStem(subQuestions, index)">重新选择图片</el-button></p>
                      </div>
                      <el-button slot="reference" class="icon-tickets" type="primary" circle size="mini"
                        icon="el-icon-tickets"></el-button>
                    </el-popover>
                  </div>
                  <div class="qs-set">
                    <el-popconfirm title="确定删除这道题吗?" @confirm="delTabData(index)">
                      <el-button slot="reference" class="delete" type="danger" size="mini" circle
                        icon="el-icon-delete"></el-button>
                    </el-popconfirm>
                  </div>
f5729396   梁保满   批量设置答案
131
132
133
                </div>
              </li>
            </ul>
3ba60a63   梁保满   发卡补卡,设备状态上传下载接口联调
134
          </div>
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
135
136
          <el-dialog :close-on-click-modal="false" title="批量设置答案" :visible.sync="diaSetAns" width="400"
            :modal-append-to-body="false">
3ba60a63   梁保满   发卡补卡,设备状态上传下载接口联调
137
138
139
140
141
142
            <div class="qs-options">
              <p class="dia-tips">
                请点击选项按钮设置答案,多选题题目之间用“,”隔开,若添加5道题:“AC,AD,BD,AC,CD”
              </p>
              <p>{{ setSubPro(formAns.qusType) }}:</p>
              <p class="ipt">
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
143
                <el-input v-if="formAns.qusType == 2 || formAns.qusType == 3" ref="formAnsIpt" v-model="formAns.answerList"
3ba60a63   梁保满   发卡补卡,设备状态上传下载接口联调
144
                  @keydown.native="keydownAnswer($event, formAns.qusType)"
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
145
146
                  @input="setAllAnswer($event, formAns.qusType)"></el-input>
                <el-input v-if="formAns.qusType == 4" v-model="formAns.answerList" readonly=""></el-input>
3ba60a63   梁保满   发卡补卡,设备状态上传下载接口联调
147
148
149
              </p>
              <p class="answer-box">
                <template v-if="formAns.qusType == 4">
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
150
151
152
153
154
155
156
157
158
159
                  <span class="answer-s active" @click="
                    formAns.answerList.length < formAns.subNum
                      ? (formAns.answerList += '✓')
                      : ''
                    ">✓</span>
                  <span class="answer-s active" @click="
                    formAns.answerList.length < formAns.subNum
                      ? (formAns.answerList += '✗')
                      : ''
                    ">✗</span>
3ba60a63   梁保满   发卡补卡,设备状态上传下载接口联调
160
161
                </template>
                <template v-if="formAns.qusType == 3">
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
162
163
164
                  <span class="answer-s active" v-for="option in formAns.answerOptions.split(',')" :key="option"
                    @click="setMultiple(formAns, option, 2)">{{ option }}</span>
                  <span class="answer-s active" @click="setMultiple(formAns, ',', 2)">,</span>
3ba60a63   梁保满   发卡补卡,设备状态上传下载接口联调
165
                </template>
21dfdeae   梁保满   平台管理员
166
                <template v-if="formAns.qusType == 2">
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
167
168
169
170
171
                  <span class="answer-s active" v-for="option in formAns.answerOptions.split(',')" :key="option" @click="
                    formAns.answerList.length < formAns.subNum
                      ? (formAns.answerList += option)
                      : ''
                    ">{{ option }}</span>
3ba60a63   梁保满   发卡补卡,设备状态上传下载接口联调
172
                </template>
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
173
174
                <span class="answer-s delButton" @click="formAns.answerList = formAns.answerList.slice(0, -1)">x</span>
                <span class="answer-s ac" @click="formAns.answerList = ''">ac</span>
3ba60a63   梁保满   发卡补卡,设备状态上传下载接口联调
175
176
177
178
179
180
181
              </p>
            </div>
            <div class="dialog-footer" slot="footer">
              <el-button @click="saveFormAns">确 定</el-button>
              <el-button @click="diaSetAns = false">取 消</el-button>
            </div>
          </el-dialog>
13b58a42   梁保满   备题组卷部分前端页面基本完成
182
          <div class="btn-box">
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
183
            <el-button type="danger" plain round @click="linkBack">取消</el-button>
8af7657f   梁保满   修改添加备题,组卷
184
185
            <el-button round @click="step = 0">上一步</el-button>
            <el-button type="primary" round @click="toStep(2)">下一步</el-button>
13b58a42   梁保满   备题组卷部分前端页面基本完成
186
          </div>
8af7657f   梁保满   修改添加备题,组卷
187
188
189
190
191
192
193
194
195
196
197
198
199
200
          <el-dialog :close-on-click-modal="false" title="上传题干" :visible.sync="dialogStem" v-if="dialogStem" width="500">
            <div class="upload-box">
              <img v-if="stem.screenshot && !stem.screenshot.includes('html')" :src="stem.screenshot" class="stem-pic" />
              <el-upload class="upload-demo" action="http://121.40.127.171/file/uploadImg" :limit="1"
                :on-success="upSuccess" :on-error="upError" accept="image/*">
                <el-button size="small" type="primary">{{
                  stem.screenshot && !stem.screenshot.includes('html') ? "重新上传" : "选择照片"
                }}</el-button>
              </el-upload>
            </div>
            <div slot="footer">
              <el-button @click="dialogStem = false">确定</el-button>
            </div>
          </el-dialog>
13b58a42   梁保满   备题组卷部分前端页面基本完成
201
        </div>
8af7657f   梁保满   修改添加备题,组卷
202
203
204
        <div v-show="step == 2">
          <div class="answer-title">
            <p class="name">{{ form.title }}</p>
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
205
          </div>
8af7657f   梁保满   修改添加备题,组卷
206
207
208
209
210
211
212
213
          <div class="question-box">
            <div class="screenshot-box" v-for="(subQuestions, index) in form.questionList" :key="index">
              <iframe class="screenshot" v-if="subQuestions.screenshot && subQuestions.screenshot.includes('html')"
                :src="subQuestions.screenshot"></iframe>
              <img class="screenshot screenshot-img"
                v-if="subQuestions.screenshot && !subQuestions.screenshot.includes('html')" :src="subQuestions.screenshot"
                alt="">
            </div>
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
214
          </div>
8af7657f   梁保满   修改添加备题,组卷
215
216
217
218
219
220
          <div class="btn-box">
            <el-button type="danger" plain round @click="linkBack">取消</el-button>
            <el-button round @click="toStep(1)">上一步</el-button>
            <el-button type="primary" round @click="save">保存</el-button>
          </div>
        </div>
13b58a42   梁保满   备题组卷部分前端页面基本完成
221
222
      </div>
    </div>
4c4f7640   梁保满   路由表,路由前端文件
223
224
225
  </template>
  
  <script>
533a17d8   梁保满   备题组卷添加批量设置答案
226
  import { deepClone, checkAnswer } from "utils";
13b58a42   梁保满   备题组卷部分前端页面基本完成
227
228
229
230
231
  const subQuesOptions = {
    questionType: 2,
    score: 1,
    partScore: 0,
    selectNum: 4,
ee6e7628   梁保满   备题组卷借口数据对接调整
232
    answerOptions: "A,B,C,D",
13b58a42   梁保满   备题组卷部分前端页面基本完成
233
234
    correctAnswer: "",
  };
4c4f7640   梁保满   路由表,路由前端文件
235
  export default {
255e2506   梁保满   飞书bug及优化
236
237
238
239
240
241
    watch: {
      step: function () {
        this.$nextTick(function () {
          this.$refs.content.scrollTop = 0;
        });
      },
ca39cc52   阿宝   飞书问题处理
242
    },
13b58a42   梁保满   备题组卷部分前端页面基本完成
243
244
    data() {
      return {
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
245
        role: "",
13b58a42   梁保满   备题组卷部分前端页面基本完成
246
247
248
        step: 0, //步骤
        gradeList: [], //年级
        subjectList: [], //科目
13b58a42   梁保满   备题组卷部分前端页面基本完成
249
250
251
        form: {
          //答题卡详情
          title: "",
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
252
          gradeName: "",
8af7657f   梁保满   修改添加备题,组卷
253
          subjectName: "",
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
254
          sharingType: 0,
8af7657f   梁保满   修改添加备题,组卷
255
          questionList: [],
13b58a42   梁保满   备题组卷部分前端页面基本完成
256
257
258
259
260
261
262
263
264
265
266
267
        },
        formRules: {
          //答题卡验证
          title: [
            { required: true, message: "请输入答题卡名称", trigger: "blur" },
            {
              min: 1,
              max: 30,
              message: "长度在 1 到 30 个字符",
              trigger: "blur",
            },
          ],
8af7657f   梁保满   修改添加备题,组卷
268
269
270
          gradeName: [
            { required: true, message: "请选择年级", trigger: "blur" },
          ],
ee6e7628   梁保满   备题组卷借口数据对接调整
271
272
273
          subjectName: [
            { required: true, message: "请选择科目", trigger: "blur" },
          ],
13b58a42   梁保满   备题组卷部分前端页面基本完成
274
        },
818e50d7   梁保满   标签删除,修改
275
        tagList: [],
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
276
277
        diaSetAns: false, //答案开关
        dialogStem: false, //截图开关
533a17d8   梁保满   备题组卷添加批量设置答案
278
        formAns: {
98f6a547   梁保满   创建答题卡,统计答题信息
279
          index: 0, //相同题目最后一位题目的位置
533a17d8   梁保满   备题组卷添加批量设置答案
280
281
282
283
284
          qusType: "", //题目类型
          subNum: 0, //数量
          answerOptions: [], //答案选项
          answerList: "", //答案列表-字符串
        },
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
285
286
        stem: {
          index: 0, //大题位置
8af7657f   梁保满   修改添加备题,组卷
287
          screenshot: "", //题干图片地址
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
288
289
        },
        type: 1, //1-创建,2-复制答题卡
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
290
291
292
293
294
295
296
        questionOptions: [
          { label: "单选题", value: 2 },
          { label: "多选题", value: 3 },
          { label: "判断题", value: 4 },
          { label: "主观题", value: 5 },
        ],
        rightOptions: ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J"],
13b58a42   梁保满   备题组卷部分前端页面基本完成
297
298
      };
    },
5424ef82   梁保满   接口调整
299
    async created() {
f26ecfa4   阿宝   测试bug
300
      this.type = this.$route.query.type ? this.$route.query.type : 1;
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
301
302
303
      this.role =
        this.$store.getters.info.showRole ||
        this.$store.getters.info.permissions[0].role;
8af7657f   梁保满   修改添加备题,组卷
304
305
306
307
308
309
      let params = this.$route.query.params && JSON.parse(this.$route.query.params) || null
      this.form.title = params?.name
      this.form.id = params?.id
      this.form.sharingType = params?.sharingType || 0
      this.formatData(params)
      console.log(this.form)
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
310
311
312
313
314
315
      if (this.role != "ROLE_PERSONAL") {
        this.formRules.gradeName = [
          { required: true, message: "请选择年级", trigger: "blur" },
        ];
        await this._GradeList();
      }
8f573b82   阿宝   组卷接口联调
316
      await this._QuerySubjectList(this.gradeList[0]);
13b58a42   梁保满   备题组卷部分前端页面基本完成
317
      if (this.type == 2) {
ee6e7628   梁保满   备题组卷借口数据对接调整
318
        this._QueryDetail();
13b58a42   梁保满   备题组卷部分前端页面基本完成
319
320
321
      }
    },
    methods: {
8af7657f   梁保满   修改添加备题,组卷
322
      // v1.5
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
323
      //上传截图
8af7657f   梁保满   修改添加备题,组卷
324
      openStem(obj, index) {
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
325
        this.stem.index = index;
8af7657f   梁保满   修改添加备题,组卷
326
        this.stem.screenshot = obj.screenshot || "";
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
327
328
329
330
331
        this.dialogStem = true;
      },
      //图片上传成功
      upSuccess(res, file) {
        if (res && res.status == 0) {
8af7657f   梁保满   修改添加备题,组卷
332
333
          this.stem.screenshot = res.data.url;
          this.form.questionList[this.stem.index].screenshot = this.stem.screenshot;
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
334
335
336
337
338
339
340
341
342
          this.$message.success("上传成功");
        } else {
          this.$message.error(res.info);
        }
      },
  
      upError(res) {
        this.$message.error("上传失败");
      },
8af7657f   梁保满   修改添加备题,组卷
343
      //end
13b58a42   梁保满   备题组卷部分前端页面基本完成
344
345
      linkBack() {
        this.$confirm(
8af7657f   梁保满   修改添加备题,组卷
346
347
          (this.type == 2 ? "修改复制的" : "导入的") +
          "课件未保存,确认退出吗?",
13b58a42   梁保满   备题组卷部分前端页面基本完成
348
349
350
351
352
353
354
355
356
357
358
359
          "提示",
          {
            confirmButtonText: "取消",
            cancelButtonText: "确定",
            confirmButtonClass: "el-button--danger1",
            cancelButtonClass: "el-button--primary",
            showClose: false,
            roundButton: true,
            center: true,
            type: "warning",
          }
        )
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
360
          .then(() => { })
13b58a42   梁保满   备题组卷部分前端页面基本完成
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
          .catch(() => {
            this.$router.push({
              path: "/examinationPaper",
            });
          });
      },
      setSubPro(type) {
        let tit;
        switch (type) {
          case 2:
            tit = "单选题";
            break;
          case 3:
            tit = "多选题";
            break;
          case 4:
            tit = "判断题";
            break;
          case 5:
            tit = "主观题";
            break;
        }
        return tit;
      },
8af7657f   梁保满   修改添加备题,组卷
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
      //整理问题
      formateQuestion() {
        let types = [{}];
        let addndex = 0;
        this.formatQuestionList()
        this.form.questionList.map((sub, index) => {
          sub.questionIndex = index
          if (!!sub.questionType) {
            if (
              sub.questionType == types[addndex].qusType &&
              sub.questionType != 5
            ) {
              //同类型批量答案+1
              types[addndex].subNum += 1;
              if (
                types[addndex].answerOptions.length < sub.answerOptions.length
              ) {
                types[addndex].answerOptions = sub.answerOptions;
              }
              types[addndex].answerList = "";
              //循环最后类型数量大于等于5,保存批量答案
              if (types[addndex].subNum >= 5) {
                types[addndex].index = index;
              }
            } else {
              if (types[addndex].subNum >= 5) {
                //不同类型时如果原有类型数量大于等于5,保存批量答案
                types[addndex].index = index - 1;
                addndex += 1;
                types[addndex] = {};
              }
              //不同类型初始化批量答案
              types[addndex].qusType = sub.questionType;
              types[addndex].subNum = 1;
              types[addndex].answerOptions = sub.answerOptions;
              types[addndex].answerList = "";
            }
533a17d8   梁保满   备题组卷添加批量设置答案
422
          }
0e46bc25   梁保满   优化
423
        });
8af7657f   梁保满   修改添加备题,组卷
424
425
426
427
428
429
430
431
        for (let i = 0; i < types.length; i++) {
          if (types[i].subNum >= 5) {
            this.form.questionList.splice(
              types[i].index + i + 1,
              0,
              deepClone(types[i])
            );
          }
3ba60a63   梁保满   发卡补卡,设备状态上传下载接口联调
432
433
        }
      },
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
434
      //初始化要修改的答案
8af7657f   梁保满   修改添加备题,组卷
435
436
437
      setFormAns(index) {
        this.formAns = { ...this.form.questionList[index] };
        let startIndex = index - this.formAns.subNum; //批量设置开始位置
11a4e518   梁保满   背题组卷修改答案设置,即使测随堂问...
438
439
        this.formAns.answerList = [];
        let answerList = "";
8af7657f   梁保满   修改添加备题,组卷
440
441
        this.form.questionList.map((item, subIdx) => {
          if (subIdx >= startIndex && subIdx < index) {
f5729396   梁保满   批量设置答案
442
            answerList += this.setAnswer(item.questionType, item.correctAnswer);
8af7657f   梁保满   修改添加备题,组卷
443
444
            if (item.qusType == 3) {
              answerList = answerList.slice(0, -1);
11a4e518   梁保满   背题组卷修改答案设置,即使测随堂问...
445
            }
8af7657f   梁保满   修改添加备题,组卷
446
            this.formAns.answerList = answerList;
11a4e518   梁保满   背题组卷修改答案设置,即使测随堂问...
447
448
          }
        });
533a17d8   梁保满   备题组卷添加批量设置答案
449
450
        this.diaSetAns = true;
      },
def690b2   梁保满   批量设置答案
451
      insertTxtAndSetcursor(element, answerList, str) {
f5729396   梁保满   批量设置答案
452
453
454
455
456
457
458
459
460
461
462
463
464
465
        let startPos = element.selectionStart; // 获取光标开始的位置
        if (startPos === undefined) {
          // 如果没有光标位置 不操作
          return answerList;
        } else {
          return {
            text:
              answerList.substring(0, startPos) +
              str +
              answerList.substring(startPos), // 将文本插入
            startPos: startPos + str.length,
          };
        }
      },
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
466
      //多选答案设置
def690b2   梁保满   批量设置答案
467
      setMultiple(obj, answer, type) {
def690b2   梁保满   批量设置答案
468
469
470
471
472
473
474
475
476
        let elements =
          type == 1
            ? this.$refs["formAnsIpt2"].$el.children[0]
            : this.$refs["formAnsIpt"].$el.children[0];
        let resault = this.insertTxtAndSetcursor(
          elements,
          obj.answerList || "",
          answer
        );
f5729396   梁保满   批量设置答案
477
        obj.answerList = resault.text;
533a17d8   梁保满   备题组卷添加批量设置答案
478
        let str = obj.answerList;
3ba60a63   梁保满   发卡补卡,设备状态上传下载接口联调
479
480
481
482
483
484
        let str2;
        if (!!obj.answerOptions) {
          str2 = checkAnswer(
            str,
            3,
            obj.answerOptions.split(",").length,
b2d3d803   梁保满   批量设置答案优化
485
            obj.subNum
3ba60a63   梁保满   发卡补卡,设备状态上传下载接口联调
486
487
          );
        } else {
b2d3d803   梁保满   批量设置答案优化
488
          str2 = checkAnswer(str, 3, obj.selectNum, obj.number);
3ba60a63   梁保满   发卡补卡,设备状态上传下载接口联调
489
        }
533a17d8   梁保满   备题组卷添加批量设置答案
490
        obj.answerList = str2;
def690b2   梁保满   批量设置答案
491
492
        elements.focus();
        elements.selectionStart = resault.startPos;
533a17d8   梁保满   备题组卷添加批量设置答案
493
      },
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
494
      //批量修改答案
533a17d8   梁保满   备题组卷添加批量设置答案
495
      saveFormAns() {
533a17d8   梁保满   备题组卷添加批量设置答案
496
497
        let EndIndex;
        let subNum = this.formAns.subNum - 1;
8af7657f   梁保满   修改添加备题,组卷
498
        this.form.questionList.some(
533a17d8   梁保满   备题组卷添加批量设置答案
499
          (item, index) => {
8af7657f   梁保满   修改添加备题,组卷
500
            if (this.formAns.index == item.questionIndex) {
533a17d8   梁保满   备题组卷添加批量设置答案
501
              EndIndex = index;
533a17d8   梁保满   备题组卷添加批量设置答案
502
            }
8af7657f   梁保满   修改添加备题,组卷
503
            return this.formAns.index == item.questionIndex
533a17d8   梁保满   备题组卷添加批量设置答案
504
505
506
507
508
509
          }
        );
  
        for (let i = 0; i <= subNum; i++) {
          let correctAnswer = "";
          if (this.formAns.qusType == 2) {
f5729396   梁保满   批量设置答案
510
            correctAnswer = this.formAns.answerList[subNum - i] || "";
533a17d8   梁保满   备题组卷添加批量设置答案
511
          } else if (this.formAns.qusType == 3) {
f5729396   梁保满   批量设置答案
512
            correctAnswer = this.formAns.answerList.split(",")[subNum - i] || "";
533a17d8   梁保满   备题组卷添加批量设置答案
513
          } else if (this.formAns.qusType == 4) {
503b6063   梁保满   判断题答案选项
514
515
516
517
            correctAnswer =
              this.formAns.answerList[subNum - i] == "✓"
                ? 1
                : this.formAns.answerList[subNum - i] == "✗"
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
518
519
                  ? 2
                  : "";
533a17d8   梁保满   备题组卷添加批量设置答案
520
          }
8af7657f   梁保满   修改添加备题,组卷
521
          this.form.questionList[
533a17d8   梁保满   备题组卷添加批量设置答案
522
523
524
525
526
            EndIndex - i
          ].correctAnswer = correctAnswer;
        }
        this.diaSetAns = false;
      },
8af7657f   梁保满   修改添加备题,组卷
527
      keydownAnswer(event, type) {
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
528
529
        let answerA = "ABCDEFGHIJ";
        let answer_a = "abcdefghij";
8af7657f   梁保满   修改添加备题,组卷
530
531
532
533
  
        answerA = answerA.substring(0, this.formAns.subNum);
        answer_a = answer_a.substring(0, this.formAns.subNum);
  
813d4d64   梁保满   批量设置答案添加输入
534
535
        answerA += answer_a;
        answerA = type == 2 ? answerA : answerA + ",";
533a17d8   梁保满   备题组卷添加批量设置答案
536
537
538
539
540
541
542
543
544
545
546
547
548
549
        if (
          event.key == "Meta" ||
          event.key == "CapsLock" ||
          event.key == "Shift" ||
          event.key == "Enter" ||
          event.key == "Alt" ||
          event.key == "Backspace" ||
          event.key == "Delete" ||
          event.key == "ArrowUp" ||
          event.key == "ArrowDown" ||
          event.key == "ArrowLeft" ||
          event.key == "v" ||
          event.key == "V" ||
          event.key == "ArrowRight"
813d4d64   梁保满   批量设置答案添加输入
550
        )
533a17d8   梁保满   备题组卷添加批量设置答案
551
          return;
813d4d64   梁保满   批量设置答案添加输入
552
        if (!answerA.includes(event.key)) {
533a17d8   梁保满   备题组卷添加批量设置答案
553
554
555
          event.returnValue = "";
        }
      },
8af7657f   梁保满   修改添加备题,组卷
556
557
558
559
560
561
562
563
564
565
566
      setAllAnswer(event, type) {
  
        let str = this.formAns.answerList;
        let str2 = checkAnswer(
          str,
          type,
          this.formAns.answerOptions.split(",").length,
          this.formAns.subNum
        );
        this.formAns.answerList = str2;
  
813d4d64   梁保满   批量设置答案添加输入
567
      },
533a17d8   梁保满   备题组卷添加批量设置答案
568
569
570
571
572
573
574
      setAnswer(type, ans) {
        let txt = "";
        if (type == 2) {
          txt = ans;
        } else if (type == 3) {
          txt = ans + ",";
        } else if (type == 4) {
d32e461c   梁保满   备题组卷
575
          txt = ans == 1 ? "✓" : ans == 2 ? "✗" : "";
533a17d8   梁保满   备题组卷添加批量设置答案
576
577
578
        }
        return txt;
      },
8af7657f   梁保满   修改添加备题,组卷
579
      toStep(step) {
533a17d8   梁保满   备题组卷添加批量设置答案
580
        this.formatQuestionList();
8af7657f   梁保满   修改添加备题,组卷
581
582
583
584
        this.step = step;
        if(step==1){
          this.formateQuestion()
        }
533a17d8   梁保满   备题组卷添加批量设置答案
585
      },
13b58a42   梁保满   备题组卷部分前端页面基本完成
586
      setStep1() {
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
587
588
589
590
        if (this.subjectList.length == 0) {
          this.$message.warning("暂无绑定年级信息,请先联系管理员设置。");
          return;
        }
13b58a42   梁保满   备题组卷部分前端页面基本完成
591
592
593
        this.$refs["forms"].validate((valid) => {
          // 验证通过:保存
          if (valid) {
8af7657f   梁保满   修改添加备题,组卷
594
            this.formateQuestion()
13b58a42   梁保满   备题组卷部分前端页面基本完成
595
596
597
598
599
600
601
            this.step = 1;
          } else {
            this.$message.error("数据有误,请检查!");
            return false;
          }
        });
      },
8af7657f   梁保满   修改添加备题,组卷
602
  
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
603
      //删除批量操作数据
533a17d8   梁保满   备题组卷添加批量设置答案
604
605
      formatQuestionList() {
        for (let i = 0; i < this.form.questionList.length; i++) {
8af7657f   梁保满   修改添加备题,组卷
606
607
          if (this.form.questionList[i].qusType) {
            this.form.questionList.splice(i, 1);
3ba60a63   梁保满   发卡补卡,设备状态上传下载接口联调
608
          }
13b58a42   梁保满   备题组卷部分前端页面基本完成
609
        }
13b58a42   梁保满   备题组卷部分前端页面基本完成
610
      },
8af7657f   梁保满   修改添加备题,组卷
611
612
613
614
      //删除题
      delTabData(index) {
        this.form.questionList.splice(index, 1);
        this.formateQuestion()
13b58a42   梁保满   备题组卷部分前端页面基本完成
615
      },
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
616
      //切换多题型-小题题型
13b58a42   梁保满   备题组卷部分前端页面基本完成
617
      changeSubQuestions(val, subQuestions) {
13b58a42   梁保满   备题组卷部分前端页面基本完成
618
619
620
621
622
623
624
        const that = this;
        subQuestions.score = 1;
        subQuestions.partScore = 0;
        subQuestions.correctAnswer = "";
        subQuestions.selectNum = 4;
        switch (val) {
          case 2:
8f573b82   阿宝   组卷接口联调
625
626
627
            subQuestions.answerOptions = that.rightOptions
              .slice(0, subQuestions.selectNum)
              .join(",");
13b58a42   梁保满   备题组卷部分前端页面基本完成
628
629
            break;
          case 3:
8f573b82   阿宝   组卷接口联调
630
631
632
            subQuestions.answerOptions = that.rightOptions
              .slice(0, subQuestions.selectNum)
              .join(",");
13b58a42   梁保满   备题组卷部分前端页面基本完成
633
634
            break;
          case 4:
503b6063   梁保满   判断题答案选项
635
636
637
            subQuestions.selectNum = 0;
            subQuestions.answerOptions = "1,2";
            break;
13b58a42   梁保满   备题组卷部分前端页面基本完成
638
639
640
641
642
          case 5:
            subQuestions.selectNum = 0;
            break;
        }
      },
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
643
      //添加选项
13b58a42   梁保满   备题组卷部分前端页面基本完成
644
      addOptions(subQuestions) {
8f573b82   阿宝   组卷接口联调
645
        let length = subQuestions.answerOptions.split(",").length;
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
646
        if (length > 9) return;
13b58a42   梁保满   备题组卷部分前端页面基本完成
647
        subQuestions.selectNum = length + 1;
8f573b82   阿宝   组卷接口联调
648
649
650
        subQuestions.answerOptions = this.rightOptions
          .slice(0, subQuestions.selectNum)
          .join(",");
13b58a42   梁保满   备题组卷部分前端页面基本完成
651
      },
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
652
      //删除选项
13b58a42   梁保满   备题组卷部分前端页面基本完成
653
      removeOptions(subQuestions) {
8f573b82   阿宝   组卷接口联调
654
        let length = subQuestions.answerOptions.split(",").length;
f26ecfa4   阿宝   测试bug
655
        if (length < 3) return;
13b58a42   梁保满   备题组卷部分前端页面基本完成
656
        subQuestions.selectNum = length - 1;
8f573b82   阿宝   组卷接口联调
657
658
659
        subQuestions.answerOptions = this.rightOptions
          .slice(0, subQuestions.selectNum)
          .join(",");
98f6a547   梁保满   创建答题卡,统计答题信息
660
661
662
663
        subQuestions.correctAnswer = subQuestions.correctAnswer.slice(
          0,
          subQuestions.selectNum
        );
13b58a42   梁保满   备题组卷部分前端页面基本完成
664
      },
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
665
      //设置多选答案
13b58a42   梁保满   备题组卷部分前端页面基本完成
666
      changAnswer(sub, option) {
13b58a42   梁保满   备题组卷部分前端页面基本完成
667
668
669
670
671
672
673
674
675
        let str = new RegExp(option, "g");
        if (sub.correctAnswer?.includes(option)) {
          sub.correctAnswer = sub.correctAnswer.replace(str, "");
        } else {
          let arrs = (sub.correctAnswer && sub.correctAnswer.split("")) || [];
          arrs.push(option);
          sub.correctAnswer = arrs.sort().join("");
        }
      },
8af7657f   梁保满   修改添加备题,组卷
676
677
678
679
  
  
  
  
13b58a42   梁保满   备题组卷部分前端页面基本完成
680
      async save() {
8f573b82   阿宝   组卷接口联调
681
682
        if (this.saveLoading) return;
        this.saveLoading = true;
533a17d8   梁保满   备题组卷添加批量设置答案
683
        this.formatQuestionList();
f5729396   梁保满   批量设置答案
684
        let formDatas = deepClone(this.form);
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
685
686
687
688
689
        let addPaper =
          this.role == "ROLE_PERSONAL"
            ? this.$request.pAddPaper
            : this.$request.addPaper;
        const { data, status, info } = await addPaper({
8af7657f   梁保满   修改添加备题,组卷
690
          type: 1,
3ba60a63   梁保满   发卡补卡,设备状态上传下载接口联调
691
          ...formDatas,
13b58a42   梁保满   备题组卷部分前端页面基本完成
692
        });
8f573b82   阿宝   组卷接口联调
693
        this.saveLoading = false;
ee6e7628   梁保满   备题组卷借口数据对接调整
694
        if (status == 0) {
13b58a42   梁保满   备题组卷部分前端页面基本完成
695
          this.$router.push({
ee6e7628   梁保满   备题组卷借口数据对接调整
696
697
            path: "/examinationPaper",
          });
13b58a42   梁保满   备题组卷部分前端页面基本完成
698
        } else {
6fffbd55   阿宝   组卷接口调整
699
          this.$message.error(info);
13b58a42   梁保满   备题组卷部分前端页面基本完成
700
701
702
703
704
705
        }
      },
      async changeGrade() {
        //切换年级查询科目
        this._QuerySubjectList(this.form.gradeName);
      },
8af7657f   梁保满   修改添加备题,组卷
706
  
13b58a42   梁保满   备题组卷部分前端页面基本完成
707
708
      async _GradeList() {
        //查询年级列表
6fffbd55   阿宝   组卷接口调整
709
        const { data, status, info } = await this.$request.fetchGradeList();
ee6e7628   梁保满   备题组卷借口数据对接调整
710
        if (status == 0) {
f26ecfa4   阿宝   测试bug
711
          this.gradeList = (data.gradeNames && [...data.gradeNames]) || [];
13b58a42   梁保满   备题组卷部分前端页面基本完成
712
713
714
          if (this.type != 2) {
            this.form.gradeName = this.gradeList[0];
          }
13b58a42   梁保满   备题组卷部分前端页面基本完成
715
        } else {
6fffbd55   阿宝   组卷接口调整
716
          this.$message.error(info);
13b58a42   梁保满   备题组卷部分前端页面基本完成
717
718
        }
      },
5424ef82   梁保满   接口调整
719
      async _QuerySubjectList(grade) {
13b58a42   梁保满   备题组卷部分前端页面基本完成
720
        //查询科目列表
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
721
722
723
724
725
726
727
728
729
730
731
732
        if (!grade) {
          return;
        }
        let query = {};
        let fetchSubjectList =
          this.role == "ROLE_PERSONAL"
            ? this.$request.pSubjectList
            : this.$request.fetchSubjectList;
        if (this.role != "ROLE_PERSONAL") {
          query.gradeName = grade;
        }
        const { data, status, info } = await fetchSubjectList({ ...query });
ee6e7628   梁保满   备题组卷借口数据对接调整
733
        if (status === 0) {
f26ecfa4   阿宝   测试bug
734
735
736
          this.subjectList =
            data.subjectNames?.map((item) => {
              return {
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
737
738
                value: this.role == "ROLE_PERSONAL" ? item.subjectName : item,
                label: this.role == "ROLE_PERSONAL" ? item.subjectName : item,
f26ecfa4   阿宝   测试bug
739
740
              };
            }) || [];
ee6e7628   梁保满   备题组卷借口数据对接调整
741
742
          if (this.subjectList.length) {
            this.form.subjectName = this.subjectList[0].value;
13b58a42   梁保满   备题组卷部分前端页面基本完成
743
          }
13b58a42   梁保满   备题组卷部分前端页面基本完成
744
        } else {
6fffbd55   阿宝   组卷接口调整
745
          this.$message.error(info);
13b58a42   梁保满   备题组卷部分前端页面基本完成
746
747
        }
      },
ee6e7628   梁保满   备题组卷借口数据对接调整
748
      async _QueryDetail() {
03bce046   梁保满   个人版调整
749
        //查询答题卡详情
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
750
751
752
753
754
        let fetchPaperDetail =
          this.role == "ROLE_PERSONAL"
            ? this.$request.pPaperDetail
            : this.$request.fetchPaperDetail;
        const { data, status, info } = await fetchPaperDetail({
ee6e7628   梁保满   备题组卷借口数据对接调整
755
756
757
          paperId: this.$route.query.paperId,
        });
        if (status == 0) {
f26ecfa4   阿宝   测试bug
758
          this.form.title = data.title + "_副本";
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
759
760
          if (this.role != "ROLE_PERSONAL") {
            this.form.sharingType = data.sharingType;
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
761
          }
8af7657f   梁保满   修改添加备题,组卷
762
          this.formatData(data)
ee6e7628   梁保满   备题组卷借口数据对接调整
763
        } else {
6fffbd55   阿宝   组卷接口调整
764
          this.$message.error(info);
ee6e7628   梁保满   备题组卷借口数据对接调整
765
766
        }
      },
8af7657f   梁保满   修改添加备题,组卷
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
      formatData(data) {
        if (this.subjectList.length) {
          this.subjectList.map((item) => {
            if (item.label == data.subjectName) {
              this.form.subjectName = item.value;
            }
          });
        } else {
          this.form.subjectName = "";
        }
  
        if (this.role != "ROLE_PERSONAL") {
          if (this.gradeList.length) {
            this.gradeList.map((item) => {
              if (item == data.gradeName) {
                this.form.gradeName = data.gradeName;
              }
            });
          } else {
            this.form.gradeName = "";
          }
        }
        this.form.questionList = data.questionList?.map((item) => {
          return {
            questionTitle: item.questionTitle,
            questionType: item.questionType,
            score: item.score,
            partScore: item.partScore,
            selectNum: item.answerOptions.split(",").length,
            answerOptions: item.answerOptions || "A,B,C,D",
            correctAnswer: item.correctAnswer,
            screenshot: item.screenshot || "",
          }
        });
      }
13b58a42   梁保满   备题组卷部分前端页面基本完成
802
803
804
    },
  };
  </script>
8af7657f   梁保满   修改添加备题,组卷
805
806
807
808
  <style>
  .screenshot-box {
    width: 400px;
  }
4c4f7640   梁保满   路由表,路由前端文件
809
  
8af7657f   梁保满   修改添加备题,组卷
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
  .screenshot {
    width: 100%;
    box-shadow: none;
    border: none;
    height: 300px;
  }
  
  .screenshot-img {
    display: block;
    width: auto;
    max-width: 100%;
    margin: 0 auto;
    margin-bottom: 10px;
  }
  </style>
13b58a42   梁保满   备题组卷部分前端页面基本完成
825
826
827
828
  <style lang="scss" scoped>
  .red {
    color: #f30;
  }
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
829
  
533a17d8   梁保满   备题组卷添加批量设置答案
830
831
  .qs-options {
    flex: 1;
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
832
  
533a17d8   梁保满   备题组卷添加批量设置答案
833
834
835
    .ipt {
      margin-bottom: 5px;
    }
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
836
  
533a17d8   梁保满   备题组卷添加批量设置答案
837
838
839
840
    .answer-box {
      .answer-s {
        cursor: pointer;
        user-select: none;
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
841
842
        margin-bottom: 10px;
  
533a17d8   梁保满   备题组卷添加批量设置答案
843
844
845
846
847
        &:first-of-type {
          margin-left: 0;
        }
      }
    }
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
848
849
850
851
852
  
    .answer-box2 {
      margin-bottom: 10px;
    }
  
533a17d8   梁保满   备题组卷添加批量设置答案
853
854
855
    .delButton {
      text-indent: -9999999px;
      border-color: #ff6868;
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
856
      background: #ff6868 url("../../assets/images/arrow.png") no-repeat center;
533a17d8   梁保满   备题组卷添加批量设置答案
857
858
859
      background-size: 19px;
      color: transparent;
    }
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
860
  
3ba60a63   梁保满   发卡补卡,设备状态上传下载接口联调
861
862
    .answer-s.ac {
      border: none;
11a4e518   梁保满   背题组卷修改答案设置,即使测随堂问...
863
    }
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
864
  
533a17d8   梁保满   备题组卷添加批量设置答案
865
866
867
    .ac {
      border-color: #ff6868;
      background: #ff6868;
3ba60a63   梁保满   发卡补卡,设备状态上传下载接口联调
868
      color: #fff !important;
533a17d8   梁保满   备题组卷添加批量设置答案
869
870
871
    }
  }
  
255e2506   梁保满   飞书bug及优化
872
873
  .sel2 {
    width: 480px;
e5ff81a1   阿宝   集团管理员接口
874
  }
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
875
  
533a17d8   梁保满   备题组卷添加批量设置答案
876
877
878
879
880
881
882
  .set-ans-btn {
    width: 100%;
    padding: 10px 0 10px 630px;
    box-sizing: border-box;
    border-right: 1px solid #e2e2e2;
    border-bottom: 1px solid #e2e2e2;
  }
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
883
  
255e2506   梁保满   飞书bug及优化
884
885
886
  .content-box {
    width: 100%;
    height: 100%;
ca39cc52   阿宝   飞书问题处理
887
888
    overflow-y: auto;
  }
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
889
  
13b58a42   梁保满   备题组卷部分前端页面基本完成
890
891
892
  .content {
    width: 100%;
    box-sizing: border-box;
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
893
894
    padding: 0 24px;
  
13b58a42   梁保满   备题组卷部分前端页面基本完成
895
896
897
    .ml-20 {
      margin-left: 20px;
    }
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
898
  
13b58a42   梁保满   备题组卷部分前端页面基本完成
899
900
901
902
903
    .btn-box {
      text-align: right;
      margin-left: 140px;
    }
  }
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
904
  
13b58a42   梁保满   备题组卷部分前端页面基本完成
905
906
907
908
909
910
911
  .dia-content {
    .dia-tit {
      font-size: 20px;
      color: #333;
      font-weight: 700;
      text-align: center;
    }
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
912
  
13b58a42   梁保满   备题组卷部分前端页面基本完成
913
    .add-type {
818e50d7   梁保满   标签删除,修改
914
915
      width: 100%;
      margin-bottom: 10px;
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
916
  
818e50d7   梁保满   标签删除,修改
917
918
919
920
      .js-set {
        margin: 2.5px 10px 0 0;
        font-size: 14px;
      }
13b58a42   梁保满   备题组卷部分前端页面基本完成
921
    }
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
922
  
13b58a42   梁保满   备题组卷部分前端页面基本完成
923
924
925
926
    .add-btn {
      margin-left: 20px;
    }
  }
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
927
  
13b58a42   梁保满   备题组卷部分前端页面基本完成
928
929
930
931
932
  .el-message-box {
    :deep(.el-button--default) {
      color: #fff;
    }
  }
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
933
  
13b58a42   梁保满   备题组卷部分前端页面基本完成
934
935
936
937
  .add-box {
    display: flex;
    justify-content: center;
    align-items: center;
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
938
  
13b58a42   梁保满   备题组卷部分前端页面基本完成
939
940
941
942
943
944
945
946
    .add-question {
      display: flex;
      justify-content: center;
      align-items: center;
      font-size: 16px;
      font-weight: bolder;
      padding: 2px;
      cursor: pointer;
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
947
  
13b58a42   梁保满   备题组卷部分前端页面基本完成
948
949
950
      .s1 {
        margin-left: 6px;
      }
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
951
  
13b58a42   梁保满   备题组卷部分前端页面基本完成
952
953
954
955
      :deep(.el-icon-plus) {
        font-size: 24px;
        font-weight: 900;
      }
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
956
  
13b58a42   梁保满   备题组卷部分前端页面基本完成
957
958
959
960
961
      :deep(.el-button--mini.is-circle) {
        padding: 3px;
      }
    }
  }
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
962
  
13b58a42   梁保满   备题组卷部分前端页面基本完成
963
964
  .dialog-footer {
    text-align: center;
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
965
  
13b58a42   梁保满   备题组卷部分前端页面基本完成
966
967
968
969
970
971
    :deep(.el-button) {
      border-radius: 20px;
      padding: 8px 20px 7px;
      margin: 0 12px;
    }
  }
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
972
  
3ba60a63   梁保满   发卡补卡,设备状态上传下载接口联调
973
974
  .question-box {
    margin-bottom: 20px;
8af7657f   梁保满   修改添加备题,组卷
975
976
977
978
979
980
981
982
983
984
  
    .screenshot-box {
      width: 100%;
      border: 1px solid #e2e2e2;
      margin-bottom: 20px;
  
      .screenshot-img {
        margin: 0;
      }
    }
3ba60a63   梁保满   发卡补卡,设备状态上传下载接口联调
985
  }
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
986
  
13b58a42   梁保满   备题组卷部分前端页面基本完成
987
988
  .question-title {
    line-height: 40px;
3ba60a63   梁保满   发卡补卡,设备状态上传下载接口联调
989
990
991
    display: flex;
    align-items: center;
    margin-bottom: 12px;
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
992
  
503b6063   梁保满   判断题答案选项
993
    .m20 {
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
994
      margin: 0 20px;
d32e461c   梁保满   备题组卷
995
    }
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
996
  
13b58a42   梁保满   备题组卷部分前端页面基本完成
997
998
999
    .ipt {
      width: 300px;
      margin: 0 16px 0 10px;
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
1000
  
13b58a42   梁保满   备题组卷部分前端页面基本完成
1001
1002
1003
1004
1005
1006
      :deep(.el-input__inner) {
        border-radius: 20px;
        border-color: #667ffd;
        background: rgba($color: #667ffd, $alpha: 0.05);
      }
    }
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
1007
  
13b58a42   梁保满   备题组卷部分前端页面基本完成
1008
1009
1010
    .delete {
      margin-right: 8px;
    }
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
1011
  
13b58a42   梁保满   备题组卷部分前端页面基本完成
1012
1013
1014
1015
1016
    .title-txt {
      margin-right: 20px;
      font-size: 16px;
      font-weight: 700;
    }
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
1017
  
3ba60a63   梁保满   发卡补卡,设备状态上传下载接口联调
1018
1019
1020
1021
1022
1023
    .el-icon-caret-right {
      font-size: 24px;
      color: #888;
      transition: all 0.4s;
      margin-right: 12px;
      cursor: pointer;
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
1024
  
3ba60a63   梁保满   发卡补卡,设备状态上传下载接口联调
1025
1026
1027
1028
1029
      &.active {
        transform: rotate(90deg);
      }
    }
  }
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
1030
  
3ba60a63   梁保满   发卡补卡,设备状态上传下载接口联调
1031
1032
1033
  .questions-ul {
    border-left: 1px solid #e2e2e2;
    border-top: 1px solid #e2e2e2;
13b58a42   梁保满   备题组卷部分前端页面基本完成
1034
  }
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
1035
  
13b58a42   梁保满   备题组卷部分前端页面基本完成
1036
1037
1038
  .el-input-number {
    width: 140px;
  }
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
1039
  
f26ecfa4   阿宝   测试bug
1040
1041
1042
1043
1044
1045
  .answer-title {
    text-align: center;
    font-size: 20px;
    color: #333;
    font-weight: 700;
    padding-bottom: 20px;
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
1046
  
f26ecfa4   阿宝   测试bug
1047
1048
1049
1050
1051
1052
    .totals {
      font-size: 16px;
      color: #888;
      font-weight: normal;
    }
  }
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
1053
  
13b58a42   梁保满   备题组卷部分前端页面基本完成
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
  .answer-box {
    .answer-s {
      display: inline-block;
      width: 30px;
      height: 30px;
      border: 1px solid #e2e2e2;
      border-radius: 3px;
      margin: 0 6px;
      font-size: 16px;
      color: #333;
      text-align: center;
      line-height: 30px;
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
1066
  
13b58a42   梁保满   备题组卷部分前端页面基本完成
1067
1068
1069
1070
1071
1072
1073
      &.active {
        background: #5e78fa;
        border-color: #5e78fa;
        color: #fff;
      }
    }
  }
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
1074
  
255e2506   梁保满   飞书bug及优化
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
  .qs-options {
    .answer-s {
      display: inline-block;
      width: 30px;
      height: 30px;
      border: 1px solid #e2e2e2;
      border-radius: 3px;
      margin: 0 6px;
      font-size: 16px;
      color: #333;
      text-align: center;
      line-height: 30px;
      cursor: pointer;
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
1088
  
255e2506   梁保满   飞书bug及优化
1089
1090
1091
1092
1093
1094
1095
      &.active {
        background: #5e78fa;
        border-color: #5e78fa;
        color: #fff;
      }
    }
  }
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
1096
  
13b58a42   梁保满   备题组卷部分前端页面基本完成
1097
1098
1099
1100
  .sub-questions {
    width: 100%;
    display: flex;
    border-bottom: 1px solid #e2e2e2;
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
1101
1102
  
    &>div {
13b58a42   梁保满   备题组卷部分前端页面基本完成
1103
1104
1105
1106
1107
1108
1109
1110
      min-height: 40px;
      padding: 5px;
      flex-shrink: 0;
      border-right: 1px solid #e2e2e2;
      display: flex;
      justify-content: center;
      align-items: center;
    }
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
1111
  
13b58a42   梁保满   备题组卷部分前端页面基本完成
1112
    .qs-num {
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
1113
      width: 70px;
13b58a42   梁保满   备题组卷部分前端页面基本完成
1114
    }
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
1115
  
13b58a42   梁保满   备题组卷部分前端页面基本完成
1116
1117
1118
    .qs-type {
      width: 160px;
    }
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
1119
  
13b58a42   梁保满   备题组卷部分前端页面基本完成
1120
1121
1122
1123
    .qs-score,
    .qs-partScore {
      width: 160px;
    }
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
1124
  
13b58a42   梁保满   备题组卷部分前端页面基本完成
1125
1126
1127
    .qs-options {
      flex: 1;
    }
8af7657f   梁保满   修改添加备题,组卷
1128
1129
1130
    .qs-upload{
      width: 60px;
    }
13b58a42   梁保满   备题组卷部分前端页面基本完成
1131
    .qs-set {
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
1132
      width: 60px;
13b58a42   梁保满   备题组卷部分前端页面基本完成
1133
    }
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
1134
  
13b58a42   梁保满   备题组卷部分前端页面基本完成
1135
1136
1137
1138
    .qs-options2 {
      text-align: left;
      justify-content: flex-start;
      padding-left: 20px;
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
1139
  
13b58a42   梁保满   备题组卷部分前端页面基本完成
1140
1141
1142
1143
      .answer-s {
        cursor: pointer;
      }
    }
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
1144
  
13b58a42   梁保满   备题组卷部分前端页面基本完成
1145
1146
1147
1148
1149
1150
1151
1152
1153
    :deep(.el-select) {
      .el-input__inner {
        border-radius: 20px;
        border-color: #667ffd;
        width: 150px;
        height: 32px;
        line-height: 32px;
        background: rgba($color: #667ffd, $alpha: 0.05);
      }
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
1154
  
13b58a42   梁保满   备题组卷部分前端页面基本完成
1155
1156
1157
1158
1159
      .el-input__icon {
        line-height: 32px;
      }
    }
  }
6192eba8   梁保满   引用上传文件组件问题,备题组卷顶部
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
  
  .upload-box {
    .upload-demo {
      text-align: center;
    }
  
    .stem-pic {
      display: block;
      margin: 0 auto 20px;
      height: 200px;
      object-fit: cover;
    }
  }
4c4f7640   梁保满   路由表,路由前端文件
1173
  </style>