Commit 35280aea106990ad2f93281834defa34aa52476f

Authored by “wangming”
1 parent 9dce0ee1

1

.DS_Store
No preview for this file type
wenjuan-h5/config/api.js
... ... @@ -6,14 +6,14 @@
6 6  
7 7  
8 8  
9   -// const DOMAIN_PREFIXPING = 'https://jy.scjysm.asia:18086/meserver/admin-server'
10   -// const DOMAIN_PREFIX = 'https://jy.scjysm.asia:18086/meserver/api'
  9 +const DOMAIN_PREFIXPING = 'https://jy.scjysm.asia:18086/meserver/admin-server'
  10 +const DOMAIN_PREFIX = 'https://jy.scjysm.asia:18086/meserver/api'
11 11 // const DOMAIN_PREFIXPING = 'http://172.16.61.123:80/cdwlMall/admin-server'
12 12 // const DOMAIN_PREFIX = 'http://172.16.61.123:80/cdwlMall/api'
13 13  
14   -const host = `${window.location.protocol}//${window.location.host}`
15   -const DOMAIN_PREFIXPING = `${host}/cdwlMall/admin-server`
16   -const DOMAIN_PREFIX =`${host}/cdwlMall/meserver/api`
  14 +// const host = `${window.location.protocol}//${window.location.host}`
  15 +// const DOMAIN_PREFIXPING = `${host}/cdwlMall/admin-server`
  16 +// const DOMAIN_PREFIX =`${host}/cdwlMall/meserver/api`
17 17  
18 18 // const DOMAIN_PREFIXPING = `http://192.168.2.152:9003`
19 19 // const DOMAIN_PREFIX = 'http://192.168.2.152:9007'
... ... @@ -42,9 +42,9 @@ const TERMINAL = 1
42 42  
43 43 module.exports = {
44 44 //问卷查询接口
45   - wenjuanList: WX_API_BASEPING + '/cereQuestionnaireTable/queryById',
46   - //问卷提交接口
47   - wenjuanUp: WX_API_BASE + '/cereQuestionnaireAnswering/add',
  45 + wenjuanList: WX_API_BASEPING + '/cereQuestionnaireTable/queryById',
  46 + //问卷提交接口
  47 + wenjuanUp: WX_API_BASE + '/cereQuestionnaireAnswering/add',
48 48 //问卷解析token
49   - jietoken: WX_API_BASE + '/cereQuestionnaireAnswering/get/token',
  49 + jietoken: WX_API_BASE + '/cereQuestionnaireAnswering/get/token',
50 50 }
... ...
wenjuan-h5/pages_category_page1/question/question copy.vue 0 → 100644
  1 +<template>
  2 + <view class="questionnaire">
  3 +
  4 + <!-- 单选问题 -->
  5 + <view style="padding:20px;background-color: #f6f6f6;">
  6 + <view>
  7 + <h2
  8 + style="color: #000;overflow: hidden; text-overflow: ellipsis; display: -webkit-box;-webkit-box-orient: vertical;word-break: break-all;text-align:center">
  9 + {{ wenjuan.title }}
  10 + </h2>
  11 + <!-- <h5 style="padding: 10px 0;color: #000;">请您认真作答以下题目</h5> -->
  12 + <view class="" style="padding: 10px 0; height: 200px;">
  13 + <image :src="this.$hostUrl + wenjuan.coverImage" mode="scaleToFill"
  14 + style="width:100%;height: 100%;border-radius: 10px;"></image>
  15 + </view>
  16 + </view>
  17 + <view style="padding: 15px;background-color: #fff;border-radius: 10px;">
  18 + <view>
  19 + <!-- <u-parse :content="wenjuan.remarks"></u-parse> -->
  20 + <rich-text :nodes="wenjuan.remarks"></rich-text>
  21 + <!-- {{wenjuan.remarks}} -->
  22 + <!-- <view>
  23 + <view style="display:flex;padding:10px 0;justify-content: space-between;">
  24 + <view style="display:flex;">
  25 + {{wenjuan.createUser}}
  26 + </view>
  27 + <view>
  28 + {{wenjuan.createTime}}
  29 + </view>
  30 + </view>
  31 + </view> -->
  32 + <!-- <view>预计答题时间:{{this.wenjuan.estimatedTime}}分钟</view> -->
  33 + </view>
  34 + </view>
  35 + <view class="question" v-for="(item, index) in wenjuan.question" style="">
  36 + <p class="question-title"
  37 + style="font-weight:600;overflow: hidden; text-overflow: ellipsis; display: -webkit-box;-webkit-box-orient: vertical;word-break: break-all;">
  38 + <span v-if="item.required == '必填'" style="color: red;">*</span>{{ index }}.<span
  39 + style="color:#0FBB59;padding:0 3px;">({{ item.type }})</span>
  40 + {{ item.title }}
  41 + </p>
  42 + <view>
  43 +
  44 + <!-- <radio-group @change="radioChange" v-model="item.choose"
  45 + v-if="item.type =='单选'" >
  46 + <label :class="item.choose == val ?'option green':'option gary' " :key="val.answer" v-for="(val, idx) in item.options">
  47 + <view>
  48 + <radio :value="val.answer" activeBackgroundColor="#E5FFF0"
  49 + activeBorderColor="#4FCF86" iconColor="#0FBB59" />
  50 + </view>
  51 + <view>{{val.answer}}</view>
  52 + </label>
  53 + </radio-group> -->
  54 + <u-radio-group v-model="item.choose" v-if="item.type == '单选'" style="width: 100%;">
  55 + <view v-if="item.layoutType != 2">
  56 + <u-radio v-for="(val, idx) in item.options" style="width: 100%;"
  57 + :class="val.answer == item.choose ? 'option green' : 'option gary'" :name="val.answer"
  58 + :disabled="item.disabled" :key="idx" :label-disabled="false" active-color="#4FCF86">
  59 + {{ val.answer }}
  60 + </u-radio>
  61 + </view>
  62 + <view v-else-if="item.layoutType == 2" class="myMultiple">
  63 + <div v-for="(val, idx) in item.options"
  64 + :class="['myOption gary', { optionActive: myChoose.answer == val.answer }]" :key="idx"
  65 + @click="chooseAnswerOne(item.options, val, idx)">
  66 + <p class="chooseTag" v-if="myChoose.answer == val.answer"><u-icon name="checkbox-mark"
  67 + color="#fff" size="8pt"></u-icon></p>
  68 + {{ val.answer }}
  69 + </div>
  70 + </view>
  71 + </u-radio-group>
  72 +
  73 + <u-checkbox-group v-model="item.choose" v-if="item.type == '多选'" style="width: 100%;">
  74 + {{item}}
  75 + <view v-if="item.layoutType != 2">
  76 + <u-checkbox v-for="(val, idx) in item.options" style="width: 100%;"
  77 + :class="val.disabled ? 'option green' : 'option gary'" v-model="val.disabled"
  78 + :label-disabled="false" :name="val.answer" :key="idx"
  79 + active-color="#4FCF86">{{ val.answer }}</u-checkbox>
  80 + </view>
  81 + <view v-else-if="item.layoutType == 2" class="myMultiple">
  82 + <div v-for="(val, index) in item.options"
  83 + :class="['myOption gary', { optionActive: val.disabled == true }]" :key="index"
  84 + @click="chooseAnswerMore(val, index,item)">
  85 + <p class="chooseTag" v-if="val.disabled == true"><u-icon name="checkbox-mark"
  86 + color="#fff" size="8pt"></u-icon></p>
  87 + {{ val.answer }}
  88 + </div>
  89 + </view>
  90 + </u-checkbox-group>
  91 + <!-- <checkbox-group @change="checkboxChange(index,$event,item,idx)"
  92 + v-model="item.choose"
  93 + >
  94 +
  95 + <label :class="item.choose == val.answer ?'option green':'option gary' " >
  96 + <view style="margin-bottom:5px;">
  97 +
  98 + <checkbox :name="val.answer" activeBackgroundColor="#E5FFF0"
  99 + activeBorderColor="#4FCF86" iconColor="#0FBB59" />
  100 + <span>{{val.answer}}</span >
  101 + </view>
  102 +
  103 + </label>
  104 + </checkbox-group> -->
  105 + <view v-if="item.type == '文本'">
  106 + <u-input type="textarea" v-model="item.choose" placeholder="请输入" :border="true"></u-input>
  107 + </view>
  108 + </view>
  109 + </view>
  110 +
  111 + <!-- 文本填写问题 -->
  112 + <view class="">
  113 + <!-- <p class="question-title">您的建议:</p >
  114 + <textarea v-model="suggestion"></textarea> -->
  115 + <u-form labelPosition="left" :model="model1" :rules="rules" ref="uForm" validate-on-rule-change="false"
  116 + style="background-color:#fff;border-radius: 10px;">
  117 + <u-form-item label="姓名" prop="name" borderBottom ref="item1" v-if="wenjuan.needName == '必填'"
  118 + style="padding:10px 20px 0;">
  119 + <u-input v-model="model1.name" placeholder="请输入姓名"></u-input>
  120 + </u-form-item>
  121 + <u-form-item label="电话" prop="phone" borderBottom v-if="wenjuan.needPhone == '必填'"
  122 + style="padding: 0 20px;">
  123 + <u-input v-model="model1.phone" placeholder="请输入电话"></u-input>
  124 + </u-form-item>
  125 + <u-form-item label="性别" prop="sexl" borderBottom v-if="wenjuan.needGender == '必填'"
  126 + style="padding: 0 20px ;">
  127 + <!-- <u-input v-model="model1.sexl" placeholder="请输入性别"></u-input> -->
  128 + <u-radio-group v-model="model1.sexl">
  129 + <u-radio active-color="#0FBB59" @change="radioChange" v-for="(item, index) in SexList"
  130 + :key="index" :name="item.name" :disabled="item.disabled">
  131 + {{ item.name }}
  132 + </u-radio>
  133 + </u-radio-group>
  134 + </u-form-item>
  135 +
  136 +
  137 + <view v-if="wenjuan.needOpinion == '必填'" style="padding:0 20px 10px 20px;">
  138 + <view style="margin-bottom:10px;">意见</view>
  139 +
  140 + <u-input v-model="model1.opinion" type="textarea" :border="true" :maxlength="maxLength" />
  141 + <div class="char-count" style="font-size:12px;">
  142 + {{ currentLength }} / {{ maxLength }}
  143 + </div>
  144 + </view>
  145 +
  146 + </u-form>
  147 +
  148 + </view>
  149 +
  150 + <button class="submit-btn" @click="submit">提交问卷</button>
  151 + </view>
  152 + <u-mask :show="show">
  153 + <view class="warp">
  154 + <view class="rect" @tap.stop>
  155 + <image src="../../static/images/tijiao.png" style="position: absolute;top:40%;width:80%;left:10%"
  156 + mode="aspectFit"></image>
  157 + </view>
  158 + </view>
  159 + </u-mask>
  160 +
  161 +
  162 + <u-toast ref="uToast" />
  163 + </view>
  164 +</template>
  165 +
  166 +<script>
  167 + const NET = require('@/utils/request')
  168 + const API = require('@/config/api')
  169 + export default {
  170 + data() {
  171 + return {
  172 + show: false,
  173 + maxLength: 500, // 假设最大字数为500
  174 + suggestion: '',
  175 + model1: {
  176 + name: '',
  177 + phone: '',
  178 + sexl: '',
  179 + opinion: '',
  180 + socialSecurityCardNumber: ''
  181 + },
  182 + wenjuan: {
  183 +
  184 + },
  185 + wentile: [],
  186 + rules: {
  187 + name: [{
  188 + type: 'string',
  189 + required: true,
  190 + message: '请填写姓名',
  191 + trigger: ['blur', 'change']
  192 + }],
  193 + phone: [{
  194 + required: true,
  195 + message: '请输入电话'
  196 + },
  197 + {
  198 + type: 'number',
  199 + message: '必须为数字值'
  200 + }
  201 + ],
  202 + },
  203 +
  204 + current: [],
  205 + pageTime: null,
  206 + duoxuan: [],
  207 + danAnswers: [],
  208 + selectedAnswers: [],
  209 + panduanId: [],
  210 + wenjuanIds: '',
  211 + scoreList: [],
  212 + SexList: [{
  213 + name: '男',
  214 + disabled: false
  215 + },
  216 + {
  217 + name: '女',
  218 + disabled: false
  219 + },
  220 + ],
  221 + timeLeft: null,
  222 + token: '',
  223 + myChoose: {},
  224 + myChooseItem: [
  225 +
  226 + ],
  227 + panduan: false
  228 + };
  229 + },
  230 + computed: {
  231 + currentLength() {
  232 + return this.model1.opinion.length;
  233 + }
  234 + },
  235 + onLoad(options) {
  236 +
  237 + if (options.ids != '') {
  238 + if (options.src && options.token) {
  239 +
  240 + this.token = options.token
  241 + let obj = {
  242 + token: options.token
  243 + }
  244 + NET.request(API.jietoken, obj, 'get').then(res => {
  245 + if (typeof res.data == 'string') {
  246 +
  247 + if (JSON.parse(res.data).phone) {
  248 + this.model1.phone = Number(JSON.parse(res.data).phone)
  249 + }
  250 + if (JSON.parse(res.data).aac003Mask) {
  251 + this.model1.name = JSON.parse(res.data).aac003Mask
  252 + }
  253 + if (JSON.parse(res.data).aac004) {
  254 + this.model1.sexl = JSON.parse(res.data).aac004
  255 + this.panduan = true
  256 + }
  257 + if (JSON.parse(res.data).aac002Mask) {
  258 + this.model1.socialSecurityCardNumber = JSON.parse(res.data).aac002Mask
  259 + }
  260 + }
  261 +
  262 + })
  263 +
  264 + // if (options.token != undefined) {}
  265 +
  266 + } else if (options.phone != undefined) {
  267 + this.model1.phone = options.phone
  268 + }
  269 +
  270 + this.wenjuanIds = options.ids
  271 + NET.request(API.wenjuanList, {
  272 + id: options.ids,
  273 + // reviewStatus: '3',
  274 + }, 'post').then(res => {
  275 + if (res.data.id) {
  276 + this.wenjuan = res.data
  277 + this.wenjuan.question = JSON.parse(res.data.question)
  278 + //检查this.wenjuan.question这个list的每个里面是否有maxChoose参数,没有的话就加一个
  279 + this.wenjuan.question.forEach(item => {
  280 + if (!item.maxChoose) {
  281 + item.maxChoose = 0
  282 + }
  283 + })
  284 +
  285 +
  286 + this.timeLeft = parseInt(this.wenjuan.estimatedTime, 10) * 60; // 将分钟转换为秒
  287 + this.updateCountdownDisplay()
  288 +
  289 + if (res.data.reviewStatus == '5' || res.data.reviewStatus == '4') {
  290 + uni.reLaunch({
  291 + url: `/pages_category_page1/question/succe?flag=3`
  292 + })
  293 + }
  294 + } else {
  295 + uni.reLaunch({
  296 + url: `/pages_category_page1/question/succe?flag=1`
  297 + })
  298 + }
  299 +
  300 + // if (res.data.cereQuestionManagements.length > 0) {
  301 + // for (let i = 0; i < res.data.cereQuestionManagements.length; i++) {
  302 + // this.$set(res.data.cereQuestionManagements[i], 'value', [])
  303 + // }
  304 + // }
  305 +
  306 + // this.wentile = res.data.cereQuestionManagements
  307 +
  308 + // this.wenjuan.cereQuestionManagements.map(item => {
  309 +
  310 + // item.optionSettings = JSON.parse(item.optionSettings)
  311 + // item.score = JSON.parse(item.score)
  312 + // })
  313 +
  314 + })
  315 + } else {
  316 + uni.reLaunch({
  317 + url: `/pages_category_page1/question/succe?flag=1`
  318 + })
  319 + }
  320 + // 设置倒计时定时器
  321 + // const countdownInterval = setInterval(() => {
  322 + // if (this.timeLeft > 0) {
  323 + // this.timeLeft--;
  324 + // this.updateCountdownDisplay();
  325 + // } else {
  326 + // clearInterval(countdownInterval);
  327 + // location.reload(true);
  328 + // // console.log('倒计时结束');
  329 + // // 这里可以添加倒计时结束时的处理代码
  330 + // }
  331 + // }, 1000); // 每秒更新一次
  332 + this.pageTime = this.getCurrentTimestamp()
  333 +
  334 + },
  335 + watch: {},
  336 + methods: {
  337 + // 获取时间
  338 + currentTime() {
  339 + let date = new Date();
  340 + let year = date.getFullYear();
  341 + let month = date.getMonth() + 1; // 月份从0~11,所以加一
  342 + let day = date.getDate();
  343 + let hours = date.getHours();
  344 + let minutes = date.getMinutes();
  345 + let seconds = date.getSeconds();
  346 +
  347 + // 为月、日、小时、分钟和秒添加前导零(如果需要)
  348 + month = month < 10 ? '0' + month : month;
  349 + day = day < 10 ? '0' + day : day;
  350 + hours = hours < 10 ? '0' + hours : hours;
  351 + minutes = minutes < 10 ? '0' + minutes : minutes;
  352 + seconds = seconds < 10 ? '0' + seconds : seconds;
  353 +
  354 + // 返回格式化的日期和时间字符串
  355 + return `${year}-${month}-${day} ${hours}:${minutes}`;
  356 + },
  357 + updateCountdownDisplay() {
  358 + const minutes = Math.floor(this.timeLeft / 60);
  359 + const seconds = this.timeLeft % 60;
  360 + // console.log(`${minutes} 分 ${seconds} 秒`);
  361 + // 这里可以替换为更新DOM元素的代码
  362 + },
  363 + // formatTime(seconds) {
  364 + // const minutes = Math.floor(seconds / 60);
  365 + // const remainingSeconds = seconds % 60;
  366 + // return `${minutes}分${remainingSeconds < 10 ? '0' : ''}${remainingSeconds}秒`;
  367 + // },
  368 + getCurrentTimestamp() {
  369 + let Times = Date.now();
  370 + return Times // 或者 new Date().getTime();
  371 + },
  372 + checkRequiredQuestions(qust) {
  373 + for (let key in qust) {
  374 +
  375 + let question = qust[key];
  376 + if (question.required === '必填') {
  377 + if (question.type === '文本' || question.type === '单选') {
  378 + if (question.choose === '') {
  379 +
  380 + this.$refs.uToast.show({
  381 + title: '请填写所有必填题目',
  382 + })
  383 +
  384 + return false; // 返回false表示有未填写的必填题目
  385 + }
  386 + } else if (question.type === '多选') {
  387 +
  388 +
  389 + let hasEnabledOption = question.options.some(option => option.disabled);
  390 +
  391 + if (!hasEnabledOption) {
  392 + this.$refs.uToast.show({
  393 + title: '请填写所有必填题目',
  394 + })
  395 +
  396 + return false; // 返回false表示有未填写的必填题目
  397 + }
  398 + }
  399 + }
  400 + }
  401 + return true; // 返回true表示所有必填题目都已填写
  402 + },
  403 + submit() {
  404 + let putTime = this.getCurrentTimestamp() - this.pageTime
  405 + putTime = (putTime / 1000).toFixed(2)
  406 + if (!this.checkRequiredQuestions(this.wenjuan.question)) {
  407 + return
  408 + }
  409 + if (this.model1.name == '' && this.wenjuan.needName == '必填') {
  410 + this.$refs.uToast.show({
  411 + title: '请输入姓名',
  412 + })
  413 + return;
  414 + }
  415 + if (this.wenjuan.needName == '不填' && this.token == '') {
  416 +
  417 + this.model1.name = '匿名'
  418 +
  419 + }
  420 + if (this.model1.phone == '' && this.wenjuan.needPhone == '必填') {
  421 + this.$refs.uToast.show({
  422 + title: '电话号码不能为空'
  423 + });
  424 + return;
  425 + }
  426 + if (this.wenjuan.needPhone == '必填' && this.isChineseOrPunctuation(this.model1.phone)) {
  427 + this.$refs.uToast.show({
  428 + title: '请输入电话且不能包含汉字或标点特殊符号',
  429 + })
  430 + return;
  431 + }
  432 +
  433 + // if(this.wenjuan.needPhone =='不填' && this.wenjuan.fillingConditions == '可重复填写'){
  434 + // this.model1.phone = ''
  435 + // }
  436 +
  437 + if (this.model1.sexl != '男' && this.model1.sexl != '女' && this.wenjuan.needGender == '必填') {
  438 + this.$refs.uToast.show({
  439 + title: '请选择性别',
  440 + })
  441 + return;
  442 + }
  443 + if (this.wenjuan.needGender == '不填' && this.panduan == false) {
  444 +
  445 + this.model1.sexl = '未知'
  446 +
  447 + }
  448 + if (this.model1.opinion == '' && this.wenjuan.needOpinion == '必填') {
  449 + this.$refs.uToast.show({
  450 + title: '请输入意见',
  451 + })
  452 + return;
  453 + }
  454 +
  455 +
  456 +
  457 + // JSON.stringify(danAnswers)
  458 + // let array = this.danAnswers.concat(this.selectedAnswers)
  459 + // obj.answerOptions = JSON.stringify(array)
  460 + var arr = []
  461 + // for (let i = 0; i < this.wentile.length; i++) {
  462 + // var info = {
  463 + // id: "",
  464 + // value: [],
  465 + // cores:0,
  466 + // }
  467 + // if (this.wentile[i].questionType == '单选' || this.wentile[i].questionType == '文本' ) {
  468 +
  469 + // info.id = this.wentile[i].id
  470 + // info.value = this.wentile[i].value
  471 + // let index =this.wentile[i].value
  472 + // if(this.wentile[i].score){
  473 +
  474 + // for (const key in this.wentile[i].score) {
  475 + // if (this.wentile[i].score.hasOwnProperty(key)) { // 确保只获取对象自身的属性,而不是继承的属性
  476 +
  477 + // if(key == index){
  478 + // info.cores = this.wentile[i].score[key]; // 设置 info.cores 为当前键对应的值
  479 + // break; // 如果找到了匹配的键,可以提前退出循环
  480 + // }
  481 + // }
  482 + // }
  483 + // }
  484 + // // console.log(this.wentile[i].cores[index])
  485 + // // info.cores.this.wentile[i].value =
  486 +
  487 + // arr.push(info)
  488 +
  489 +
  490 +
  491 + // // if (this.wentile[i].value != '' && this.wentile[i].value != null && this.wentile[i].value !=
  492 + // // undefined) {
  493 + // // info.id = this.wentile[i].id
  494 + // // info.value = this.wentile[i].value
  495 + // // let index =this.wentile[i].value
  496 + // // if(this.wentile[i].score){
  497 +
  498 + // // for (const key in this.wentile[i].score) {
  499 + // // if (this.wentile[i].score.hasOwnProperty(key)) { // 确保只获取对象自身的属性,而不是继承的属性
  500 +
  501 + // // if(key == index){
  502 + // // info.cores = this.wentile[i].score[key]; // 设置 info.cores 为当前键对应的值
  503 + // // break; // 如果找到了匹配的键,可以提前退出循环
  504 + // // }
  505 + // // }
  506 + // // }
  507 + // // }
  508 + // // // console.log(this.wentile[i].cores[index])
  509 + // // // info.cores.this.wentile[i].value =
  510 +
  511 + // // arr.push(info)
  512 +
  513 + // // }
  514 + // } else {
  515 + // if (this.wentile[i].value.length > 0) {
  516 + // info.id = this.wentile[i].id
  517 + // info.value = this.wentile[i].value
  518 + // let index =this.wentile[i].value
  519 + // console.log(this.wentile[i].score);
  520 + // if(this.wentile[i].score){
  521 +
  522 + // for (const key in this.wentile[i].score) {
  523 + // if (this.wentile[i].score.hasOwnProperty(key)) { // 确保只获取对象自身的属性,而不是继承的属性
  524 + // console.log('1111111111111111111',key,index)
  525 + // for(let j=0;j<index.length;j++){
  526 + // if(key == index[j]){
  527 + // console.log(info.cores,this.wentile[i].score[key])
  528 + // info.cores += this.wentile[i].score[key]; // 设置 info.cores 为当前键对应的值
  529 +
  530 + // }
  531 + // }
  532 +
  533 + // }
  534 + // }
  535 + // }
  536 + // arr.push(info)
  537 +
  538 + // }
  539 + // }
  540 +
  541 +
  542 + // }
  543 + console.log(this.wenjuan)
  544 +
  545 + // let obj = {
  546 + // questionnaireId: this.wenjuanIds,
  547 + // userName: this.model1.name,
  548 + // contactNumber: this.model1.phone,
  549 + // gender: this.model1.sexl,
  550 + // responseTime: putTime,
  551 + // opinion:this.model1.opinion,
  552 + // createTime: this.currentTime(),
  553 + // answerOptions: {},
  554 + // answeringScore: '',
  555 + // questionnaireScore: null,
  556 +
  557 + // }
  558 + // obj.answeringScore = []
  559 +
  560 + // for(let i=0;i<arr.length;i++){
  561 + // console.log()
  562 + // if(arr[i].cores ==null){
  563 + // obj.answerOptions[i+1] = arr[i].value
  564 + // }else{
  565 + // obj.questionnaireScore +=arr[i].cores
  566 + // obj.answeringScore.push(arr[i].cores)
  567 + // if(typeof arr[i].value !='string'){
  568 +
  569 + // arr[i].value.sort((a, b) => a - b)
  570 + // obj.answerOptions[i+1] = arr[i].value.join(',')
  571 + // }else{
  572 + // obj.answerOptions[i+1]=arr[i].value
  573 + // }
  574 + // }
  575 +
  576 +
  577 + // }
  578 + // obj.answerOptions= JSON.stringify(obj.answerOptions)
  579 + // obj.answeringScore = obj.answeringScore.join(',')
  580 +
  581 + var obj = {
  582 + ...this.wenjuan
  583 + }
  584 +
  585 +
  586 + for (var key in obj.question) {
  587 + console.log(obj.question[key])
  588 + if (obj.question[key].type == '多选') {
  589 + obj.question[key].choose = []
  590 + obj.question[key].options.map(res => {
  591 + if (res.disabled) {
  592 + obj.question[key].choose.push(res.answer)
  593 + }
  594 +
  595 + })
  596 + obj.question[key].choose = obj.question[key].choose.join(',')
  597 + }
  598 + }
  599 + const result = Object.keys(obj.question).reduce((acc, key) => {
  600 + const question = obj.question[key];
  601 + const chooseAnswers = question.choose.split(","); // 处理多选的情况
  602 + const indexes = chooseAnswers.map((choose) => {
  603 + const optionIndex = question.options.findIndex(
  604 + (option) => option.answer === choose
  605 + );
  606 + return optionIndex >= 0 ? optionIndex + 1 : null; // 序号从1开始
  607 + });
  608 +
  609 + acc[key] = indexes.filter((index) => index !== null).join(","); // 只保留有效序号
  610 + return acc;
  611 + }, {});
  612 +
  613 + // 计算总分数
  614 + const totalScore = Object.keys(obj.question).reduce((sum, key) => {
  615 + const question = obj.question[key]
  616 + if (question.type === "单选" || question.type === "多选") {
  617 + const chooseAnswers = question.choose.split(","); // 多选时拆分答案
  618 + chooseAnswers.forEach((choose) => {
  619 + const matchedOption = question.options.find(
  620 + (option) => option.answer === choose
  621 + );
  622 + if (matchedOption) {
  623 + sum += parseFloat(matchedOption.score || 0); // 累加分数
  624 + }
  625 + });
  626 + }
  627 + return sum;
  628 + }, 0);
  629 +
  630 + // console.log(obj.question,totalScore,result)
  631 + // return
  632 + obj.questionnaireId = this.wenjuanIds
  633 + obj.userName = this.model1.name
  634 + obj.contactNumber = this.model1.phone
  635 + obj.gender = this.model1.sexl
  636 + obj.responseTime = putTime
  637 + obj.answerOptions = JSON.stringify(result)
  638 + obj.createTime = this.currentTime()
  639 + obj.opinion = this.model1.opinion
  640 + obj.questionnaireScore = totalScore
  641 +
  642 + // let obj = {
  643 + // questionnaireId: this.wenjuanIds,
  644 + // userName: this.model1.name,
  645 + // contactNumber: this.model1.phone,
  646 + // gender: this.model1.sexl,
  647 + // responseTime: putTime,
  648 + // opinion:this.model1.opinion,
  649 + // createTime: this.currentTime(),
  650 + // answerOptions: {},
  651 + // answeringScore: '',
  652 + // questionnaireScore: null,
  653 +
  654 + // }
  655 + obj.question = JSON.stringify(obj.question)
  656 + let tijiaoObj = {
  657 + questionnaireId: this.wenjuanIds,
  658 + userName: this.model1.name,
  659 + contactNumber: this.model1.phone,
  660 + gender: this.model1.sexl,
  661 + responseTime: putTime,
  662 + answerOptions: JSON.stringify(result),
  663 + socialSecurityCardNumber: this.model1.socialSecurityCardNumber,
  664 + createTime: this.currentTime(),
  665 + opinion: this.model1.opinion,
  666 + questionnaireScore: totalScore,
  667 + question: obj.question
  668 + }
  669 +
  670 + console.log(tijiaoObj)
  671 +
  672 + NET.request(API.wenjuanUp, tijiaoObj, 'post').then(res => {
  673 + // this.show =true
  674 +
  675 + if (res.data == 'false') {
  676 + uni.reLaunch({
  677 + url: `/pages_category_page1/question/succe?chonfu=true`
  678 + })
  679 + } else {
  680 + uni.reLaunch({
  681 + url: `/pages_category_page1/question/succe?ids=${this.wenjuanIds}`
  682 + })
  683 + }
  684 +
  685 + })
  686 +
  687 + },
  688 +
  689 + isChineseOrPunctuation(str) {
  690 + const regex = /[^\d]/;
  691 + return regex.test(str);
  692 + },
  693 +
  694 +
  695 + // radioChange(index, e, item, idx) {
  696 + // console.log(index, e, item, idx)
  697 +
  698 + // // item.value = idx;
  699 + // // this.$forceUpdate();
  700 +
  701 + // },
  702 + radioChange(ind) {
  703 + // console.log(index, e, item, idx)
  704 + // console.error(this.items)
  705 + // for (let i = 0; i < this.items.length; i++) {
  706 + // if (this.items[i].value === evt.detail.value) {
  707 + // this.current = i;
  708 + // break;
  709 + // }
  710 + // }
  711 + // item.value = idx;
  712 + // this.$forceUpdate();
  713 +
  714 + },
  715 + checkboxChange(index, e, item, idx) {
  716 +
  717 + // const index1 = item.value.indexOf(idx)
  718 + // if (index1 !== -1) {
  719 + // item.value.splice(index1, 1);
  720 + // } else {
  721 + // item.value.push(idx)
  722 + // }
  723 + // this.$forceUpdate();
  724 + },
  725 + chooseAnswerOne(options, chooseItem, idx) {
  726 +
  727 + options.forEach(item => {
  728 + item.disabled = false
  729 + })
  730 +
  731 + for (let key in this.wenjuan.question) {
  732 + this.wenjuan.question[key].options.map(res => {
  733 + if (res.answer == chooseItem.answer) {
  734 + this.wenjuan.question[key].choose = chooseItem.answer
  735 + }
  736 + })
  737 +
  738 +
  739 + }
  740 +
  741 + this.myChoose = {
  742 + ...chooseItem
  743 + }
  744 + chooseItem.disabled = true
  745 + },
  746 + chooseAnswerMore(chooseItem, idx, item) {
  747 + if (item.maxChoose && item.maxChoose > 0) {
  748 + // 获取当前题目的已选中选项数量
  749 + const selectedCount = item.options.filter(option => option.disabled).length;
  750 + // 如果已选中到达 maxChoose,并且当前项未被选中,则不允许选择
  751 + if (selectedCount >= item.maxChoose && !chooseItem.disabled) {
  752 + uni.showToast({
  753 + title: `最多只能选择 ${item.maxChoose} 个选项`,
  754 + icon: 'none',
  755 + duration: 2000
  756 + });
  757 + return;
  758 + }
  759 + }
  760 +
  761 +
  762 +
  763 + if (chooseItem.disabled) {
  764 + chooseItem.disabled = false
  765 + for (let key in this.wenjuan.question) {
  766 + this.wenjuan.question[key].options.map(res => {
  767 + if (res.answer == chooseItem.answer) {
  768 + this.wenjuan.question[key].choose = ''
  769 + }
  770 + })
  771 + }
  772 + } else {
  773 + for (let key in this.wenjuan.question) {
  774 + this.wenjuan.question[key].options.map(res => {
  775 + if (res.answer == chooseItem.answer) {
  776 + this.wenjuan.question[key].choose = chooseItem.answer
  777 + }
  778 + })
  779 + }
  780 + chooseItem.disabled = true
  781 + }
  782 + },
  783 + chooseAnswer(item) {
  784 + console.log(1111);
  785 + }
  786 + // chooseAnswerMore(chooseItem, idx) {
  787 + // // 获取所有已选中的选项数量
  788 +
  789 + // if (chooseItem.disabled) {
  790 + // chooseItem.disabled = false
  791 + // for (let key in this.wenjuan.question) {
  792 + // this.wenjuan.question[key].options.map(res => {
  793 + // if (res.answer == chooseItem.answer) {
  794 + // this.wenjuan.question[key].choose = ''
  795 + // }
  796 + // })
  797 + // }
  798 + // } else {
  799 + // for (let key in this.wenjuan.question) {
  800 + // this.wenjuan.question[key].options.map(res => {
  801 + // if (res.answer == chooseItem.answer) {
  802 + // this.wenjuan.question[key].choose = chooseItem.answer
  803 + // }
  804 + // })
  805 + // }
  806 + // chooseItem.disabled = true
  807 + // }
  808 + // }
  809 +
  810 + }
  811 + };
  812 +</script>
  813 +
  814 +<style>
  815 + /* 整体页面背景渐变颜色设置 */
  816 + body {
  817 + background: linear-gradient(to bottom, #e9f2f8, #d0e0ea);
  818 + font-family: Arial, sans-serif;
  819 + line-height: 1.6;
  820 + height: 100vh;
  821 + display: flex;
  822 + flex-direction: column;
  823 + align-items: center;
  824 + justify-content: flex-start;
  825 + margin: 0;
  826 + padding: 0;
  827 + }
  828 +
  829 + .question {
  830 + background-color: white;
  831 + padding: 15px;
  832 + margin: 10px 0;
  833 + border-radius: 10px;
  834 + }
  835 +
  836 + /* 问卷容器样式,确保宽度自适应且不超出屏幕,设置内边距和背景等 */
  837 + .questionnaire {
  838 + width: 100%;
  839 + max-width: 600px;
  840 + flex-grow: 1;
  841 + margin: auto;
  842 + /* padding: 30px; */
  843 + background-color: white;
  844 + box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
  845 + border-radius: 5px;
  846 + box-sizing: border-box;
  847 + }
  848 +
  849 + /* 页面标题样式,设置背景色、文字颜色、宽度及内边距等 */
  850 + h3 {
  851 + text-align: center;
  852 + color: #000;
  853 + /* background-color: #007BFF; */
  854 + margin: 0;
  855 + padding: 10px 0;
  856 + width: 100%;
  857 + box-sizing: border-box;
  858 + }
  859 +
  860 + /* 问题标题样式,设置字体大小、颜色及下边框 */
  861 + .question-title {
  862 + font-size: 18px;
  863 + color: #000;
  864 + margin-bottom: 10px;
  865 + }
  866 +
  867 + /* 选项样式,设置列表样式及光标样式 */
  868 + .option {
  869 + list-style-type: none;
  870 + margin: 0;
  871 + cursor: pointer;
  872 + display: flex;
  873 + align-items: center;
  874 + margin-bottom: 10px;
  875 + color: black;
  876 + padding: 10px 20px;
  877 + border-radius: 3px;
  878 + transition: background-color 0.3s ease;
  879 + margin-right: 10px;
  880 + font-size: 15px;
  881 + font-weight: 500;
  882 +
  883 + .u-radio__label {
  884 + color: #000000;
  885 + font-size: 15px;
  886 + font-weight: 500;
  887 + }
  888 + }
  889 +
  890 + .myOption {
  891 + margin: 0;
  892 + cursor: pointer;
  893 + display: flex;
  894 + align-items: center;
  895 + margin-bottom: 10px;
  896 + padding: 15px 20px;
  897 + border-radius: 3px;
  898 + transition: background-color 0.3s ease;
  899 + margin-right: 10px;
  900 + font-size: 16px;
  901 + color: #000;
  902 + font-family: 'Alibaba PuHuiTi 2.0-55 Regular';
  903 + letter-spacing: 1px;
  904 + overflow: hidden;
  905 + position: relative;
  906 +
  907 + .chooseTag {
  908 + position: absolute;
  909 + top: 0;
  910 + right: 0;
  911 + width: 20px;
  912 + height: 20px;
  913 + background-color: #0fbb59;
  914 + border-radius: 0 0 0 20px;
  915 + display: flex;
  916 + align-items: center;
  917 + justify-content: center;
  918 +
  919 + .u-icon__icon {
  920 + margin-left: 4px;
  921 + margin-bottom: 2px;
  922 + }
  923 + }
  924 + }
  925 +
  926 + .green {
  927 + background-color: #cff4de;
  928 +
  929 + .u-radio__label {
  930 + color: #12ad55;
  931 + }
  932 + }
  933 +
  934 + .gary {
  935 +
  936 + background-color: #f5f5f5;
  937 +
  938 + }
  939 +
  940 + .optionActive {
  941 + background-color: #cff4de;
  942 + color: #12ad55;
  943 + }
  944 +
  945 +
  946 + /* 文本域样式,设置宽度、高度、边框及内边距 */
  947 + textarea {
  948 + width: 100%;
  949 + height: 100px;
  950 + border: 1px solid #ccc;
  951 + border-radius: 3px;
  952 + padding: 10px;
  953 + resize: vertical;
  954 + box-sizing: border-box;
  955 + }
  956 +
  957 + /* 提交按钮样式,设置背景色、颜色、边框、内边距、光标及过渡效果 */
  958 + .submit-btn {
  959 + background-color: #3F9B6A;
  960 + color: white;
  961 + border: none;
  962 + padding: 0px 20px;
  963 + border-radius: 3px;
  964 + cursor: pointer;
  965 + margin-top: 20px;
  966 + transition: background-color 0.3s ease;
  967 + width: 100%;
  968 + box-sizing: border-box;
  969 + }
  970 +
  971 + /* 提交按钮悬停效果,改变背景色 */
  972 + .submit-btn:hover {
  973 + background-color: #3F9B6A;
  974 + }
  975 +
  976 + .uni-checkbox-input {
  977 + width: 15px;
  978 + height: 15px;
  979 + }
  980 +
  981 + .uni-radio-input {
  982 + width: 15px;
  983 + height: 15px;
  984 + }
  985 +
  986 + ::v-deep .u-radio__label {
  987 + white-space: normal !important;
  988 + /* 允许文本换行 */
  989 + word-break: break-all !important;
  990 + /* 当内容过长时,自动换行 */
  991 + }
  992 +
  993 + ::v-deep .myMultiple {
  994 + display: flex;
  995 + width: 100%;
  996 + flex-wrap: wrap;
  997 +
  998 + }
  999 +</style>
0 1000 \ No newline at end of file
... ...
wenjuan-h5/pages_category_page1/question/question.vue
... ... @@ -6,11 +6,11 @@
6 6 <view>
7 7 <h2
8 8 style="color: #000;overflow: hidden; text-overflow: ellipsis; display: -webkit-box;-webkit-box-orient: vertical;word-break: break-all;text-align:center">
9   - {{wenjuan.title}}
  9 + {{ wenjuan.title }}
10 10 </h2>
11 11 <!-- <h5 style="padding: 10px 0;color: #000;">请您认真作答以下题目</h5> -->
12 12 <view class="" style="padding: 10px 0; height: 200px;">
13   - <image :src="this.$hostUrl+wenjuan.coverImage" mode="scaleToFill"
  13 + <image :src="this.$hostUrl + wenjuan.coverImage" mode="scaleToFill"
14 14 style="width:100%;height: 100%;border-radius: 10px;"></image>
15 15 </view>
16 16 </view>
... ... @@ -32,15 +32,15 @@
32 32 <!-- <view>预计答题时间:{{this.wenjuan.estimatedTime}}分钟</view> -->
33 33 </view>
34 34 </view>
35   - <view class="question" v-for="(item,index) in wenjuan.question" style="">
  35 + <view class="question" v-for="(item, index) in wenjuan.question" style="">
36 36 <p class="question-title"
37 37 style="font-weight:600;overflow: hidden; text-overflow: ellipsis; display: -webkit-box;-webkit-box-orient: vertical;word-break: break-all;">
38   - <span v-if="item.required=='必填'" style="color: red;">*</span>{{index}}.<span
39   - style="color:#0FBB59;padding:0 3px;">({{item.type}})</span>
40   - {{item.title}}
  38 + <span v-if="item.required == '必填'" style="color: red;">*</span>{{ index }}.<span
  39 + style="color:#0FBB59;padding:0 3px;">({{ item.type }})</span>
  40 + {{ item.title }}
41 41 </p>
42 42 <view>
43   -
  43 +
44 44 <!-- <radio-group @change="radioChange" v-model="item.choose"
45 45 v-if="item.type =='单选'" >
46 46 <label :class="item.choose == val ?'option green':'option gary' " :key="val.answer" v-for="(val, idx) in item.options">
... ... @@ -51,37 +51,39 @@
51 51 <view>{{val.answer}}</view>
52 52 </label>
53 53 </radio-group> -->
54   - <u-radio-group v-model="item.choose" v-if="item.type =='单选'" style="width: 100%;">
55   - <view v-if="item.layoutType!=2">
  54 + <u-radio-group v-model="item.choose" v-if="item.type == '单选'" style="width: 100%;">
  55 + <view v-if="item.layoutType != 2">
56 56 <u-radio v-for="(val, idx) in item.options" style="width: 100%;"
57   - :class="val.answer == item.choose ?'option green':'option gary' " :name="val.answer"
  57 + :class="val.answer == item.choose ? 'option green' : 'option gary'" :name="val.answer"
58 58 :disabled="item.disabled" :key="idx" :label-disabled="false" active-color="#4FCF86">
59   - {{val.answer}}
  59 + {{ val.answer }}
60 60 </u-radio>
61 61 </view>
62   - <view v-else-if="item.layoutType==2" class="myMultiple">
  62 + <view v-else-if="item.layoutType == 2" class="myMultiple">
63 63 <div v-for="(val, idx) in item.options"
64   - :class="['myOption gary',{optionActive:myChoose.answer == val.answer}]" :key="idx"
65   - @click="chooseAnswerOne(item.options,val,idx)">
66   - <p class="chooseTag" v-if="myChoose.answer == val.answer"><u-icon name="checkbox-mark" color="#fff" size="8pt" ></u-icon></p>
67   - {{val.answer}}
  64 + :class="['myOption gary', { optionActive: myChoose.answer == val.answer }]" :key="idx"
  65 + @click="chooseAnswerOne(item.options, val, idx)">
  66 + <p class="chooseTag" v-if="myChoose.answer == val.answer"><u-icon name="checkbox-mark"
  67 + color="#fff" size="8pt"></u-icon></p>
  68 + {{ val.answer }}
68 69 </div>
69 70 </view>
70 71 </u-radio-group>
71   -
72   - <u-checkbox-group v-model="item.choose" v-if="item.type =='多选'" style="width: 100%;">
73   - <view v-if="item.layoutType!=2">
  72 +
  73 + <u-checkbox-group v-model="item.choose" v-if="item.type == '多选'" style="width: 100%;">
  74 + <view v-if="item.layoutType != 2">
74 75 <u-checkbox v-for="(val, idx) in item.options" style="width: 100%;"
75   - :class="val.disabled ?'option green':'option gary' " v-model="val.disabled"
  76 + :class="val.disabled ? 'option green' : 'option gary'" v-model="val.disabled"
76 77 :label-disabled="false" :name="val.answer" :key="idx" active-color="#4FCF86"
77   - @click="chooseAnswer(val)">{{val.answer}}</u-checkbox>
  78 + @click="chooseAnswer(val)">{{ val.answer }}</u-checkbox>
78 79 </view>
79   - <view v-else-if="item.layoutType==2" class="myMultiple">
  80 + <view v-else-if="item.layoutType == 2" class="myMultiple">
80 81 <div v-for="(val, index) in item.options"
81   - :class="['myOption gary',{optionActive:val.disabled==true}]"
82   - :key="index" @click="chooseAnswerMore(val,index)">
83   - <p class="chooseTag" v-if="val.disabled==true"><u-icon name="checkbox-mark" color="#fff" size="8pt" ></u-icon></p>
84   - {{val.answer}}
  82 + :class="['myOption gary', { optionActive: val.disabled == true }]" :key="index"
  83 + @click="chooseAnswerMore(val, index)">
  84 + <p class="chooseTag" v-if="val.disabled == true"><u-icon name="checkbox-mark"
  85 + color="#fff" size="8pt"></u-icon></p>
  86 + {{ val.answer }}
85 87 </div>
86 88 </view>
87 89 </u-checkbox-group>
... ... @@ -99,7 +101,7 @@
99 101  
100 102 </label>
101 103 </checkbox-group> -->
102   - <view v-if="item.type =='文本'">
  104 + <view v-if="item.type == '文本'">
103 105 <u-input type="textarea" v-model="item.choose" placeholder="请输入" :border="true"></u-input>
104 106 </view>
105 107 </view>
... ... @@ -111,27 +113,27 @@
111 113 <textarea v-model="suggestion"></textarea> -->
112 114 <u-form labelPosition="left" :model="model1" :rules="rules" ref="uForm" validate-on-rule-change="false"
113 115 style="background-color:#fff;border-radius: 10px;">
114   - <u-form-item label="姓名" prop="name" borderBottom ref="item1" v-if="wenjuan.needName =='必填'"
  116 + <u-form-item label="姓名" prop="name" borderBottom ref="item1" v-if="wenjuan.needName == '必填'"
115 117 style="padding:10px 20px 0;">
116 118 <u-input v-model="model1.name" placeholder="请输入姓名"></u-input>
117 119 </u-form-item>
118   - <u-form-item label="电话" prop="phone" borderBottom v-if="wenjuan.needPhone =='必填'"
  120 + <u-form-item label="电话" prop="phone" borderBottom v-if="wenjuan.needPhone == '必填'"
119 121 style="padding: 0 20px;">
120 122 <u-input v-model="model1.phone" placeholder="请输入电话"></u-input>
121 123 </u-form-item>
122   - <u-form-item label="性别" prop="sexl" borderBottom v-if="wenjuan.needGender =='必填'"
  124 + <u-form-item label="性别" prop="sexl" borderBottom v-if="wenjuan.needGender == '必填'"
123 125 style="padding: 0 20px ;">
124 126 <!-- <u-input v-model="model1.sexl" placeholder="请输入性别"></u-input> -->
125 127 <u-radio-group v-model="model1.sexl">
126 128 <u-radio active-color="#0FBB59" @change="radioChange" v-for="(item, index) in SexList"
127 129 :key="index" :name="item.name" :disabled="item.disabled">
128   - {{item.name}}
  130 + {{ item.name }}
129 131 </u-radio>
130 132 </u-radio-group>
131 133 </u-form-item>
132 134  
133 135  
134   - <view v-if="wenjuan.needOpinion =='必填'" style="padding:0 20px 10px 20px;">
  136 + <view v-if="wenjuan.needOpinion == '必填'" style="padding:0 20px 10px 20px;">
135 137 <view style="margin-bottom:10px;">意见</view>
136 138  
137 139 <u-input v-model="model1.opinion" type="textarea" :border="true" :maxlength="maxLength" />
... ... @@ -174,7 +176,7 @@
174 176 phone: '',
175 177 sexl: '',
176 178 opinion: '',
177   - socialSecurityCardNumber:''
  179 + socialSecurityCardNumber: ''
178 180 },
179 181 wenjuan: {
180 182  
... ... @@ -219,9 +221,9 @@
219 221 token: '',
220 222 myChoose: {},
221 223 myChooseItem: [
222   -
  224 +
223 225 ],
224   - panduan:false
  226 + panduan: false
225 227 };
226 228 },
227 229 computed: {
... ... @@ -240,7 +242,7 @@
240 242 }
241 243 NET.request(API.jietoken, obj, 'get').then(res => {
242 244 if (typeof res.data == 'string') {
243   -
  245 +
244 246 if (JSON.parse(res.data).phone) {
245 247 this.model1.phone = Number(JSON.parse(res.data).phone)
246 248 }
... ... @@ -251,7 +253,7 @@
251 253 this.model1.sexl = JSON.parse(res.data).aac004
252 254 this.panduan = true
253 255 }
254   - if (JSON.parse(res.data).aac002Mask) {
  256 + if (JSON.parse(res.data).aac002Mask) {
255 257 this.model1.socialSecurityCardNumber = JSON.parse(res.data).aac002Mask
256 258 }
257 259 }
... ... @@ -272,7 +274,13 @@
272 274 if (res.data.id) {
273 275 this.wenjuan = res.data
274 276 this.wenjuan.question = JSON.parse(res.data.question)
275   -
  277 + //检查this.wenjuan.question这个list的每个里面是否有maxChoose参数,没有的话就加一个
  278 + this.wenjuan.question.forEach(item => {
  279 + if (!item.maxChoose) {
  280 + item.maxChoose = 0
  281 + }
  282 + })
  283 +
276 284  
277 285 this.timeLeft = parseInt(this.wenjuan.estimatedTime, 10) * 60; // 将分钟转换为秒
278 286 this.updateCountdownDisplay()
... ... @@ -368,7 +376,7 @@
368 376 if (question.required === '必填') {
369 377 if (question.type === '文本' || question.type === '单选') {
370 378 if (question.choose === '') {
371   -
  379 +
372 380 this.$refs.uToast.show({
373 381 title: '请填写所有必填题目',
374 382 })
... ... @@ -384,7 +392,7 @@
384 392 this.$refs.uToast.show({
385 393 title: '请填写所有必填题目',
386 394 })
387   -
  395 +
388 396 return false; // 返回false表示有未填写的必填题目
389 397 }
390 398 }
... ... @@ -393,15 +401,11 @@
393 401 return true; // 返回true表示所有必填题目都已填写
394 402 },
395 403 submit() {
396   -
397 404 let putTime = this.getCurrentTimestamp() - this.pageTime
398 405 putTime = (putTime / 1000).toFixed(2)
399   -
400 406 if (!this.checkRequiredQuestions(this.wenjuan.question)) {
401 407 return
402 408 }
403   -
404   -
405 409 if (this.model1.name == '' && this.wenjuan.needName == '必填') {
406 410 this.$refs.uToast.show({
407 411 title: '请输入姓名',
... ... @@ -429,7 +433,7 @@
429 433 // if(this.wenjuan.needPhone =='不填' && this.wenjuan.fillingConditions == '可重复填写'){
430 434 // this.model1.phone = ''
431 435 // }
432   -
  436 +
433 437 if (this.model1.sexl != '男' && this.model1.sexl != '女' && this.wenjuan.needGender == '必填') {
434 438 this.$refs.uToast.show({
435 439 title: '请选择性别',
... ... @@ -656,7 +660,7 @@
656 660 gender: this.model1.sexl,
657 661 responseTime: putTime,
658 662 answerOptions: JSON.stringify(result),
659   - socialSecurityCardNumber:this.model1.socialSecurityCardNumber,
  663 + socialSecurityCardNumber: this.model1.socialSecurityCardNumber,
660 664 createTime: this.currentTime(),
661 665 opinion: this.model1.opinion,
662 666 questionnaireScore: totalScore,
... ... @@ -719,47 +723,47 @@
719 723 // this.$forceUpdate();
720 724 },
721 725 chooseAnswerOne(options, chooseItem, idx) {
722   -
  726 +
723 727 options.forEach(item => {
724 728 item.disabled = false
725 729 })
726   -
  730 +
727 731 for (let key in this.wenjuan.question) {
728   - this.wenjuan.question[key].options.map(res=>{
729   - if (res.answer == chooseItem.answer) {
730   - this.wenjuan.question[key].choose = chooseItem.answer
731   - }
732   - })
733   -
734   -
  732 + this.wenjuan.question[key].options.map(res => {
  733 + if (res.answer == chooseItem.answer) {
  734 + this.wenjuan.question[key].choose = chooseItem.answer
  735 + }
  736 + })
  737 +
  738 +
735 739 }
736   -
  740 +
737 741 this.myChoose = {
738 742 ...chooseItem
739 743 }
740 744 chooseItem.disabled = true
741 745 },
742 746 chooseAnswerMore(chooseItem, idx) {
743   -
744   - if(chooseItem.disabled){
745   - chooseItem.disabled=false
746   - for (let key in this.wenjuan.question) {
747   - this.wenjuan.question[key].options.map(res=>{
748   - if (res.answer == chooseItem.answer) {
749   - this.wenjuan.question[key].choose = ''
750   - }
751   - })
752   - }
753   - }else{
754   - for (let key in this.wenjuan.question) {
755   - this.wenjuan.question[key].options.map(res=>{
756   - if (res.answer == chooseItem.answer) {
757   - this.wenjuan.question[key].choose = chooseItem.answer
758   - }
759   - })
760   - }
761   - chooseItem.disabled=true
762   - }
  747 +
  748 + if (chooseItem.disabled) {
  749 + chooseItem.disabled = false
  750 + for (let key in this.wenjuan.question) {
  751 + this.wenjuan.question[key].options.map(res => {
  752 + if (res.answer == chooseItem.answer) {
  753 + this.wenjuan.question[key].choose = ''
  754 + }
  755 + })
  756 + }
  757 + } else {
  758 + for (let key in this.wenjuan.question) {
  759 + this.wenjuan.question[key].options.map(res => {
  760 + if (res.answer == chooseItem.answer) {
  761 + this.wenjuan.question[key].choose = chooseItem.answer
  762 + }
  763 + })
  764 + }
  765 + chooseItem.disabled = true
  766 + }
763 767  
764 768 }
765 769  
... ... @@ -794,7 +798,7 @@
794 798 width: 100%;
795 799 max-width: 600px;
796 800 flex-grow: 1;
797   - margin:auto;
  801 + margin: auto;
798 802 /* padding: 30px; */
799 803 background-color: white;
800 804 box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
... ... @@ -834,13 +838,15 @@
834 838 transition: background-color 0.3s ease;
835 839 margin-right: 10px;
836 840 font-size: 15px;
837   - font-weight:500;
838   - .u-radio__label{
839   - color: #000000 ;
  841 + font-weight: 500;
  842 +
  843 + .u-radio__label {
  844 + color: #000000;
840 845 font-size: 15px;
841   - font-weight:500;
  846 + font-weight: 500;
842 847 }
843 848 }
  849 +
844 850 .myOption {
845 851 margin: 0;
846 852 cursor: pointer;
... ... @@ -857,7 +863,8 @@
857 863 letter-spacing: 1px;
858 864 overflow: hidden;
859 865 position: relative;
860   - .chooseTag{
  866 +
  867 + .chooseTag {
861 868 position: absolute;
862 869 top: 0;
863 870 right: 0;
... ... @@ -868,23 +875,26 @@
868 875 display: flex;
869 876 align-items: center;
870 877 justify-content: center;
871   - .u-icon__icon{
  878 +
  879 + .u-icon__icon {
872 880 margin-left: 4px;
873 881 margin-bottom: 2px;
874 882 }
875 883 }
876 884 }
  885 +
877 886 .green {
878 887 background-color: #cff4de;
879   - .u-radio__label{
880   - color: #12ad55 ;
  888 +
  889 + .u-radio__label {
  890 + color: #12ad55;
881 891 }
882 892 }
883 893  
884 894 .gary {
885 895  
886 896 background-color: #f5f5f5;
887   -
  897 +
888 898 }
889 899  
890 900 .optionActive {
... ...
wenjuan-pc/.env.development
... ... @@ -5,12 +5,14 @@ ENV = &#39;development&#39;
5 5 VUE_APP_BASE_API = '/dev-api'
6 6 # VUE_APP_DOMAIN_PREFIX_1='http://192.168.2.120:9003'
7 7 # VUE_APP_DOMAIN_PREFIX_2='http://192.168.2.120:9007'
8   - VUE_APP_DOMAIN_PREFIX_1='https://h5.028wlkj.com/cdwlMall/admin-server/'
9   - VUE_APP_DOMAIN_PREFIX_2='https://h5.028wlkj.com/cdwlMall/meserver/api'
  8 +# VUE_APP_DOMAIN_PREFIX_1='https://h5.028wlkj.com/cdwlMall/admin-server/'
  9 +# VUE_APP_DOMAIN_PREFIX_2='https://h5.028wlkj.com/cdwlMall/meserver/api'
10 10 # VUE_APP_DOMAIN_PREFIX_1='http://172.16.61.48/meserver/admin-server/'
11 11 # VUE_APP_DOMAIN_PREFIX_2='http://172.16.61.48/meserver/api'
12 12 #VUE_APP_DOMAIN_PREFIX_1='http://172.16.61.123:80/cdwlMall/admin-server/'
13 13 #VUE_APP_DOMAIN_PREFIX_2='http://172.16.61.123:80/cdwlMall/api'
  14 +VUE_APP_DOMAIN_PREFIX_1='https://jy.scjysm.asia:18086/meserver/admin-server'
  15 +VUE_APP_DOMAIN_PREFIX_2='https://jy.scjysm.asia:18086/cdwlMall/meserver/api'
14 16 # 开发环境
15 17 # 演示环境
16 18 # VUE_APP_DOMAIN_PREFIX = '/api'
... ...
wenjuan-pc/src/utils/request.js
... ... @@ -53,7 +53,7 @@ service.interceptors.response.use(
53 53 if (response.config.responseType === 'blob') {
54 54 return response.data
55 55 }
56   - if (res.code !== '' && res.code !== 200) {
  56 + if (res.code !== '' && res.code !== 200&& res.code !== "200") {
57 57 Message({
58 58 message: res.message || 'Error',
59 59 type: 'error',
... ...
wenjuan-pc/src/views/investigation/index.vue
... ... @@ -3,8 +3,7 @@
3 3 <div class="zhuti">
4 4 <div style="height:58px;line-height:58px;">
5 5 <div style="color:#0006"> <span>问卷调查</span> <span style="padding:0 5px;">></span> <span
6   - style="color:#000000e6"
7   - >问卷管理</span></div>
  6 + style="color:#000000e6">问卷管理</span></div>
8 7 </div>
9 8 <!-- 线上 -->
10 9 <div v-if="!tongjiBox">
... ... @@ -35,33 +34,25 @@
35 34 <div>
36 35 <el-button :disabled="isbutton" style="background-color: #3F9B6A;color: #fff" @click="onSubmit">查询
37 36 </el-button>
38   - <el-button
39   - class="buttonHover"
40   - style="color: #606266;border: 1px solid #dddfe5;background-color: #fff;"
41   - @click="resetting"
42   - >重置
  37 + <el-button class="buttonHover" style="color: #606266;border: 1px solid #dddfe5;background-color: #fff;"
  38 + @click="resetting">重置
43 39 </el-button>
44 40 </div>
45 41 </div>
46 42 <div style="margin-bottom: 20px;">
47 43 <div>
48   - <el-button
49   - style="background-color: #3F9B6A;color: #fff;padding:8px 15px;"
50   - icon="el-icon-circle-plus-outline"
51   - @click="addggXin"
52   - >新增</el-button>
  44 + <el-button style="background-color: #3F9B6A;color: #fff;padding:8px 15px;"
  45 + icon="el-icon-circle-plus-outline" @click="addggXin">新增</el-button>
53 46 </div>
54 47 </div>
55 48 <!-- 表格 -->
56 49  
57   - <el-table
58   - :data="tableData.slice((currentPageList - 1) * pageSize, currentPageList * pageSize)"
59   - :header-cell-style="{fontSize: '14px',color:'#0009',fontWeight: 'normal',backgroundColor:'#F2F3F5'}"
60   - tooltip-effect="dark custom-tooltip-effect"
61   - >
  50 + <el-table :data="tableData.slice((currentPageList - 1) * pageSize, currentPageList * pageSize)"
  51 + :header-cell-style="{ fontSize: '14px', color: '#0009', fontWeight: 'normal', backgroundColor: '#F2F3F5' }"
  52 + tooltip-effect="dark custom-tooltip-effect">
62 53 <el-table-column label="序号" min-width="80">
63 54 <template slot-scope="scope">
64   - {{ scope.$index +1 }}
  55 + {{ scope.$index + 1 }}
65 56 </template>
66 57 </el-table-column>
67 58 <!-- <el-table-column label="问卷编号" min-width="150" prop="id">
... ... @@ -74,43 +65,31 @@
74 65 <el-table-column prop="createTime" label="创建时间" min-width="180" />
75 66 <el-table-column prop="reviewStatus" label="状态" min-width="120">
76 67 <template slot-scope="scope">
77   - {{ scope.row.reviewStatus == '1'?'待提交':scope.row.reviewStatus == '2'?'待审核':scope.row.reviewStatus == '3'?'已通过':scope.row.reviewStatus == '4'?'不通过':'已禁用' }}
  68 + {{ scope.row.reviewStatus == '1' ? '待提交' : scope.row.reviewStatus == '2' ? '待审核' : scope.row.reviewStatus
  69 + ==
  70 + '3' ? '已通过' : scope.row.reviewStatus == '4' ?'不通过':'已禁用' }}
78 71 </template>
79 72 </el-table-column>
80 73 <el-table-column label="操作" min-width="280">
81 74 <template slot-scope="scope">
82   - <div class="tableBtn greens" @click="details(0,scope.row)">查看</div>
83   - <div v-if="scope.row.reviewStatus =='1'" class="tableBtn greens" @click="bianls(scope.row)">编辑</div>
84   - <div v-if="scope.row.reviewStatus =='1'" class="tableBtn greens" @click="fabu('2',scope.row)">提交审核</div>
85   - <div v-if="scope.row.reviewStatus =='3'" class="tableBtn greens" @click="downs(scope.row)">禁用</div>
86   - <div
87   - v-if="scope.row.reviewStatus =='3' || scope.row.reviewStatus =='5'"
88   - class="tableBtn greens"
89   - @click="tongji(scope.row)"
90   - >统计</div>
91   - <div v-if="scope.row.reviewStatus =='1'" class="tableBtn greens" @click="delwen(scope.row)">删除</div>
92   - <div
93   - v-if="scope.row.reviewStatus =='3' || scope.row.reviewStatus =='1'"
94   - class="tableBtn greens"
95   - @click="yulan(scope.row)"
96   - >预览</div>
  75 + <div class="tableBtn greens" @click="details(0, scope.row)">查看</div>
  76 + <div v-if="scope.row.reviewStatus == '1'" class="tableBtn greens" @click="bianls(scope.row)">编辑</div>
  77 + <div v-if="scope.row.reviewStatus == '1'" class="tableBtn greens" @click="fabu('2', scope.row)">提交审核</div>
  78 + <div v-if="scope.row.reviewStatus == '3'" class="tableBtn greens" @click="downs(scope.row)">禁用</div>
  79 + <div v-if="scope.row.reviewStatus == '3' || scope.row.reviewStatus == '5'" class="tableBtn greens"
  80 + @click="tongji(scope.row)">统计</div>
  81 + <div v-if="scope.row.reviewStatus == '1'" class="tableBtn greens" @click="delwen(scope.row)">删除</div>
  82 + <div v-if="scope.row.reviewStatus == '3' || scope.row.reviewStatus == '1'" class="tableBtn greens"
  83 + @click="yulan(scope.row)">预览</div>
97 84 <!-- <div @click="addbuss(3,scope.row)" class="tableBtn greens">终止</div> -->
98 85 </template>
99 86 </el-table-column>
100 87 </el-table>
101 88 <div style="display: flex;justify-content: space-between;margin-top: 10px;">
102 89 <div style="font-size: 14px;">共 <span style="color: #3F9B6A;">{{ total }}</span> 条</div>
103   - <el-pagination
104   - :current-page="currentPageList"
105   - :page-sizes="[10, 20, 50, 100]"
106   - :page-size="pageSize"
107   - background
108   - small
109   - layout="prev, pager, next"
110   - :total="total"
111   - @size-change="handleSizeChange"
112   - @current-change="handleCurrentChange"
113   - />
  90 + <el-pagination :current-page="currentPageList" :page-sizes="[10, 20, 50, 100]" :page-size="pageSize"
  91 + background small layout="prev, pager, next" :total="total" @size-change="handleSizeChange"
  92 + @current-change="handleCurrentChange" />
114 93 </div>
115 94 <!-- <div class="fenye">
116 95 <el-pagination :hide-on-single-page='flag' background small size="mini" :current-page="currentPageList"
... ... @@ -122,53 +101,34 @@
122 101 <div v-if="tongjiBox">
123 102 <div>
124 103 <div style="display: flex;">
125   - <img
126   - :src="this.$hostUrl + secondData.coverImage"
127   - alt=""
128   - style="width:150px;height:100px;margin-right: 15px;border-radius:10px;"
129   - >
  104 + <img :src="this.$hostUrl + secondData.coverImage" alt=""
  105 + style="width:150px;height:100px;margin-right: 15px;border-radius:10px;">
130 106 <div>
131   - <div style="font-weight: 600;overflow: hidden; text-overflow: ellipsis; display: -webkit-box;-webkit-box-orient: vertical;word-break: break-all;">{{ secondData.title }}</div>
  107 + <div
  108 + style="font-weight: 600;overflow: hidden; text-overflow: ellipsis; display: -webkit-box;-webkit-box-orient: vertical;word-break: break-all;">
  109 + {{ secondData.title }}</div>
132 110 <div style="padding:20px 0;">答卷数量:{{ total1 || 0 }}</div>
133 111 <div>起止时间:{{ secondData.startDate }} 至 {{ secondData.endDate }}</div>
134 112 </div>
135 113 </div>
136 114 <div>
137   - <el-tabs
138   - v-model="tongjiTabs"
139   - @tab-click="tongjiClick"
140   - >
  115 + <el-tabs v-model="tongjiTabs" @tab-click="tongjiClick">
141 116 <el-tab-pane label="作答情况" name="qingK">
142 117 <div v-loading="loading" style="width: 100%">
143 118 <div style="display: flex;align-items: center;margin-bottom: 20px;">
144   - <el-date-picker
145   - v-model="tongjiMsg.plan_Time"
146   - style="width: 30%;margin-right: 20px;"
147   - value-format="yyyy-MM-dd"
148   - type="daterange"
149   - range-separator="至"
150   - start-placeholder="开始日期"
151   - end-placeholder="结束日期"
152   - align="right"
153   - />
154   - <el-input
155   - v-model="tongjiMsg.userName"
156   - style="width:30%;margin-right: 20px;"
157   - placeholder="搜索提交人"
158   - />
  119 + <el-date-picker v-model="tongjiMsg.plan_Time" style="width: 30%;margin-right: 20px;"
  120 + value-format="yyyy-MM-dd" type="daterange" range-separator="至" start-placeholder="开始日期"
  121 + end-placeholder="结束日期" align="right" />
  122 + <el-input v-model="tongjiMsg.userName" style="width:30%;margin-right: 20px;" placeholder="搜索提交人" />
159 123 <el-button style="background-color: #3F9B6A;color: #fff" @click="tongjiSubmit">查询
160 124 </el-button>
161   - <el-button
162   - class="buttonHover"
  125 + <el-button class="buttonHover"
163 126 style="color: #606266;border: 1px solid #dddfe5;background-color: #fff;"
164   - @click="tongjiSubmitret"
165   - >重置
  127 + @click="tongjiSubmitret">重置
166 128 </el-button>
167 129 </div>
168   - <el-table
169   - :data="tongjiSshu.slice((currentPage1 - 1) * pageSize, currentPage1 * pageSize)"
170   - :header-cell-style="{fontSize: '14px',color:'#0009',fontWeight: 'normal',backgroundColor:'#F2F3F5'}"
171   - >
  130 + <el-table :data="tongjiSshu.slice((currentPage1 - 1) * pageSize, currentPage1 * pageSize)"
  131 + :header-cell-style="{ fontSize: '14px', color: '#0009', fontWeight: 'normal', backgroundColor: '#F2F3F5' }">
172 132 <el-table-column label="序号" min-width="100">
173 133 <template slot-scope="scope">
174 134 {{ scope.$index + 1 }}
... ... @@ -190,29 +150,18 @@
190 150  
191 151 </el-table>
192 152 <div class="fenye">
193   - <el-pagination
194   - :hide-on-single-page="flag1"
195   - background
196   - small
197   - size="mini"
198   - :current-page="currentPage1"
199   - :page-sizes="[10, 20, 50, 100]"
200   - layout="prev, pager, next,total"
201   - :total="total1"
202   - @current-change="handleCurrentChange1"
203   - />
  153 + <el-pagination :hide-on-single-page="flag1" background small size="mini"
  154 + :current-page="currentPage1" :page-sizes="[10, 20, 50, 100]" layout="prev, pager, next,total"
  155 + :total="total1" @current-change="handleCurrentChange1" />
204 156 </div>
205 157 </div>
206 158 </el-tab-pane>
207   - <el-tab-pane
208   - label="数据统计"
209   - name="shuju"
210   - >
  159 + <el-tab-pane label="数据统计" name="shuju">
211 160 <div v-loading="shujuloading" style="padding:20px;">
212   - <div style="margin-bottom: 20px;font-size: 18px;">数据概况 <span>截止{{ tongjiTu.statisticalTime }}</span></div>
  161 + <div style="margin-bottom: 20px;font-size: 18px;">数据概况 <span>截止{{ tongjiTu.statisticalTime }}</span>
  162 + </div>
213 163 <div
214   - style="display: flex;padding:20px 30px;width: 100%;justify-content: space-around;border: 1px solid #dddfe5;"
215   - >
  164 + style="display: flex;padding:20px 30px;width: 100%;justify-content: space-around;border: 1px solid #dddfe5;">
216 165 <div style="text-align: center;">
217 166 <div style="margin-bottom:10px;">今日新增</div>
218 167 <div style="font-size:16px;">{{ tongjiTu.todayNumber || 0 }}</div>
... ... @@ -229,16 +178,8 @@
229 178 </div>
230 179 <div style="margin: 20px 0;font-size: 18px;">题目统计</div>
231 180 <!-- {{tuwent}} -->
232   - <dynamic-chart-table
233   - v-for="(item,index) in tuwent"
234   - v-show="item.type !='文本'"
235   - :ref="'chat'+index"
236   - :key="index"
237   - :title="item.title"
238   - :table-data="tongjiTu"
239   - :tixingtype="item.type"
240   - :index="index"
241   - />
  181 + <dynamic-chart-table v-for="(item, index) in tuwent" v-show="item.type != '文本'" :ref="'chat' + index"
  182 + :key="index" :title="item.title" :table-data="tongjiTu" :tixingtype="item.type" :index="index" />
242 183  
243 184 <!-- <tiaoxing :title="item.tikuTitle" :tableData="tongjiTu.cereQuestionManagements" v-if="item.questionType=='多选'" v-for="(item,index) in tongjiTu.cereQuestionManagements"> -->
244 185  
... ... @@ -250,23 +191,13 @@
250 191 </div>
251 192  
252 193 <div style="padding-top:20px;display:flex;justify-content: flex-end;">
253   - <el-button
254   - class="buttonHover"
255   - style="color: #606266;border: 1px solid #dddfe5;background-color: #fff;"
256   - @click="tongjiBoxFan"
257   - >返回</el-button>
  194 + <el-button class="buttonHover" style="color: #606266;border: 1px solid #dddfe5;background-color: #fff;"
  195 + @click="tongjiBoxFan">返回</el-button>
258 196  
259 197 </div>
260 198 </div>
261   - <el-dialog
262   - :visible.sync="daxiangBox"
263   - custom-class="tongyong_css"
264   - style="padding: 0;"
265   - width="60%"
266   - center
267   - :close-on-click-modal="false"
268   - append-to-body
269   - >
  199 + <el-dialog :visible.sync="daxiangBox" custom-class="tongyong_css" style="padding: 0;" width="60%" center
  200 + :close-on-click-modal="false" append-to-body>
270 201 <div style="padding:20px;">
271 202 <div style="font-size: 14px;padding-bottom: 20px;color: #000;">答卷详情</div>
272 203 <div style="display:flex;border-top: 1px solid #dddfe5;">
... ... @@ -276,16 +207,16 @@
276 207 <div style="margin-bottom:15px;">提交人:<span style="color:#000">{{ daxiangData.userName }}</span></div>
277 208 <div style="margin-bottom:15px;">手机号:<span style="color:#000">{{ daxiangData.contactNumber }}</span>
278 209 </div>
279   - <div style="margin-bottom:15px;">作答时长:<span
280   - style="color:#000"
281   - >{{ secondsToMinutesAndSeconds(daxiangData.responseTime) }}</span> </div>
  210 + <div style="margin-bottom:15px;">作答时长:<span style="color:#000">{{
  211 + secondsToMinutesAndSeconds(daxiangData.responseTime) }}</span> </div>
282 212 <div style="margin-bottom:15px;">提交时间:<span style="color:#000">{{ daxiangData.createTime }}</span>
283 213 </div>
284   - <div style="margin-bottom:15px;">填写条件:<span style="color:#000">{{ secondData.fillingConditions }}</span>
  214 + <div style="margin-bottom:15px;">填写条件:<span style="color:#000">{{ secondData.fillingConditions
  215 + }}</span>
  216 + </div>
  217 + <div style="margin-bottom:15px;">问卷分数:<span style="color:#000">{{ daxiangData.questionnaireScore
  218 + }}</span>
285 219 </div>
286   - <div style="margin-bottom:15px;">问卷分数:<span
287   - style="color:#000"
288   - >{{ daxiangData.questionnaireScore }}</span> </div>
289 220 <div>用户意见:<span style="color:#000" />{{ daxiangData.opinion }} </div>
290 221 </div>
291 222 </div>
... ... @@ -293,38 +224,26 @@
293 224 <div style="margin-bottom:20px;">答卷详情</div>
294 225 <div>
295 226  
296   - <div v-for="(item,index) in daxiangData.question" class="question">
297   - <p class="question-title"><span
298   - v-if="item.required=='必填'"
299   - style="color: red;"
300   - >*</span>{{ index }}.<span style="">({{ item.type }})</span>
  227 + <div v-for="(item, index) in daxiangData.question" class="question">
  228 + <p class="question-title"><span v-if="item.required == '必填'" style="color: red;">*</span>{{ index
  229 + }}.<span style="">({{ item.type }})</span>
301 230 {{ item.title }}
302 231 </p>
303 232 <div>
304   - <el-radio-group
305   - v-for="(val, idx) in item.options"
306   - v-if="item.type =='单选'"
307   - :key="idx"
308   - v-model="item.choose"
309   - style="display: flex;flex-direction: column;"
310   - >
  233 + <el-radio-group v-for="(val, idx) in item.options" v-if="item.type == '单选'" :key="idx"
  234 + v-model="item.choose" style="display: flex;flex-direction: column;">
311 235 <el-radio disabled :label="val.answer">{{ val.answer }}</el-radio>
312 236  
313 237 </el-radio-group>
314 238  
315   - <el-checkbox-group
316   - v-for="(val, idx) in item.options"
317   - v-if="item.type =='多选'"
318   - :key="idx"
319   - v-model="val.disabled"
320   - style="display: flex;flex-direction: column;"
321   - >
  239 + <el-checkbox-group v-for="(val, idx) in item.options" v-if="item.type == '多选'" :key="idx"
  240 + v-model="val.disabled" style="display: flex;flex-direction: column;">
322 241  
323 242 <el-checkbox :label="val.answer" disabled>{{ val.answer }}</el-checkbox>
324 243  
325 244 </el-checkbox-group>
326 245  
327   - <div v-if="item.type =='文本'" style="display: flex;flex-direction: column;">
  246 + <div v-if="item.type == '文本'" style="display: flex;flex-direction: column;">
328 247 {{ item.choose }}
329 248  
330 249 </div>
... ... @@ -339,20 +258,14 @@
339 258 </div>
340 259 </div>
341 260 <!-- 详情框 -->
342   - <el-dialog
343   - :visible.sync="detbox"
344   - custom-class="tongyong_css"
345   - style="padding: 0;"
346   - width="65%"
347   - center
348   - :close-on-click-modal="false"
349   - :show-close="false"
350   - >
  261 + <el-dialog :visible.sync="detbox" custom-class="tongyong_css" style="padding: 0;" width="65%" center
  262 + :close-on-click-modal="false" :show-close="false">
351 263 <div style="padding:20px;">
352 264 <div style="font-size: 14px;padding-bottom: 20px;color: #000;">详情页</div>
353 265 <div>
354 266 <div style="padding: 10px 0 20px 0;">基本信息</div>
355   - <el-descriptions class="margin-top" :column="3" border :label-style="labelStyle" :content-style="contentStyle">
  267 + <el-descriptions class="margin-top" :column="3" border :label-style="labelStyle"
  268 + :content-style="contentStyle">
356 269 <el-descriptions-item :span="2">
357 270 <template slot="label">
358 271 问卷标题
... ... @@ -363,7 +276,10 @@
363 276 <template slot="label">
364 277 状态
365 278 </template>
366   - {{ secondData.reviewStatus == '1'?'待提交':secondData.reviewStatus == '2'?'待审核':secondData.reviewStatus == '3'?'审核通过':secondData.reviewStatus == '4'?'不通过':'已禁用' }}
  279 + {{ secondData.reviewStatus == '1' ? '待提交' : secondData.reviewStatus == '2' ? '待审核' :
  280 + secondData.reviewStatus
  281 + ==
  282 + '3' ? '审核通过' : secondData.reviewStatus == '4' ?'不通过':'已禁用' }}
367 283 </el-descriptions-item>
368 284  
369 285 <el-descriptions-item>
... ... @@ -414,22 +330,12 @@
414 330 <div v-html="secondData.remarks" />
415 331 <div style="padding: 20px 0;">问卷封面</div>
416 332 <div>
417   - <el-image
418   - style="width: 280px; height: 200px"
419   - :src="this.$hostUrl + secondData.coverImage"
420   - fit="fill"
421   - />
  333 + <el-image style="width: 280px; height: 200px" :src="this.$hostUrl + secondData.coverImage" fit="fill" />
422 334 <!-- <img :src="secondData.coverImage" alt="" style="width:25%" /> -->
423 335 </div>
424   - <div v-if="secondData.filler=='会员'" style="padding: 20px 0 ;">参与答卷奖励</div>
425   - <el-descriptions
426   - v-if="secondData.filler=='会员'"
427   - class="margin-top"
428   - :column="3"
429   - border
430   - :label-style="labelStyle"
431   - :content-style="contentStyle"
432   - >
  336 + <div v-if="secondData.filler == '会员'" style="padding: 20px 0 ;">参与答卷奖励</div>
  337 + <el-descriptions v-if="secondData.filler == '会员'" class="margin-top" :column="3" border
  338 + :label-style="labelStyle" :content-style="contentStyle">
433 339 <el-descriptions-item>
434 340 <template slot="label">
435 341 提交问卷后
... ... @@ -444,13 +350,11 @@
444 350 </el-descriptions-item>
445 351 </el-descriptions>
446 352 <div style="padding: 20px 0 ;">问卷题目</div>
447   - <el-table
448   - :data="wenData"
449   - :header-cell-style="{fontSize: '14px',color:'#0009',fontWeight: 'normal',backgroundColor:'#F2F3F5'}"
450   - >
  353 + <el-table :data="wenData"
  354 + :header-cell-style="{ fontSize: '14px', color: '#0009', fontWeight: 'normal', backgroundColor: '#F2F3F5' }">
451 355 <el-table-column label="序号" min-width="100">
452 356 <template slot-scope="scope">
453   - {{ scope.$index +1 }}
  357 + {{ scope.$index + 1 }}
454 358 </template>
455 359 </el-table-column>
456 360 <el-table-column label="题目" min-width="300" prop="title" :show-overflow-tooltip="true" />
... ... @@ -458,8 +362,8 @@
458 362 <el-table-column label="是否必填" prop="required" min-width="80" />
459 363 <el-table-column label="选项" min-width="120">
460 364 <template slot-scope="scope">
461   - <div v-for="(value, index) in scope.row.options " v-if="scope.row.type !='文本'" :key="index">
462   - {{ index +1 }}:{{ value.answer }}
  365 + <div v-for="(value, index) in scope.row.options " v-if="scope.row.type != '文本'" :key="index">
  366 + {{ index + 1 }}:{{ value.answer }}
463 367 </div>
464 368 <div v-else>
465 369 -
... ... @@ -470,7 +374,8 @@
470 374  
471 375 </el-table>
472 376 <div style="padding: 20px 0 ;">系统信息</div>
473   - <el-descriptions class="margin-top" :column="3" border :label-style="labelStyle" :content-style="contentStyle">
  377 + <el-descriptions class="margin-top" :column="3" border :label-style="labelStyle"
  378 + :content-style="contentStyle">
474 379 <el-descriptions-item>
475 380 <template slot="label">
476 381 创建人
... ... @@ -491,12 +396,16 @@
491 396 </el-descriptions-item>
492 397 </el-descriptions>
493 398 <div style="padding: 20px 0 ;">审核信息</div>
494   - <el-descriptions class="margin-top" :column="3" border :label-style="labelStyle" :content-style="contentStyle">
  399 + <el-descriptions class="margin-top" :column="3" border :label-style="labelStyle"
  400 + :content-style="contentStyle">
495 401 <el-descriptions-item>
496 402 <template slot="label">
497 403 审核状态
498 404 </template>
499   - {{ secondData.reviewStatus == '1'?'待提交':secondData.reviewStatus == '2'?'待审核':secondData.reviewStatus == '3'?'审核通过':secondData.reviewStatus == '4'?'不通过':'已禁用' }}
  405 + {{ secondData.reviewStatus == '1' ? '待提交' : secondData.reviewStatus == '2' ? '待审核' :
  406 + secondData.reviewStatus
  407 + ==
  408 + '3' ? '审核通过' : secondData.reviewStatus == '4' ?'不通过':'已禁用' }}
500 409 </el-descriptions-item>
501 410 <el-descriptions-item>
502 411 <template slot="label">
... ... @@ -509,31 +418,18 @@
509 418 </div>
510 419  
511 420 <div style="padding-top:20px;display:flex;justify-content: flex-end;">
512   - <el-button
513   - class="buttonHover"
514   - style="color: #606266;border: 1px solid #dddfe5;background-color: #fff;"
515   - @click="detbox = false "
516   - >返回</el-button>
  421 + <el-button class="buttonHover" style="color: #606266;border: 1px solid #dddfe5;background-color: #fff;"
  422 + @click="detbox = false">返回</el-button>
517 423 </div>
518 424 </div>
519 425  
520 426 </el-dialog>
521 427  
522 428 <!-- 新增 -->
523   - <el-dialog
524   - :visible.sync="ggXin"
525   - custom-class="tongyong_css"
526   - style="padding: 0;"
527   - width="60%"
528   - class="dialog_css_Xq"
529   - center
530   - :close-on-click-modal="false"
531   - :show-close="false"
532   - >
533   - <div
534   - style="padding:20px;max-height: calc(100vh - 200px);
535   - overflow-y: auto;"
536   - >
  429 + <el-dialog :visible.sync="ggXin" custom-class="tongyong_css" style="padding: 0;" width="60%" class="dialog_css_Xq"
  430 + center :close-on-click-modal="false" :show-close="false">
  431 + <div style="padding:20px;max-height: calc(100vh - 200px);
  432 + overflow-y: auto;">
537 433 <div style="font-size: 14px;padding-bottom: 20px;color: #000;">新建问卷</div>
538 434 <div>
539 435 <el-tabs v-model="xiangTabs">
... ... @@ -541,32 +437,18 @@
541 437 <div style="width: 100%">
542 438 <div style="border:1px solid #DCDFE6;font-size:14px;margin-bottom:10px;">
543 439 <div
544   - style="padding:10px 20px;border-bottom:1px solid #DCDFE6;display:flex;justify-content: space-between;"
545   - >
  440 + style="padding:10px 20px;border-bottom:1px solid #DCDFE6;display:flex;justify-content: space-between;">
546 441 <div>基本信息</div>
547 442 </div>
548 443  
549   - <el-form
550   - ref="inlineform"
551   - :model="formInline"
552   - :rules="rules"
553   - label-width="155px"
554   - style="padding:20px;"
555   - >
  444 + <el-form ref="inlineform" :model="formInline" :rules="rules" label-width="155px"
  445 + style="padding:20px;">
556 446 <el-form-item label="问卷标题" prop="title">
557 447 <el-input v-model="formInline.title" maxlength="50" />
558 448 </el-form-item>
559 449 <el-form-item label="问卷起止时间" prop="">
560   - <el-date-picker
561   - v-model="Xin_Time"
562   - style="width: 100%;"
563   - value-format="yyyy-MM-dd"
564   - type="daterange"
565   - range-separator="至"
566   - start-placeholder="开始日期"
567   - end-placeholder="结束日期"
568   - align="right"
569   - >
  450 + <el-date-picker v-model="Xin_Time" style="width: 100%;" value-format="yyyy-MM-dd" type="daterange"
  451 + range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" align="right">
570 452 :picker-options="pickerOptions">
571 453 </el-date-picker>
572 454 </el-form-item>
... ... @@ -613,7 +495,8 @@
613 495  
614 496 <div style="position: relative;">
615 497  
616   - <upimg :limit="1" :file-size="1" :is-show-tip="true" :value="formInline.coverImage" @input="e=>input(e,'1')" />
  498 + <upimg :limit="1" :file-size="1" :is-show-tip="true" :value="formInline.coverImage"
  499 + @input="e => input(e, '1')" />
617 500 <!-- <div style="position: absolute;left:160px;height:80px;">()</div> -->
618 501 <!-- @input="e=>input(e,'ing')" @input="input" -->
619 502 </div>
... ... @@ -645,11 +528,10 @@
645 528 </el-form-item>
646 529 </el-form>
647 530 </div>
648   - <div v-if="formInline.filler=='会员'">
  531 + <div v-if="formInline.filler == '会员'">
649 532 <div style="border:1px solid #DCDFE6;font-size:14px;margin-bottom:10px;">
650 533 <div
651   - style="padding:10px 20px;border-bottom:1px solid #DCDFE6;display:flex;justify-content: space-between;"
652   - >
  534 + style="padding:10px 20px;border-bottom:1px solid #DCDFE6;display:flex;justify-content: space-between;">
653 535 <div>参与答卷奖励</div>
654 536 </div>
655 537 <el-form ref="form" :model="formInline" label-width="140px" style="padding:20px;">
... ... @@ -685,8 +567,7 @@
685 567 <div style="width: 100%">
686 568 <div style="border:1px solid #DCDFE6;font-size:14px;margin-bottom:10px;">
687 569 <div
688   - style="padding:10px 20px;border-bottom:1px solid #DCDFE6;display:flex;justify-content: space-between;"
689   - >
  570 + style="padding:10px 20px;border-bottom:1px solid #DCDFE6;display:flex;justify-content: space-between;">
690 571 <div>问卷内容</div>
691 572 <div>
692 573 <div class="greens tableBtn" @click="addTikuShow">新增</div>
... ... @@ -696,11 +577,9 @@
696 577 </div>
697 578  
698 579 <div style="padding:20px;">
699   - <el-table
700   - :data="wenConstData"
701   - :header-cell-style="{fontSize: '14px',color:'#0009',fontWeight: 'normal',backgroundColor:'#F2F3F5'}"
702   - class="xddTable"
703   - >
  580 + <el-table :data="wenConstData"
  581 + :header-cell-style="{ fontSize: '14px', color: '#0009', fontWeight: 'normal', backgroundColor: '#F2F3F5' }"
  582 + class="xddTable">
704 583 <el-table-column label="序号" min-width="100">
705 584 <template slot-scope="scope">
706 585 {{ scope.$index + 1 }}
... ... @@ -709,16 +588,18 @@
709 588 <el-table-column label="题目" min-width="300" prop="tikuTitle" show-overflow-tooltip />
710 589 <el-table-column label="题型" min-width="80" prop="questionType" />
711 590 <el-table-column label="是否必填" prop="isRequired" min-width="120" />
712   - <el-table-column label="" min-width="120" >
  591 + <el-table-column label="" min-width="120">
713 592 <template #default="scope">
714   - <span style="cursor: pointer;margin-right: 5px; color: #3F9B6A;" @click="moveUp(scope.$index)" v-if="scope.$index!=0">↑</span>
715   - <span style="cursor: pointer; color: #3F9B6A;" @click="moveDown(scope.$index)" v-if="scope.$index != (wenConstData.length-1)">↓</span>
  593 + <span style="cursor: pointer;margin-right: 5px; color: #3F9B6A;" @click="moveUp(scope.$index)"
  594 + v-if="scope.$index != 0">↑</span>
  595 + <span style="cursor: pointer; color: #3F9B6A;" @click="moveDown(scope.$index)"
  596 + v-if="scope.$index != (wenConstData.length - 1)">↓</span>
716 597 </template>
717 598 </el-table-column>
718 599 <el-table-column label="操作" min-width="80">
719 600 <template slot-scope="scope">
720 601 <!-- <div class="tableBtn greens">编辑</div> -->
721   - <div class="tableBtn greens" @click="delWenCon('1',scope.$index)">删除</div>
  602 + <div class="tableBtn greens" @click="delWenCon('1', scope.$index)">删除</div>
722 603 </template>
723 604 </el-table-column>
724 605 </el-table>
... ... @@ -737,16 +618,8 @@
737 618  
738 619 </span> -->
739 620 </div>
740   - <el-dialog
741   - :visible.sync="tikuBox"
742   - custom-class="tongyong_css"
743   - style="padding: 0;"
744   - width="60%"
745   - center
746   - :close-on-click-modal="false"
747   - append-to-body
748   - @close="tikuquxiao(1)"
749   - >
  621 + <el-dialog :visible.sync="tikuBox" custom-class="tongyong_css" style="padding: 0;" width="60%" center
  622 + :close-on-click-modal="false" append-to-body @close="tikuquxiao(1)">
750 623 <div style="padding:20px;">
751 624 <div style="padding:20px;">
752 625 <div style="display: flex;justify-content: space-between;margin-bottom: 20px;">
... ... @@ -771,30 +644,23 @@
771 644 <el-input v-model="timuMsg" style="width:50%;margin-right: 15px;" placeholder="请输入题目" />
772 645 <el-button style="background-color: #3F9B6A;color: #fff" placeholder="请输入题目" @click="tikusous">查询
773 646 </el-button>
774   - <el-button
775   - class="buttonHover"
776   - style="color: #606266;border: 1px solid #dddfe5;background-color: #fff;"
777   - @click="tikuclose"
778   - >重置
  647 + <el-button class="buttonHover" style="color: #606266;border: 1px solid #dddfe5;background-color: #fff;"
  648 + @click="tikuclose">重置
779 649 </el-button>
780 650 </div>
781 651 </div>
782 652 <!-- v-infinite-scroll="load" -->
783 653 <div style="padding:20px;overflow-y: auto;height:495px;">
784 654  
785   - <el-table
786   - ref="ziyuanData"
  655 + <el-table ref="ziyuanData"
787 656 :data="tikuziyuan.slice((currentPageListTi - 1) * pageSizeTi, currentPageListTi * pageSizeTi)"
788   - :row-key="row=>row.id"
789   - :header-cell-style="{fontSize: '14px',color:'#0009',fontWeight: 'normal',backgroundColor:'#F2F3F5'}"
790   - tooltip-effect="dark"
791   - @selection-change="handleSelectionChange"
792   - @toggleRowSelection="hangSelchange"
793   - >
  657 + :row-key="row => row.id"
  658 + :header-cell-style="{ fontSize: '14px', color: '#0009', fontWeight: 'normal', backgroundColor: '#F2F3F5' }"
  659 + tooltip-effect="dark" @selection-change="handleSelectionChange" @toggleRowSelection="hangSelchange">
794 660 <el-table-column type="selection" width="55" :reserve-selection="true" />
795 661 <el-table-column label="序号" min-width="100">
796 662 <template slot-scope="scope">
797   - {{ scope.$index +1 }}
  663 + {{ scope.$index + 1 }}
798 664 </template>
799 665 </el-table-column>
800 666 <el-table-column label="题目" min-width="400" prop="tikuTitle" />
... ... @@ -808,17 +674,9 @@
808 674 </el-table>
809 675 <div style="display: flex;justify-content: space-between;margin-top: 10px;">
810 676 <div style="font-size: 14px;">共 <span style="color: #3F9B6A;">{{ totalTi }}</span> 条</div>
811   - <el-pagination
812   - :current-page="currentPageListTi"
813   - :page-sizes="[10, 20, 50, 100]"
814   - :page-size="pageSizeTi"
815   - background
816   - small
817   - layout="prev, pager, next"
818   - :total="totalTi"
819   - @size-change="handleSizeChangeTi"
820   - @current-change="handleCurrentChangeTi"
821   - />
  677 + <el-pagination :current-page="currentPageListTi" :page-sizes="[10, 20, 50, 100]" :page-size="pageSizeTi"
  678 + background small layout="prev, pager, next" :total="totalTi" @size-change="handleSizeChangeTi"
  679 + @current-change="handleCurrentChangeTi" />
822 680 </div>
823 681 </div>
824 682 </div>
... ... @@ -826,25 +684,13 @@
826 684 <el-button style="background-color: #3F9B6A;color: #fff" @click="tiSelQue(1)">确定</el-button>
827 685 </div>
828 686 </div>
829   - <el-dialog
830   - :visible.sync="timuXiang"
831   - custom-class="tongyong_css"
832   - style="padding: 0;"
833   - width="50%"
834   - center
835   - :close-on-click-modal="false"
836   - append-to-body
837   - >
  687 + <el-dialog :visible.sync="timuXiang" custom-class="tongyong_css" style="padding: 0;" width="50%" center
  688 + :close-on-click-modal="false" append-to-body>
838 689 <div style="padding:20px;">
839 690 <div style="font-size: 14px;padding-bottom: 20px;color: #000;">详情页</div>
840 691 <div>
841   - <el-descriptions
842   - class="margin-top"
843   - :column="1"
844   - border
845   - :label-style="labelStyle"
846   - :content-style="contentStyle"
847   - >
  692 + <el-descriptions class="margin-top" :column="1" border :label-style="labelStyle"
  693 + :content-style="contentStyle">
848 694 <el-descriptions-item>
849 695 <template slot="label">
850 696 题目
... ... @@ -864,13 +710,8 @@
864 710 {{ timuData.questionBank }}
865 711 </el-descriptions-item>
866 712 </el-descriptions>
867   - <el-descriptions
868   - class="margin-top"
869   - :column="1"
870   - border
871   - :label-style="labelStyle"
872   - :content-style="contentStyle"
873   - >
  713 + <el-descriptions class="margin-top" :column="1" border :label-style="labelStyle"
  714 + :content-style="contentStyle">
874 715 <el-descriptions-item>
875 716 <template slot="label">
876 717 默认是否必填
... ... @@ -889,26 +730,15 @@
889 730 </el-descriptions>
890 731 </div>
891 732 <div style="padding-top:20px;display:flex;justify-content: flex-end;">
892   - <el-button
893   - class="buttonHover"
894   - style="color: #606266;border: 1px solid #dddfe5;background-color: #fff;"
895   - @click="timuXiang = false"
896   - >返回</el-button>
  733 + <el-button class="buttonHover" style="color: #606266;border: 1px solid #dddfe5;background-color: #fff;"
  734 + @click="timuXiang = false">返回</el-button>
897 735 </div>
898 736 </div>
899 737  
900 738 </el-dialog>
901 739 </el-dialog>
902   - <el-dialog
903   - :visible.sync="tikuAdd"
904   - custom-class="tongyong_css"
905   - style="padding: 0;"
906   - width="60%"
907   - center
908   - :close-on-click-modal="false"
909   - append-to-body
910   - @close="quxiao(1)"
911   - >
  740 + <el-dialog :visible.sync="tikuAdd" custom-class="tongyong_css" style="padding: 0;" width="60%" center
  741 + :close-on-click-modal="false" append-to-body @close="quxiao(1)">
912 742 <div style="padding:20px;">
913 743 <div style="font-size: 14px;padding-bottom: 20px;color: #000;">
914 744 新增题目
... ... @@ -925,6 +755,10 @@
925 755 <el-option label="文本" value="文本" />
926 756 </el-select>
927 757 </el-form-item>
  758 +
  759 + <el-form-item v-if="zhong.questionType == '多选'" label="最多可选" prop="maxChoose">
  760 + <el-input-number v-model="zhong.maxChoose" :min="0" :max="options.length" /> 0为不限制填写数量
  761 + </el-form-item>
928 762 <el-form-item label="隶属题库" prop="questionBank">
929 763 <el-select v-model="zhong.questionBank" placeholder="请选择">
930 764 <el-option label="用户端题库" value="用户端题库" />
... ... @@ -950,11 +784,9 @@
950 784 </el-radio-group>
951 785 </el-form-item>
952 786  
953   - <el-form-item v-if="zhong.questionType !='文本'" label="选项" prop="optionSettings">
954   - <el-table
955   - :data="options"
956   - :header-cell-style="{fontSize: '14px',color:'#0009',fontWeight: 'normal',backgroundColor:'#F2F3F5'}"
957   - >
  787 + <el-form-item v-if="zhong.questionType != '文本'" label="选项" prop="optionSettings">
  788 + <el-table :data="options"
  789 + :header-cell-style="{ fontSize: '14px', color: '#0009', fontWeight: 'normal', backgroundColor: '#F2F3F5' }">
958 790 <el-table-column prop="index" label="序号" width="180">
959 791 <template #default="scope">
960 792 {{ scope.$index + 1 }}
... ... @@ -967,21 +799,18 @@
967 799 </el-table-column>
968 800 <el-table-column prop="name" label="分数">
969 801 <template #default="scope">
970   - <el-input
971   - v-model.number="scope.row.num"
972   - :min="0"
973   - :max="100"
974   - :readonly="scope.row.readonly"
975   - @input="validateScore(scope.row)"
976   - />
  802 + <el-input v-model.number="scope.row.num" :min="0" :max="100" :readonly="scope.row.readonly"
  803 + @input="validateScore(scope.row)" />
977 804 </template>
978 805 </el-table-column>
979   -  <el-table-column label=""  min-width="120" >
980   -                     <template #default="{$index}">
981   -                       <span style="cursor: pointer;margin-right: 5px; color: #3F9B6A;" @click="answerMoveUp($index)" v-if="$index!=0">↑</span>
982   -                       <span style="cursor: pointer; color: #3F9B6A;" @click="answerMoveDown($index)" v-if="$index != (options.length-1)">↓</span>
983   -                     </template>
984   -                   </el-table-column>
  806 +  <el-table-column label=""  min-width="120">
  807 +                     <template #default="{ $index }">
  808 +                       <span style="cursor: pointer;margin-right: 5px; color: #3F9B6A;"
  809 + @click="answerMoveUp($index)" v-if="$index != 0">↑</span>
  810 +                       <span style="cursor: pointer; color: #3F9B6A;"
  811 + @click="answerMoveDown($index)" v-if="$index != (options.length - 1)">↓</span>
  812 +                     </template>
  813 +                   </el-table-column>
985 814 <el-table-column label="操作">
986 815 <template #default="scope">
987 816 <div class="tableBtn greens" @click="deleteOption(scope.$index)">删除</div>
... ... @@ -1000,30 +829,18 @@
1000 829 </el-dialog>
1001 830 <template #footer>
1002 831 <div style="display: flex; justify-content: flex-end; align-items: center;">
1003   - <el-button
1004   - class="buttonHover"
1005   - style="color: #606266;border: 1px solid #dddfe5;background-color: #fff;"
1006   - @click="closeFn(1)"
1007   - >返回</el-button>
  832 + <el-button class="buttonHover" style="color: #606266;border: 1px solid #dddfe5;background-color: #fff;"
  833 + @click="closeFn(1)">返回</el-button>
1008 834 <el-button style="background-color: #3F9B6A;color: #fff" @click="addCheck(2)">确认</el-button>
1009 835  
1010 836 </div>
1011 837 </template>
1012 838 </el-dialog>
1013 839 <!-- 编辑 -->
1014   - <el-dialog
1015   - :visible.sync="bainjiBox"
1016   - custom-class="tongyong_css"
1017   - style="padding: 0;"
1018   - width="60%"
1019   - center
1020   - :close-on-click-modal="false"
1021   - :show-close="false"
1022   - >
1023   - <div
1024   - style="padding:20px;max-height: calc(100vh - 300px);
1025   - overflow-y: auto;"
1026   - >
  840 + <el-dialog :visible.sync="bainjiBox" custom-class="tongyong_css" style="padding: 0;" width="60%" center
  841 + :close-on-click-modal="false" :show-close="false">
  842 + <div style="padding:20px;max-height: calc(100vh - 300px);
  843 + overflow-y: auto;">
1027 844 <div style="font-size: 14px;padding-bottom: 20px;color: #000;">编辑问卷</div>
1028 845 <div>
1029 846 <el-tabs v-model="bianjiTabs" @tab-click="">
... ... @@ -1031,8 +848,7 @@
1031 848 <div style="width: 100%">
1032 849 <div style="border:1px solid #DCDFE6;font-size:14px;margin-bottom:10px;">
1033 850 <div
1034   - style="padding:10px 20px;border-bottom:1px solid #DCDFE6;display:flex;justify-content: space-between;"
1035   - >
  851 + style="padding:10px 20px;border-bottom:1px solid #DCDFE6;display:flex;justify-content: space-between;">
1036 852 <div>基本信息</div>
1037 853 </div>
1038 854 <el-form ref="bianform" :model="secondData" :rules="rules" label-width="155px" style="padding:20px;">
... ... @@ -1040,17 +856,9 @@
1040 856 <el-input v-model="secondData.title" maxlength="50" />
1041 857 </el-form-item>
1042 858 <el-form-item label="问卷起止时间">
1043   - <el-date-picker
1044   - v-model="plan_Time"
1045   - style="width: 100%;"
1046   - value-format="yyyy-MM-dd"
1047   - type="daterange"
1048   - range-separator="至"
1049   - start-placeholder="开始日期"
1050   - end-placeholder="结束日期"
1051   - align="right"
1052   - :picker-options="pickerOptions"
1053   - />
  859 + <el-date-picker v-model="plan_Time" style="width: 100%;" value-format="yyyy-MM-dd"
  860 + type="daterange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期"
  861 + align="right" :picker-options="pickerOptions" />
1054 862 </el-form-item>
1055 863 <el-form-item label="发布端口" prop="publishPort">
1056 864 <el-select v-model="secondData.publishPort" placeholder="请选择">
... ... @@ -1090,7 +898,8 @@
1090 898 </el-form-item>
1091 899  
1092 900 <el-form-item label="问卷封面" prop="coverImage">
1093   - <upimg :value="secondData.coverImage" :limit="1" :file-size="1" :is-show-tip="false" @input="e=>input(e,'2')" />
  901 + <upimg :value="secondData.coverImage" :limit="1" :file-size="1" :is-show-tip="false"
  902 + @input="e => input(e, '2')" />
1094 903 </el-form-item>
1095 904 <el-form-item label="姓名" prop="needName">
1096 905 <el-radio-group v-model="secondData.needName" style="margin-top:13px;">
... ... @@ -1119,10 +928,10 @@
1119 928 </el-form-item>
1120 929 </el-form>
1121 930 </div>
1122   - <div v-if="secondData.filler=='会员'" style="border:1px solid #DCDFE6;font-size:14px;margin-bottom:10px;">
  931 + <div v-if="secondData.filler == '会员'"
  932 + style="border:1px solid #DCDFE6;font-size:14px;margin-bottom:10px;">
1123 933 <div
1124   - style="padding:10px 20px;border-bottom:1px solid #DCDFE6;display:flex;justify-content: space-between;"
1125   - >
  934 + style="padding:10px 20px;border-bottom:1px solid #DCDFE6;display:flex;justify-content: space-between;">
1126 935 <div>参与答卷奖励</div>
1127 936 </div>
1128 937 <el-form ref="form" :model="secondData" label-width="140px" style="padding:20px;">
... ... @@ -1157,8 +966,7 @@
1157 966 <div style="width: 100%">
1158 967 <div style="border:1px solid #DCDFE6;font-size:14px;margin-bottom:10px;">
1159 968 <div
1160   - style="padding:10px 20px;border-bottom:1px solid #DCDFE6;display:flex;justify-content: space-between;"
1161   - >
  969 + style="padding:10px 20px;border-bottom:1px solid #DCDFE6;display:flex;justify-content: space-between;">
1162 970 <div>问卷内容</div>
1163 971 <div>
1164 972 <div class="greens tableBtn" @click="tikuAdd = true">新增</div>
... ... @@ -1168,11 +976,9 @@
1168 976 </div>
1169 977  
1170 978 <div style="padding:20px;">
1171   - <el-table
1172   - :data="secondDataTi"
1173   - :header-cell-style="{fontSize: '14px',color:'#0009',fontWeight: 'normal',backgroundColor:'#F2F3F5'}"
1174   - class="xddTable"
1175   - >
  979 + <el-table :data="secondDataTi"
  980 + :header-cell-style="{ fontSize: '14px', color: '#0009', fontWeight: 'normal', backgroundColor: '#F2F3F5' }"
  981 + class="xddTable">
1176 982 <el-table-column label="序号" min-width="100">
1177 983 <template slot-scope="scope">
1178 984 {{ scope.$index + 1 }}
... ... @@ -1181,15 +987,17 @@
1181 987 <el-table-column label="题目" min-width="150" prop="tikuTitle" show-overflow-tooltip />
1182 988 <el-table-column label="题型" min-width="80" prop="questionType" />
1183 989 <el-table-column label="是否必填" prop="isRequired" min-width="120" />
1184   - <el-table-column label="" min-width="120" >
  990 + <el-table-column label="" min-width="120">
1185 991 <template #default="scope">
1186   - <span style="cursor: pointer;margin-right: 5px; color: #3F9B6A;" @click="moveUp2(scope.$index)" v-if="scope.$index!=0">↑</span>
1187   - <span style="cursor: pointer; color: #3F9B6A;" @click="moveDown2(scope.$index)" v-if="scope.$index != (secondDataTi.length-1)">↓</span>
  992 + <span style="cursor: pointer;margin-right: 5px; color: #3F9B6A;"
  993 + @click="moveUp2(scope.$index)" v-if="scope.$index != 0">↑</span>
  994 + <span style="cursor: pointer; color: #3F9B6A;" @click="moveDown2(scope.$index)"
  995 + v-if="scope.$index != (secondDataTi.length - 1)">↓</span>
1188 996 </template>
1189 997 </el-table-column>
1190 998 <el-table-column label="操作" min-width="80">
1191 999 <template slot-scope="scope">
1192   - <div class="tableBtn greens" @click="delWenCon('2',scope.$index)">删除</div>
  1000 + <div class="tableBtn greens" @click="delWenCon('2', scope.$index)">删除</div>
1193 1001 </template>
1194 1002 </el-table-column>
1195 1003 </el-table>
... ... @@ -1202,16 +1010,8 @@
1202 1010 </div>
1203 1011  
1204 1012 </div>
1205   - <el-dialog
1206   - :visible.sync="tikuBox"
1207   - custom-class="tongyong_css"
1208   - style="padding: 0;"
1209   - width="60%"
1210   - center
1211   - :close-on-click-modal="false"
1212   - append-to-body
1213   - @close="tikuquxiao(2)"
1214   - >
  1013 + <el-dialog :visible.sync="tikuBox" custom-class="tongyong_css" style="padding: 0;" width="60%" center
  1014 + :close-on-click-modal="false" append-to-body @close="tikuquxiao(2)">
1215 1015 <div style="padding:20px;">
1216 1016  
1217 1017 <div style="padding:20px;">
... ... @@ -1235,29 +1035,22 @@
1235 1035 <el-input v-model="timuMsg" style="width:50%;margin-right: 15px;" />
1236 1036 <el-button style="background-color: #3F9B6A;color: #fff" @click="tikusous">查询
1237 1037 </el-button>
1238   - <el-button
1239   - class="buttonHover"
1240   - style="color: #606266;border: 1px solid #dddfe5;background-color: #fff;"
1241   - @click="tikuclose"
1242   - >重置
  1038 + <el-button class="buttonHover" style="color: #606266;border: 1px solid #dddfe5;background-color: #fff;"
  1039 + @click="tikuclose">重置
1243 1040 </el-button>
1244 1041 </div>
1245 1042 </div>
1246 1043 <div style="padding:20px;overflow-y: auto;height:495px">
1247 1044  
1248   - <el-table
1249   - ref="ziyuanData"
  1045 + <el-table ref="ziyuanData"
1250 1046 :data="tikuziyuan.slice((currentPageListTi - 1) * pageSizeTi, currentPageListTi * pageSizeTi)"
1251   - :row-key="row=>row.id"
1252   - :header-cell-style="{fontSize: '14px',color:'#0009',fontWeight: 'normal',backgroundColor:'#F2F3F5'}"
1253   - tooltip-effect="dark"
1254   - @selection-change="handleSelectionChange"
1255   - @toggleRowSelection="hangSelchange"
1256   - >
  1047 + :row-key="row => row.id"
  1048 + :header-cell-style="{ fontSize: '14px', color: '#0009', fontWeight: 'normal', backgroundColor: '#F2F3F5' }"
  1049 + tooltip-effect="dark" @selection-change="handleSelectionChange" @toggleRowSelection="hangSelchange">
1257 1050 <el-table-column type="selection" width="55" :reserve-selection="true" />
1258 1051 <el-table-column label="序号" min-width="100">
1259 1052 <template slot-scope="scope">
1260   - {{ scope.$index +1 }}
  1053 + {{ scope.$index + 1 }}
1261 1054 </template>
1262 1055 </el-table-column>
1263 1056 <el-table-column label="题目" min-width="400" prop="tikuTitle" show-overflow-tooltip />
... ... @@ -1270,17 +1063,9 @@
1270 1063 </el-table>
1271 1064 <div style="display: flex;justify-content: space-between;margin-top: 10px;">
1272 1065 <div style="font-size: 14px;">共 <span style="color: #3F9B6A;">{{ totalTi }}</span> 条</div>
1273   - <el-pagination
1274   - :current-page="currentPageListTi"
1275   - :page-sizes="[10, 20, 50, 100]"
1276   - :page-size="pageSizeTi"
1277   - background
1278   - small
1279   - layout="prev, pager, next"
1280   - :total="totalTi"
1281   - @size-change="handleSizeChangeTi"
1282   - @current-change="handleCurrentChangeTi"
1283   - />
  1066 + <el-pagination :current-page="currentPageListTi" :page-sizes="[10, 20, 50, 100]" :page-size="pageSizeTi"
  1067 + background small layout="prev, pager, next" :total="totalTi" @size-change="handleSizeChangeTi"
  1068 + @current-change="handleCurrentChangeTi" />
1284 1069 </div>
1285 1070 </div>
1286 1071  
... ... @@ -1289,25 +1074,13 @@
1289 1074 <el-button style="background-color: #3F9B6A;color: #fff" @click="tiSelQue(2)">确定</el-button>
1290 1075 </div>
1291 1076 </div>
1292   - <el-dialog
1293   - :visible.sync="timuXiang"
1294   - custom-class="tongyong_css"
1295   - style="padding: 0;"
1296   - width="50%"
1297   - center
1298   - :close-on-click-modal="false"
1299   - append-to-body
1300   - >
  1077 + <el-dialog :visible.sync="timuXiang" custom-class="tongyong_css" style="padding: 0;" width="50%" center
  1078 + :close-on-click-modal="false" append-to-body>
1301 1079 <div style="padding:20px;">
1302 1080 <div style="font-size: 14px;padding-bottom: 20px;color: #000;">详情页</div>
1303 1081 <div>
1304   - <el-descriptions
1305   - class="margin-top"
1306   - :column="1"
1307   - border
1308   - :label-style="labelStyle"
1309   - :content-style="contentStyle"
1310   - >
  1082 + <el-descriptions class="margin-top" :column="1" border :label-style="labelStyle"
  1083 + :content-style="contentStyle">
1311 1084 <el-descriptions-item>
1312 1085 <template slot="label">
1313 1086 题目
... ... @@ -1327,13 +1100,8 @@
1327 1100 {{ timuData.questionBank }}
1328 1101 </el-descriptions-item>
1329 1102 </el-descriptions>
1330   - <el-descriptions
1331   - class="margin-top"
1332   - :column="1"
1333   - border
1334   - :label-style="labelStyle"
1335   - :content-style="contentStyle"
1336   - >
  1103 + <el-descriptions class="margin-top" :column="1" border :label-style="labelStyle"
  1104 + :content-style="contentStyle">
1337 1105 <el-descriptions-item>
1338 1106 <template slot="label">
1339 1107 默认是否必填
... ... @@ -1353,26 +1121,15 @@
1353 1121 </el-descriptions>
1354 1122 </div>
1355 1123 <div style="padding-top:20px;display:flex;justify-content: flex-end;">
1356   - <el-button
1357   - class="buttonHover"
1358   - style="color: #606266;border: 1px solid #dddfe5;background-color: #fff;"
1359   - @click="timuXiang = false"
1360   - >返回</el-button>
  1124 + <el-button class="buttonHover" style="color: #606266;border: 1px solid #dddfe5;background-color: #fff;"
  1125 + @click="timuXiang = false">返回</el-button>
1361 1126 </div>
1362 1127 </div>
1363 1128  
1364 1129 </el-dialog>
1365 1130 </el-dialog>
1366   - <el-dialog
1367   - :visible.sync="tikuAdd"
1368   - custom-class="tongyong_css"
1369   - style="padding: 0;"
1370   - width="60%"
1371   - center
1372   - :close-on-click-modal="false"
1373   - append-to-body
1374   - @close="quxiao(2)"
1375   - >
  1131 + <el-dialog :visible.sync="tikuAdd" custom-class="tongyong_css" style="padding: 0;" width="60%" center
  1132 + :close-on-click-modal="false" append-to-body @close="quxiao(2)">
1376 1133 <div style="padding:20px;">
1377 1134 <div style="font-size: 14px;padding-bottom: 20px;color: #000;">
1378 1135 新增题目
... ... @@ -1389,6 +1146,9 @@
1389 1146 <el-option label="文本" value="文本" />
1390 1147 </el-select>
1391 1148 </el-form-item>
  1149 + <el-form-item v-if="zhong.questionType == '多选'" label="最多可选" prop="maxChoose">
  1150 + <el-input-number v-model="zhong.maxChoose" :min="0" :max="options.length" /> 0为不限制填写数量
  1151 + </el-form-item>
1392 1152 <el-form-item label="隶属题库">
1393 1153 <el-select v-model="zhong.questionBank" placeholder="请选择">
1394 1154 <el-option label="用户端题库" value="用户端题库" />
... ... @@ -1408,11 +1168,9 @@
1408 1168 <el-radio label="非必填">非必填</el-radio>
1409 1169 </el-radio-group>
1410 1170 </el-form-item>
1411   - <el-form-item v-if="zhong.questionType !='文本'" label="选项" prop="optionSettings">
1412   - <el-table
1413   - :data="options"
1414   - :header-cell-style="{fontSize: '14px',color:'#0009',fontWeight: 'normal',backgroundColor:'#F2F3F5'}"
1415   - >
  1171 + <el-form-item v-if="zhong.questionType != '文本'" label="选项" prop="optionSettings">
  1172 + <el-table :data="options"
  1173 + :header-cell-style="{ fontSize: '14px', color: '#0009', fontWeight: 'normal', backgroundColor: '#F2F3F5' }">
1416 1174 <el-table-column prop="index" label="序号" width="180">
1417 1175 <template #default="scope">
1418 1176 {{ scope.$index + 1 }}
... ... @@ -1425,21 +1183,18 @@
1425 1183 </el-table-column>
1426 1184 <el-table-column prop="name" label="分数">
1427 1185 <template #default="scope">
1428   - <el-input
1429   - v-model.number="scope.row.num"
1430   - :min="0"
1431   - :max="100"
1432   - :readonly="scope.row.readonly"
1433   - @input="validateScore(scope.row)"
1434   - />
  1186 + <el-input v-model.number="scope.row.num" :min="0" :max="100" :readonly="scope.row.readonly"
  1187 + @input="validateScore(scope.row)" />
  1188 + </template>
  1189 + </el-table-column>
  1190 + <el-table-column label=""  min-width="120">
  1191 + <template #default="{ $index }">
  1192 + <span style="cursor: pointer;margin-right: 5px; color: #3F9B6A;" @click="answerMoveUp($index)"
  1193 + v-if="$index != 0">↑</span>
  1194 + <span style="cursor: pointer; color: #3F9B6A;" @click="answerMoveDown($index)"
  1195 + v-if="$index != (options.length - 1)">↓</span>
1435 1196 </template>
1436 1197 </el-table-column>
1437   - <el-table-column label=""  min-width="120" >
1438   -                     <template #default="{$index}">
1439   -                       <span style="cursor: pointer;margin-right: 5px; color: #3F9B6A;" @click="answerMoveUp($index)" v-if="$index!=0">↑</span>
1440   -                       <span style="cursor: pointer; color: #3F9B6A;" @click="answerMoveDown($index)" v-if="$index != (options.length-1)">↓</span>
1441   -                     </template>
1442   -                   </el-table-column>
1443 1198 <el-table-column label="操作">
1444 1199 <template #default="scope">
1445 1200 <div class="tableBtn greens" @click="deleteOption(scope.$index)">删除</div>
... ... @@ -1458,11 +1213,8 @@
1458 1213 </el-dialog>
1459 1214 <template #footer>
1460 1215 <div style="display: flex; justify-content: flex-end; align-items: center;">
1461   - <el-button
1462   - class="buttonHover"
1463   - style="color: #606266;border: 1px solid #dddfe5;background-color: #fff;"
1464   - @click="closeFn(2)"
1465   - >返回</el-button>
  1216 + <el-button class="buttonHover" style="color: #606266;border: 1px solid #dddfe5;background-color: #fff;"
  1217 + @click="closeFn(2)">返回</el-button>
1466 1218 <el-button style="background-color: #3F9B6A;color: #fff" @click="bianCheck">确认</el-button>
1467 1219 </div>
1468 1220 </template>
... ... @@ -1470,19 +1222,13 @@
1470 1222  
1471 1223 <!-- 禁用 -->
1472 1224  
1473   - <el-dialog
1474   - :visible.sync="downShow"
1475   - custom-class="tongyong_css"
1476   - style="padding: 0;"
1477   - width="50%"
1478   - center
1479   - :close-on-click-modal="false"
1480   - append-to-body
1481   - >
  1225 + <el-dialog :visible.sync="downShow" custom-class="tongyong_css" style="padding: 0;" width="50%" center
  1226 + :close-on-click-modal="false" append-to-body>
1482 1227 <div style="padding:20px;">
1483 1228 <div style="font-size: 14px;padding-bottom: 20px;color: #000;">禁用</div>
1484 1229 <div style="padding:30px 0px 0px">
1485   - <el-form ref="opinionForm" :model="opinionDel" :rules="pinForm" label-width="120px" style="position: relative">
  1230 + <el-form ref="opinionForm" :model="opinionDel" :rules="pinForm" label-width="120px"
  1231 + style="position: relative">
1486 1232 <el-form-item label="禁用原因" class="grid-content bg-purple" prop="name">
1487 1233 <el-input v-model="opinionDel.opinionDelisting" type="textarea" placeholder="请输入禁用原因" />
1488 1234 </el-form-item>
... ... @@ -1490,20 +1236,13 @@
1490 1236 </el-form>
1491 1237 </div>
1492 1238 <div style="display:flex;justify-content: flex-end;padding:20px;">
1493   - <el-button style="background-color: #3F9B6A;color: #fff;" @click="downShow=false">取消</el-button>
  1239 + <el-button style="background-color: #3F9B6A;color: #fff;" @click="downShow = false">取消</el-button>
1494 1240 <el-button style="background-color: #3F9B6A;color: #fff;" @click="downShowCheck">确定</el-button>
1495 1241 </div>
1496 1242 </div>
1497 1243 </el-dialog>
1498   - <el-dialog
1499   - :visible.sync="yulanShow"
1500   - custom-class="tongyong_css"
1501   - style="padding: 0;"
1502   - width="43%"
1503   - center
1504   - :close-on-click-modal="false"
1505   - append-to-body
1506   - >
  1244 + <el-dialog :visible.sync="yulanShow" custom-class="tongyong_css" style="padding: 0;" width="43%" center
  1245 + :close-on-click-modal="false" append-to-body>
1507 1246 <div style="padding:20px;">
1508 1247 <div style="font-size: 14px;padding-bottom: 20px;color: #000;">预览</div>
1509 1248 <div style="margin:auto;width:50%;height:600px;overflow-y: auto;overflow-x: hidden;">
... ... @@ -1531,54 +1270,44 @@
1531 1270 </div> -->
1532 1271 </div>
1533 1272 </div>
1534   - <div v-for="(item,index) in secondData.question" class="question">
  1273 + <div v-for="(item, index) in secondData.question" class="question">
1535 1274 <p class="question-title">
1536 1275 <span v-if="item.required == '必填'" style="color: red;">*</span>
1537 1276 {{ index }}.<span style="">({{ item.type }})</span>
1538 1277 {{ item.title }}
1539 1278 </p>
1540 1279 <div>
1541   -
1542   -
1543   - <el-radio-group
1544   - v-for="(val, idx) in item.options"
1545   - v-if="item.type =='单选'&&item.layoutType!=2"
1546   - :key="idx"
1547   - style="display: content;flex-direction: column;width:100%;margin:0 0 4px 0"
1548   - >
  1280 +
  1281 +
  1282 + <el-radio-group v-for="(val, idx) in item.options" v-if="item.type == '单选' && item.layoutType != 2"
  1283 + :key="idx" style="display: content;flex-direction: column;width:100%;margin:0 0 4px 0">
1549 1284 <el-radio disabled>
1550   - <snap
1551   - style=" white-space: normal !important;
1552   - word-break: break-all !important;"
1553   - >
  1285 + <snap style=" white-space: normal !important;
  1286 + word-break: break-all !important;">
1554 1287 {{ val.answer }}
1555   - </snap>
  1288 + </snap>
1556 1289 </el-radio>
1557 1290  
1558 1291 </el-radio-group>
1559   - <div v-if="item.type =='单选'&&item.layoutType==2" style="display: flex;width: 100%;flex-wrap: wrap;">
1560   - <div class="answerItem" v-for="(val, idx) in item.options" :key="idx">{{ val.answer }}</div>
  1292 + <div v-if="item.type == '单选' && item.layoutType == 2"
  1293 + style="display: flex;width: 100%;flex-wrap: wrap;">
  1294 + <div class="answerItem" v-for="(val, idx) in item.options" :key="idx">{{ val.answer }}</div>
1561 1295 </div>
1562   - <el-checkbox-group
1563   - v-for="(val, idx) in item.options"
1564   - v-if="item.type =='多选'&&item.layoutType!=2"
1565   - :key="idx"
1566   - style="display: content;flex-direction: column;width:100%;margin:0 0 4px 0"
1567   - >
  1296 + <el-checkbox-group v-for="(val, idx) in item.options" v-if="item.type == '多选' && item.layoutType != 2"
  1297 + :key="idx" style="display: content;flex-direction: column;width:100%;margin:0 0 4px 0">
1568 1298 <el-checkbox disabled>
1569   - <snap
1570   - style=" white-space: normal !important;
1571   - word-break: break-all !important;"
1572   - >
  1299 + <snap style=" white-space: normal !important;
  1300 + word-break: break-all !important;">
1573 1301 {{ val.answer }}
1574 1302 </snap>
1575 1303 </el-checkbox>
1576 1304 </el-checkbox-group>
1577   -
1578   - <div v-if="item.type =='多选'&&item.layoutType==2" style="display: flex;width: 100%;flex-wrap: wrap;">
1579   - <div class="answerItem" v-for="(val, idx) in item.options" :key="idx">{{ val.answer }}</div>
  1305 +
  1306 + <div v-if="item.type == '多选' && item.layoutType == 2"
  1307 + style="display: flex;width: 100%;flex-wrap: wrap;">
  1308 + <div class="answerItem" v-for="(val, idx) in item.options" :key="idx">{{ val.answer }}</div>
1580 1309 </div>
1581   - <div v-if="item.type =='文本'">
  1310 + <div v-if="item.type == '文本'">
1582 1311 <el-input v-model="model1.name" placeholder="请输入" disabled style="width:80%" />
1583 1312  
1584 1313 </div>
... ... @@ -1612,12 +1341,8 @@
1612 1341 <!-- <p class="question-title">您的建议:</p >
1613 1342 <textarea v-model="suggestion"></textarea> -->
1614 1343 <el-form label-position="right" :model="model1" style="background-color:#fff;border-radius: 10px;">
1615   - <el-form-item
1616   - v-if="secondData.needName == '必填'"
1617   - label="姓名"
1618   - prop="name"
1619   - style="padding:10px 10px 0 10px;"
1620   - >
  1344 + <el-form-item v-if="secondData.needName == '必填'" label="姓名" prop="name"
  1345 + style="padding:10px 10px 0 10px;">
1621 1346 <el-input v-model="model1.name" placeholder="请输入姓名" disabled style="width:80%" />
1622 1347 </el-form-item>
1623 1348 <el-form-item v-if="secondData.needPhone == '必填'" label="电话" prop="phone" style="padding: 0 10px;">
... ... @@ -1626,19 +1351,9 @@
1626 1351 <el-form-item v-if="secondData.needGender == '必填'" label="性别" prop="sex" style="padding: 0 10px ;">
1627 1352 <el-input v-model="model1.sex" placeholder="请输入性别" disabled style="width:80%" />
1628 1353 </el-form-item>
1629   - <el-form-item
1630   - v-if="secondData.needOpinion == '必填'"
1631   - label="意见"
1632   - prop="yij"
1633   - style="padding:0 10px 10px 10px;"
1634   - >
1635   - <el-input
1636   - v-model="model1.yij"
1637   - type="textarea"
1638   - placeholder="请输入内容"
1639   - disabled
1640   - style="width:80%"
1641   - />
  1354 + <el-form-item v-if="secondData.needOpinion == '必填'" label="意见" prop="yij"
  1355 + style="padding:0 10px 10px 10px;">
  1356 + <el-input v-model="model1.yij" type="textarea" placeholder="请输入内容" disabled style="width:80%" />
1642 1357 </el-form-item>
1643 1358 </el-form>
1644 1359  
... ... @@ -1652,7 +1367,7 @@
1652 1367 问卷作答地址:{{ wenjuanUrl }} <span style="color:#3F9B6A" @click="copyUrl(wenjuanUrl)">复制</span>
1653 1368 </div>
1654 1369 <div style="display:flex;justify-content: flex-end;padding:20px;">
1655   - <el-button style="background-color: #3F9B6A;color: #fff;" @click="yulanShow=false">取消</el-button>
  1370 + <el-button style="background-color: #3F9B6A;color: #fff;" @click="yulanShow = false">取消</el-button>
1656 1371  
1657 1372 </div>
1658 1373 </div>
... ... @@ -1686,7 +1401,7 @@ export default {
1686 1401 tiaoxing,
1687 1402 wangEditor
1688 1403 },
1689   - data () {
  1404 + data() {
1690 1405 return {
1691 1406  
1692 1407 tableHeight: 600, // 设置为你想要的表格高度,单位是像素
... ... @@ -1756,7 +1471,8 @@ export default {
1756 1471 tikuTitle: '',
1757 1472 questionType: '',
1758 1473 questionBank: '用户端题库',
1759   - layoutType:1,
  1474 + layoutType: 1,
  1475 + maxChoose: 0,
1760 1476 isRequired: '必填',
1761 1477 questionDescription: '',
1762 1478 optionSettings: {},
... ... @@ -1857,7 +1573,7 @@ export default {
1857 1573 required: true,
1858 1574 message: '请输入创建人',
1859 1575 trigger: 'blur'
1860   - }, ],
  1576 + },],
1861 1577 },
1862 1578  
1863 1579 tixrules: {
... ... @@ -1865,7 +1581,7 @@ export default {
1865 1581 required: true,
1866 1582 message: '请输入题目',
1867 1583 trigger: 'blur'
1868   - }, ],
  1584 + },],
1869 1585 questionType: [{
1870 1586 required: true,
1871 1587 message: '请选择题型',
... ... @@ -1913,7 +1629,7 @@ export default {
1913 1629 isbutton: false,
1914 1630 currentPageList: 1,
1915 1631 pickerOptions: {
1916   - disabledDate (time) {
  1632 + disabledDate(time) {
1917 1633 return time.getTime() < Date.now() - 8.64e7; // 禁用当前时间之前的日期
1918 1634 }
1919 1635 },
... ... @@ -1925,22 +1641,22 @@ export default {
1925 1641 computed: {
1926 1642  
1927 1643 },
1928   - created () {
  1644 + created() {
1929 1645 this.getAll()
1930 1646 },
1931 1647 methods: {
1932   - input (e, e1) {
  1648 + input(e, e1) {
1933 1649 // this.formInline[e1] = e
1934   -
  1650 +
1935 1651 if (e1 == '1') {
1936 1652 this.formInline.coverImage = e
1937 1653 } else {
1938 1654 this.secondData.coverImage = e
1939 1655 }
1940 1656  
1941   -
  1657 +
1942 1658 },
1943   - chenge (val) {
  1659 + chenge(val) {
1944 1660 this.formSel = {
1945 1661 title: '',
1946 1662 questionnaireType: '',
... ... @@ -1951,14 +1667,14 @@ export default {
1951 1667 this.leixing = !this.leixing
1952 1668 this.chengeTatle = val
1953 1669 },
1954   - async getAll () {
  1670 + async getAll() {
1955 1671 const res = await TerminaGetAll(this.pageindex)
1956 1672 this.tableData = res.data.content
1957 1673 this.total = res.data.totalElements
1958 1674 },
1959 1675  
1960 1676 // 新增确定按钮
1961   - addCheck (val) {
  1677 + addCheck(val) {
1962 1678 this.$refs.inlineform.validate((valid) => {
1963 1679 if (valid) {
1964 1680 if (this.Xin_Time != null) {
... ... @@ -2028,7 +1744,7 @@ export default {
2028 1744 })
2029 1745 },
2030 1746 // 获取时间
2031   - currentTime () {
  1747 + currentTime() {
2032 1748 const date = new Date();
2033 1749 const year = date.getFullYear();
2034 1750 let month = date.getMonth() + 1; // 月份从0~11,所以加一
... ... @@ -2047,7 +1763,7 @@ export default {
2047 1763 // 返回格式化的日期和时间字符串
2048 1764 return `${year}-${month}-${day} ${hours}:${minutes}`;
2049 1765 },
2050   - objectToArray (obj) {
  1766 + objectToArray(obj) {
2051 1767 return Object.keys(obj).map(key => {
2052 1768 const item = obj[key];
2053 1769 return {
... ... @@ -2058,7 +1774,7 @@ export default {
2058 1774 },
2059 1775  
2060 1776 // 详情
2061   - details (val, item) {
  1777 + details(val, item) {
2062 1778 this.detbox = true
2063 1779 this.secondData = item
2064 1780 if (typeof item.question === 'string') {
... ... @@ -2075,13 +1791,13 @@ export default {
2075 1791 // })
2076 1792 },
2077 1793  
2078   - addbuss (val, item) {
  1794 + addbuss(val, item) {
2079 1795 this.index = val
2080 1796 this.detbox = false
2081 1797 this.ggXin = true
2082 1798 },
2083 1799  
2084   - handleCurrentChange1 (val) {
  1800 + handleCurrentChange1(val) {
2085 1801 this.tongjiMsg.pageNumber = val - 1
2086 1802 if (this.tongjiMsg.plan_Time.length > 0) {
2087 1803 this.tongjiMsg.createTime = this.tongjiMsg.plan_Time[0]
... ... @@ -2094,10 +1810,10 @@ export default {
2094 1810 this.total1 = response.data.data.totalElements
2095 1811 })
2096 1812 },
2097   - handleSizeChange (val) {
  1813 + handleSizeChange(val) {
2098 1814 this.pageSize = val
2099 1815 },
2100   - handleCurrentChange (val) {
  1816 + handleCurrentChange(val) {
2101 1817 this.pageindex = {
2102 1818 pageNumber: val - 1,
2103 1819 pageSize: 10,
... ... @@ -2107,10 +1823,10 @@ export default {
2107 1823 this.tableData = res.data.content
2108 1824 })
2109 1825 },
2110   - handleSizeChangeTi (val) {
  1826 + handleSizeChangeTi(val) {
2111 1827 this.pageSizeTi = val
2112 1828 },
2113   - async handleCurrentChangeTi (val) {
  1829 + async handleCurrentChangeTi(val) {
2114 1830 const pageindex = {
2115 1831 pageNumber: val - 1,
2116 1832 pageSize: 10,
... ... @@ -2125,7 +1841,7 @@ export default {
2125 1841 // this.tableData = res.data.content
2126 1842 // })
2127 1843 },
2128   - closeFn (val) {
  1844 + closeFn(val) {
2129 1845 this.bianjiTabs = 'first'
2130 1846 this.xiangTabs = 'first'
2131 1847 this.bianjiBox = 1
... ... @@ -2138,7 +1854,7 @@ export default {
2138 1854 }
2139 1855 },
2140 1856 // 详情编辑
2141   - async bianji () {
  1857 + async bianji() {
2142 1858 if (this.bianjiBox == 1) {
2143 1859 this.bianjiBox = 2
2144 1860 } else {
... ... @@ -2151,11 +1867,11 @@ export default {
2151 1867 }
2152 1868 },
2153 1869 // 查看合同
2154   - lookHetong (val) {
  1870 + lookHetong(val) {
2155 1871 this.hetongBox = true
2156 1872 },
2157 1873 // 查询按钮
2158   - async onSubmit () {
  1874 + async onSubmit() {
2159 1875 this.isbutton = true;
2160 1876 const res = await TerminaGetAll(this.formSel)
2161 1877 this.tableData = res.data.content
... ... @@ -2163,7 +1879,7 @@ export default {
2163 1879 this.isbutton = false;
2164 1880 },
2165 1881 // 重置按钮
2166   - resetting () {
  1882 + resetting() {
2167 1883 this.formSel = {
2168 1884 title: '',
2169 1885 questionnaireType: '',
... ... @@ -2171,11 +1887,11 @@ export default {
2171 1887 pageNumber: 0,
2172 1888 pageSize: 10,
2173 1889 },
2174   - this.currentPageList = 1
  1890 + this.currentPageList = 1
2175 1891 this.pageindex.pageNumber = 0
2176 1892 this.getAll()
2177 1893 },
2178   - radioClick (value) {
  1894 + radioClick(value) {
2179 1895 if (value === '不设置奖励') {
2180 1896 this.jifen = '' // 积分奖励
2181 1897 this.choujiang = '' // 转盘抽奖
... ... @@ -2191,7 +1907,7 @@ export default {
2191 1907 this.choujiang = '' // 转盘抽奖
2192 1908 }
2193 1909 },
2194   - async selTiku () {
  1910 + async selTiku() {
2195 1911 this.tiNum = 0
2196 1912 // this.zhong = {
2197 1913 // tikuTitle:'',
... ... @@ -2213,7 +1929,7 @@ export default {
2213 1929 this.tikuziyuan = tiku.data.content
2214 1930 this.totalTi = tiku.data.totalElements
2215 1931 },
2216   - addOption () {
  1932 + addOption() {
2217 1933 const newOption = {
2218 1934 index: this.options.length + 1,
2219 1935 name: '',
... ... @@ -2221,10 +1937,10 @@ export default {
2221 1937 };
2222 1938 this.options.push(newOption);
2223 1939 },
2224   - deleteOption (index) {
  1940 + deleteOption(index) {
2225 1941 this.options.splice(index, 1);
2226 1942 },
2227   - bianls (item) {
  1943 + bianls(item) {
2228 1944 this.secondData = item
2229 1945 Vue.set(this.plan_Time, 0, this.secondData.startDate)
2230 1946 Vue.set(this.plan_Time, 1, this.secondData.endDate)
... ... @@ -2234,17 +1950,17 @@ export default {
2234 1950  
2235 1951 this.secondDataTi = item.cereQuestionManagements
2236 1952 this.bainjiBox = true
2237   -
  1953 +
2238 1954 },
2239   - bianCheck () {
  1955 + bianCheck() {
2240 1956 if (this.secondData && this.secondData.cereQuestionManagements) {
2241 1957 delete this.secondData.cereQuestionManagements;
2242 1958 }
2243   -
  1959 +
2244 1960 if (typeof this.secondData.question != 'string') {
2245 1961 this.secondData.question = JSON.stringify(this.secondData.question)
2246 1962 }
2247   -
  1963 +
2248 1964 if (this.plan_Time.length != 0) {
2249 1965 this.secondData.startDate = this.plan_Time[0]
2250 1966 this.secondData.endDate = this.plan_Time[1]
... ... @@ -2256,13 +1972,13 @@ export default {
2256 1972 }
2257 1973 this.secondData.questionId = ids.join(',')
2258 1974 this.secondData.updateTime = this.currentTime()
2259   -
  1975 +
2260 1976 TerminaEdit(this.secondData).then(res => {
2261 1977 this.getAll()
2262 1978 this.bainjiBox = false
2263 1979 })
2264 1980 },
2265   - tongji (item) {
  1981 + tongji(item) {
2266 1982 this.tongjiSshu = []
2267 1983 this.tongjiTu = {}
2268 1984 this.total1 = 0
... ... @@ -2301,15 +2017,15 @@ export default {
2301 2017 this.total1 = response.data.data.totalElements
2302 2018 }
2303 2019 }).catch(err => {
2304   - this.loading = false
2305   - this.$message({
2306   - message: '网络不好,请稍后再试',
2307   - type: 'error'
  2020 + this.loading = false
  2021 + this.$message({
  2022 + message: '网络不好,请稍后再试',
  2023 + type: 'error'
  2024 + })
2308 2025 })
2309   - })
2310 2026 },
2311   - tongjiClick (tab, event) {
2312   -
  2027 + tongjiClick(tab, event) {
  2028 +
2313 2029 if (tab.index == '1') {
2314 2030 this.shujuloading = true
2315 2031 const postData = {
... ... @@ -2358,15 +2074,15 @@ export default {
2358 2074  
2359 2075 // this.tuwent = Object.values(this.tuwent).filter(res => res.type !== '文本');
2360 2076 }).catch(err => {
2361   - this.shujuloading = false
2362   - this.$message({
2363   - message: '网络不好,请稍后再试',
2364   - type: 'error'
  2077 + this.shujuloading = false
  2078 + this.$message({
  2079 + message: '网络不好,请稍后再试',
  2080 + type: 'error'
  2081 + })
2365 2082 })
2366   - })
2367 2083 }
2368 2084 },
2369   - xuanxiang (obj) {
  2085 + xuanxiang(obj) {
2370 2086 const result = [];
2371 2087  
2372 2088 for (const key in obj) {
... ... @@ -2396,7 +2112,7 @@ export default {
2396 2112  
2397 2113 return result;
2398 2114 },
2399   - daxiang (item) {
  2115 + daxiang(item) {
2400 2116 this.daxiangData = item
2401 2117  
2402 2118 const selectoptions = null
... ... @@ -2423,7 +2139,7 @@ export default {
2423 2139 },
2424 2140  
2425 2141 // 新增题库
2426   - Addtiku (val) {
  2142 + Addtiku(val) {
2427 2143 const that = this
2428 2144  
2429 2145 if (this.zhong.tikuTitle == '') {
... ... @@ -2452,12 +2168,12 @@ export default {
2452 2168 return
2453 2169 }
2454 2170 }
2455   - let accumulator= {}
2456   - let fenshu ={}
2457   - this.options.forEach((item,index)=>{
2458   - accumulator[index] = item.name
2459   - fenshu[index] = Number(item.num) || 0
2460   - })
  2171 + let accumulator = {}
  2172 + let fenshu = {}
  2173 + this.options.forEach((item, index) => {
  2174 + accumulator[index] = item.name
  2175 + fenshu[index] = Number(item.num) || 0
  2176 + })
2461 2177 // this.zhong.optionSettings = this.options.reduce((accumulator, current) => {
2462 2178 // accumulator[current.index] = current.name;
2463 2179 // return accumulator;
... ... @@ -2467,18 +2183,18 @@ export default {
2467 2183 // accumulator[current.index] = Number(current.num);
2468 2184 // return accumulator;
2469 2185 // }, {}) // 初始化累加器为空对象
2470   -this.zhong.optionSettings = JSON.stringify(accumulator)
2471   -this.zhong.score = JSON.stringify(fenshu)
2472   -
  2186 + this.zhong.optionSettings = JSON.stringify(accumulator)
  2187 + this.zhong.score = JSON.stringify(fenshu)
  2188 +
2473 2189 // this.zhong.optionSettings = JSON.stringify(this.zhong.optionSettings)
2474 2190 // this.zhong.score = JSON.stringify(this.zhong.score)
2475 2191 this.zhong.createDate = this.currentTime()
2476 2192  
2477 2193 QuestionAdd(this.zhong).then((res) => {
2478 2194 if (val == 1) {
2479   -
  2195 +
2480 2196 that.wenConstData.push(res.data)
2481   -
  2197 +
2482 2198 } else {
2483 2199 that.secondDataTi.push(res.data)
2484 2200 }
... ... @@ -2494,7 +2210,7 @@ this.zhong.score = JSON.stringify(fenshu)
2494 2210 })
2495 2211 },
2496 2212 // 题库切换选择
2497   - async tikuchange (val) {
  2213 + async tikuchange(val) {
2498 2214 const page = {
2499 2215 pageNumber: 0,
2500 2216 pageSize: 10,
... ... @@ -2505,7 +2221,7 @@ this.zhong.score = JSON.stringify(fenshu)
2505 2221 this.totalTi = tiku.data.totalElements
2506 2222 },
2507 2223  
2508   - async tikusous () {
  2224 + async tikusous() {
2509 2225 const page = {
2510 2226 pageNumber: 0,
2511 2227 pageSize: 10,
... ... @@ -2517,7 +2233,7 @@ this.zhong.score = JSON.stringify(fenshu)
2517 2233 this.tikuziyuan = tiku.data.content
2518 2234 this.totalTi = tiku.data.totalElements
2519 2235 },
2520   - async tikuclose () {
  2236 + async tikuclose() {
2521 2237 this.tikuNie = '用户端题库'
2522 2238 this.danxuan = ''
2523 2239 this.timuMsg = ''
... ... @@ -2531,14 +2247,14 @@ this.zhong.score = JSON.stringify(fenshu)
2531 2247 this.tikuziyuan = tiku.data.content
2532 2248 this.totalTi = tiku.data.totalElements
2533 2249 },
2534   - gotimuxiang (item) {
  2250 + gotimuxiang(item) {
2535 2251 this.timuData = item
2536 2252 if (typeof item.optionSettings !== 'object') {
2537 2253 this.timuData.optionSettings = JSON.parse(item.optionSettings)
2538 2254 }
2539 2255 this.timuXiang = true
2540 2256 },
2541   - handleSelectionChange (val) {
  2257 + handleSelectionChange(val) {
2542 2258 // if(this.tikuNie =='用户端题库'){
2543 2259 // this.listOne = val
2544 2260 // }else if(this.tikuNie =='商户端题库'){
... ... @@ -2553,7 +2269,7 @@ this.zhong.score = JSON.stringify(fenshu)
2553 2269 // this.xuanzheData = this.xuanzheData.concat(val)
2554 2270 // this.xuanzheData = [...new Set(this.xuanzheData)]
2555 2271 },
2556   - tiSelQue (val) {
  2272 + tiSelQue(val) {
2557 2273 if (val == 1) {
2558 2274 // wenConstData secondDataTi
2559 2275  
... ... @@ -2567,7 +2283,7 @@ this.zhong.score = JSON.stringify(fenshu)
2567 2283 } else {
2568 2284 this.multipleSelection.forEach(item => {
2569 2285 const isDuplicate = this.secondDataTi.some(existingItem => existingItem.id === item.id);
2570   -
  2286 +
2571 2287 if (!isDuplicate) {
2572 2288 this.secondDataTi.push(item);
2573 2289 }
... ... @@ -2583,7 +2299,7 @@ this.zhong.score = JSON.stringify(fenshu)
2583 2299 this.$refs.ziyuanData.clearSelection()
2584 2300 this.tikuBox = false
2585 2301 },
2586   - delWenCon (val, index) {
  2302 + delWenCon(val, index) {
2587 2303 if (val == '1') {
2588 2304 this.xuanzheData.splice(index, 1)
2589 2305 this.wenConstData.splice(index, 1)
... ... @@ -2591,7 +2307,7 @@ this.zhong.score = JSON.stringify(fenshu)
2591 2307 this.secondDataTi.splice(index, 1)
2592 2308 }
2593 2309 },
2594   - fabu (val, item) {
  2310 + fabu(val, item) {
2595 2311 const h = this.$createElement;
2596 2312 this.$msgbox({
2597 2313 title: '消息',
... ... @@ -2618,11 +2334,11 @@ this.zhong.score = JSON.stringify(fenshu)
2618 2334 }
2619 2335 })
2620 2336 },
2621   - downs (item) {
  2337 + downs(item) {
2622 2338 this.xiajiaId = item.id
2623 2339 this.downShow = true
2624 2340 },
2625   - async downShowCheck () {
  2341 + async downShowCheck() {
2626 2342 if (this.opinionDel.opinionDelisting == '') {
2627 2343 this.$message({
2628 2344 message: '请输入禁用原因',
... ... @@ -2637,7 +2353,7 @@ this.zhong.score = JSON.stringify(fenshu)
2637 2353 this.downShow = false
2638 2354 this.getAll()
2639 2355 },
2640   - delwen (item) {
  2356 + delwen(item) {
2641 2357 const h = this.$createElement;
2642 2358 this.$msgbox({
2643 2359 title: '消息',
... ... @@ -2663,10 +2379,10 @@ this.zhong.score = JSON.stringify(fenshu)
2663 2379 }
2664 2380 })
2665 2381 },
2666   - addyu () {
  2382 + addyu() {
2667 2383  
2668 2384 },
2669   - parseData (obj) {
  2385 + parseData(obj) {
2670 2386 const result = [];
2671 2387  
2672 2388 for (const key in obj) {
... ... @@ -2691,7 +2407,7 @@ this.zhong.score = JSON.stringify(fenshu)
2691 2407  
2692 2408 return result;
2693 2409 },
2694   - yulan (item) {
  2410 + yulan(item) {
2695 2411 this.secondData = item
2696 2412  
2697 2413 if (typeof this.secondData.question != 'object') {
... ... @@ -2701,9 +2417,9 @@ this.zhong.score = JSON.stringify(fenshu)
2701 2417 this.wenjuanUrl = `${host}/cdwlMall/meh5/pages_category_page1/question/question?ids=${item.id}`
2702 2418  
2703 2419 this.yulanShow = true
2704   -
  2420 +
2705 2421 },
2706   - addggXin () {
  2422 + addggXin() {
2707 2423 this.formInline = {
2708 2424 createUser: '',
2709 2425 title: '',
... ... @@ -2734,12 +2450,13 @@ this.zhong.score = JSON.stringify(fenshu)
2734 2450 this.wenConstData = []
2735 2451 this.ggXin = true
2736 2452 },
2737   - addTikuShow () {
  2453 + addTikuShow() {
2738 2454 this.zhong = {
2739 2455 tikuTitle: '',
2740 2456 questionType: '',
2741 2457 questionBank: '用户端题库',
2742   - layoutType:1,
  2458 + layoutType: 1,
  2459 + maxChoose: 0,
2743 2460 isRequired: '必填',
2744 2461 questionDescription: '',
2745 2462 optionSettings: {},
... ... @@ -2748,7 +2465,7 @@ this.zhong.score = JSON.stringify(fenshu)
2748 2465  
2749 2466 this.tikuAdd = true
2750 2467 },
2751   - quxiao (val) {
  2468 + quxiao(val) {
2752 2469 this.multipleSelection = []
2753 2470 this.options = []
2754 2471 this.$refs.tixform.resetFields()
... ... @@ -2760,7 +2477,7 @@ this.zhong.score = JSON.stringify(fenshu)
2760 2477 // }
2761 2478 },
2762 2479  
2763   - hangSelchange () {
  2480 + hangSelchange() {
2764 2481 const postList = {
2765 2482 pageNumber: 0,
2766 2483 pageSize: 10,
... ... @@ -2772,7 +2489,7 @@ this.zhong.score = JSON.stringify(fenshu)
2772 2489 this.total1 = response.data.data.totalElements
2773 2490 })
2774 2491 },
2775   - secondsToMinutesAndSeconds (s) {
  2492 + secondsToMinutesAndSeconds(s) {
2776 2493 if (s) {
2777 2494 // 将输入的秒数转换为数值类型并取整
2778 2495 s = Math.floor(Number(s));
... ... @@ -2795,7 +2512,7 @@ this.zhong.score = JSON.stringify(fenshu)
2795 2512 }
2796 2513 },
2797 2514  
2798   - tongjiSubmit () {
  2515 + tongjiSubmit() {
2799 2516 const page = {
2800 2517 pageNumber: 0,
2801 2518 pageSize: 10,
... ... @@ -2814,7 +2531,7 @@ this.zhong.score = JSON.stringify(fenshu)
2814 2531 this.total1 = response.data.data.totalElements
2815 2532 })
2816 2533 },
2817   - tongjiSubmitret () {
  2534 + tongjiSubmitret() {
2818 2535 this.tongjiMsg = {
2819 2536 plan_Time: [],
2820 2537 userName: '',
... ... @@ -2833,7 +2550,7 @@ this.zhong.score = JSON.stringify(fenshu)
2833 2550 this.total1 = response.data.data.totalElements
2834 2551 })
2835 2552 },
2836   - copyUrl (url) {
  2553 + copyUrl(url) {
2837 2554 const tempTextArea = document.createElement('textarea');
2838 2555 // 设置 textarea 的值为要复制的 URL
2839 2556 tempTextArea.value = url;
... ... @@ -2850,13 +2567,13 @@ this.zhong.score = JSON.stringify(fenshu)
2850 2567 type: 'success'
2851 2568 })
2852 2569 },
2853   - tongjiBoxFan () {
  2570 + tongjiBoxFan() {
2854 2571 this.tongjiBox = false
2855 2572 // this.getAll()
2856 2573 // location.reload();
2857 2574 },
2858   - async load () {
2859   -
  2575 + async load() {
  2576 +
2860 2577 const page = {
2861 2578 pageNumber: this.tiNum + 1,
2862 2579 pageSize: 10,
... ... @@ -2877,7 +2594,7 @@ this.zhong.score = JSON.stringify(fenshu)
2877 2594 }, [])
2878 2595 )
2879 2596 },
2880   - getCurrentDate () {
  2597 + getCurrentDate() {
2881 2598 const now = new Date();
2882 2599 const year = now.getFullYear();
2883 2600 const month = String(now.getMonth() + 1).padStart(2, '0'); // 月份从0开始,所以要+1
... ... @@ -2885,7 +2602,7 @@ this.zhong.score = JSON.stringify(fenshu)
2885 2602 return `${year}-${month}-${day}`;
2886 2603 },
2887 2604  
2888   - getNextDayDate () {
  2605 + getNextDayDate() {
2889 2606 const now = new Date();
2890 2607 now.setDate(now.getDate() + 1); // 设置到下一天
2891 2608 const year = now.getFullYear();
... ... @@ -2894,7 +2611,7 @@ this.zhong.score = JSON.stringify(fenshu)
2894 2611 return `${year}-${month}-${day}`;
2895 2612 },
2896 2613  
2897   - validateScore (row) {
  2614 + validateScore(row) {
2898 2615 // 如果输入的不是数字或者是NaN,则重置为1
2899 2616 if (isNaN(row.num) || row.num < 0) {
2900 2617 row.num = 0;
... ... @@ -2905,7 +2622,7 @@ this.zhong.score = JSON.stringify(fenshu)
2905 2622 }
2906 2623 },
2907 2624  
2908   - tikuquxiao (val) {
  2625 + tikuquxiao(val) {
2909 2626 this.tikuBox = false
2910 2627 this.tiNum = 0
2911 2628 this.tikuNie = ''
... ... @@ -2916,393 +2633,404 @@ this.zhong.score = JSON.stringify(fenshu)
2916 2633 this.totalTi = 0
2917 2634 this.$refs.ziyuanData.clearSelection()
2918 2635 },
2919   - moveUp (index) {
2920   - [this.wenConstData[index],this.wenConstData[index-1]]=[this.wenConstData[index - 1],this.wenConstData[index]]
  2636 + moveUp(index) {
  2637 + [this.wenConstData[index], this.wenConstData[index - 1]] = [this.wenConstData[index - 1], this.wenConstData[index]]
2921 2638 this.wenConstData.sort()
2922 2639 },
2923   - moveDown (index) {
2924   - [this.wenConstData[index],this.wenConstData[index+1]]=[this.wenConstData[index+1],this.wenConstData[index]]
  2640 + moveDown(index) {
  2641 + [this.wenConstData[index], this.wenConstData[index + 1]] = [this.wenConstData[index + 1], this.wenConstData[index]]
2925 2642 this.wenConstData.sort()
2926 2643 },
2927   - moveUp2 (index) {
  2644 + moveUp2(index) {
2928 2645 s
2929   - [this.secondDataTi[index],this.secondDataTi[index-1]]=[this.secondDataTi[index - 1],this.secondDataTi[index]]
  2646 + [this.secondDataTi[index], this.secondDataTi[index - 1]] = [this.secondDataTi[index - 1], this.secondDataTi[index]]
2930 2647 this.secondDataTi.sort()
2931 2648 },
2932   - moveDown2 (index) {
2933   - [this.secondDataTi[index],this.secondDataTi[index+1]]=[this.secondDataTi[index+1],this.secondDataTi[index]]
  2649 + moveDown2(index) {
  2650 + [this.secondDataTi[index], this.secondDataTi[index + 1]] = [this.secondDataTi[index + 1], this.secondDataTi[index]]
2934 2651 this.secondDataTi.sort()
2935 2652 },
2936   -  answerMoveUp (index) {      
2937   -       [this.options[index],this.options[index-1]]=[this.options[index - 1],this.options[index]]
2938   - this.options[index].index = index - 1
2939   -       this.options.sort()
2940   -     },
2941   -     answerMoveDown (index) {
2942   -       [this.options[index],this.options[index+1]]=[this.options[index+1],this.options[index]]
2943   - this.options[index].index = index + 1
2944   -       this.options.sort()
2945   -     },
  2653 + answerMoveUp(index) {
  2654 + [this.options[index], this.options[index - 1]] = [this.options[index - 1], this.options[index]]
  2655 + this.options[index].index = index - 1
  2656 + this.options.sort()
  2657 + },
  2658 + answerMoveDown(index) {
  2659 + [this.options[index], this.options[index + 1]] = [this.options[index + 1], this.options[index]]
  2660 + this.options[index].index = index + 1
  2661 + this.options.sort()
  2662 + },
2946 2663 }
2947 2664  
2948 2665 }
2949 2666 </script>
2950 2667  
2951 2668 <style scoped>
2952   - .zhuti {
2953   - padding: 0 20px 20px 20px;
2954   - min-height: calc(100vh - 50px - 20px);
2955   - background-color: #Fff;
2956   -
2957   - }
  2669 +.zhuti {
  2670 + padding: 0 20px 20px 20px;
  2671 + min-height: calc(100vh - 50px - 20px);
  2672 + background-color: #Fff;
2958 2673  
2959   - .chengeXia {
2960   - border-bottom: 6px solid #3F9B6A;
2961   - padding-bottom: 4px;
2962   - color: #3F9B6A;
2963   - }
  2674 +}
2964 2675  
2965   - /deep/ .el-form-item__content {
2966   - line-height: 0;
2967   - }
  2676 +.chengeXia {
  2677 + border-bottom: 6px solid #3F9B6A;
  2678 + padding-bottom: 4px;
  2679 + color: #3F9B6A;
  2680 +}
2968 2681  
2969   - .tableBtn {
2970   - display: inline-block;
2971   - margin-right: 10px;
2972   - color: #ACACAC;
2973   - cursor: pointer;
2974   - }
  2682 +/deep/ .el-form-item__content {
  2683 + line-height: 0;
  2684 +}
2975 2685  
2976   - .formSearch {
2977   - display: flex;
2978   - width: 100%;
2979   - font-size: 14px;
2980   - justify-content: space-between;
2981   - }
  2686 +.tableBtn {
  2687 + display: inline-block;
  2688 + margin-right: 10px;
  2689 + color: #ACACAC;
  2690 + cursor: pointer;
  2691 +}
2982 2692  
2983   - .greens {
2984   - color: #3F9B6A;
2985   - }
  2693 +.formSearch {
  2694 + display: flex;
  2695 + width: 100%;
  2696 + font-size: 14px;
  2697 + justify-content: space-between;
  2698 +}
2986 2699  
2987   - /deep/ .el-table__row {
2988   - font-size: 14px;
2989   - color: #000000e6;
2990   - height: 42px;
2991   - }
  2700 +.greens {
  2701 + color: #3F9B6A;
  2702 +}
2992 2703  
2993   - .fenye {
2994   - margin-top: 20px;
2995   - display: flex;
2996   - justify-content: flex-end;
2997   - }
  2704 +/deep/ .el-table__row {
  2705 + font-size: 14px;
  2706 + color: #000000e6;
  2707 + height: 42px;
  2708 +}
2998 2709  
2999   - /deep/ .el-pagination.is-background .el-pager li:not(.disabled).active {
3000   - background-color: #3F9B6A;
3001   - }
  2710 +.fenye {
  2711 + margin-top: 20px;
  2712 + display: flex;
  2713 + justify-content: flex-end;
  2714 +}
3002 2715  
3003   - .el-row {
3004   - margin-bottom: 20px;
  2716 +/deep/ .el-pagination.is-background .el-pager li:not(.disabled).active {
  2717 + background-color: #3F9B6A;
  2718 +}
3005 2719  
3006   - &:last-child {
3007   - margin-bottom: 0;
3008   - }
3009   - }
  2720 +.el-row {
  2721 + margin-bottom: 20px;
3010 2722  
3011   - .el-col {
3012   - border-radius: 4px;
  2723 + &:last-child {
  2724 + margin-bottom: 0;
3013 2725 }
  2726 +}
3014 2727  
3015   - .bg-purple-dark {
3016   - background: #99a9bf;
3017   - }
  2728 +.el-col {
  2729 + border-radius: 4px;
  2730 +}
3018 2731  
3019   - .bg-purple {
3020   - background: #d3dce6;
3021   - }
  2732 +.bg-purple-dark {
  2733 + background: #99a9bf;
  2734 +}
3022 2735  
3023   - .bg-purple-light {
3024   - background: #e5e9f2;
3025   - }
  2736 +.bg-purple {
  2737 + background: #d3dce6;
  2738 +}
3026 2739  
3027   - .grid-content {
3028   - border-radius: 4px;
3029   - min-height: 36px;
3030   - }
  2740 +.bg-purple-light {
  2741 + background: #e5e9f2;
  2742 +}
3031 2743  
3032   - .row-bg {
3033   - padding: 10px 0;
3034   - background-color: #f9fafc;
3035   - }
  2744 +.grid-content {
  2745 + border-radius: 4px;
  2746 + min-height: 36px;
  2747 +}
3036 2748  
3037   - /deep/ .bg-purple[data-v-0e3fe4ec] {
3038   - background: #fff;
3039   - height: 50px;
3040   - }
  2749 +.row-bg {
  2750 + padding: 10px 0;
  2751 + background-color: #f9fafc;
  2752 +}
3041 2753  
3042   - /deep/ .bg-purple[data-v-3bebae82] {
3043   - background: #fff;
3044   - height: 50px;
3045   - }
  2754 +/deep/ .bg-purple[data-v-0e3fe4ec] {
  2755 + background: #fff;
  2756 + height: 50px;
  2757 +}
3046 2758  
3047   - ::v-deep .bg-purple {
3048   - background: #fff;
3049   - height: 50px;
3050   - }
  2759 +/deep/ .bg-purple[data-v-3bebae82] {
  2760 + background: #fff;
  2761 + height: 50px;
  2762 +}
3051 2763  
3052   - /deep/ .el-form--label-top .el-form-item__label {
3053   - padding: 0;
3054   - }
  2764 +::v-deep .bg-purple {
  2765 + background: #fff;
  2766 + height: 50px;
  2767 +}
3055 2768  
3056   - ::v-deep .el-form-item {
3057   - margin-bottom: 16px;
3058   - }
  2769 +/deep/ .el-form--label-top .el-form-item__label {
  2770 + padding: 0;
  2771 +}
3059 2772  
3060   - .device-form .el-form-item__label::after {
3061   - content: "*";
3062   - color: #1A1A1A;
3063   - margin-left: 5px;
3064   - font-size: 16px;
3065   - }
  2773 +::v-deep .el-form-item {
  2774 + margin-bottom: 16px;
  2775 +}
3066 2776  
3067   - ::v-deep .el-dialog__wrapper {
3068   - .el-dialog__header {
3069   - background-color: #FAFAFA;
3070   - }
3071   - }
  2777 +.device-form .el-form-item__label::after {
  2778 + content: "*";
  2779 + color: #1A1A1A;
  2780 + margin-left: 5px;
  2781 + font-size: 16px;
  2782 +}
3072 2783  
3073   - ::v-deep .el-input__inner:focus {
3074   - border: #3F9B6A 1px solid;
  2784 +::v-deep .el-dialog__wrapper {
  2785 + .el-dialog__header {
  2786 + background-color: #FAFAFA;
3075 2787 }
  2788 +}
3076 2789  
3077   - .dialog-footer {
3078   - display: flex;
3079   - justify-content: flex-end;
3080   - border-top: solid rgba(209, 209, 209, 0.2) 2px;
3081   - padding-top: 20px;
3082   - }
  2790 +::v-deep .el-input__inner:focus {
  2791 + border: #3F9B6A 1px solid;
  2792 +}
3083 2793  
3084   - ::v-deep .el-input__inner:focus {
3085   - border: #3F9B6A 1px solid;
3086   - }
  2794 +.dialog-footer {
  2795 + display: flex;
  2796 + justify-content: flex-end;
  2797 + border-top: solid rgba(209, 209, 209, 0.2) 2px;
  2798 + padding-top: 20px;
  2799 +}
3087 2800  
3088   - ::v-deep .el-input__inner:hover {
3089   - border: #3F9B6A 1px solid;
3090   - }
  2801 +::v-deep .el-input__inner:focus {
  2802 + border: #3F9B6A 1px solid;
  2803 +}
3091 2804  
3092   - ::v-deep .el-select .el-input.is-focus .el-input__inner {
3093   - border-color: #3F9B6A
3094   - }
  2805 +::v-deep .el-input__inner:hover {
  2806 + border: #3F9B6A 1px solid;
  2807 +}
3095 2808  
3096   - .el-select-dropdown__item.selected {
3097   - color: #3F9B6A;
3098   - }
  2809 +::v-deep .el-select .el-input.is-focus .el-input__inner {
  2810 + border-color: #3F9B6A
  2811 +}
3099 2812  
3100   - .el-pagination__sizes .el-input .el-input__inner:hover {
3101   - border-color: #3F9B6A;
3102   - }
  2813 +.el-select-dropdown__item.selected {
  2814 + color: #3F9B6A;
  2815 +}
3103 2816  
3104   - ::v-deep .el-dialog__wrapper {
  2817 +.el-pagination__sizes .el-input .el-input__inner:hover {
  2818 + border-color: #3F9B6A;
  2819 +}
3105 2820  
3106   - .dialog_css {
3107   - margin-right: 12px;
3108   - margin-top: 61px !important;
  2821 +::v-deep .el-dialog__wrapper {
3109 2822  
3110   - .el-dialog__title {
3111   - font-size: 16px !important;
3112   - font-weight: 600;
3113   - color: #000;
3114   - }
3115   - }
  2823 + .dialog_css {
  2824 + margin-right: 12px;
  2825 + margin-top: 61px !important;
3116 2826  
3117   - .diaslog_zhong {
3118   - margin-left: 25%;
3119   - margin-top: 61px !important;
  2827 + .el-dialog__title {
  2828 + font-size: 16px !important;
  2829 + font-weight: 600;
  2830 + color: #000;
3120 2831 }
3121   -
3122 2832 }
3123 2833  
3124   - ::v-deep .diaslog_zhong {
3125   - margin-left: 20%;
  2834 + .diaslog_zhong {
  2835 + margin-left: 25%;
3126 2836 margin-top: 61px !important;
  2837 + }
3127 2838  
3128   - .el-dialog__header {
3129   - background-color: #fff;
3130   - border-bottom: 1px solid #EFEFEF;
  2839 +}
3131 2840  
3132   - .el-dialog__title {
3133   - font-size: 14px;
3134   - color: #000000e6;
3135   - }
3136   - }
  2841 +::v-deep .diaslog_zhong {
  2842 + margin-left: 20%;
  2843 + margin-top: 61px !important;
  2844 +
  2845 + .el-dialog__header {
  2846 + background-color: #fff;
  2847 + border-bottom: 1px solid #EFEFEF;
3137 2848  
3138   - .el-dialog__body {
3139   - padding: 10px 30px 30px 20px
  2849 + .el-dialog__title {
  2850 + font-size: 14px;
  2851 + color: #000000e6;
3140 2852 }
3141 2853 }
3142 2854  
3143   - /deep/ .el-table_1_column_8 .hetong {
3144   - color: #7DBB9A;
3145   - text-decoration: underline;
  2855 + .el-dialog__body {
  2856 + padding: 10px 30px 30px 20px
3146 2857 }
  2858 +}
3147 2859  
3148   - /deep/ .first-column-bg {
3149   - background-color: #FAFAFA !important;
3150   - }
  2860 +/deep/ .el-table_1_column_8 .hetong {
  2861 + color: #7DBB9A;
  2862 + text-decoration: underline;
  2863 +}
3151 2864  
3152   - ::v-deep .textarea {
3153   - width: 85%;
  2865 +/deep/ .first-column-bg {
  2866 + background-color: #FAFAFA !important;
  2867 +}
3154 2868  
3155   - .el-textarea__inner {
3156   - width: 100%;
3157   - }
3158   - }
  2869 +::v-deep .textarea {
  2870 + width: 85%;
3159 2871  
3160   - ::v-deep .pass_input {
  2872 + .el-textarea__inner {
3161 2873 width: 100%;
3162   -
3163   - .el-input__inner {
3164   - border: none;
3165   - padding: 0;
3166   - }
3167 2874 }
  2875 +}
3168 2876  
3169   - ::v-deep .pass_select {
3170   - width: 100%;
  2877 +::v-deep .pass_input {
  2878 + width: 100%;
3171 2879  
3172   - .el-input__inner {
3173   - border: none;
3174   - padding: 0;
3175   - }
  2880 + .el-input__inner {
  2881 + border: none;
  2882 + padding: 0;
  2883 + }
  2884 +}
3176 2885  
3177   - .el-icon-arrow-up:before {
3178   - content: ''
3179   - }
  2886 +::v-deep .pass_select {
  2887 + width: 100%;
3180 2888  
  2889 + .el-input__inner {
  2890 + border: none;
  2891 + padding: 0;
3181 2892 }
3182 2893  
3183   - /deep/ .el-table--enable-row-hover .el-table__body tr:hover>td.el-table__cell {
3184   - background-color: #fff;
  2894 + .el-icon-arrow-up:before {
  2895 + content: ''
3185 2896 }
3186 2897  
3187   - /deep/ .el-radio__label,
3188   - /deep/ .el-checkbox__label {
3189   - white-space: normal !important;
3190   - word-break: break-all !important;
3191   - }
3192   -</style>
3193   -<style lang="scss" scoped>
3194   - ::v-deep .bian_css {
3195   - .el-dialog__header {
3196   - padding: 0px;
3197   - }
  2898 +}
3198 2899  
3199   - .el-input__inner {
3200   - height: 18px;
3201   - border: 0px;
3202   - margin-top: 0px;
3203   - }
  2900 +/deep/ .el-table--enable-row-hover .el-table__body tr:hover>td.el-table__cell {
  2901 + background-color: #fff;
  2902 +}
3204 2903  
3205   - .el-input__inner:hover {
3206   - border: 0px;
3207   - }
  2904 +/deep/ .el-radio__label,
  2905 +/deep/ .el-checkbox__label {
  2906 + white-space: normal !important;
  2907 + word-break: break-all !important;
  2908 +}
3208 2909  
3209   - .el-input__inner:focus {
3210   - border: 0px;
3211   - }
  2910 +/deep/ .el-input-number__decrease,
  2911 +/deep/.el-input-number__increase {
  2912 + height: 30px !important;
  2913 + line-height: 32px !important;
  2914 + margin-top: 3px;
  2915 +}
  2916 +</style>
  2917 +<style lang="scss" scoped>
  2918 +::v-deep .bian_css {
  2919 + .el-dialog__header {
  2920 + padding: 0px;
3212 2921 }
3213 2922  
3214   - ::v-deep .buttonHover:hover {
3215   - color: #3f9b6a !important;
3216   - border-color: #c5e1d2 !important;
3217   - background-color: #ecf5f0 !important;
3218   - outline: none;
  2923 + .el-input__inner {
  2924 + height: 18px;
  2925 + border: 0px;
  2926 + margin-top: 0px;
3219 2927 }
3220 2928  
3221   - ::v-deep .el-pagination__total {
3222   - position: absolute;
3223   - left: 33px;
  2929 + .el-input__inner:hover {
  2930 + border: 0px;
3224 2931 }
3225 2932  
3226   - ::v-deep .diaslog_zhong {
3227   - .el-dialog__body {
3228   - padding: 10px 20px 20px 20px;
3229   - }
3230   -
3231   - .el-upload--picture-card {
3232   - width: 130px;
3233   - height: 130px;
3234   - }
  2933 + .el-input__inner:focus {
  2934 + border: 0px;
3235 2935 }
  2936 +}
3236 2937  
3237   - ::v-deep .el-radio-group {
3238   - .el-radio {
3239   - font-weight: 400;
3240   - height: 29px;
3241   - }
3242   - }
  2938 +::v-deep .buttonHover:hover {
  2939 + color: #3f9b6a !important;
  2940 + border-color: #c5e1d2 !important;
  2941 + background-color: #ecf5f0 !important;
  2942 + outline: none;
  2943 +}
3243 2944  
3244   - ::v-deep .el-checkbox-group {
3245   - .el-checkbox {
3246   - height: 29px;
3247   - }
  2945 +::v-deep .el-pagination__total {
  2946 + position: absolute;
  2947 + left: 33px;
  2948 +}
3248 2949  
3249   - label {
3250   - font-weight: 400;
3251   - }
  2950 +::v-deep .diaslog_zhong {
  2951 + .el-dialog__body {
  2952 + padding: 10px 20px 20px 20px;
3252 2953 }
3253 2954  
3254   - .questionnaire {
3255   - width: 100%;
3256   - flex-grow: 1;
3257   - background-color: white;
3258   - box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
3259   - border-radius: 5px;
3260   - box-sizing: border-box;
  2955 + .el-upload--picture-card {
  2956 + width: 130px;
  2957 + height: 130px;
3261 2958 }
  2959 +}
3262 2960  
3263   - .question-title {
3264   - // font-size: 18px;
3265   - color: #000;
3266   - margin-bottom: 10px;
  2961 +::v-deep .el-radio-group {
  2962 + .el-radio {
  2963 + font-weight: 400;
  2964 + height: 29px;
3267 2965 }
  2966 +}
3268 2967  
3269   - .question {
3270   - background-color: white;
3271   - padding: 15px;
3272   - margin: 10px 0;
3273   - border-radius: 10px;
  2968 +::v-deep .el-checkbox-group {
  2969 + .el-checkbox {
  2970 + height: 29px;
3274 2971 }
3275   - .answerItem{
3276   - width: auto;
3277   - padding:10px 15px;
3278   - margin: 0 0 5px 10px;
3279   - border-radius: 6px;
3280   - background-color: #f5f7fa;
3281   - display: flex;
3282   - align-items: center;
  2972 +
  2973 + label {
  2974 + font-weight: 400;
3283 2975 }
  2976 +}
3284 2977  
3285   - // ::v-deep .tongyong_css {
3286   - // max-height: 850px;
  2978 +.questionnaire {
  2979 + width: 100%;
  2980 + flex-grow: 1;
  2981 + background-color: white;
  2982 + box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
  2983 + border-radius: 5px;
  2984 + box-sizing: border-box;
  2985 +}
3287 2986  
3288   - // }
  2987 +.question-title {
  2988 + // font-size: 18px;
  2989 + color: #000;
  2990 + margin-bottom: 10px;
  2991 +}
3289 2992  
3290   - // .tongyong_css {
3291   - // max-height: calc(100vh - 200px); /* Adjust the 200px to the combined height of your header and footer */
3292   - // overflow-y: auto;
3293   - // }
3294   - ::v-deep .xddTable {
3295   - height: 100% !important;
3296   - .el-table__body-wrapper{
3297   - overflow:auto !important;
3298   - height: 100% !important;
3299   - }
3300   - .el-table__body-wrapper is-scrolling-none{
3301   - height: 100% !important;
3302   - }
3303   - .el-table--scrollable-y .el-table__body-wrapper{
3304   - overflow-y:inherit !important;
3305   - }
  2993 +.question {
  2994 + background-color: white;
  2995 + padding: 15px;
  2996 + margin: 10px 0;
  2997 + border-radius: 10px;
  2998 +}
3306 2999  
  3000 +.answerItem {
  3001 + width: auto;
  3002 + padding: 10px 15px;
  3003 + margin: 0 0 5px 10px;
  3004 + border-radius: 6px;
  3005 + background-color: #f5f7fa;
  3006 + display: flex;
  3007 + align-items: center;
  3008 +}
  3009 +
  3010 +// ::v-deep .tongyong_css {
  3011 +// max-height: 850px;
  3012 +
  3013 +// }
  3014 +
  3015 +// .tongyong_css {
  3016 +// max-height: calc(100vh - 200px); /* Adjust the 200px to the combined height of your header and footer */
  3017 +// overflow-y: auto;
  3018 +// }
  3019 +::v-deep .xddTable {
  3020 + height: 100% !important;
  3021 +
  3022 + .el-table__body-wrapper {
  3023 + overflow: auto !important;
  3024 + height: 100% !important;
3307 3025 }
  3026 +
  3027 + .el-table__body-wrapper is-scrolling-none {
  3028 + height: 100% !important;
  3029 + }
  3030 +
  3031 + .el-table--scrollable-y .el-table__body-wrapper {
  3032 + overflow-y: inherit !important;
  3033 + }
  3034 +
  3035 +}
3308 3036 </style>
... ...
wenjuan-pc/src/views/investigation/question.vue
... ... @@ -52,17 +52,16 @@
52 52 </div>
53 53 <!-- 表格 -->
54 54  
55   - <el-table :data="
56   - tableData.slice(
57   - (currentPage - 1) * pageSize,
58   - currentPage * pageSize
59   - )
60   - " :header-cell-style="{
61   - fontSize: '14px',
62   - color: '#0009',
63   - fontWeight: 'normal',
64   - backgroundColor: '#F2F3F5',
65   - }" tooltip-effect="dark custom-tooltip-effect">
  55 + <el-table :data="tableData.slice(
  56 + (currentPage - 1) * pageSize,
  57 + currentPage * pageSize
  58 + )
  59 + " :header-cell-style="{
  60 + fontSize: '14px',
  61 + color: '#0009',
  62 + fontWeight: 'normal',
  63 + backgroundColor: '#F2F3F5',
  64 + }" tooltip-effect="dark custom-tooltip-effect">
66 65 <el-table-column label="序号" min-width="150">
67 66 <template slot-scope="scope">
68 67 {{ scope.$index + 1 }}
... ... @@ -163,6 +162,10 @@
163 162 <el-option label="文本" value="文本" />
164 163 </el-select>
165 164 </el-form-item>
  165 + <!-- 如果formInline.questionType为多选,那么就显示最多可以选择多少个,计步器来设置,默认是 0 -->
  166 + <el-form-item v-if="formInline.questionType == '多选'" label="最多可选" prop="maxChoose">
  167 + <el-input-number v-model="formInline.maxChoose" :min="0" :max="options.length " />0为不限制填写数量
  168 + </el-form-item>
166 169 <el-form-item label="隶属题库" prop="questionBank">
167 170 <el-select v-model="formInline.questionBank" placeholder="请选择">
168 171 <el-option label="用户端题库" value="用户端题库" />
... ... @@ -188,11 +191,11 @@
188 191 </el-form-item>
189 192 <el-form-item v-if="formInline.questionType != '文本'" label="答案设置" prop="optionSettings">
190 193 <el-table :data="options" :header-cell-style="{
191   - fontSize: '14px',
192   - color: '#0009',
193   - fontWeight: 'normal',
194   - backgroundColor: '#F2F3F5',
195   - }">
  194 + fontSize: '14px',
  195 + color: '#0009',
  196 + fontWeight: 'normal',
  197 + backgroundColor: '#F2F3F5',
  198 + }">
196 199 <el-table-column prop="index" label="序号" width="80">
197 200 <template #default="scope">
198 201 {{ scope.$index + 1 }}
... ... @@ -210,12 +213,14 @@
210 213 :readonly="scope.row.readonly" @input="validateScore(scope.row)" />
211 214 </template>
212 215 </el-table-column>
213   - <el-table-column label=""  min-width="120" >
214   -                     <template #default="{$index}">
215   -                       <span style="cursor: pointer;margin-right: 5px; color: #3F9B6A;" @click="answerMoveUp($index)" v-if="$index!=0">↑</span>
216   -                       <span style="cursor: pointer; color: #3F9B6A;" @click="answerMoveDown($index)" v-if="$index != (options.length-1)">↓</span>
217   -                     </template>
218   -                   </el-table-column>
  216 + <el-table-column label=""  min-width="120">
  217 + <template #default="{ $index }">
  218 + <span style="cursor: pointer;margin-right: 5px; color: #3F9B6A;"
  219 + @click="answerMoveUp($index)" v-if="$index != 0">↑</span>
  220 + <span style="cursor: pointer; color: #3F9B6A;" @click="answerMoveDown($index)"
  221 + v-if="$index != (options.length - 1)">↓</span>
  222 + </template>
  223 + </el-table-column>
219 224 <el-table-column label="操作">
220 225 <template #default="scope">
221 226 <div class="tableBtn greens" @click="deleteOption(scope.$index)">
... ... @@ -259,6 +264,10 @@
259 264 <el-option label="文本" value="文本" />
260 265 </el-select>
261 266 </el-form-item>
  267 + <!-- 如果formInline.questionType为多选,那么就显示最多可以选择多少个,计步器来设置,默认是 0 -->
  268 + <el-form-item v-if="secondData.questionType == '多选'" label="最多可选" prop="maxChoose">
  269 + <el-input-number v-model="secondData.maxChoose" :min="0" :max="options.length " /> 0为不限制填写数量
  270 + </el-form-item>
262 271 <el-form-item label="隶属题库" prop="questionBank">
263 272 <el-select v-model="secondData.questionBank" placeholder="请选择">
264 273 <el-option label="用户端题库" value="用户端题库" />
... ... @@ -284,42 +293,46 @@
284 293 </el-form-item>
285 294 <el-form-item v-if="secondData.questionType != '文本'" label="答案设置">
286 295 <el-table :data="options" :header-cell-style="{
287   - fontSize: '14px',
288   - color: '#0009',
289   - fontWeight: 'normal',
290   - backgroundColor: '#F2F3F5',
291   - }">
292   -
293   - <el-table-column prop="index" label="序号" width="180">
294   - <template #default="scope">
295   - {{ scope.$index + 1 }}
296   - </template>
297   - </el-table-column>
298   - <el-table-column prop="name" label="选项名称">
299   - <template #default="scope">
300   - <el-input v-model="scope.row.name" :readonly="scope.row.readonly" />
301   - </template>
302   - </el-table-column>
303   - <el-table-column prop="name" label="分数">
304   - <template #default="scope">
305   - <el-input v-model="scope.row.num" :min="0" :max="100"
306   - :readonly="scope.row.readonly" @input="validateScore(scope.row)" />
307   - </template>
308   - </el-table-column>
309   - <el-table-column label=""  min-width="120" >
310   -                     <template #default="{$index}">
311   -                       <span style="cursor: pointer;margin-right: 5px; color: #3F9B6A;" @click="answerMoveUp($index)" v-if="$index!=0">↑</span>
312   -                       <span style="cursor: pointer; color: #3F9B6A;" @click="answerMoveDown($index)" v-if="$index != (options.length-1)">↓</span>
313   -                     </template>
  296 + fontSize: '14px',
  297 + color: '#0009',
  298 + fontWeight: 'normal',
  299 + backgroundColor: '#F2F3F5',
  300 + }">
  301 +
  302 + <el-table-column prop="index" label="序号" width="180">
  303 + <template #default="scope">
  304 + {{ scope.$index + 1 }}
  305 + </template>
  306 + </el-table-column>
  307 + <el-table-column prop="name" label="选项名称">
  308 + <template #default="scope">
  309 + <el-input v-model="scope.row.name" :readonly="scope.row.readonly" />
  310 + </template>
  311 + </el-table-column>
  312 + <el-table-column prop="name" label="分数">
  313 + <template #default="scope">
  314 + <el-input v-model="scope.row.num" :min="0" :max="100"
  315 + :readonly="scope.row.readonly" @input="validateScore(scope.row)" />
  316 + </template>
  317 + </el-table-column>
  318 + <el-table-column label=""  min-width="120">
  319 +                     <template #default="{ $index }">
  320 +                       <span
  321 + style="cursor: pointer;margin-right: 5px; color: #3F9B6A;"
  322 + @click="answerMoveUp($index)" v-if="$index != 0">↑</span>
  323 +                       <span style="cursor: pointer; color: #3F9B6A;"
  324 + @click="answerMoveDown($index)"
  325 + v-if="$index != (options.length - 1)">↓</span>
  326 +                     </template>
314 327                   </el-table-column>
315   - <el-table-column label="操作">
316   - <template #default="scope">
317   - <div class="tableBtn greens" @click="deleteOption(scope.$index)">
318   - 删除
319   - </div>
320   - </template>
321   - </el-table-column>
322   -
  328 + <el-table-column label="操作">
  329 + <template #default="scope">
  330 + <div class="tableBtn greens" @click="deleteOption(scope.$index)">
  331 + 删除
  332 + </div>
  333 + </template>
  334 + </el-table-column>
  335 +
323 336 </el-table>
324 337  
325 338 <el-button style="width: 100%; background-color: #3f9b6a; color: #fff" @click="addOption">+
... ... @@ -342,701 +355,679 @@
342 355 </template>
343 356  
344 357 <script>
345   - import {
346   - async
347   - } from "q";
348   - import axios from "axios";
349   - import {
350   - QuestionGetAll,
351   - QuestionAdd,
352   - QuestionEdit,
353   - QuestionDel,
354   - } from "../../api/question.js";
355   - import upimg from "@/components/ImageUpload/index";
356   - export default {
357   - components: {
358   - upimg,
359   - },
360   - data() {
361   - return {
362   - detbox: false, // 详情
363   - currentPage: 1,
364   - total: 10,
365   - flag: false,
  358 +import {
  359 + async
  360 +} from "q";
  361 +import axios from "axios";
  362 +import {
  363 + QuestionGetAll,
  364 + QuestionAdd,
  365 + QuestionEdit,
  366 + QuestionDel,
  367 +} from "../../api/question.js";
  368 +import upimg from "@/components/ImageUpload/index";
  369 +export default {
  370 + components: {
  371 + upimg,
  372 + },
  373 + data() {
  374 + return {
  375 + detbox: false, // 详情
  376 + currentPage: 1,
  377 + total: 10,
  378 + flag: false,
  379 + pageSize: 10,
  380 + ggXin: false,
  381 + formInline: {
  382 + tikuTitle: "",
  383 + questionType: "",
  384 + questionBank: "用户端题库",
  385 + isRequired: "必填",
  386 + maxChoose:0,
  387 + questionDescription: "",
  388 + optionSettings: {},
  389 + },
  390 + tableData: [],
  391 + secondData: {},
  392 + formSel: {
  393 + questionBank: "用户端题库",
  394 + tikuTitle: "",
  395 + questionType: "",
  396 + pageNumber: 0,
  397 + pageSize: 10,
  398 + },
  399 + pageindex: {
  400 + pageNumber: 0,
  401 + pageSize: 10,
  402 + questionBank: "用户端题库",
  403 + },
  404 + bainjiBox: false,
  405 + options: [],
  406 + labelStyle: {
  407 + width: "160px",
  408 + },
  409 + contentStyle: {
  410 + width: "246px",
  411 + },
  412 + rules: {
  413 + tikuTitle: [{
  414 + required: true,
  415 + message: "请输入题目",
  416 + trigger: "blur"
  417 + }],
  418 + questionType: [{
  419 + required: true,
  420 + message: "请选择题型",
  421 + trigger: "change"
  422 + },],
  423 + questionBank: [{
  424 + required: true,
  425 + message: "请选择所属题库",
  426 + trigger: "change"
  427 + },],
  428 + layoutType: [{
  429 + required: true,
  430 + message: "请选择布局类型",
  431 + trigger: "change"
  432 + },],
  433 + optionSettings: [{
  434 + required: true,
  435 + message: "请设置答案",
  436 + trigger: "change"
  437 + },],
  438 + },
  439 + };
  440 + },
  441 + computed: {},
  442 + mounted() {
  443 + this.getAll();
  444 + },
  445 + methods: {
  446 + chenge(val) {
  447 + this.formSel = {
  448 + questionBank: "用户端题库",
  449 + tikuTitle: "",
  450 + questionType: "",
  451 + pageNumber: 0,
366 452 pageSize: 10,
367   - ggXin: false,
368   - formInline: {
369   - tikuTitle: "",
370   - questionType: "",
371   - questionBank: "用户端题库",
372   - isRequired: "必填",
373   - questionDescription: "",
374   - optionSettings: {},
375   - },
376   - tableData: [],
377   - secondData: {},
378   - formSel: {
379   - questionBank: "用户端题库",
380   - tikuTitle: "",
381   - questionType: "",
382   - pageNumber: 0,
383   - pageSize: 10,
384   - },
385   - pageindex: {
386   - pageNumber: 0,
387   - pageSize: 10,
388   - questionBank: "用户端题库",
389   - },
390   - bainjiBox: false,
391   - options: [],
392   - labelStyle: {
393   - width: "160px",
394   - },
395   - contentStyle: {
396   - width: "246px",
397   - },
398   - rules: {
399   - tikuTitle: [{
400   - required: true,
401   - message: "请输入题目",
402   - trigger: "blur"
403   - }],
404   - questionType: [{
405   - required: true,
406   - message: "请选择题型",
407   - trigger: "change"
408   - }, ],
409   - questionBank: [{
410   - required: true,
411   - message: "请选择所属题库",
412   - trigger: "change"
413   - }, ],
414   - layoutType: [{
415   - required: true,
416   - message: "请选择布局类型",
417   - trigger: "change"
418   - }, ],
419   - optionSettings: [{
420   - required: true,
421   - message: "请设置答案",
422   - trigger: "change"
423   - }, ],
424   - },
425 453 };
426 454 },
427   - computed: {},
428   - mounted() {
429   - this.getAll();
  455 + getAll() {
  456 + QuestionGetAll(this.pageindex).then((res) => {
  457 + this.tableData = res.data.content;
  458 + this.total = res.data.totalElements;
  459 + });
430 460 },
431   - methods: {
432   - chenge(val) {
433   - this.formSel = {
434   - questionBank: "用户端题库",
435   - tikuTitle: "",
436   - questionType: "",
437   - pageNumber: 0,
438   - pageSize: 10,
439   - };
440   - },
441   - getAll() {
442   - QuestionGetAll(this.pageindex).then((res) => {
443   - this.tableData = res.data.content;
444   - this.total = res.data.totalElements;
445   - });
446   - },
447 461  
448   - // 新增确定按钮
449   - addCheck(val) {
450   - this.$refs.reform.validate((valid) => {
451   - if (valid) {
452   - if (
453   - this.formInline.questionType != "文本" &&
454   - this.options.length == 0
455   - ) {
  462 + // 新增确定按钮
  463 + addCheck(val) {
  464 + this.$refs.reform.validate((valid) => {
  465 + if (valid) {
  466 + if (
  467 + this.formInline.questionType != "文本" &&
  468 + this.options.length == 0
  469 + ) {
  470 + this.$message({
  471 + message: "请添加答案选项",
  472 + });
  473 + return;
  474 + }
  475 + for (let i = 0; i < this.options.length; i++) {
  476 + if (this.options[i].name == "") {
456 477 this.$message({
457   - message: "请添加答案选项",
  478 + message: "答案选项不能为空",
458 479 });
459 480 return;
460 481 }
461   - for (let i = 0; i < this.options.length; i++) {
462   - if (this.options[i].name == "") {
463   - this.$message({
464   - message: "答案选项不能为空",
465   - });
466   - return;
467   - }
468   - }
469   - let accumulator= {}
470   - let fenshu = {}
471   - this.options.forEach((item,index)=>{
472   - accumulator[index] = item.name
473   - fenshu[index] = Number(item.num) || 0
474   - })
475   - // this.formInline.optionSettings = this.options.reduce(
476   - // (accumulator, current) => {
477   - // console.log(accumulator)
478   - // accumulator[current.index].index = current.name;
479   - // return accumulator;
480   - // }, {},
481   -
482   - // ); // 初始化累加器为空对象
483   - this.formInline.optionSettings = accumulator
484   - this.formInline.score = fenshu
485   - // this.formInline.score = this.options.reduce(
486   - // (accumulator, current) => {
487   - // accumulator[current.index] = Number(current.num);
488   - // return accumulator;
489   - // }, {}
490   - // ); // 初始化累加器为空对象
491   - // console.log(this.formInline.optionSettings,this.formInline.score)
492   - // return
493   - this.formInline.optionSettings = JSON.stringify(
494   - this.formInline.optionSettings
495   - );
496   - this.formInline.score = JSON.stringify(this.formInline.score);
497   - this.formInline.createDate = this.currentTime();
498   - QuestionAdd(this.formInline).then((res) => {
499   - this.$message({
500   - message: "保存成功",
501   - type: "success",
502   - });
503   - this.formInline = {
504   - tikuTitle: "",
505   - questionType: "",
506   - questionBank: "用户端题库",
507   - isRequired: "必填",
508   - questionDescription: "",
509   - optionSettings: {},
510   - };
511   - this.getAll();
  482 + }
  483 + let accumulator = {}
  484 + let fenshu = {}
  485 + this.options.forEach((item, index) => {
  486 + accumulator[index] = item.name
  487 + fenshu[index] = Number(item.num) || 0
  488 + })
  489 + this.formInline.optionSettings = accumulator
  490 + this.formInline.score = fenshu
  491 + this.formInline.optionSettings = JSON.stringify(
  492 + this.formInline.optionSettings
  493 + );
  494 + this.formInline.score = JSON.stringify(this.formInline.score);
  495 + this.formInline.createDate = this.currentTime();
  496 + QuestionAdd(this.formInline).then((res) => {
  497 + this.$message({
  498 + message: "保存成功",
  499 + type: "success",
512 500 });
  501 + this.formInline = {
  502 + tikuTitle: "",
  503 + questionType: "",
  504 + questionBank: "用户端题库",
  505 + isRequired: "必填",
  506 + questionDescription: "",
  507 + optionSettings: {},
  508 + };
  509 + this.getAll();
  510 + });
513 511  
514   - this.ggXin = false;
515   - } else {
516   - return false;
  512 + this.ggXin = false;
  513 + } else {
  514 + return false;
  515 + }
  516 + });
  517 + },
  518 + // 编辑确定
  519 + async bianCheck() {
  520 + this.$refs.bianform.validate((valid) => {
  521 + if (valid) {
  522 + if (
  523 + this.secondData.questionType != "文本" &&
  524 + this.options.length == 0
  525 + ) {
  526 + this.$message({
  527 + message: "请添加答案选项",
  528 + });
  529 + return;
517 530 }
518   - });
519   - },
520   - // 编辑确定
521   - async bianCheck() {
522   - this.$refs.bianform.validate((valid) => {
523   - if (valid) {
524   - if (
525   - this.secondData.questionType != "文本" &&
526   - this.options.length == 0
527   - ) {
  531 + for (let i = 0; i < this.options.length; i++) {
  532 + if (this.options[i].name == "") {
528 533 this.$message({
529   - message: "请添加答案选项",
  534 + message: "答案选项不能为空",
530 535 });
531 536 return;
532 537 }
533   - for (let i = 0; i < this.options.length; i++) {
534   - if (this.options[i].name == "") {
535   - this.$message({
536   - message: "答案选项不能为空",
537   - });
538   - return;
539   - }
540   - }
541   - let accumulator= {}
542   - let fenshu ={}
543   - this.options.forEach((item,index)=>{
544   -
545   - accumulator[index] = item.name
546   - fenshu[index] = Number(item.num) || 0
547   - })
548   -
549   -
550   - // this.secondData.score = fenshu
551   -
552   - // this.formInline.optionSettings = accumulator
553   - // this.secondData.optionSettings = this.options.reduce(
554   - // (accumulator, current) => {
555   - // accumulator[current.index] = current.name;
556   - // return accumulator;
557   - // }, {}
558   - // ); // 初始化累加器为空对象
559   - // this.secondData.score = this.options.reduce(
560   - // (accumulator, current) => {
561   - // accumulator[current.index] = Number(current.num);
562   - // return accumulator;
563   - // }, {}
564   - // ); // 初始化累加器为空对象
565   -
566   - this.secondData.optionSettings = JSON.stringify(
567   - accumulator
568   - );
569   - this.secondData.score = JSON.stringify(fenshu);
570   -
571   - QuestionEdit(this.secondData).then((res) => {
572   - this.$message({
573   - message: "保存成功",
574   - type: "success",
575   - });
576   -
577   - this.getAll();
578   - });
579   -
580   - this.bainjiBox = false;
581   - } else {
  538 + }
  539 + let accumulator = {}
  540 + let fenshu = {}
  541 + this.options.forEach((item, index) => {
  542 +
  543 + accumulator[index] = item.name
  544 + fenshu[index] = Number(item.num) || 0
  545 + })
  546 + this.secondData.optionSettings = JSON.stringify(
  547 + accumulator
  548 + );
  549 + this.secondData.score = JSON.stringify(fenshu);
  550 +
  551 + QuestionEdit(this.secondData).then((res) => {
582 552 this.$message({
583   - message: "请填写完整信息",
584   - type: "error",
  553 + message: "保存成功",
  554 + type: "success",
585 555 });
586   - return false;
587   - }
588   - });
589   - },
590   - // 获取时间
591   - currentTime() {
592   - const date = new Date();
593   - const year = date.getFullYear();
594   - let month = date.getMonth() + 1; // 月份从0~11,所以加一
595   - let day = date.getDate();
596   - let hours = date.getHours();
597   - let minutes = date.getMinutes();
598   - let seconds = date.getSeconds();
599   -
600   - // 为月、日、小时、分钟和秒添加前导零(如果需要)
601   - month = month < 10 ? "0" + month : month;
602   - day = day < 10 ? "0" + day : day;
603   - hours = hours < 10 ? "0" + hours : hours;
604   - minutes = minutes < 10 ? "0" + minutes : minutes;
605   - seconds = seconds < 10 ? "0" + seconds : seconds;
606   -
607   - // 返回格式化的日期和时间字符串
608   - return `${year}-${month}-${day} ${hours}:${minutes}`;
609   - },
610 556  
611   - // 详情
612   - details(val, item) {
613   - this.secondData = item;
  557 + this.getAll();
  558 + });
614 559  
615   - if (typeof item.optionSettings === "string") {
616   - this.secondData.optionSettings = JSON.parse(item.optionSettings);
617   - }
618   - this.detbox = true;
619   - },
620   - addbuss(val, item) {
621   - this.detbox = false;
622   - this.ggXin = true;
623   - },
624   - handleSizeChange(val) {
625   - this.pageSize = val;
626   - },
627   - handleCurrentChange(val) {
628   - // this.currentPage = val
629   - this.pageindex.pageNumber = val - 1;
630   - QuestionGetAll(this.pageindex).then((res) => {
631   - this.tableData = res.data.content;
632   - });
633   - },
634   -
635   - closeFn(val) {
636   - if (val == 1) {
637   - this.ggXin = false;
638   - } else {
639 560 this.bainjiBox = false;
640   - }
641   - },
642   -
643   - // 查询按钮
644   - async onSubmit() {
645   - const res = await QuestionGetAll(this.formSel);
646   - this.tableData = res.data.content;
647   - this.total = res.data.totalElements;
648   - },
649   - // 重置按钮
650   - resetting() {
651   - this.formSel = {
652   - questionBank: "用户端题库",
653   - pageNumber: 0,
654   - pageSize: 10,
655   - };
656   - this.currentPage = 1;
657   - this.pageindex.pageNumber = 0;
658   - this.getAll();
659   - },
660   - addOption() {
661   - const newOption = {
662   - index: this.options.length + 1,
663   - name: "",
664   - readonly: false,
665   - };
666   - this.options.push(newOption);
667   - },
668   - deleteOption(index) {
669   - this.options.splice(index, 1);
670   - },
671   - bianls(item) {
672   - let settings = null;
673   - let socer = null;
674   - if (typeof item.optionSettings !== "object") {
675   - settings = JSON.parse(item.optionSettings);
676   - } else {
677   - settings = item.optionSettings;
678   - }
679   - if (typeof item.score !== "object") {
680   - socer = JSON.parse(item.score);
681 561 } else {
682   - socer = item.score;
  562 + this.$message({
  563 + message: "请填写完整信息",
  564 + type: "error",
  565 + });
  566 + return false;
683 567 }
684   - const keys = Object.keys(settings);
685   - this.options = keys.map((key) => ({
686   - index: parseInt(key), // 将字符串键转换为整数
687   - name: settings[key],
688   - num: socer[key], // 添加 socer 的值
689   - }));
690   -
691   - this.bainjiBox = true;
692   - this.secondData = item;
693   - },
694   - tikuDel(item) {
695   - const h = this.$createElement;
696   - this.$msgbox({
697   - title: "消息",
698   - message: h("p", null, [h("span", null, "是否删除 ")]),
699   - showCancelButton: true,
700   - showClose: false,
701   - confirmButtonText: "确定",
702   - cancelButtonText: "取消",
703   - customClass: "oe-dialog-btn",
704   - beforeClose: (action, instance, done) => {
705   - if (action === "confirm") {
706   - QuestionDel({
707   - id: item.id,
708   - }).then((res) => {
709   - this.getAll();
710   - done();
711   - });
712   - } else {
713   - done();
714   - }
715   - },
716   - });
717   - },
718   - async tikuBox(val) {
719   - this.pageindex.questionBank = val;
  568 + });
  569 + },
  570 + // 获取时间
  571 + currentTime() {
  572 + const date = new Date();
  573 + const year = date.getFullYear();
  574 + let month = date.getMonth() + 1; // 月份从0~11,所以加一
  575 + let day = date.getDate();
  576 + let hours = date.getHours();
  577 + let minutes = date.getMinutes();
  578 + let seconds = date.getSeconds();
  579 +
  580 + // 为月、日、小时、分钟和秒添加前导零(如果需要)
  581 + month = month < 10 ? "0" + month : month;
  582 + day = day < 10 ? "0" + day : day;
  583 + hours = hours < 10 ? "0" + hours : hours;
  584 + minutes = minutes < 10 ? "0" + minutes : minutes;
  585 + seconds = seconds < 10 ? "0" + seconds : seconds;
  586 +
  587 + // 返回格式化的日期和时间字符串
  588 + return `${year}-${month}-${day} ${hours}:${minutes}`;
  589 + },
  590 +
  591 + // 详情
  592 + details(val, item) {
  593 + this.secondData = item;
720 594  
721   - const res = await QuestionGetAll(this.pageindex);
  595 + if (typeof item.optionSettings === "string") {
  596 + this.secondData.optionSettings = JSON.parse(item.optionSettings);
  597 + }
  598 + this.detbox = true;
  599 + },
  600 + addbuss(val, item) {
  601 + this.detbox = false;
  602 + this.ggXin = true;
  603 + },
  604 + handleSizeChange(val) {
  605 + this.pageSize = val;
  606 + },
  607 + handleCurrentChange(val) {
  608 + // this.currentPage = val
  609 + this.pageindex.pageNumber = val - 1;
  610 + QuestionGetAll(this.pageindex).then((res) => {
722 611 this.tableData = res.data.content;
723   - this.total = res.data.totalElements;
724   - },
725   - addTimu() {
726   - this.formInline = {
727   - tikuTitle: "",
728   - questionType: "",
729   - questionBank: "用户端题库",
730   - isRequired: "必填",
731   - layoutType: 1,
732   - questionDescription: "",
733   - optionSettings: {},
734   - };
735   - this.options = [];
736   - // this.$refs.reform.resetFields()
737   - this.ggXin = true;
738   - },
739   - validateScore(row) {
740   - // 如果输入的不是数字或者是NaN,则重置为1
741   - if (isNaN(row.num) || row.num < 0) {
742   - row.num = 0;
743   - }
744   - // 如果输入的数字大于100,则重置为100
745   - if (row.num > 100) {
746   - row.num = 100;
747   - }
748   - },
749   -  answerMoveUp (index) {      
750   -       [this.options[index],this.options[index-1]]=[this.options[index - 1],this.options[index]]
751   - console.log(this.options[index])
752   - this.options[index].index = index - 1
753   -       this.options.sort()
754   -
755   -
756   -     },
757   -     answerMoveDown (index) {
758   -       [this.options[index],this.options[index+1]]=[this.options[index+1],this.options[index]]
759   - this.options[index].index = index + 1
760   -       this.options.sort()
761   -
762   -     },
  612 + });
763 613 },
764   - };
765   -</script>
766   -
767   -<style scoped>
768   - .zhuti {
769   - padding: 0 20px 20px 20px;
770   - min-height: calc(100vh - 50px - 20px);
771   - background-color: #fff;
772   - }
773 614  
774   - .chengeXia {
775   - border-bottom: 6px solid #3f9b6a;
776   - padding-bottom: 4px;
777   - color: #3f9b6a;
778   - }
  615 + closeFn(val) {
  616 + if (val == 1) {
  617 + this.ggXin = false;
  618 + } else {
  619 + this.bainjiBox = false;
  620 + }
  621 + },
779 622  
780   - /deep/ .el-form-item__content {
781   - line-height: 0;
782   - }
  623 + // 查询按钮
  624 + async onSubmit() {
  625 + const res = await QuestionGetAll(this.formSel);
  626 + this.tableData = res.data.content;
  627 + this.total = res.data.totalElements;
  628 + },
  629 + // 重置按钮
  630 + resetting() {
  631 + this.formSel = {
  632 + questionBank: "用户端题库",
  633 + pageNumber: 0,
  634 + pageSize: 10,
  635 + };
  636 + this.currentPage = 1;
  637 + this.pageindex.pageNumber = 0;
  638 + this.getAll();
  639 + },
  640 + addOption() {
  641 + const newOption = {
  642 + index: this.options.length + 1,
  643 + name: "",
  644 + readonly: false,
  645 + };
  646 + this.options.push(newOption);
  647 + },
  648 + deleteOption(index) {
  649 + this.options.splice(index, 1);
  650 + },
  651 + bianls(item) {
  652 + let settings = null;
  653 + let socer = null;
  654 + if (typeof item.optionSettings !== "object") {
  655 + settings = JSON.parse(item.optionSettings);
  656 + } else {
  657 + settings = item.optionSettings;
  658 + }
  659 + if (typeof item.score !== "object") {
  660 + socer = JSON.parse(item.score);
  661 + } else {
  662 + socer = item.score;
  663 + }
  664 + console.log("我是点击后的数据",item)
  665 + const keys = Object.keys(settings);
  666 + this.options = keys.map((key) => ({
  667 + index: parseInt(key), // 将字符串键转换为整数
  668 + name: settings[key],
  669 + num: socer[key], // 添加 socer 的值
  670 + }));
  671 +
  672 + this.bainjiBox = true;
  673 + //判断item.maxChoose是undefined的话,默认为0
  674 +
  675 + this.secondData = item;
  676 + this.secondData.maxChoose = item.maxChoose || 0;
  677 + },
  678 + tikuDel(item) {
  679 + const h = this.$createElement;
  680 + this.$msgbox({
  681 + title: "消息",
  682 + message: h("p", null, [h("span", null, "是否删除 ")]),
  683 + showCancelButton: true,
  684 + showClose: false,
  685 + confirmButtonText: "确定",
  686 + cancelButtonText: "取消",
  687 + customClass: "oe-dialog-btn",
  688 + beforeClose: (action, instance, done) => {
  689 + if (action === "confirm") {
  690 + QuestionDel({
  691 + id: item.id,
  692 + }).then((res) => {
  693 + this.getAll();
  694 + done();
  695 + });
  696 + } else {
  697 + done();
  698 + }
  699 + },
  700 + });
  701 + },
  702 + async tikuBox(val) {
  703 + this.pageindex.questionBank = val;
783 704  
784   - .tableBtn {
785   - display: inline-block;
786   - margin-right: 10px;
787   - color: #acacac;
788   - cursor: pointer;
789   - }
  705 + const res = await QuestionGetAll(this.pageindex);
  706 + this.tableData = res.data.content;
  707 + this.total = res.data.totalElements;
  708 + },
  709 + addTimu() {
  710 + this.formInline = {
  711 + tikuTitle: "",
  712 + questionType: "",
  713 + questionBank: "用户端题库",
  714 + isRequired: "必填",
  715 + maxChoose: 0,
  716 + layoutType: 1,
  717 + questionDescription: "",
  718 + optionSettings: {},
  719 + };
  720 + this.options = [];
  721 + // this.$refs.reform.resetFields()
  722 + this.ggXin = true;
  723 + },
  724 + validateScore(row) {
  725 + // 如果输入的不是数字或者是NaN,则重置为1
  726 + if (isNaN(row.num) || row.num < 0) {
  727 + row.num = 0;
  728 + }
  729 + // 如果输入的数字大于100,则重置为100
  730 + if (row.num > 100) {
  731 + row.num = 100;
  732 + }
  733 + },
  734 + answerMoveUp(index) {
  735 + [this.options[index], this.options[index - 1]] = [this.options[index - 1], this.options[index]]
  736 + console.log(this.options[index])
  737 + this.options[index].index = index - 1
  738 + this.options.sort()
790 739  
791   - .formSearch {
792   - display: flex;
793   - width: 100%;
794   - font-size: 14px;
795   - justify-content: space-between;
796   - }
797 740  
798   - .greens {
799   - color: #3f9b6a;
800   - }
  741 + },
  742 + answerMoveDown(index) {
  743 + [this.options[index], this.options[index + 1]] = [this.options[index + 1], this.options[index]]
  744 + this.options[index].index = index + 1
  745 + this.options.sort()
801 746  
802   - /deep/ .el-table__row {
803   - font-size: 14px;
804   - color: #000000e6;
805   - height: 42px;
806   - }
  747 + },
  748 + },
  749 +};
  750 +</script>
807 751  
808   - .fenye {
809   - margin-top: 20px;
810   - display: flex;
811   - justify-content: flex-end;
  752 +<style scoped>
  753 +.zhuti {
  754 + padding: 0 20px 20px 20px;
  755 + min-height: calc(100vh - 50px - 20px);
  756 + background-color: #fff;
  757 +}
  758 +
  759 +.chengeXia {
  760 + border-bottom: 6px solid #3f9b6a;
  761 + padding-bottom: 4px;
  762 + color: #3f9b6a;
  763 +}
  764 +
  765 +/deep/ .el-form-item__content {
  766 + line-height: 0;
  767 +}
  768 +
  769 +.tableBtn {
  770 + display: inline-block;
  771 + margin-right: 10px;
  772 + color: #acacac;
  773 + cursor: pointer;
  774 +}
  775 +
  776 +.formSearch {
  777 + display: flex;
  778 + width: 100%;
  779 + font-size: 14px;
  780 + justify-content: space-between;
  781 +}
  782 +
  783 +.greens {
  784 + color: #3f9b6a;
  785 +}
  786 +
  787 +/deep/ .el-table__row {
  788 + font-size: 14px;
  789 + color: #000000e6;
  790 + height: 42px;
  791 +}
  792 +
  793 +.fenye {
  794 + margin-top: 20px;
  795 + display: flex;
  796 + justify-content: flex-end;
  797 +}
  798 +
  799 +/deep/ .el-pagination.is-background .el-pager li:not(.disabled).active {
  800 + background-color: #3f9b6a;
  801 +}
  802 +
  803 +.el-row {
  804 + margin-bottom: 20px;
  805 +
  806 + &:last-child {
  807 + margin-bottom: 0;
812 808 }
813   -
814   - /deep/ .el-pagination.is-background .el-pager li:not(.disabled).active {
815   - background-color: #3f9b6a;
  809 +}
  810 +
  811 +.el-col {
  812 + border-radius: 4px;
  813 +}
  814 +
  815 +.bg-purple-dark {
  816 + background: #99a9bf;
  817 +}
  818 +
  819 +.bg-purple {
  820 + background: #d3dce6;
  821 +}
  822 +
  823 +.bg-purple-light {
  824 + background: #e5e9f2;
  825 +}
  826 +
  827 +.grid-content {
  828 + border-radius: 4px;
  829 + min-height: 36px;
  830 +}
  831 +
  832 +.row-bg {
  833 + padding: 10px 0;
  834 + background-color: #f9fafc;
  835 +}
  836 +
  837 +/deep/ .bg-purple[data-v-0e3fe4ec] {
  838 + background: #fff;
  839 + height: 50px;
  840 +}
  841 +
  842 +/deep/ .bg-purple[data-v-3bebae82] {
  843 + background: #fff;
  844 + height: 50px;
  845 +}
  846 +
  847 +::v-deep .bg-purple {
  848 + background: #fff;
  849 + height: 50px;
  850 +}
  851 +
  852 +/deep/ .el-form--label-top .el-form-item__label {
  853 + padding: 0;
  854 +}
  855 +
  856 +::v-deep .el-form-item {
  857 + margin-bottom: 16px;
  858 +}
  859 +
  860 +.device-form .el-form-item__label::after {
  861 + content: "*";
  862 + color: #1a1a1a;
  863 + margin-left: 5px;
  864 + font-size: 16px;
  865 +}
  866 +
  867 +::v-deep .el-dialog__wrapper {
  868 + .el-dialog__header {
  869 + background-color: #fafafa;
816 870 }
  871 +}
  872 +
  873 +::v-deep .el-input__inner:focus {
  874 + border: #3f9b6a 1px solid;
  875 +}
  876 +
  877 +.dialog-footer {
  878 + display: flex;
  879 + justify-content: flex-end;
  880 + border-top: solid rgba(209, 209, 209, 0.2) 2px;
  881 + padding-top: 20px;
  882 +}
  883 +
  884 +::v-deep .el-input__inner:focus {
  885 + border: #3f9b6a 1px solid;
  886 +}
  887 +
  888 +::v-deep .el-input__inner:hover {
  889 + border: #3f9b6a 1px solid;
  890 +}
  891 +
  892 +::v-deep .el-select .el-input.is-focus .el-input__inner {
  893 + border-color: #3f9b6a;
  894 +}
  895 +
  896 +.el-select-dropdown__item.selected {
  897 + color: #3f9b6a;
  898 +}
  899 +
  900 +.el-pagination__sizes .el-input .el-input__inner:hover {
  901 + border-color: #3f9b6a;
  902 +}
  903 +
  904 +::v-deep .el-dialog__wrapper {
  905 + .dialog_css {
  906 + margin-right: 12px;
  907 + margin-top: 61px !important;
817 908  
818   - .el-row {
819   - margin-bottom: 20px;
820   -
821   - &:last-child {
822   - margin-bottom: 0;
  909 + .el-dialog__title {
  910 + font-size: 16px !important;
  911 + font-weight: 600;
  912 + color: #000;
823 913 }
824 914 }
825 915  
826   - .el-col {
827   - border-radius: 4px;
828   - }
829   -
830   - .bg-purple-dark {
831   - background: #99a9bf;
832   - }
833   -
834   - .bg-purple {
835   - background: #d3dce6;
836   - }
837   -
838   - .bg-purple-light {
839   - background: #e5e9f2;
840   - }
841   -
842   - .grid-content {
843   - border-radius: 4px;
844   - min-height: 36px;
845   - }
846   -
847   - .row-bg {
848   - padding: 10px 0;
849   - background-color: #f9fafc;
850   - }
851   -
852   - /deep/ .bg-purple[data-v-0e3fe4ec] {
853   - background: #fff;
854   - height: 50px;
855   - }
856   -
857   - /deep/ .bg-purple[data-v-3bebae82] {
858   - background: #fff;
859   - height: 50px;
860   - }
861   -
862   - ::v-deep .bg-purple {
863   - background: #fff;
864   - height: 50px;
865   - }
866   -
867   - /deep/ .el-form--label-top .el-form-item__label {
868   - padding: 0;
  916 + .diaslog_zhong {
  917 + margin-left: 25%;
  918 + margin-top: 61px !important;
869 919 }
  920 +}
870 921  
871   - ::v-deep .el-form-item {
872   - margin-bottom: 16px;
873   - }
  922 +::v-deep .diaslog_zhong {
  923 + margin-left: 20%;
  924 + margin-top: 61px !important;
874 925  
875   - .device-form .el-form-item__label::after {
876   - content: "*";
877   - color: #1a1a1a;
878   - margin-left: 5px;
879   - font-size: 16px;
880   - }
  926 + .el-dialog__header {
  927 + background-color: #fff;
  928 + border-bottom: 1px solid #efefef;
881 929  
882   - ::v-deep .el-dialog__wrapper {
883   - .el-dialog__header {
884   - background-color: #fafafa;
  930 + .el-dialog__title {
  931 + font-size: 14px;
  932 + color: #000000e6;
885 933 }
886 934 }
887 935  
888   - ::v-deep .el-input__inner:focus {
889   - border: #3f9b6a 1px solid;
  936 + .el-dialog__body {
  937 + padding: 10px 30px 30px 20px;
890 938 }
  939 +}
891 940  
892   - .dialog-footer {
893   - display: flex;
894   - justify-content: flex-end;
895   - border-top: solid rgba(209, 209, 209, 0.2) 2px;
896   - padding-top: 20px;
897   - }
898   -
899   - ::v-deep .el-input__inner:focus {
900   - border: #3f9b6a 1px solid;
901   - }
  941 +/deep/ .el-table_1_column_8 .hetong {
  942 + color: #7dbb9a;
  943 + text-decoration: underline;
  944 +}
902 945  
903   - ::v-deep .el-input__inner:hover {
904   - border: #3f9b6a 1px solid;
905   - }
  946 +/deep/ .first-column-bg {
  947 + background-color: #fafafa !important;
  948 +}
906 949  
907   - ::v-deep .el-select .el-input.is-focus .el-input__inner {
908   - border-color: #3f9b6a;
909   - }
910   -
911   - .el-select-dropdown__item.selected {
912   - color: #3f9b6a;
913   - }
  950 +::v-deep .textarea {
  951 + width: 85%;
914 952  
915   - .el-pagination__sizes .el-input .el-input__inner:hover {
916   - border-color: #3f9b6a;
  953 + .el-textarea__inner {
  954 + width: 100%;
917 955 }
  956 +}
918 957  
919   - ::v-deep .el-dialog__wrapper {
920   - .dialog_css {
921   - margin-right: 12px;
922   - margin-top: 61px !important;
923   -
924   - .el-dialog__title {
925   - font-size: 16px !important;
926   - font-weight: 600;
927   - color: #000;
928   - }
929   - }
  958 +::v-deep .pass_input {
  959 + width: 100%;
930 960  
931   - .diaslog_zhong {
932   - margin-left: 25%;
933   - margin-top: 61px !important;
934   - }
  961 + .el-input__inner {
  962 + border: none;
  963 + padding: 0;
935 964 }
  965 +}
936 966  
937   - ::v-deep .diaslog_zhong {
938   - margin-left: 20%;
939   - margin-top: 61px !important;
940   -
941   - .el-dialog__header {
942   - background-color: #fff;
943   - border-bottom: 1px solid #efefef;
  967 +::v-deep .pass_select {
  968 + width: 100%;
944 969  
945   - .el-dialog__title {
946   - font-size: 14px;
947   - color: #000000e6;
948   - }
949   - }
950   -
951   - .el-dialog__body {
952   - padding: 10px 30px 30px 20px;
953   - }
954   - }
955   -
956   - /deep/ .el-table_1_column_8 .hetong {
957   - color: #7dbb9a;
958   - text-decoration: underline;
959   - }
960   -
961   - /deep/ .first-column-bg {
962   - background-color: #fafafa !important;
  970 + .el-input__inner {
  971 + border: none;
  972 + padding: 0;
963 973 }
964 974  
965   - ::v-deep .textarea {
966   - width: 85%;
967   -
968   - .el-textarea__inner {
969   - width: 100%;
970   - }
  975 + .el-icon-arrow-up:before {
  976 + content: "";
971 977 }
972   -
973   - ::v-deep .pass_input {
974   - width: 100%;
975   -
976   - .el-input__inner {
977   - border: none;
978   - padding: 0;
979   - }
  978 +}
  979 +
  980 +/deep/ .el-table--enable-row-hover .el-table__body tr:hover>td.el-table__cell {
  981 + background-color: #fff;
  982 +}
  983 +/deep/ .el-input-number__decrease,/deep/.el-input-number__increase{
  984 + height: 30px !important;
  985 + line-height: 32px !important;
  986 + margin-top: 3px;
  987 +}
  988 +</style>
  989 +<style lang="scss" scoped>
  990 +::v-deep .bian_css {
  991 + .el-dialog__header {
  992 + padding: 0px;
980 993 }
981 994  
982   - ::v-deep .pass_select {
983   - width: 100%;
984   -
985   - .el-input__inner {
986   - border: none;
987   - padding: 0;
988   - }
989   -
990   - .el-icon-arrow-up:before {
991   - content: "";
992   - }
  995 + .el-input__inner {
  996 + height: 18px;
  997 + border: 0px;
  998 + margin-top: 0px;
993 999 }
994 1000  
995   - /deep/ .el-table--enable-row-hover .el-table__body tr:hover>td.el-table__cell {
996   - background-color: #fff;
  1001 + .el-input__inner:hover {
  1002 + border: 0px;
997 1003 }
998   -</style>
999   -<style lang="scss" scoped>
1000   - ::v-deep .bian_css {
1001   - .el-dialog__header {
1002   - padding: 0px;
1003   - }
1004   -
1005   - .el-input__inner {
1006   - height: 18px;
1007   - border: 0px;
1008   - margin-top: 0px;
1009   - }
1010   -
1011   - .el-input__inner:hover {
1012   - border: 0px;
1013   - }
1014 1004  
1015   - .el-input__inner:focus {
1016   - border: 0px;
1017   - }
  1005 + .el-input__inner:focus {
  1006 + border: 0px;
1018 1007 }
1019   -
1020   - ::v-deep .buttonHover:hover {
1021   - color: #3f9b6a !important;
1022   - border-color: #c5e1d2 !important;
1023   - background-color: #ecf5f0 !important;
1024   - outline: none;
  1008 +}
  1009 +
  1010 +::v-deep .buttonHover:hover {
  1011 + color: #3f9b6a !important;
  1012 + border-color: #c5e1d2 !important;
  1013 + background-color: #ecf5f0 !important;
  1014 + outline: none;
  1015 +}
  1016 +
  1017 +::v-deep .el-pagination__total {
  1018 + position: absolute;
  1019 + left: 33px;
  1020 +}
  1021 +
  1022 +::v-deep .diaslog_zhong {
  1023 + .el-dialog__body {
  1024 + padding: 10px 20px 20px 20px;
1025 1025 }
1026 1026  
1027   - ::v-deep .el-pagination__total {
1028   - position: absolute;
1029   - left: 33px;
  1027 + .el-upload--picture-card {
  1028 + width: 130px;
  1029 + height: 130px;
1030 1030 }
  1031 +}
1031 1032  
1032   - ::v-deep .diaslog_zhong {
1033   - .el-dialog__body {
1034   - padding: 10px 20px 20px 20px;
1035   - }
1036   -
1037   - .el-upload--picture-card {
1038   - width: 130px;
1039   - height: 130px;
1040   - }
1041   - }
1042 1033 </style>
1043 1034 \ No newline at end of file
... ...
wenjuan/.DS_Store 0 → 100644
No preview for this file type