Blame view

src/views/TestPaper/ManualTestPaper.vue 29.3 KB
b89c8760   wangming   项目初始化
1
  <template>
cac28d75   周超   问卷 用户 维度
2
    <div class="app-container">
e1644c39   yangzhi   王哥起来屙尿了
3
      <div id="id_test_video" style="width:100%; height:auto;"></div>
a7974ab3   周超   111
4
5
6
7
8
9
10
11
      <div
        style="width: 100%;text-align: right;background: #efefef;height: 60px;vertical-align: middle;line-height: 60px;padding-right: 10px;">
  
        <el-button style="margin-top: 12px;" @click="next" v-if="active==1">下一步</el-button>
        <el-button style="margin-top: 12px;z-index:888888888" @click="next" v-if="active==2">编辑基本信息</el-button>
        <el-button type="primary" style="" v-if="active==2" @click="SubmitTestPaper">保存
        </el-button>
      </div>
cac28d75   周超   问卷 用户 维度
12
      <el-row :gutter="20">
e011bf15   周超   我先走一步
13
  
04aebc72   周超   11
14
  
b32564ca   周超   11
15
16
17
18
        <el-steps :active="active" finish-status="success" simple style="margin:0px 10px">
          <el-step title="基本信息"></el-step>
          <el-step title="组卷"></el-step>
        </el-steps>
b89c8760   wangming   项目初始化
19
  
e011bf15   周超   我先走一步
20
  
e011bf15   周超   我先走一步
21
  
b32564ca   周超   11
22
23
        <el-col :span="8" :style="{'height':contentHeight+'px'}" class="jinyongtop">
          <div class="jinyong" v-if="active!=1">
e011bf15   周超   我先走一步
24
  
cac28d75   周超   问卷 用户 维度
25
          </div>
cac28d75   周超   问卷 用户 维度
26
27
28
          <div class="grid-content bg-purple">
            <div class="areahead">组卷基本信息</div>
            <el-form ref="form" class="testPaper-manager" :rules="rules" :model="TestPaper" label-width="100px">
a7974ab3   周超   111
29
              <el-form-item label="试卷名称:" prop="TestPaperTitle" required class="el-form-item-custom"   style="margin-bottom: 20px !important;width:100%;">
b32564ca   周超   11
30
                <el-input v-model="TestPaper.TestPaperTitle"></el-input>
cac28d75   周超   问卷 用户 维度
31
              </el-form-item>
a7974ab3   周超   111
32
33
34
35
  
              <el-form-item label="自定义名称:" prop="CustomName" required class="el-form-item-custom"    style="margin-bottom: 20px !important;width:100%;">
                <el-input v-model="TestPaper.CustomName"></el-input>
              </el-form-item>
b32564ca   周超   11
36
37
38
              <!-- <el-form-item label="题目数量:" class="el-form-item-custom">
  
              </el-form-item> -->
cac28d75   周超   问卷 用户 维度
39
40
41
42
              <el-form-item label="题型数量:" class="el-form-item-custom">
                <span style="margin-right: 10px;">单选题:{{TestPaper.SingleNumber}}</span>
                <span style="margin-right: 10px;">多选题:{{TestPaper.MultipleNumber}}</span>
                <span style="margin-right: 10px;">主观题:{{TestPaper.SubjectiveNumber}}</span>
7cc95822   yangzhi   组卷修改
43
                <span style="margin-right: 10px;">主观题:{{TestPaper.VoiceNumber}}</span>
cac28d75   周超   问卷 用户 维度
44
45
              </el-form-item>
              <el-form-item label="题目总分:" class="el-form-item-custom">
e011bf15   周超   我先走一步
46
                {{TestPaper.TotalScore || ''}}
cac28d75   周超   问卷 用户 维度
47
48
              </el-form-item>
  
04aebc72   周超   11
49
50
51
52
53
54
              <el-form-item label="工种" prop="UserTypeOfWork" required class="el-form-item-custom"
                style="margin-bottom: 20px !important;width:100%;">
                <el-select v-model="TestPaper.UserTypeOfWork" placeholder="请选择工种" style="width:100%">
                  <el-option v-for="item in usertypelist" :label="item.name" :value="item.id"></el-option>
                </el-select>
              </el-form-item>
b32564ca   周超   11
55
              <el-form-item label="分类" class="el-form-item-custom" prop="QuestionClassId">
cac28d75   周超   问卷 用户 维度
56
                <el-cascader class="testpaper-input" v-model="TestPaper.QuestionClassId"
04aebc72   周超   11
57
                  style="width:100%;margin-bottom: 20px;" :props="{emitPath:false}" :clearable=true
cac28d75   周超   问卷 用户 维度
58
59
60
61
                  :options="QuestionClass">
                </el-cascader>
              </el-form-item>
  
b32564ca   周超   11
62
63
              <el-form-item label="级别" prop="FLevelCount" class="el-form-item-custom"
                style="margin-bottom: 20px !important;width:100%;">
c33c1243   周超   拉取王哥最新的
64
65
66
67
                <el-select v-model="TestPaper.FLevelCount" placeholder="请选择级别" @change="changelevel" style="width:100%">
                  <el-option v-for="item in levellist" :label="item.title" :value="item.f_count"></el-option>
                </el-select>
              </el-form-item>
04aebc72   周超   11
68
  
cac28d75   周超   问卷 用户 维度
69
              <el-form-item label="有效时间" required>
04aebc72   周超   11
70
                <el-form-item prop="date">
b32564ca   周超   11
71
                  <el-date-picker v-model="TestPaper.date" @change="changetimestartend" type="datetimerange"
cac28d75   周超   问卷 用户 维度
72
                    format="yyyy-MM-dd hh:mm:ss" range-separator="至" start-placeholder="开始时间" style="width:100%"
a7974ab3   周超   111
73
                    end-placeholder="结束时间"  :picker-options="pickerOptions">
cac28d75   周超   问卷 用户 维度
74
75
76
                  </el-date-picker>
                </el-form-item>
              </el-form-item>
e1644c39   yangzhi   王哥起来屙尿了
77
              <el-form-item label="总时长控制" prop="AnswerTime">
cac28d75   周超   问卷 用户 维度
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
                <el-input class="testpaper-input" type="number" placeholder="总时长控制(分钟)" v-model="TestPaper.AnswerTime">
                </el-input>
              </el-form-item>
  
              <el-form-item label="试卷原价:" prop="OriginalPrice" v-show="false">
                <el-input class="testpaper-input" oninput="value=value.replace(/[^0-9.]/g,'')"
                  v-model="TestPaper.OriginalPrice" :precision="0">
                  <template slot="append">元</template>
                </el-input>
              </el-form-item>
              <el-form-item label="试卷价格:" prop="PresentPrice" v-show="false">
                <el-input class="testpaper-input" oninput="value=value.replace(/[^0-9.]/g,'')"
                  v-model="TestPaper.PresentPrice">
                  <template slot="append">元</template>
                </el-input>
              </el-form-item>
              <el-form-item label="会员价:" prop="MembershipPrice" v-show="false">
                <el-input class="testpaper-input" oninput="value=value.replace(/[^0-9.]/g,'')"
                  v-model="TestPaper.MembershipPrice">
                  <template slot="append">元</template>
                </el-input>
              </el-form-item>
              <el-form-item label="试卷简介:">
                <el-input class="testpaper-input" :rows="10" type="textarea" v-model="TestPaper.Describe">
                </el-input>
              </el-form-item>
b32564ca   周超   11
104
  
cac28d75   周超   问卷 用户 维度
105
106
107
            </el-form>
          </div>
        </el-col>
a7974ab3   周超   111
108
109
        <el-col :span="6" :style="{'height':contentHeight+'px'}" class="jinyongtop" v-show="active==2">
          <!-- <div class="jinyong" v-if="active==1">
b32564ca   周超   11
110
  
a7974ab3   周超   111
111
          </div> -->
b32564ca   周超   11
112
113
114
115
116
117
118
119
120
121
122
123
124
          <div class="grid-content bg-purple">
            <el-tabs v-model="activeTab" style="padding: 0 20px" :stretch="true">
              <el-tab-pane label="专业类" name="6"></el-tab-pane>
              <el-tab-pane label="测评类" name="1"></el-tab-pane>
            </el-tabs>
            <div style="padding:0 10px">
              <el-input size="small" placeholder="输入关键字搜索" v-model="parameter.keyWord"></el-input>
            </div>
            <div style="padding:10.5px">
              <el-button type="primary" @click="randomSubject" style="width:100%">随机抽题</el-button>
            </div>
  
            <draggable :options="{animation:380,filter:'.unmover'}" group="itxst" v-model="arr1" @end="end1"
a7974ab3   周超   111
125
126
127
              :disabled="TestPaper.FLevelCount && arr2.length >= TestPaper.FLevelCount" @add="RemoveHere" :move="onMove"
              class="infinite-list" :style="{'height':contentHeight-80+'px'}" infinite-scroll-disabled="disabled"
              v-infinite-scroll="load" style="overflow:auto">
b32564ca   周超   11
128
129
130
131
132
133
134
135
136
  
              <li v-for="i in arr1" class="infinite-list-item" :key="i.id" v-if="!classarr.some(o=>o == i.id)">{{
                i.subject }}</li>
              <p v-if="loading" style="text-align: center;color: #cdcdcd;" class="unmover">加载中...</p>
              <p v-if="noMore" style="text-align: center;color: #cdcdcd;" class="unmover">没有更多了</p>
            </draggable>
  
          </div>
        </el-col>
a7974ab3   周超   111
137
138
        <el-col :span="10" :style="{'height':contentHeight+'px'}" class="jinyongtop"  v-show="active==2">
           
b32564ca   周超   11
139
140
141
142
143
144
145
146
147
148
          <div class="grid-content bg-purple">
            <div class="areahead">
              <!-- <span v-show="!edit" style="font-weight: bold;">{{ TestPaper.TestPaperTitle }}</span> -->
              <!-- <el-input v-show="edit" style="width: 400px;" v-model="TestPaper.TestPaperTitle"></el-input>
              <i :class="{'el-icon-edit': !edit, 'el-icon-check': edit}" @click="edit = !edit"
                style="margin-left: 5px;cursor: pointer;"></i> -->
              题目内容
            </div>
  
            <draggable :options="{animation:380}" group="itxst" v-model="arr2" class="infinite-list" @end="end2"
a7974ab3   周超   111
149
150
              :disable="TestPaper.FLevelCount && arr2.length >= TestPaper.FLevelCount" @add="ComeHere"
              :style="{'height':contentHeight-60+'px'}" style="overflow:auto;padding-top: 10px;">
b32564ca   周超   11
151
152
              <li v-for="(i,index) in arr2" class="infinite-list-item">
                <label> {{index+1}}. [{{i.subjectName}}]{{ i.subject }}</label>
a7974ab3   周超   111
153
154
155
  
                <el-button @click="removeItem(i,index)" type="danger" icon="el-icon-delete" circle size="mini"
                  style="float:right"></el-button>
b32564ca   周超   11
156
157
158
159
160
161
162
163
164
165
166
                <div v-for="item in JSON.parse(i.subjectContent)">
                  <p class="option-p">{{item.option}}:{{item.optionContent}}</p>
                </div>
              </li>
              </li>
            </draggable>
  
  
          </div>
        </el-col>
  
cac28d75   周超   问卷 用户 维度
167
      </el-row>
4ee13894   周超   给大志哥
168
169
  
  
04aebc72   周超   11
170
  
b32564ca   周超   11
171
      <el-dialog title="随机抽题" :visible.sync="dialogTableVisible" style="margin-left:30%;">
04aebc72   周超   11
172
  
e1644c39   yangzhi   王哥起来屙尿了
173
174
175
        <ul class="random-list">
          <li v-for="(item,index) in randomSubjectList" :key="index">
            <span>试题分类:</span>
b32564ca   周超   11
176
177
            <el-cascader :multiple="false" style="flex:1" @change="(a)=>{ changetype(a,item)}"
              v-model="item.QuestionClassId" :options="randomQuestionTypeList" clearable>
c33c1243   周超   拉取王哥最新的
178
              <template slot-scope="{ node, data }">
b32564ca   周超   11
179
                <span>{{ data.label }}</span>
c33c1243   周超   拉取王哥最新的
180
181
182
183
184
                <span v-if="data.subjectCount"> ({{ data.subjectCount || '0' }}) </span>
              </template>
            </el-cascader>
            <span style="margin-left:10px;">试题数量:{{item.maxcount}}</span>
            <el-input-number v-model="item.Count" :min="1" :max="item.maxcount" label="描述文字" style="margin-left:10px;">
04aebc72   周超   11
185
186
187
            </el-input-number>
            <i class="el-icon-remove-outline" @click="changeSubjectCount(-1,index)"
              style="margin-left:10px;color:#f56c6c;"></i>
e1644c39   yangzhi   王哥起来屙尿了
188
189
190
191
192
193
194
            <i class="el-icon-circle-plus" @click="changeSubjectCount(1)" style="margin-left:10px;color:#67C23A;"></i>
          </li>
        </ul>
        <div slot="footer">
          <el-button @click="randomCancel">取消</el-button>
          <el-button type="primary" @click="randomSubmit">确定</el-button>
        </div>
4ee13894   周超   给大志哥
195
196
      </el-dialog>
  
cac28d75   周超   问卷 用户 维度
197
    </div>
b89c8760   wangming   项目初始化
198
  </template>
e1644c39   yangzhi   王哥起来屙尿了
199
  <style lang="scss" scoped>
04aebc72   周超   11
200
    .random-list {
e1644c39   yangzhi   王哥起来屙尿了
201
      display: flex;
04aebc72   周超   11
202
203
204
205
206
207
208
209
210
211
212
      flex-direction: column;
  
      li {
        margin-bottom: 20px;
        display: flex;
        align-items: center;
  
        [class^="el-icon"] {
          font-size: 24px;
          cursor: pointer;
        }
e1644c39   yangzhi   王哥起来屙尿了
213
214
      }
    }
b32564ca   周超   11
215
216
217
218
219
220
221
222
223
224
225
226
227
228
  
    .jinyongtop {
      position: relative;
    }
  
    .jinyong {
      width: 100%;
      position: absolute;
      width: 100%;
      top: 0px;
      left: opx;
      right: 0;
      left: 0;
      bottom: 0;
0df97586   yangzhi   组卷页面,禁用的样式层级太高了
229
      z-index: 9;
b32564ca   周超   11
230
      opacity: 0.1;
a7974ab3   周超   111
231
      background: black;
b32564ca   周超   11
232
    }
e1644c39   yangzhi   王哥起来屙尿了
233
  </style>
b89c8760   wangming   项目初始化
234
  <script>
04aebc72   周超   11
235
236
    import draggable from "vuedraggable";
    import { PostRandomGetQuestion, getQuestionList, getQuestionClassList } from "@/api/QuestionBank";
c33c1243   周超   拉取王哥最新的
237
238
    import { GetpaperLevelList } from "@/api/paperLevel";
  
b32564ca   周超   11
239
  
04aebc72   周超   11
240
241
242
243
244
245
246
247
248
249
250
251
252
    import { GetQuestionClassByType } from "@/api/QuestionClass";
    import { EditTestPaper, GetToplevel } from "@/api/TestPaper";
    import { formatTime } from "@/utils/util";
    import {
      GetTypeSetting
    } from '@/api/user'
    export default {
      //注册draggable组件
      components: {
        draggable,
      },
      data() {
        return {
a7974ab3   周超   111
253
254
255
256
257
258
          pickerOptions: {
            disabledDate(time) {
              return  
              time.getTime() > (Date.now() - 8.64e6)
            }
          },
b32564ca   周超   11
259
          active: 1,
04aebc72   周超   11
260
          randomSubjectList: [
172a152f   yangzhi   组卷左侧题目的分类
261
            {
04aebc72   周超   11
262
263
              QuestionClassId: "",
              Count: "",
172a152f   yangzhi   组卷左侧题目的分类
264
            },
e1644c39   yangzhi   王哥起来屙尿了
265
            {
04aebc72   周超   11
266
267
              QuestionClassId: "",
              Count: "",
e1644c39   yangzhi   王哥起来屙尿了
268
269
            },
          ],
04aebc72   周超   11
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
          randomQuestionTypeList: [],
          dynamicValidateForm: {
            domains: [
              {
                value: "",
              },
            ],
            email: "",
          },
          usertypelist: [], //工种
          dialogTableVisible: false,
          loadingType: false,
          activeTab: "6",
          parameter: {
            pageIndex: 0,
            pageSize: 20,
            sort: "id",
            sortOrder: 1,
            keyWord: "",
            QuestionClassId: 6,
            status: 1,
          },
          contentHeight: 0,
          count: 0,
a7974ab3   周超   111
294
          totalCount: 0,
04aebc72   周超   11
295
296
297
298
299
300
301
302
303
304
305
306
307
          edit: false,
          arr1: [],
          arr2: [],
          classarr: [],
          moveId: -1,
          TestPaper: {
            TestPaperTitle: "未命名试卷标题",
            TestPaperClassId: 0,
            TotalScore: 0,
            Describe: "",
            SingleNumber: 0,
            MultipleNumber: 0,
            SubjectiveNumber: 0,
b32564ca   周超   11
308
            VoiceNumber: 0,
04aebc72   周超   11
309
310
311
312
            OriginalPrice: "0",
            PresentPrice: "0",
            MembershipPrice: "0",
            QuestionBankIds: [],
b32564ca   周超   11
313
            FLevelCount: null
04aebc72   周超   11
314
315
316
317
318
319
320
321
          },
          loading: false,
          rules: {
            OriginalPrice: [
              {
                required: true,
                message: "不能为空",
              },
b32564ca   周超   11
322
            ],
04aebc72   周超   11
323
324
325
326
327
328
329
330
331
332
333
334
335
336
            PresentPrice: [
              {
                required: true,
                message: "不能为空",
              },
            ],
            UserTypeOfWork: [
              {
                required: true,
                message: "请选择工种",
              },
            ], QuestionClassId: [
              {
                required: true,
b32564ca   周超   11
337
                message: "请选择分类",
04aebc72   周超   11
338
              },
b32564ca   周超   11
339
340
341
342
343
344
345
346
347
348
349
350
            ]
  
            , FLevelCount: [
              {
                required: true,
                message: "请选择级别",
              },
            ]
  
  
  
            , date: [
04aebc72   周超   11
351
352
              {
                required: true,
b32564ca   周超   11
353
                message: "请选择时间段",
04aebc72   周超   11
354
355
              },
            ],
c5b61549   周超   111
356
357
358
            TestPaperTitle: [
              {
                required: true,
b32564ca   周超   11
359
360
                message: "请填写试卷名称",
              }
c5b61549   周超   111
361
362
            ],
  
6963d762   周超   拉取志哥最新的
363
364
365
            AnswerTime: [
              {
                required: true,
b32564ca   周超   11
366
                message: "请填写试总时长控制",
6963d762   周超   拉取志哥最新的
367
              },
b32564ca   周超   11
368
  
a7974ab3   周超   111
369
  
6963d762   周超   拉取志哥最新的
370
            ],
a7974ab3   周超   111
371
372
373
374
375
376
            
            CustomName: [
              {
                required: true,
                message: "自定义名称必填",
              }]
04aebc72   周超   11
377
378
379
          },
          QuestionClass: [],
          treeData: [
e1644c39   yangzhi   王哥起来屙尿了
380
            {
04aebc72   周超   11
381
382
              value: 0,
              label: "全部",
e1644c39   yangzhi   王哥起来屙尿了
383
384
            },
          ],
04aebc72   周超   11
385
          timeout: 0,
b32564ca   周超   11
386
387
          typelist: [],
          levellist: [] //等级
04aebc72   周超   11
388
389
390
391
392
393
        };
      },
      watch: {
        activeTab() {
          console.log("activeTab watch");
          this.search();
cac28d75   周超   问卷 用户 维度
394
        },
04aebc72   周超   11
395
396
397
398
399
400
        "parameter.keyWord": {
          handler() {
            clearTimeout(this.timeout);
            this.timeout = setTimeout(() => {
              this.search();
            }, 200);
e1644c39   yangzhi   王哥起来屙尿了
401
          },
04aebc72   周超   11
402
        },
172a152f   yangzhi   组卷左侧题目的分类
403
      },
04aebc72   周超   11
404
405
406
407
408
409
      computed: {
        noMore() {
          return this.arr1.length >= this.count;
        },
        disabled() {
          return this.loading || this.noMore;
4ee13894   周超   给大志哥
410
        },
e1644c39   yangzhi   王哥起来屙尿了
411
      },
04aebc72   周超   11
412
413
414
415
416
417
418
419
420
      created() {
        this.getQuestionClassListHeadler();
        this.getQuestionClassListHeadler2();
  
  
        GetTypeSetting({}).then(res => {
          if (res.data) {
            this.usertypelist = res.data || [];
          }
b32564ca   周超   11
421
422
        });
        GetpaperLevelList({ pageSize: 1000, sortOrder: 'asc' }).then(res => {
c33c1243   周超   拉取王哥最新的
423
424
425
          if (res.data) {
            this.levellist = res.data.data || [];
          }
04aebc72   周超   11
426
        });
e1644c39   yangzhi   王哥起来屙尿了
427
      },
04aebc72   周超   11
428
429
430
431
      mounted() {
        //计算页面内容区域的高度
        this.contentHeight = window.innerHeight - 90;
        //this.GetList();
e1644c39   yangzhi   王哥起来屙尿了
432
      },
04aebc72   周超   11
433
      methods: {
a7974ab3   周超   111
434
435
436
        removeItem(item, index) {
          this.arr2.splice(index, 1);
        },
b32564ca   周超   11
437
438
439
        next() {
          var _this = this;
          console.log(this.active);
a7974ab3   周超   111
440
          if (this.active == 1) {
b32564ca   周超   11
441
            _this.$refs['form'].validate((valid) => {
a7974ab3   周超   111
442
443
444
              if (valid) {
                this.active = 2;
              }
b32564ca   周超   11
445
            });
a7974ab3   周超   111
446
447
448
          }
          else {
            if (this.active++ >= 2) this.active = 1;
b32564ca   周超   11
449
450
  
          }
a7974ab3   周超   111
451
  
b32564ca   周超   11
452
453
454
455
        },
        changetype(a, item) {
          var type = this.typelist.find(o => o.id == item.QuestionClassId[item.QuestionClassId.length - 1]);
          if (type) {
c33c1243   周超   拉取王哥最新的
456
            item.maxcount = type.subjectCount || 0;
b32564ca   周超   11
457
            if (item.Count > item.maxcount) item.Count = item.maxcount;
c33c1243   周超   拉取王哥最新的
458
459
460
          }
        },
  
b32564ca   周超   11
461
462
463
        changelevel(v) {
          var type = this.levellist.find(o => o.f_count == v);
          if (type) {
c33c1243   周超   拉取王哥最新的
464
465
466
            this.TestPaper.FLevelTitle = type.title || '';
          }
        },
b32564ca   周超   11
467
468
469
        getmaxid(item) {
          var type = this.randomQuestionTypeList.find(o => o.id == item.QuestionClassId);
          if (type) return type.subjectCount || 0;
c33c1243   周超   拉取王哥最新的
470
471
          else return 0;
        },
04aebc72   周超   11
472
        getSubTree(id, list) {
78156aa6   yangzhi   级联菜单
473
474
475
476
477
478
479
          let result = [];
          result = list.filter((t) => t.ParentId == id);
          if (result.length) {
            result = result.map((item) => {
              item.value = item.id;
              item.label = item.ClassificationName;
              item.children = this.getSubTree(item.id, list);
04aebc72   周超   11
480
              if (!item.children || !item.children.length) {
78156aa6   yangzhi   级联菜单
481
482
483
484
485
486
487
488
489
490
491
                delete item.children;
              }
              return item;
            });
          }
          return result;
        },
        getQuestionClassListHeadler2() {
          let _this = this;
          getQuestionClassList().then((res) => {
            let alllist = res.data.data;
c33c1243   周超   拉取王哥最新的
492
            this.typelist = alllist;
04aebc72   周超   11
493
            let list = alllist.filter(t => !t.ParentId);
78156aa6   yangzhi   级联菜单
494
495
496
            list = list.map((t) => {
              t.value = t.id;
              t.label = t.ClassificationName;
04aebc72   周超   11
497
498
              t.children = this.getSubTree(t.id, alllist);
              if (!t.children || !t.children.length) {
78156aa6   yangzhi   级联菜单
499
500
501
502
503
504
505
                delete t.children;
              }
              return t;
            });
            this.randomQuestionTypeList = list;
          });
        },
04aebc72   周超   11
506
        randomCancel() {
e1644c39   yangzhi   王哥起来屙尿了
507
          this.dialogTableVisible = false;
04aebc72   周超   11
508
509
        },
        randomSubmit() {
a7974ab3   周超   111
510
511
512
513
514
515
516
517
518
519
520
  
          var _this = this;
          if (_this.TestPaper.FLevelCount && _this.TestPaper.FLevelCount > 0 && _this.arr2.length >= _this.TestPaper.FLevelCount) {
            this.$notify({
              title: '题目数量已经达到级别最大',
              // message: res.data.message,
              type: 'warning'
            });
            return;
          }
          
04aebc72   周超   11
521
522
523
524
          var list = JSON.parse(JSON.stringify(this.randomSubjectList));
          if (list.findIndex((t) => !t.QuestionClassId || !t.QuestionClassId.length || !t.Count) > -1) {
            this.$message.warning("参数不完整");
            return;
78156aa6   yangzhi   级联菜单
525
          }
04aebc72   周超   11
526
527
528
529
  
          list = list.map(t => {
            t.QuestionClassId = t.QuestionClassId.pop();
            return t;
4ee13894   周超   给大志哥
530
          });
a7974ab3   周超   111
531
532
533
534
535
536
537
538
539
540
          var count = 0;
          list.forEach(o=>{ count+=o.Count;});
          if (_this.TestPaper.FLevelCount && _this.TestPaper.FLevelCount > 0 && (_this.arr2.length + count) > _this.TestPaper.FLevelCount) {
            this.$notify({
              title: '题目数量已经达到级别最大',
              // message: res.data.message,
              type: 'warning'
            });
            return;
          }
04aebc72   周超   11
541
542
          PostRandomGetQuestion(list).then((res) => {
            let list = res.data.data;
a7974ab3   周超   111
543
            this.arr2.push(...list);
04aebc72   周超   11
544
545
546
            this.dialogTableVisible = false;
            if (!list.length) {
              this.$message.warning('所选分类没有试题');
b32564ca   周超   11
547
548
549
550
551
            } else {
              this.TestPaper.SingleNumber = list.filter(t => t.subjectType == 1).length;
              this.TestPaper.MultipleNumber = list.filter(t => t.subjectType == 2).length;
              this.TestPaper.SubjectiveNumber = list.filter(t => t.subjectType == 3).length;
              this.TestPaper.VoiceNumber = list.filter(t => t.subjectType == 4).length;
04aebc72   周超   11
552
553
554
555
556
557
558
559
560
            }
          });
        },
        changeSubjectCount(type, index) {
          if (type > 0) {
            this.randomSubjectList.push({
              QuestionClassId: "",
              Count: "",
            });
cac28d75   周超   问卷 用户 维度
561
          } else {
04aebc72   周超   11
562
            this.randomSubjectList.splice(index, 1);
cac28d75   周超   问卷 用户 维度
563
          }
04aebc72   周超   11
564
565
566
567
568
569
570
571
        },
        randomSubject() {
          this.dialogTableVisible = true;
        },
        submitForm(formName) {
          this.$refs[formName].validate((valid) => {
            if (valid) {
              alert("submit!");
e1644c39   yangzhi   王哥起来屙尿了
572
            } else {
04aebc72   周超   11
573
574
              console.log("error submit!!");
              return false;
e1644c39   yangzhi   王哥起来屙尿了
575
576
            }
          });
04aebc72   周超   11
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
        },
        resetForm(formName) {
          this.$refs[formName].resetFields();
        },
        removeDomain(item) {
          var index = this.dynamicValidateForm.domains.indexOf(item);
          if (index !== -1) {
            this.dynamicValidateForm.domains.splice(index, 1);
          }
        },
        addDomain() {
          this.dynamicValidateForm.domains.push({
            value: "",
            key: Date.now(),
          });
        },
        changetimestartend(val, aa) {
          this.TestPaper.EffectiveStartTime = formatTime(val[0]);
          this.TestPaper.EffectiveEndTime = formatTime(val[1]);
        },
        search() {
          this.parameter.pageIndex = 1;
          this.parameter.QuestionClassId = Number(this.activeTab);
          this.GetList();
        },
        SubmitTestPaper() {
a7974ab3   周超   111
603
604
605
606
607
608
609
610
611
          var _this = this;
          if (_this.TestPaper.FLevelCount && _this.TestPaper.FLevelCount > 0 && _this.arr2.length >= _this.TestPaper.FLevelCount) {
            this.$notify({
              title: '题目数量已经达到级别最大',
              // message: res.data.message,
              type: 'warning'
            });
            return;
          }
04aebc72   周超   11
612
          this.$refs['form'].validate((valid) => {
b32564ca   周超   11
613
614
  
            if (!this.TestPaper.TestPaperTitle) {
6963d762   周超   拉取志哥最新的
615
              this.$notify({
b32564ca   周超   11
616
617
618
619
                title: '试卷标题必填!',
                // message: res.data.message,
                type: 'warning'
              });
6963d762   周超   拉取志哥最新的
620
621
              return;
            }
b32564ca   周超   11
622
            if (valid) {
04aebc72   周超   11
623
624
625
626
627
              this.TestPaper.QuestionBankIds = this.arr2.map((u) => u.id);
              var d = this.TestPaper;
              if (this.arr2.length > 0) {
                EditTestPaper(this.TestPaper).then((res) => {
                  if (res.data.code == 200) {
c33c1243   周超   拉取王哥最新的
628
                    this.$notify({
b32564ca   周超   11
629
630
631
632
                      title: '组卷成功!',
                      // message: res.data.message,
                      type: 'success'
                    });
94c54e92   周超   1
633
634
                    this.$router.push({
                      path: '/views/TestPaperList',
b32564ca   周超   11
635
                      query: {
94c54e92   周超   1
636
637
                      }
                    })
04aebc72   周超   11
638
639
640
641
642
643
644
645
646
647
                  } else {
                    this.$confirm("组卷失败!", "消息");
                  }
                });
              } else {
                this.$confirm("试题没有题目!", "消息");
              }
            } else {
  
              return false;
e1644c39   yangzhi   王哥起来屙尿了
648
            }
cac28d75   周超   问卷 用户 维度
649
          });
b89c8760   wangming   项目初始化
650
  
b89c8760   wangming   项目初始化
651
  
e011bf15   周超   我先走一步
652
  
04aebc72   周超   11
653
654
655
656
657
658
659
660
661
662
663
664
665
        },
        load() {
          this.loading = true;
          this.parameter.pageIndex++;
          this.GetList();
          this.loading = false;
        },
        GetList() {
          if (this.parameter.QuestionClassId == "1") {
            if (!this.loadingType)
              GetQuestionClassByType({ ClassType: 2 }).then((res) => {
                var classarr = res.data.data || [];
                this.arr1 = classarr.map((rs) => {
b32564ca   周超   11
666
                  rs.subject = rs.subjectName = rs.ClassificationName + '(' + (rs.subjectCount || 0) + ')';
04aebc72   周超   11
667
668
669
670
671
672
673
674
675
676
                  rs.type = "wd";
                  rs.subjectContent = "[]";
                  return rs;
                });
                this.loadingType = true;
              });
          } else {
            getQuestionList(this.parameter).then((res) => {
              if (this.parameter.pageIndex == 1) {
                this.arr1 = [];
e1644c39   yangzhi   王哥起来屙尿了
677
              }
04aebc72   周超   11
678
679
680
681
682
              res.data.data.rows.forEach((item, i) => {
                this.arr1.push(item);
              });
              this.count = res.data.data.total;
              this.$forceUpdate();
e011bf15   周超   我先走一步
683
            });
04aebc72   周超   11
684
685
686
687
688
689
690
691
692
693
          }
        },
        end1(e) {
          var that = this;
          if (that.arr1.length < 10) {
            this.load();
          }
  
          var items = this.arr2.filter(function (m) {
            return m.id == that.moveId;
cac28d75   周超   问卷 用户 维度
694
          });
04aebc72   周超   11
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
  
          //如果左边
          if (items.length < 2) return;
          this.arr2.splice(e.newDraggableIndex, 1);
  
          //	SingleNumber:0,
          // MultipleNumber:0,
          // SubjectiveNumber:0,
        },
        //从右边移除到左边
        RemoveHere(e) {
          if (e.item._underlying_vm_.subjectType == 1) {
            this.TestPaper.SingleNumber -= 1;
          }
          if (e.item._underlying_vm_.subjectType == 2) {
            this.TestPaper.MultipleNumber -= 1;
          }
          if (e.item._underlying_vm_.subjectType == 3) {
            this.TestPaper.SubjectiveNumber -= 1;
          }
7cc95822   yangzhi   组卷修改
715
716
717
          if (e.item._underlying_vm_.subjectType == 4) {
            this.TestPaper.VoiceNumber -= 1;
          }
b32564ca   周超   11
718
  
04aebc72   周超   11
719
720
721
722
723
          this.TestPaper.TotalScore -= e.item._underlying_vm_.fraction;
          this.TestPaper.QuestionBankIds = this.arr2.map((u) => u.id);
        },
        //从左边添加到右边
        ComeHere(e) {
a7974ab3   周超   111
724
725
726
727
          var _this = this;
          if (_this.TestPaper.FLevelCount && _this.TestPaper.FLevelCount > 0 && _this.arr2.length >= _this.TestPaper.FLevelCount) {
            return;
          }
04aebc72   周超   11
728
729
730
731
732
733
734
735
736
737
          var d = e.item._underlying_vm_;
          if (e.item._underlying_vm_.subjectType == 1) {
            this.TestPaper.SingleNumber += 1;
          }
          if (e.item._underlying_vm_.subjectType == 2) {
            this.TestPaper.MultipleNumber += 1;
          }
          if (e.item._underlying_vm_.subjectType == 3) {
            this.TestPaper.SubjectiveNumber += 1;
          }
7cc95822   yangzhi   组卷修改
738
739
740
          if (e.item._underlying_vm_.subjectType == 4) {
            this.TestPaper.VoiceNumber += 1;
          }
04aebc72   周超   11
741
742
743
744
745
746
747
748
          this.TestPaper.TotalScore += e.item._underlying_vm_.fraction;
  
          this.TestPaper.QuestionBankIds = this.arr2.map((u) => u.id);
  
          if (d.type == "wd") {
            getQuestionList({
              QuestionClassId: d.id,
              PageIndex: 1,
a7974ab3   周超   111
749
              PageSize: _this.TestPaper.FLevelCount || 1000,
04aebc72   周超   11
750
751
            }).then((res) => {
              var data = res.data.data.rows || [];
a7974ab3   周超   111
752
753
              data = data.filter(o => !_this.arr2.find(d => d.id == o.id));
              _this.arr2 = _this.arr2.filter((o) => o.type != "wd");
04aebc72   周超   11
754
              // this.arr1.splice(this.arr1.findIndex(o=>o.id == d.id),1)
a7974ab3   周超   111
755
              _this.classarr.push(d.id);
04aebc72   周超   11
756
              // var  test = this.arr2;
a7974ab3   周超   111
757
              // this.arr2.push(...data);
04aebc72   周超   11
758
              data.forEach((rs) => {
a7974ab3   周超   111
759
760
                if (_this.TestPaper.FLevelCount && _this.TestPaper.FLevelCount > 0 && _this.arr2.length >= _this.TestPaper.FLevelCount) {
                  // _this.arr2 = _this.arr2.filter((o) => o.type != "wd"); 
04aebc72   周超   11
761
                }
a7974ab3   周超   111
762
763
764
765
766
767
768
769
770
771
772
773
774
775
                else {
                  _this.arr2.push(rs);
                  if (rs.subjectType == 1) {
                    _this.TestPaper.SingleNumber += 1;
                  }
                  if (rs.subjectType == 2) {
                    _this.TestPaper.MultipleNumber += 1;
                  }
                  if (rs.subjectType == 3) {
                    _this.TestPaper.SubjectiveNumber += 1;
                  }
                  if (rs.subjectType == 4) {
                    _this.TestPaper.VoiceNumber += 1;
                  }
7cc95822   yangzhi   组卷修改
776
                }
a7974ab3   周超   111
777
  
04aebc72   周超   11
778
              });
a7974ab3   周超   111
779
              console.log(_this.arr2)
04aebc72   周超   11
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
            });
          }
        },
        //右边往左边拖动时的事件
        end2(e) {
          var that = this;
          var items = this.arr1.filter(function (m) {
            return m.id == that.moveId;
          });
          //如果左边
          if (items.length < 2) return;
          this.arr1.splice(e.newDraggableIndex, 1);
        },
        //move回调方法
        onMove(e, originalEvent) {
          //this.moveId = e.relatedContext.element.id;
          return true;
        },
        getQuestionClassListHeadler() {
          let _this = this;
          GetToplevel().then((res) => {
            var gettree = function (titem) {
              titem.children = [];
              let childrenList = res.data.data.filter(
                (u) => u.ParentId == titem.value
              );
              if (childrenList.length == 0) titem.children = undefined;
              res.data.data
                .filter((u) => u.ParentId == titem.value)
                .forEach((item, i) => {
                  var model = {
                    value: item.id,
                    label: item.ClassTitle,
                  };
                  gettree(model);
                  titem.children.push(model);
                });
            };
172a152f   yangzhi   组卷左侧题目的分类
818
            res.data.data
04aebc72   周超   11
819
              .filter((u) => u.ParentId == 0)
172a152f   yangzhi   组卷左侧题目的分类
820
821
822
823
824
825
              .forEach((item, i) => {
                var model = {
                  value: item.id,
                  label: item.ClassTitle,
                };
                gettree(model);
04aebc72   周超   11
826
827
                _this.QuestionClass.push(model);
                _this.treeData.push(model);
172a152f   yangzhi   组卷左侧题目的分类
828
              });
04aebc72   周超   11
829
830
          });
        },
172a152f   yangzhi   组卷左侧题目的分类
831
      },
04aebc72   周超   11
832
    };
b89c8760   wangming   项目初始化
833
834
835
  </script>
  
  <style lang="scss" scoped>
04aebc72   周超   11
836
837
838
839
840
841
    .el-row {
  
      /* margin-bottom: 20px; */
      &:last-child {
        margin-bottom: 0;
      }
cac28d75   周超   问卷 用户 维度
842
    }
04aebc72   周超   11
843
844
845
846
847
848
849
850
851
852
853
  
    .el-col {
      border-radius: 4px;
    }
  
    .bg-purple-dark {
      background: #99a9bf;
    }
  
    .bg-purple {
      background: #efefef;
172a152f   yangzhi   组卷左侧题目的分类
854
    }
cac28d75   周超   问卷 用户 维度
855
  
04aebc72   周超   11
856
857
    .bg-purple-light {
      background: #e5e9f2;
172a152f   yangzhi   组卷左侧题目的分类
858
    }
cac28d75   周超   问卷 用户 维度
859
  
04aebc72   周超   11
860
861
    .grid-content {
      border-radius: 4px;
97bf7b2f   yangzhi   样式优化适配不同分辨率
862
      min-height: 100%;
cac28d75   周超   问卷 用户 维度
863
864
    }
  
04aebc72   周超   11
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
    .row-bg {
      padding: 10px 0;
      background-color: #f9fafc;
    }
  
    .infinite-list {
      list-style: none;
      margin: 0px;
      padding: 0px;
  
      &::-webkit-scrollbar {
        width: 6px;
      }
  
      //滚动条小方块
      &::-webkit-scrollbar-thumb {
        border-radius: 10px;
        background: #304156;
      }
  
      //滚动条轨道
      &::-webkit-scrollbar-track {
        // border-radius: 10px;
        height: 100px;
        background: #cdcdcd;
      }
  
      .infinite-list-item {
        padding: 10px;
        min-height: 60px;
        width: 95%;
        margin: auto;
        background-color: #fff;
        margin-bottom: 10px;
        border-radius: 5px;
        box-shadow: 0 0 5px #cdcdcd;
  
        &:first-child {
          margin-top: 10px;
        }
cac28d75   周超   问卷 用户 维度
905
      }
cac28d75   周超   问卷 用户 维度
906
    }
04aebc72   周超   11
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
  
    .option-p {
      line-height: 15px;
    }
  
    .areahead {
      text-align: center;
      height: 60px;
      line-height: 60px;
      border-bottom: 1px solid #cdcdcd;
    }
  
    .testPaper-manager {
      margin: 10px 20px 10px 10px;
    }
  
    .testPaper-manager .el-form-item {
      margin-bottom: 20px;
    }
  
    .el-form-item-custom {
      margin-bottom: 0px !important;
    }
  
    .testpaper-input {
      //max-width: 400px;
    }
cac28d75   周超   问卷 用户 维度
934
  </style>