From 44cf4d52899d1211b91fba283a0b6e0a607af9af Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期二, 28 五月 2024 18:28:25 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 h5/pages/answer/answer.vue |  768 +++++++++++++++++++++++++++++++++++-----------------------
 1 files changed, 462 insertions(+), 306 deletions(-)

diff --git a/h5/pages/answer/answer.vue b/h5/pages/answer/answer.vue
index 89aaf04..318242c 100644
--- a/h5/pages/answer/answer.vue
+++ b/h5/pages/answer/answer.vue
@@ -1,50 +1,192 @@
 <template>
-	<view class="box">
-		<view class="box_bgimage" :style="{backgroundImage: 'url(' + bg + ')'}">
-			<text class="box_bgimage_a">{{ title }}</text>
-			<text class="box_bgimage_b">{{ content }}</text>
-		</view>
-		<view class="box_list">
-			<view class="box_list_answer" v-if="list && list.length > 0">
-				<!--    鍒ゆ柇   -->
-<!-- 				<template v-if="list[i].type === 0">
-					<view class="box_list_answer_item" v-for="(item, index) in list[i].options" :key="index" @click="select(index)">
-						<image src="@/static/video_error@2x.png" v-if="success && problemIndex === index" />
-						<image src="@/static/video@2x.png" v-else-if="!String(problemIndex) || problemIndex !== index" />
-						<image src="@/static/video_sel@2x.png" v-else-if="problemIndex === index" />
-						<text style="color: rgba(237, 69, 69, 1)" v-if="success && problemIndex === index">{{item.code}}</text>
-						<text v-else-if="!String(problemIndex) || problemIndex !== index">{{item.code}}</text>
-						<text style="color: rgba(2, 94, 239, 1)" v-else-if="problemIndex === index">{{item.code}}</text>
-					</view>
-				</template> -->
-				<!--    鍗曢��   -->
-				<view v-for="(item,index) in list"  :key="index" class="list_item">
-					<template v-if="item.type == 1">
-						<view class="box_list_answer_name">
-						{{index + 1}}銆亄{item.title}}<text style="color:#ED4545;">*</text>
-					</view>
-					<view class="box_list_answer_item" v-for="(line, lIndex) in item.options" :key="lIndex" @click="select(line, index)">
-						<image  src="@/static/video@2x.png" v-if="!item.selAnswer || item.selAnswer !== line.code" />	
-						<image src="@/static/video_sel@2x.png" v-if="item.selAnswer && item.selAnswer == line.code && item.answer === item.selAnswer" />
-						<image src="@/static/video_error@2x.png" v-if="item.selAnswer && item.selAnswer == line.code && item.answer !== item.selAnswer" />
-						<text v-if="!item.selAnswer"><text class="mr24">{{line.code}}</text> {{line.value}}</text>
-						<text v-if="item.selAnswer && item.answer === item.selAnswer" style="color: rgba(2, 94, 239, 1)" ><text class="mr24" style="color: rgba(2, 94, 239, 1)">{{line.code}}</text> {{line.value}}</text>
-						<text v-if="item.selAnswer && item.answer !== item.selAnswer" style="color: rgba(237, 69, 69, 1)" ><text class="mr24" style="color: rgba(237, 69, 69, 1)">{{line.code}}</text> {{line.value}}</text>
-					</view>
-					<view class="box_list_answer_tips" v-if="item.selAnswer && item.answer !== item.selAnswer">
-						<image src="@/static/ic_wrong@2x.png" />
-						<text>鍥炵瓟閿欒</text>
-					</view>
-					<view class="box_list_answer_tips" v-if="item.selAnswer && item.answer === item.selAnswer">
-						<image src="@/static/meeting/icon/ic_choose_sel@2x.png" />
-						<text>鍥炵瓟姝g‘</text>
-					</view>
-					</template>
-				</view>
-				<view class="empty"></view>
-				<view class="box_list_answer_btn" @click="next()">鎻愪氦</view>
-				<!--    澶氶��    -->
-<!-- 				<template v-else-if="list[i].type === 2">
+  <view class="box">
+    <view class="box_bgimage" :style="{ backgroundImage: 'url(' + bg + ')' }">
+      <text class="box_bgimage_a">{{ title }}</text>
+      <text class="box_bgimage_b">{{ content }}</text>
+    </view>
+    <view class="box_list">
+      <view class="box_list_answer" v-if="list && list.length > 0">
+        <!--    鍗曢��/鍒ゆ柇   -->
+        <view v-for="(item, index) in list" :key="index" class="list_item">
+          <view class="box_list_answer_name">
+            {{ index + 1 }}銆亄{ item.title
+            }}<text style="color: #ed4545">*</text>
+          </view>
+          <template v-if="item.type == 1 || item.type == 0">
+            <view
+              class="box_list_answer_item"
+              v-for="(line, lIndex) in item.options"
+              :key="lIndex"
+              @click="select(line, index)"
+            >
+              <image
+                src="@/static/video@2x.png"
+                v-if="!item.selAnswer || item.selAnswer !== line.code"
+              />
+              <image
+                src="@/static/video_sel@2x.png"
+                v-if="
+                  (item.selAnswer &&
+                    item.answer === item.selAnswer &&
+                    item.selAnswer == line.code) ||
+                  item.selAnswer == line.code
+                "
+              />
+              <image
+                src="@/static/video_error@2x.png"
+                v-if="
+                  item.selAnswer &&
+                  item.selAnswer == line.code &&
+                  item.answer !== item.selAnswer &&
+                  status == '2'
+                "
+              />
+              <text v-if="!item.selAnswer || item.selAnswer !== line.code"
+                ><text class="mr24">{{ line.code }}</text>
+                {{ line.value }}</text
+              >
+              <text
+                v-if="
+                  (item.selAnswer &&
+                    item.answer === item.selAnswer &&
+                    item.selAnswer == line.code) ||
+                  item.selAnswer == line.code
+                "
+                style="color: rgba(2, 94, 239, 1)"
+                ><text class="mr24" style="color: rgba(2, 94, 239, 1)">{{
+                  line.code
+                }}</text>
+                {{ line.value }}</text
+              >
+              <text
+                v-if="
+                  item.selAnswer &&
+                  item.answer !== item.selAnswer &&
+                  status == '2'
+                "
+                style="color: rgba(237, 69, 69, 1)"
+                ><text class="mr24" style="color: rgba(237, 69, 69, 1)">{{
+                  line.code
+                }}</text>
+                {{ line.value }}</text
+              >
+            </view>
+            <view
+              class="box_list_answer_tips"
+              v-if="
+                item.selAnswer &&
+                item.answer !== item.selAnswer &&
+                status != '0'
+              "
+            >
+              <image src="@/static/ic_wrong@2x.png" />
+              <text>鍥炵瓟閿欒</text>
+            </view>
+            <view
+              class="box_list_answer_tips"
+              v-if="
+                item.selAnswer &&
+                item.answer === item.selAnswer &&
+                status != '0'
+              "
+            >
+              <image src="@/static/meeting/icon/ic_choose_sel@2x.png" />
+              <text>鍥炵瓟姝g‘</text>
+            </view>
+          </template>
+          <template v-if="item.type == 2">
+            <view
+              class="box_list_answer_item"
+              v-for="(line, lIndex) in item.options"
+              :key="lIndex"
+              @click="changeBox(index, lIndex)"
+            >
+              <image src="@/static/checkbox@2x.png" v-if="!line.checked" />
+              <image
+                src="@/static/checkbo1x_sel@2x.png"
+                v-if="line.checked || (item.selAnswer === item.answer && line.checked)"
+              />
+              <image
+                src="@/static/checkbox_wrong@2x.png"
+                v-if="
+                  line.checked &&
+                  item.selAnswer !== item.answer &&
+                  status == '2'
+                "
+              />
+              <text v-if="!item.selAnswer || item.selAnswer !== line.code"
+                ><text class="mr24">{{ line.code }}</text>
+                {{ line.value }}</text
+              >
+              <text
+                v-if="
+                  (item.selAnswer &&
+                    item.answer === item.selAnswer &&
+                    item.selAnswer == line.code) ||
+                  item.selAnswer == line.code
+                "
+                style="color: rgba(2, 94, 239, 1)"
+                ><text class="mr24" style="color: rgba(2, 94, 239, 1)">{{
+                  line.code
+                }}</text>
+                {{ line.value }}</text
+              >
+              <text
+                v-if="
+                  item.selAnswer &&
+                  item.answer !== item.selAnswer &&
+                  status == '2'
+                "
+                style="color: rgba(237, 69, 69, 1)"
+                ><text class="mr24" style="color: rgba(237, 69, 69, 1)">{{
+                  line.code
+                }}</text>
+                {{ line.value }}</text
+              >
+            </view>
+            <view
+              class="box_list_answer_tips"
+              v-if="
+                item.selAnswer &&
+                item.answer !== item.selAnswer &&
+                status != '0'
+              "
+            >
+              <image src="@/static/ic_wrong@2x.png" />
+              <text>鍥炵瓟閿欒</text>
+            </view>
+            <view
+              class="box_list_answer_tips"
+              v-if="
+                item.selAnswer &&
+                item.answer === item.selAnswer &&
+                status != '0'
+              "
+            >
+              <image src="@/static/meeting/icon/ic_choose_sel@2x.png" />
+              <text>鍥炵瓟姝g‘</text>
+            </view>
+          </template>
+        </view>
+        <view class="empty"></view>
+        <view
+          v-if="status == '0'"
+          class="box_list_answer_btn"
+          @click="onSubmit()"
+          >鎻愪氦</view
+        >
+        <view v-if="status == '1'" class="box_list_answer_btn" @click="next()"
+          >鎭枩浣犵瓟棰樻垚鍔燂紝鍘荤敵璇�</view
+        >
+        <view
+          v-if="status == '2'"
+          style="background-color: #db534c"
+          class="box_list_answer_btn"
+          @click="status = '0'"
+          >绛旈澶辫触锛屽啀鏉ヤ竴娆�</view
+        >
+        <!--    澶氶��    -->
+        <!-- 				<template v-else-if="list[i].type === 2">
 					<view class="box_list_answer_item" v-for="(item, index) in list[i].options" :key="index"
 						@click="selectMultiple(item.code)">
 						<image src="@/static/checkbox_wrong@2x.png"
@@ -60,272 +202,286 @@
 							v-else-if="multiple.toString().indexOf(item.code) !== -1">{{item.code}} {{item.value}}</text>
 					</view>
 				</template> -->
-			</view>
-		</view>
-	</view>
+      </view>
+    </view>
+  </view>
 </template>
 
 <script>
-	import { getProblemsVO, getSystemDictData } from '@/api'
-	export default {
-		name: 'answer',
+import { getProblemsVO, getSystemDictData } from '@/api'
+export default {
+  name: 'answer',
 
-		data() {
-			return {
-				list: [],
-				bg: require("@/static/banner_dati.jpg"),
-				title: '',
-				content: ''
-			}
-		},
-		
-		onLoad() {
-			this.getProblems()
-			this.getInfo()
-		},
+  data() {
+    return {
+      list: [],
+      bg: require("@/static/banner_dati.jpg"),
+      title: '',
+      content: '',
 
-		methods: {
-			getInfo() {
-				// title
-				getSystemDictData({
-					dictCode: 'SYSTEM',
-					label: 'THEME'
-				}).then(res => {
-					if (res.code === 200) {
-						this.title = res.data.code
-					}
-				})
-				// this.$u.api.getSystemDictData({
-				getSystemDictData({
-					dictCode: 'SYSTEM',
-					label: 'DESCRIPTION'
-				}).then(res => {
-					if (res.code === 200) {
-						this.content = res.data.code
-					}
-				})
-			},
-			getProblems() {
-				getProblemsVO({ useType: 1 })
-					.then(res => {
-						if (res.code === 200) {
-							res.data.forEach(item => {
-								// 鍒ゆ柇
-								if (item.type === 0) {
-									item.options = [{ code: '姝g‘', value: '姝g‘' },{ code: '閿欒', value: '閿欒' }]
-								}
-								// 鍗曢��/澶氶��
-								if (item.type === 1 || item.type === 2) {
-									item.options = JSON.parse(item.options)
-								}
-								item.status = '0'
-								item.selAnswer = null
-							})
-							console.log('options', res.data);
-							this.list = res.data
-						}
-						// res.param.problemsDOList.forEach(item => {
-						// 	item.options = JSON.parse(item.options)
-						// })
-						// this.list = res.param.problemsDOList
-						// console.log(this.list)
-					})
-			},
-			// 鍗曢�夐�夋嫨涓鐩�
-			select(line, i) {
-				this.list.forEach((item,index)=>{
-					if(index === i){
-						item.selAnswer = line.code
-					}
-				})
-				// this.problemIndex = index
-			},
-			sort(arr) {
-				arr.sort(function(a, b) {
-					return a.localeCompare(b)
-				})
-			},
-			// 澶氶��
-			selectMultiple(key) {
-				if (!this.multiple) {
-					this.multiple = key
-					return
-				}
-				let arr = this.multiple.split(',')
-				if (this.multiple.indexOf(key) !== -1) {
-					arr.forEach((item, index) => {
-						if (key === item) {
-							arr.splice(index, 1)
-						}
-					})
-					this.sort(arr)
-					this.multiple = arr.join(',')
-				} else {
-					arr.push(key)
-					this.sort(arr)
-					this.multiple = arr.join(',')
-				}
-			},
-			// 涓嬩竴棰�
-			next() {
-				uni.navigateTo({
-					url: `/pages/userinfo/userinfo?userAnswerId=${1}`
-				})
-				return
-				if (this.list[this.i].type === 0 || this.list[this.i].type === 1) {
-					if (!String(this.problemIndex)) return
-					if (this.list[this.i].answer === this.list[this.i].options[this.problemIndex].code) {
-						this.success = false
-						this.problemIndex = null
-						this.i += 1
-					} else {
-						this.success = true
-					}
-				} else {
-					if (!this.multiple) return
-					if (this.list[this.i].answer === this.multiple) {
-						this.success = false
-						this.multiple = null
-						this.i += 1
-					} else {
-						this.success = true
-					}
-				}
-				if (this.i + 1 > this.list.length) {
-					let arr = []
-					this.list.forEach(item => {
-						arr.push({ id: item.id, answer: item.answer })
-					})
-					this.$u.api.finishAnswer({
-						content: JSON.stringify(arr),
-						openId: this.$store.state.openId,
-						useType: 1
-					}).then(res => {
-						if (res.code === 200) {
-							uni.navigateTo({
-								url: `/pages/userinfo/userinfo?userAnswerId=${res.data}`
-							})
-						}
-					})
-				}
-			}
-		}
-	}
+      status: '0'
+    }
+  },
+
+  onLoad() {
+    this.getProblems()
+    this.getInfo()
+  },
+
+  methods: {
+    getInfo() {
+      // title
+      getSystemDictData({
+        dictCode: 'SYSTEM',
+        label: 'THEME'
+      }).then(res => {
+        if (res.code === 200) {
+          this.title = res.data.code
+        }
+      })
+      // this.$u.api.getSystemDictData({
+      getSystemDictData({
+        dictCode: 'SYSTEM',
+        label: 'DESCRIPTION'
+      }).then(res => {
+        if (res.code === 200) {
+          this.content = res.data.code
+        }
+      })
+    },
+    getProblems() {
+      getProblemsVO({ useType: 1 })
+        .then(res => {
+          if (res.code === 200) {
+            res.data.forEach(item => {
+              // 鍒ゆ柇
+              if (item.type === 0) {
+                item.options = [{ code: '姝g‘' }, { code: '閿欒' }]
+              }
+              // 鍗曢��/澶氶��
+              if (item.type === 1 || item.type === 2) {
+                item.options = JSON.parse(item.options)
+              }
+              if (item.type === 2) {
+                item.options.forEach(i => {
+                  i.checked = false
+                })
+              }
+              item.status = '0'
+              item.selAnswer = null
+            })
+            console.log(res.data)
+            this.list = res.data
+          }
+          // res.param.problemsDOList.forEach(item => {
+          // 	item.options = JSON.parse(item.options)
+          // })
+          // this.list = res.param.problemsDOList
+          // console.log(this.list)
+        })
+    },
+    // 鍗曢�夐�夋嫨涓鐩�
+    select(line, i) {
+      this.list.forEach((item, index) => {
+        if (index === i) {
+          item.selAnswer = line.code
+        }
+      })
+      // this.problemIndex = index
+    },
+    changeBox(index, jeck) {
+      this.list.forEach((item, i) => {
+        if (index === i) {
+          item.options.forEach((item2, j) => {
+            if(j === jeck){
+              item2.checked = !item2.checked
+            }
+          })
+          item.selAnswer = item.options.filter(a => a.checked).map(b => b.code).sort().join(',')
+        }
+      })
+    },
+    sort(arr) {
+      arr.sort(function (a, b) {
+        return a.localeCompare(b)
+      })
+    },
+    // 澶氶��
+    selectMultiple(key) {
+      if (!this.multiple) {
+        this.multiple = key
+        return
+      }
+      let arr = this.multiple.split(',')
+      if (this.multiple.indexOf(key) !== -1) {
+        arr.forEach((item, index) => {
+          if (key === item) {
+            arr.splice(index, 1)
+          }
+        })
+        this.sort(arr)
+        this.multiple = arr.join(',')
+      } else {
+        arr.push(key)
+        this.sort(arr)
+        this.multiple = arr.join(',')
+      }
+    },
+    // 涓嬩竴棰�
+    onSubmit() {
+      const { list } = this
+      // 楠岃瘉鎵�鏈夐鐩兘鏈夐�夐」
+      let count = 0
+      list.forEach(item => {
+        if (!item.selAnswer) {
+          count++
+        }
+      })
+      if (count > 0) {
+        return uni.showToast({
+          title: '璇峰厛瀹屾垚鎵�鏈夌瓟棰樺湪鎻愪氦',
+          icon: 'none'
+        })
+      }
+      // 鍒ゆ柇瀵归敊
+      let flag = 0
+      list.forEach(item => {
+        if (item.selAnswer !== item.answer) {
+          flag++
+        }
+      })
+      if (flag > 0) {
+        this.status = '2'
+        return uni.showToast({
+          title: '绛旈澶辫触锛屽啀鏉ヤ竴娆�',
+          icon: 'none'
+        })
+      } else {
+        this.status = '1'
+      }
+    },
+    next() {
+      uni.navigateTo({
+        url: `/pages/userinfo/userinfo`
+      })
+    }
+  }
+}
 </script>
 
 <style lang="scss" scoped>
-	.box {
-		width: 100%;
-		height: 100vh;
-		background: #025EEF;
-		.box_bgimage {
-			width: 100%;
-			padding: 0 40rpx;
-			box-sizing: border-box;
-			height: 223rpx;
-			display: flex;
-			flex-direction: column;
-			align-items: flex-start;
-			justify-content: center;
-			background-repeat: no-repeat;
-			background-size: cover;
-			.box_bgimage_a {
-				font-size: 54rpx;
-				font-weight: bold;
-				color: #FFFFFF;
-				text-shadow: 0rpx 4rpx 8rpx rgba(0, 0, 0, 0.19);
-			}
-			.box_bgimage_b {
-				font-size: 26rpx;
-				font-weight: 400;
-				color: #FFFFFF;
-				text-shadow: 0rpx 2rpx 4rpx rgba(0, 0, 0, 0.24);
-				margin-top: 18rpx;
-			}
-		}
-		.box_list {
-			width: 100%;
-			height: calc(100vh - 253rpx);
-			padding: 0 30rpx 30rpx 30rpx;
-			box-sizing: border-box;
-			.box_list_answer {
-				width: 100%;
-				height: 100%;
-				overflow-y: auto;
-				background: #FFFFFF;
-				border-radius: 16rpx;
-				padding: 30rpx;
-				box-sizing: border-box;
-				position: relative;
-				.box_list_answer_name {
-					font-size: 30rpx;
-					font-weight: 400;
-					color: #222222;
-					margin-bottom: 32rpx;
-				}
-				.box_list_answer_tips {
-					width: 100%;
-					padding: 22rpx 30rpx;
-					box-sizing: border-box;
-					background: #F7F7F7;
-					border-radius: 8rpx;
-					display: flex;
-					align-items: center;
-					margin-bottom: 24rpx;
-					image {
-						width: 28rpx;
-						height: 28rpx;
-					}
-					text {
-						font-size: 28rpx;
-						font-weight: 400;
-						color: #E42D2D;
-						margin-left: 16rpx;
-					}
-				}
-			}
-			.list_item{
-				margin-bottom: 24rpx;
-			}
-			.box_list_answer_item {
-				width: 100%;
-				display: flex;
-				align-items: center;
-				margin-bottom: 30rpx;
-				image {
-					width: 36rpx;
-					height: 36rpx;
-					margin-right: 20rpx;
-				}
-				text {
-					font-size: 28rpx;
-					font-weight: 400;
-					color: #333333;
-				}
-			}
-			.des {
-				background: #CCCCCC !important;
-				border: none !important;
-			}
-			.empty{
-				height: 160rpx;
-				width: 100%;
-			}
-			.box_list_answer_btn {
-				position: fixed;
-				bottom: 140rpx;
-				left: 60rpx;
-				width: 630rpx;
-				height: 88rpx;
-				line-height: 88rpx;
-				text-align: center;
-				background: #025EEF;
-				box-shadow: 0rpx 4rpx 12rpx 0rpx rgba(2, 94, 239, 0.3);
-				border-radius: 44rpx;
-				font-size: 30rpx;
-				font-weight: 500;
-				color: #FFFFFF;
-			}
-		}
-	}
+.box {
+  width: 100%;
+  height: 100vh;
+  background: #025eef;
+  .box_bgimage {
+    width: 100%;
+    padding: 0 40rpx;
+    box-sizing: border-box;
+    height: 223rpx;
+    display: flex;
+    flex-direction: column;
+    align-items: flex-start;
+    justify-content: center;
+    background-repeat: no-repeat;
+    background-size: cover;
+    .box_bgimage_a {
+      font-size: 54rpx;
+      font-weight: bold;
+      color: #ffffff;
+      text-shadow: 0rpx 4rpx 8rpx rgba(0, 0, 0, 0.19);
+    }
+    .box_bgimage_b {
+      font-size: 26rpx;
+      font-weight: 400;
+      color: #ffffff;
+      text-shadow: 0rpx 2rpx 4rpx rgba(0, 0, 0, 0.24);
+      margin-top: 18rpx;
+    }
+  }
+  .box_list {
+    width: 100%;
+    height: calc(100vh - 253rpx);
+    padding: 0 30rpx 30rpx 30rpx;
+    box-sizing: border-box;
+    .box_list_answer {
+      width: 100%;
+      height: 100%;
+      overflow-y: auto;
+      background: #ffffff;
+      border-radius: 16rpx;
+      padding: 30rpx;
+      box-sizing: border-box;
+      position: relative;
+      .box_list_answer_name {
+        font-size: 30rpx;
+        font-weight: 400;
+        color: #222222;
+        margin-bottom: 32rpx;
+      }
+      .box_list_answer_tips {
+        width: 100%;
+        padding: 22rpx 30rpx;
+        box-sizing: border-box;
+        background: #f7f7f7;
+        border-radius: 8rpx;
+        display: flex;
+        align-items: center;
+        margin-bottom: 24rpx;
+        image {
+          width: 28rpx;
+          height: 28rpx;
+        }
+        text {
+          font-size: 28rpx;
+          font-weight: 400;
+          color: #e42d2d;
+          margin-left: 16rpx;
+        }
+      }
+    }
+    .list_item {
+      margin-bottom: 46rpx;
+    }
+    .box_list_answer_item {
+      width: 100%;
+      display: flex;
+      align-items: center;
+      margin-bottom: 30rpx;
+      image {
+        width: 36rpx;
+        height: 36rpx;
+        margin-right: 20rpx;
+      }
+      text {
+        font-size: 28rpx;
+        font-weight: 400;
+        color: #333333;
+      }
+    }
+    .des {
+      background: #cccccc !important;
+      border: none !important;
+    }
+    .empty {
+      height: 160rpx;
+      width: 100%;
+    }
+    .box_list_answer_btn {
+      position: fixed;
+      bottom: 140rpx;
+      left: 60rpx;
+      width: 630rpx;
+      height: 88rpx;
+      line-height: 88rpx;
+      text-align: center;
+      background: #025eef;
+      box-shadow: 0rpx 4rpx 12rpx 0rpx rgba(2, 94, 239, 0.3);
+      border-radius: 44rpx;
+      font-size: 30rpx;
+      font-weight: 500;
+      color: #ffffff;
+    }
+  }
+}
 </style>
\ No newline at end of file

--
Gitblit v1.9.3