From efaccf60778159aa09681754eecd0e84b50b5f17 Mon Sep 17 00:00:00 2001
From: 84702473 <84702473@qq.com>
Date: 星期四, 09 三月 2023 22:52:18 +0800
Subject: [PATCH] 修改最后一环节的操作方式,实现拖拽效果

---
 src/views/exam/paper/values.vue |  816 +++++++++++++++++++++++++++------------------------------
 1 files changed, 383 insertions(+), 433 deletions(-)

diff --git a/src/views/exam/paper/values.vue b/src/views/exam/paper/values.vue
index 38d8fbf..40de040 100644
--- a/src/views/exam/paper/values.vue
+++ b/src/views/exam/paper/values.vue
@@ -9,17 +9,28 @@
 					{{$t('values_title_description')}}
 				</div>
 				<div style="display: flex;justify-content: flex-start;padding: 10px 0;">
-					<el-button @click="step1_start" type="primary" v-if="!step1Start">{{$t('start')}}</el-button>
-					<el-button style="margin-top: 12px;" @click="step1_next" v-if="(step1Start && itemSize>0)">
-						{{$t('next')}}</el-button>
+					<el-button @click="step1_start" type="primary" round v-if="!step1Start">{{$t('start')}}</el-button>
+					<el-button style="margin-top: 12px;" type="primary" round @click="step1_next"
+						v-if="(step1Start && itemSize>0)">
+						{{$t('next')}}
+					</el-button>
 				</div>
 				<div class="mullinediv" v-if="step1Start">
-					<div v-for="question in questionItems" class="mullinediv-item" v-if="isNull(question.analyze)">
-						<el-image :src="question.imgUrl" lazy :preview-src-list="[question.imgUrl]"></el-image>
-						<div style="display: flex; justify-content: space-between;padding: 5px 10px;margin-top: -5px;">
-							<i class="el-icon-success" @click="likeMe(question.id)"></i>
-							<i class="el-icon-question" @click="iAmNotSure(question.id)"></i>
-							<i class="el-icon-error" @click="unLikeMe(question.id)"></i>
+					<div v-for="(question,index1) in questionItems" class="mullinediv-item"
+						v-if="isNull(question.content)">
+						<div style="display: flex; justify-content: flex-end;margin-right: -20px;">
+							<el-image class="tools-button" :src="require('@/assets/exam-paper/scale.png')"
+								@click="previewImg('qImg'+question.id,question.id)"></el-image>
+						</div>
+						<el-image :ref="'qImg'+question.id" :src="question.imgUrl" lazy
+							:preview-src-list="[question.imgUrl]"></el-image>
+						<div style="display: flex; justify-content: space-between;">
+							<el-image class="tools-button" :src="require('@/assets/exam-paper/nogood.png')"
+								@click="unLikeMe(question.id)"></el-image>
+							<el-image class="tools-button" :src="require('@/assets/exam-paper/question.png')"
+								@click="iAmNotSure(question.id)"></el-image>
+							<el-image class="tools-button" :src="require('@/assets/exam-paper/good.png')"
+								@click="likeMe(question.id)"></el-image>
 						</div>
 					</div>
 				</div>
@@ -30,7 +41,7 @@
 				<div>
 					<div class="tag-group">
 						<span class="tag-group__title"
-							style="padding-right: 20px;">{{$t('values_cur_step')}}锛坽{step2SubStep}} /
+							style="padding-right: 20px;font-size: 26px;">{{$t('values_cur_step')}}锛坽{step2SubStep}} /
 							{{step2ScoreRanges.length}})</span>
 						<el-tag v-for="item in step2ScoreRanges" :key="item.itemOrder"
 							:type="getStep2StepTagType(item.step)" style="margin: 0 2px;font-size: 26px;" size="large"
@@ -40,7 +51,8 @@
 					</div>
 					<div style="display: flex;justify-content: space-between;">
 						<div style="line-height: 50px;text-indent: 2em;">
-							<span v-if="(step2SubStep == step2ScoreRanges.length) && (step2ScoreRanges.length % 2 == 1)">
+							<span
+								v-if="(step2SubStep == step2ScoreRanges.length) && (step2ScoreRanges.length % 2 == 1)">
 								{{$t('values_step_tips_for_3').replace('%N',getStep2StepItem(step2SubStep).quantity)}}
 							</span>
 							<span v-else>
@@ -48,8 +60,9 @@
 							</span>
 						</div>
 						<div style="display: flex;justify-content: flex-end;">
-							<el-button style="" @click="step2_pre" v-if="step2SubStep>1">{{$t('pre')}}</el-button>
-							<el-button style="" @click="step2_next">{{$t('next')}}</el-button>
+							<el-button type="primary" round @click="step2_pre" v-if="step2SubStep>1">{{$t('pre')}}
+							</el-button>
+							<el-button type="primary" round @click="step2_next">{{$t('next')}}</el-button>
 						</div>
 					</div>
 				</div>
@@ -59,44 +72,65 @@
 							/ {{getStep2StepItem(step2SubStep).quantity}}</span> </el-divider>
 					<div style="">
 						<div class="inlinediv">
-							<div v-for="question in questionItems" class="mullinediv-item"
+							<div v-for="(question,index2) in questionItems" class="mullinediv-item"
 								v-if="getStep2StepItem(step2SubStep).itemOrder == question.subjectId">
-								<el-image :src="question.imgUrl" lazy :preview-src-list="[question.imgUrl]"></el-image>
-								<div style="display: flex;justify-content: center;padding: 5px 10px;">
-									<!--/*background-color: #c8c3c3;*/-->
-									<i class="el-icon-delete"
-										@click="step2Delete(question.id,getStep2StepItem(step2SubStep).itemOrder)"></i>
-									<!-- <i class="el-icon-zoom-in"></i> -->
+								<el-image :ref="'q2SelectImg'+question.id" :src="question.imgUrl" lazy
+									:preview-src-list="[question.imgUrl]"></el-image>
+								<div style="display: flex; justify-content: space-between;">
+									<el-image class="tools-button" :src="require('@/assets/exam-paper/no.png')"
+										@click="step2Delete(question.id,getStep2StepItem(step2SubStep).itemOrder)">
+									</el-image>
+									<el-image class="tools-button" :src="require('@/assets/exam-paper/scale.png')"
+										@click="previewImg('q2SelectImg'+question.id)"></el-image>
 								</div>
 							</div>
 						</div>
 					</div>
-						<el-divider content-position="left">{{$t('values_select_tips')}}</el-divider>
-						<div style="height: auto;overflow: auto;">
-							<div class="mullinediv" style="" v-if="questionItems && questionItems.length>0">
-								<div v-for="question in questionItems" class="mullinediv-item"
-									v-if="isNull(question.subjectId)">
-									<el-image :src="question.imgUrl" lazy :preview-src-list="[question.imgUrl]"></el-image>
-									<div style="display: flex; justify-content: center;padding: 5px 10px;margin-top: -5px;">
-										<el-checkbox
-											@change="checked=>step2Add(checked,question.id,getStep2StepItem(step2SubStep).itemOrder)">
-											{{$t('values_select')}}</el-checkbox>
-										<!-- <i class="el-icon-check"></i> -->
-										<!-- <i class="el-icon-zoom-in"></i> -->
-									</div>
+					<el-divider content-position="left">{{$t('values_select_tips')}}</el-divider>
+					<div style="height: auto;overflow: auto;">
+						<div class="mullinediv" style="" v-if="questionItems && questionItems.length>0">
+							<div v-for="(question,index3) in questionItems" class="mullinediv-item"
+								v-if="isNull(question.subjectId)">
+								<el-image :ref="'q2Img'+question.id" :src="question.imgUrl" lazy
+									:preview-src-list="[question.imgUrl]"></el-image>
+								<div style="display: flex; justify-content: space-between;">
+									<el-image class="tools-button" :src="require('@/assets/exam-paper/yes.png')"
+										@click="step2Add(question.id,getStep2StepItem(step2SubStep).itemOrder)">
+									</el-image>
+									<el-image class="tools-button" :src="require('@/assets/exam-paper/scale.png')"
+										@click="previewImg('q2Img'+question.id)"></el-image>
 								</div>
 							</div>
-							<div class="mullinediv" style="" v-if="sumUnSelectedNum()<=0">
-								{{$t('values_no_select')}}
-							</div>
+						</div>
+						<div class="mullinediv" style="" v-if="sumStep2UnSelectedNum()<=0">
+							{{$t('values_no_select')}}
 						</div>
 					</div>
+				</div>
 			</el-main>
 		</el-container>
 		<el-container class="app-item-contain step3" v-if="step === 'step3'">
 			<el-main class="">
-				<div style="display:flex;">
-					<div style="display: inline-block;min-width: 110px;text-align: right;">
+				<div style="position: fixed;z-index: 999; width:90%; top: 56px;">
+					<div style="display: flex;justify-content: flex-end;">
+						<div style="padding: 0 10px;">{{$t('values_pic_tmpArea')}}</div>
+						<draggable animation="300" class="pic-tmparea-div"
+							style="background-color: #f5f7fa;border: 1px solid gray;padding: 10px;width: 50%;"
+							:list="step3EWEIArea[0]" group="article" @start="step3TmpAreaStart"
+							@end="step3MoveFromTmpAreaEnd">
+							<div v-for="q in step3EWEIArea[0]" :key="q.id" class="mullinediv-item2"
+								:qId="q.id">
+								<el-image :src="q.imgUrl" lazy :preview-src-list="[q.imgUrl]" fit="fill"></el-image>
+							</div>
+						</draggable>
+						<el-button type="primary" round style="height: fit-content;margin: 0 10px;"
+							@click="step3_commit" :disabled="submitDisable">
+							{{$t('commit')}}
+						</el-button>
+					</div>
+				</div>
+				<div style="display:flex;margin-top: 160px;">
+					<div style="display: inline-block;min-width: 150px;text-align: right;">
 						<div class="mul-inlinediv-row mul-inlinediv-lineheight"
 							v-for="(item,index) in step2ScoreRanges">
 							{{(index == 0)?$t('values_mostLikeMe'):''}}{{(index == (step2ScoreRanges.length-1))?$t('values_mostUnLikeMe'):''}}
@@ -104,28 +138,28 @@
 						</div>
 					</div>
 					<div class="mul-inlinediv-box">
+
 						<div class="mul-inlinediv" v-for="item in step2ScoreRanges">
 							<div class="mul-inlinediv-row">
-								<div v-for="question in questionItems" class="mullinediv-item"
-									v-if="question.subjectId == item.itemOrder">
-									<el-image :src="question.imgUrl" lazy :preview-src-list="[question.imgUrl]">
-									</el-image>
-									<div style="display: flex;justify-content: center;padding: 5px 10px;">
-										<!--/*background-color: #c8c3c3;*/-->
-										<el-checkbox v-model="question['checked']"
-											@change="checked=>step3Change(checked,question)"
-											:disabled="(step3ChangeSrc.subjectId != question.subjectId || step3ChangeSrc.id == question.id)?false:true">
-											{{(step3ChangeSrc.id==null)?$t('values_select'):(question.id==step3ChangeSrc.id)?$t('values_select'):$t('values_select_exchange')}}
-										</el-checkbox>
+								<draggable animation="300" :class="item.itemOrder"
+									:list="step3EWEIArea[item.itemOrder]"
+									:options="{group:{name:'article'}}" filter=".undraggable"
+									@end="step3MoveToTmpAreaEnd" :scoreRangeId="item.itemOrder">
+									<div v-for="q in step3EWEIArea[item.itemOrder]" :key="q.id"
+										class="mul-inlinediv-item" :qId="q.id">
+										<el-image :src="q.imgUrl" lazy :preview-src-list="[q.imgUrl]" v-if="q.imgUrl">
+										</el-image>
 									</div>
-								</div>
+									<div class="mul-inlinediv-item"
+										v-for="c in (item.quantity - step3EWEIArea[item.itemOrder].length)">
+										<el-image :src="require('@/assets/exam-paper/none.png')" class="undraggable">
+										</el-image>
+									</div>
+								</draggable>
 							</div>
 						</div>
+
 					</div>
-				</div>
-				<div style="display: flex;justify-content: center;">
-					<el-button style="margin-top: 12px;" @click="step3_commit" :disabled="submitDisable">
-						{{$t('commit')}}</el-button>
 				</div>
 			</el-main>
 		</el-container>
@@ -150,9 +184,13 @@
 	import examPaperApi from '@/api/examPaper'
 	import examPaperAnswerApi from '@/api/examPaperAnswer'
 	import demographyApi from '@/api/demography'
+	import draggable from 'vuedraggable'
 
 	export default {
 		name: 'values',
+		components: {
+			draggable
+		},
 		data() {
 			return {
 				step: 'step1',
@@ -181,6 +219,7 @@
 					"id": null,
 					"subjectId": null,
 				},
+				step3EWEIArea: [1],
 				form: {
 					"id": 92,
 					"level": 1,
@@ -421,7 +460,6 @@
 			}
 		},
 		created: function() {
-			console.log("created......", this.$route.query.formDo)
 			//console.log(".....................Test. config start......................")
 			//if(this.memberToken == '' || this.memberToken == undefined) this.setMemberTocken("4bdcf437-185c-4f4e-9528-382c99509ea6")
 			//console.log(".....................Test. config ednd.......................")
@@ -430,6 +468,7 @@
 			_this.setLangFlag(false)
 			_this.form = this.$route.query.formDo
 			if (_this.form !== {} && _this.form !== undefined && typeof(_this.form) !== "string") {
+				console.log("created......get from query", _this.form)
 				_this.formLoading = true
 				_this.remainTime = _this.form.suggestTime * 60
 				_this.titleItemsLength = _this.form.titleItems.length
@@ -455,6 +494,7 @@
 						}
 						// 鍔犺浇棰樼洰
 						examPaperApi.select(_this.memberToken, _this.langType).then(re => {
+							console.log("created......get from db", re.response)
 							_this.form = re.response
 							_this.remainTime = re.response.suggestTime * 60
 							_this.titleItemsLength = _this.form.titleItems.length
@@ -528,6 +568,10 @@
 		},
 		mounted() {
 			//console.log("mounted......")
+			document.body.ondrop = function(event) {
+				event.preventDefault();
+				event.stopPropagation();
+			}
 		},
 		beforeDestroy() {
 			window.clearInterval(this.timer)
@@ -539,9 +583,23 @@
 				this.questionItems.sort(function(i2, i1) {
 					return (i2.id - i1.id)
 				})
-				//console.log('step1_start...',this.questionItems)
+				//test
+				//this.initTestData()
+				//鍥炴樉锛屾病鏈夊彲閫夌殑鏃跺�欙紝杩涘叆涓嬩竴姝�
+				let c = this.sumStep1UnSelectedNum()
+				if (c <= 0 && this.itemSize > 0) {
+					this.step = "step2"
+					this.sortQuestions()
+					this.caculateScoreRangeSelectedById(this.getStep2StepItem(this.step2SubStep).itemOrder)
+				}
 			},
 			step1_next() {
+				let _this = this
+				let c = this.sumStep1UnSelectedNum()
+				if (c > 0) {
+					this.$message.error(_this.$t('values_nextStepTips_choices_all'))
+					return
+				}
 				this.step = "step2"
 				this.sortQuestions()
 				this.caculateScoreRangeSelectedById(this.getStep2StepItem(this.step2SubStep).itemOrder)
@@ -554,16 +612,18 @@
 			step2_next() {
 				let _this = this
 				let stepItem = this.getStep2StepItem(this.step2SubStep)
-				if (stepItem.selected == stepItem.quantity || this.sumUnSelectedNum() == 0) {
+				if (stepItem.selected == stepItem.quantity || this.sumStep2UnSelectedNum() == 0) {
 					_this.answer.verifyStatus = 2
 					_this.submitSubAnswer()
 
 					this.step2SubStep = this.step2SubStep + 1
-					if(this.step2SubStep == this.step2ScoreRanges.length){//杩涘叆鏈�鍚庝竴姝ラ
-						this.resetAllQuestionItemsValueByKeyWhenNull("subjectId",this.getStep2StepItem(this.step2SubStep).itemOrder)
+					if (this.step2SubStep == this.step2ScoreRanges.length) { //杩涘叆鏈�鍚庝竴姝ラ
+						this.resetAllQuestionItemsValueByKeyWhenNull("subjectId", this.getStep2StepItem(this.step2SubStep)
+							.itemOrder)
 					}
-					if (this.step2SubStep > this.step2ScoreRanges.length) {//瀹屾垚鏈�鍚庝竴姝ラ
+					if (this.step2SubStep > this.step2ScoreRanges.length) { //瀹屾垚鏈�鍚庝竴姝ラ
 						this.step = "step3"
+						this.buildStep3EWEIArea()
 					}
 
 					this.sortQuestions()
@@ -578,12 +638,12 @@
 				}
 			},
 			step2Delete(qid, sid) {
-				this.resetQuestionItemsValueById(qid, "subjectId", null) //鍊熺敤subjectId锛屽瓨鍌�
+				this.resetQuestionItemsSubjectIdById(qid, null) //鍊熺敤subjectId锛屽瓨鍌�
 				this.caculateScoreRangeSelectedById(sid, -1)
 			},
-			step2Add(value, qid, sid) {
+			step2Add(qid, sid) {
 				//console.log("step2Add....",value,qid,sid)
-				this.resetQuestionItemsValueById(qid, "subjectId", sid) //鍊熺敤subjectId锛屽瓨鍌�
+				this.resetQuestionItemsSubjectIdById(qid, sid) //鍊熺敤subjectId锛屽瓨鍌�
 				this.caculateScoreRangeSelectedById(sid, 1)
 			},
 			step3Change(value, question) {
@@ -599,9 +659,9 @@
 						//瀵硅皟鑷繁
 					} else {
 						//瀵硅皟
-						this.resetQuestionItemsValueById(this.step3ChangeSrc.id, "subjectId", question
+						this.resetQuestionItemsSubjectIdById(this.step3ChangeSrc.id, question
 							.subjectId) //鍊熺敤subjectId锛屽瓨鍌�
-						this.resetQuestionItemsValueById(question.id, "subjectId", this.step3ChangeSrc
+						this.resetQuestionItemsSubjectIdById(question.id, this.step3ChangeSrc
 							.subjectId) //鍊熺敤subjectId锛屽瓨鍌�
 					}
 					//娓呯悊
@@ -612,7 +672,50 @@
 					}
 				}
 			},
-			sumUnSelectedNum() {
+			/**
+			 * 鏍规嵁QuestionItems锛屾瀯寤轰簩缁村浘琛ㄦ暟鎹�
+			 */
+			buildStep3EWEIArea() {
+				this.step3EWEIArea = [this.step2ScoreRanges.length + 1]
+				this.step3EWEIArea[0] = []
+				this.$set(this.step3EWEIArea, 0, this.step3EWEIArea[0])
+				for (let item of this.step2ScoreRanges) {
+					this.step3EWEIArea[item.itemOrder] = []
+					for (let q = 1; q <= item.quantity; q++) {
+						let t = this.getQuestionItemsByKey("subjectId", item.itemOrder, q)
+						if (t.id) {
+							this.step3EWEIArea[item.itemOrder].push(t)
+						}
+					}
+					this.$set(this.step3EWEIArea, item.itemOrder, this.step3EWEIArea[item
+						.itemOrder])
+				}
+				console.log('buildStep3EWEIArea', this.step3EWEIArea)
+			},
+
+			step3TmpAreaStart(ev) {
+				//console.log('step3TmpAreaStart', ev)
+			},
+			step3MoveFromTmpAreaEnd(ev) {
+				//console.log('step3MoveFromTmpAreaEnd s', ev, ev.to)
+				// let options,qId
+				// qId = ev.item.attributes.qId.value
+				// for(let p of ev.to){
+				// 	if(this.isNotEmpty(p['options'])) {
+				// 		options = p['options']
+				// 		break
+				// 	}
+				// }
+				// let scoreRangeId = options.scoreRangeId
+			},
+
+			step3MoveToTmpAreaEnd(ev) {
+				//console.log('step3MoveToTmpAreaEnd')
+				//let qId = ev.item.attributes.qId.value
+				//console.log('step3MoveToTmpAreaEnd end', this.step3EWEIArea)
+			},
+
+			sumStep2UnSelectedNum() {
 				let count = 0
 				for (let item of this.questionItems) {
 					if (this.isNull(item['subjectId'])) {
@@ -621,8 +724,24 @@
 				}
 				return count
 			},
+			sumStep1UnSelectedNum() {
+				let count = 0
+				for (let item of this.questionItems) {
+					if (this.isNull(item['content'])) {
+						count = count + 1
+					}
+				}
+				return count
+			},
 			step3_commit() {
 				let _this = this
+
+				if (_this.step3EWEIArea[0].length > 0) {
+					this.$message.error(_this.$t('values_nextStepTips_choices_all'))
+					return
+				}
+				_this.resetAllQuestionItemsValueByEWEIArea()
+
 				window.clearInterval(_this.timer)
 				_this.submitDisable = true
 				_this.formLoading = true
@@ -631,6 +750,7 @@
 				_this.submitAnswer(_this.$t('values_finishValuesInfo'))
 			},
 			getLikeTypeByScoreRangeItemOrder(itemOrder) {
+				if (this.isNull(itemOrder)) return null;
 				let step = 0
 				for (let item of this.step2ScoreRanges) {
 					if (item.itemOrder === itemOrder) {
@@ -669,45 +789,64 @@
 				switch (type) {
 					case 0: //0:鏈�鍍忔垜
 						this.questionItems.sort(function(i2, i1) {
-							return (i2.analyze == 'Like') ? -1 : 1
+							return (i2.content == 0) ? -1 : 1
 						})
 						break
 					case 1: //1:鏈夌枒闂�
 						this.questionItems.sort(function(i2, i1) {
-							return (i2.analyze == 'NotSure') ? -1 : 1
+							return (i2.content == 1) ? -1 : 1
 						})
 						break
 					case 2: //2:鏈�涓嶅儚鎴�
 						this.questionItems.sort(function(i2, i1) {
-							return (i2.analyze == 'UnLike') ? -1 : 1
+							return (i2.content == 2) ? -1 : 1
 						})
 						break
 				}
 			},
 
 			likeMe(id) {
+				let _this = this
 				this.step1SelectedNum = this.step1SelectedNum + 1
-				this.resetQuestionItemsValueById(id, "analyze", "Like") //鍊熺敤analyze锛屽瓨鍌�
+				this.resetQuestionItemsContentById(id, 0) //鍊熺敤analyze锛屽瓨鍌�"Like"
+
+				_this.answer.verifyStatus = 2
+				_this.submitSubAnswer()
 			},
 			iAmNotSure(id) {
+				let _this = this
 				this.step1SelectedNum = this.step1SelectedNum + 1
-				this.resetQuestionItemsValueById(id, "analyze", "NotSure")
+				this.resetQuestionItemsContentById(id, 1) //"NotSure"
+
+				_this.answer.verifyStatus = 2
+				_this.submitSubAnswer()
 			},
 			unLikeMe(id) {
+				let _this = this
 				this.step1SelectedNum = this.step1SelectedNum + 1
-				this.resetQuestionItemsValueById(id, "analyze", "UnLike")
+				this.resetQuestionItemsContentById(id, 2) //"UnLike"
+
+				_this.answer.verifyStatus = 2
+				_this.submitSubAnswer()
 			},
-			resetQuestionItemsValueById(id, key, value) {
+			resetQuestionItemsContentById(id, value) {
 				for (let item of this.questionItems) {
-					if (item.id === id) {
-						item[key] = value
-						if ("subjectId" == key) {
-							item['content'] = this.getLikeTypeByScoreRangeItemOrder(value)
-						}
+					if (item.id == id) {
+						item["content"] = value
 					}
 				}
-				//console.log('resetQuestionItems...',id,key,value,this.questionItems)
+				//console.log('resetQuestionItems...', id, value, this.questionItems)
 			},
+			resetQuestionItemsSubjectIdById(id, value) {
+				for (let item of this.questionItems) {
+					if (item.id == id) {
+						item["subjectId"] = value
+						item['content'] = this.getLikeTypeByScoreRangeItemOrder(value)
+					}
+				}
+				//console.log('resetQuestionItems...', id, value, this.questionItems)
+			},
+			//璁剧疆鎵�鏈夋湭鏈夊綊灞炴楠わ紙subjectId锛夌殑QuestionItems涓烘柊鐨勫綊灞炴楠わ紙subjectId锛�
 			resetAllQuestionItemsValueByKeyWhenNull(key, value) {
 				for (let item of this.questionItems) {
 					if (this.isNull(item[key])) {
@@ -719,6 +858,39 @@
 				}
 				//console.log('resetQuestionItems...',id,key,value,this.questionItems)
 			},
+			//鏍规嵁浜岀淮鍥捐〃鏁版嵁閲嶈QuestionItems鐨勫綊灞炴楠わ紙subjectId锛�
+			resetAllQuestionItemsValueByEWEIArea() {
+				for (let i = 1; i < this.step3EWEIArea.length; i++) {
+					for (let q of this.step3EWEIArea[i]) {
+						this.resetQuestionItemsSubjectIdById(q.id, i)
+					}
+				}
+				console.log('resetQuestionItems...by EWEIArea', this.questionItems)
+			},
+			getQuestionItemsByKey(key, stepOrder, index) {
+				let arr = []
+				for (let item of this.questionItems) {
+					if (!this.isNull(item[key])) {
+						if (item[key] == stepOrder) {
+							arr.push(item)
+						}
+					}
+				}
+				//console.log('getQuestionItemsByKey',key,stepOrder,index,arr,this.questionItems)
+				if (index <= arr.length) {
+					return arr[index - 1]
+				}
+				return {
+					id: null,
+					imgUrl: null,
+					subjectId: null
+				}
+			},
+			/**
+			 * 璁$畻姝ラid鐨勫凡閫夋嫨鏁伴噺
+			 * @param {Object} id
+			 * @param {Object} value
+			 */
 			caculateScoreRangeSelectedById(id, value) {
 				let sum = 0
 				for (let item of this.questionItems) {
@@ -727,339 +899,33 @@
 					}
 				}
 				for (let item of this.step2ScoreRanges) {
-					if (item.itemOrder === id) {
+					if (item.itemOrder == id) {
 						item['selected'] = sum
 					}
 				}
 			},
 			initTestData() {
-				let _this = this
-				//for test
-				_this.step2ScoreRanges = [].concat([{
-						"itemOrder": 1,
-						"quantity": 1,
-						"score": 5,
-						"completed": false,
-						"questionReports": null
-					},
-					{
-						"itemOrder": 2,
-						"quantity": 2,
-						"score": 5,
-						"completed": false,
-						"questionReports": null
-					},
-					{
-						"itemOrder": 3,
-						"quantity": 10,
-						"score": 5,
-						"completed": false,
-						"questionReports": null
-					},
-					{
-						"itemOrder": 4,
-						"quantity": 2,
-						"score": 5,
-						"completed": false,
-						"questionReports": null
-					},
-					{
-						"itemOrder": 5,
-						"quantity": 1,
-						"score": 5,
-						"completed": false,
-						"questionReports": null
-					},
-					// {
-					//     "itemOrder": 6,
-					//     "quantity": 2,
-					//     "score": 5,
-					//     "completed": false,
-					//     "questionReports": null
-					// },
-					// {
-					//     "itemOrder": 7,
-					//     "quantity": 2,
-					//     "score": 5,
-					//     "completed": false,
-					//     "questionReports": null
-					// },
-					// {
-					//     "itemOrder": 8,
-					//     "quantity": 2,
-					//     "score": 5,
-					//     "completed": false,
-					//     "questionReports": null
-					// },
-				])
-
-				_this.questionItems = _this.questionItems.concat([{
-						"id": 100,
-						"questionType": 1,
-						"subjectId": 3,
-						"title": "楹诲皢妗�",
-						"gradeLevel": null,
-						"items": [{
-							"prefix": "1",
-							"content": "0",
-							"score": "0"
-						}],
-						"analyze": "Like",
-						"correctArray": null,
-						"correct": null,
-						"score": "0",
-						"difficult": null,
-						"itemOrder": 1,
-						"questionOrder": 0,
-						"permanentId": "VAQ00001",
-						"questionReport": null,
-						"startTime": null,
-						"endTime": null,
-						"partOrder": 1,
-						"parentQuestionId": null,
-						"template": null,
-						"questionNumber": null,
-						"content": null,
-						"imgUrl": "http://47.114.179.216:8090/profile/images/2022/12/26/b698d623e7c9a55d9017ffa08477b121.jpg"
-					},
-					{
-						"id": 101,
-						"questionType": 1,
-						"subjectId": 3,
-						"title": "楹诲皢妗�",
-						"gradeLevel": null,
-						"items": [{
-							"prefix": "1",
-							"content": "0",
-							"score": "0"
-						}],
-						"analyze": "UnLike",
-						"correctArray": null,
-						"correct": null,
-						"score": "0",
-						"difficult": null,
-						"itemOrder": 1,
-						"questionOrder": 0,
-						"permanentId": "VAQ00001",
-						"questionReport": null,
-						"startTime": null,
-						"endTime": null,
-						"partOrder": 1,
-						"parentQuestionId": null,
-						"template": null,
-						"questionNumber": null,
-						"content": null,
-						"imgUrl": "http://47.114.179.216:8090/profile/images/2022/12/26/b698d623e7c9a55d9017ffa08477b121.jpg"
-					},
-					{
-						"id": 102,
-						"questionType": 1,
-						"subjectId": 3,
-						"title": "楹诲皢妗�",
-						"gradeLevel": null,
-						"items": [{
-							"prefix": "1",
-							"content": "0",
-							"score": "0"
-						}],
-						"analyze": "NotSure",
-						"correctArray": null,
-						"correct": null,
-						"score": "0",
-						"difficult": null,
-						"itemOrder": 1,
-						"questionOrder": 0,
-						"permanentId": "VAQ00001",
-						"questionReport": null,
-						"startTime": null,
-						"endTime": null,
-						"partOrder": 1,
-						"parentQuestionId": null,
-						"template": null,
-						"questionNumber": null,
-						"content": null,
-						"imgUrl": "http://47.114.179.216:8090/profile/images/2022/12/26/b698d623e7c9a55d9017ffa08477b121.jpg"
-					},
-					{
-						"id": 103,
-						"questionType": 1,
-						"subjectId": 3,
-						"title": "楹诲皢妗�",
-						"gradeLevel": null,
-						"items": [{
-							"prefix": "1",
-							"content": "0",
-							"score": "0"
-						}],
-						"analyze": "Like",
-						"correctArray": null,
-						"correct": null,
-						"score": "0",
-						"difficult": null,
-						"itemOrder": 1,
-						"questionOrder": 0,
-						"permanentId": "VAQ00001",
-						"questionReport": null,
-						"startTime": null,
-						"endTime": null,
-						"partOrder": 1,
-						"parentQuestionId": null,
-						"template": null,
-						"questionNumber": null,
-						"content": null,
-						"imgUrl": "http://47.114.179.216:8090/profile/images/2022/12/26/b698d623e7c9a55d9017ffa08477b121.jpg"
-					},
-					{
-						"id": 104,
-						"questionType": 1,
-						"subjectId": 3,
-						"title": "楹诲皢妗�",
-						"gradeLevel": null,
-						"items": [{
-							"prefix": "1",
-							"content": "0",
-							"score": "0"
-						}],
-						"analyze": "UnLike",
-						"correctArray": null,
-						"correct": null,
-						"score": "0",
-						"difficult": null,
-						"itemOrder": 1,
-						"questionOrder": 0,
-						"permanentId": "VAQ00001",
-						"questionReport": null,
-						"startTime": null,
-						"endTime": null,
-						"partOrder": 1,
-						"parentQuestionId": null,
-						"template": null,
-						"questionNumber": null,
-						"content": null,
-						"imgUrl": "http://47.114.179.216:8090/profile/images/2022/12/26/b698d623e7c9a55d9017ffa08477b121.jpg"
-					},
-					{
-						"id": 105,
-						"questionType": 1,
-						"subjectId": 1,
-						"title": "楹诲皢妗�",
-						"gradeLevel": null,
-						"items": [{
-							"prefix": "1",
-							"content": "0",
-							"score": "0"
-						}],
-						"analyze": "NotSure",
-						"correctArray": null,
-						"correct": null,
-						"score": "0",
-						"difficult": null,
-						"itemOrder": 1,
-						"questionOrder": 0,
-						"permanentId": "VAQ00001",
-						"questionReport": null,
-						"startTime": null,
-						"endTime": null,
-						"partOrder": 1,
-						"parentQuestionId": null,
-						"template": null,
-						"questionNumber": null,
-						"content": null,
-						"imgUrl": "http://47.114.179.216:8090/profile/images/2022/12/26/b698d623e7c9a55d9017ffa08477b121.jpg"
-					},
-					{
-						"id": 106,
-						"questionType": 1,
-						"subjectId": 1,
-						"title": "楹诲皢妗�",
-						"gradeLevel": null,
-						"items": [{
-							"prefix": "1",
-							"content": "0",
-							"score": "0"
-						}],
-						"analyze": "Like",
-						"correctArray": null,
-						"correct": null,
-						"score": "0",
-						"difficult": null,
-						"itemOrder": 1,
-						"questionOrder": 0,
-						"permanentId": "VAQ00001",
-						"questionReport": null,
-						"startTime": null,
-						"endTime": null,
-						"partOrder": 1,
-						"parentQuestionId": null,
-						"template": null,
-						"questionNumber": null,
-						"content": null,
-						"imgUrl": "http://47.114.179.216:8090/profile/images/2022/12/26/b698d623e7c9a55d9017ffa08477b121.jpg"
-					},
-					{
-						"id": 107,
-						"questionType": 1,
-						"subjectId": 2,
-						"title": "楹诲皢妗�",
-						"gradeLevel": null,
-						"items": [{
-							"prefix": "1",
-							"content": "0",
-							"score": "0"
-						}],
-						"analyze": "NotSure",
-						"correctArray": null,
-						"correct": null,
-						"score": "0",
-						"difficult": null,
-						"itemOrder": 1,
-						"questionOrder": 0,
-						"permanentId": "VAQ00001",
-						"questionReport": null,
-						"startTime": null,
-						"endTime": null,
-						"partOrder": 1,
-						"parentQuestionId": null,
-						"template": null,
-						"questionNumber": null,
-						"content": null,
-						"imgUrl": "http://47.114.179.216:8090/profile/images/2022/12/26/b698d623e7c9a55d9017ffa08477b121.jpg"
-					},
-					{
-						"id": 108,
-						"questionType": 1,
-						"subjectId": 2,
-						"title": "楹诲皢妗�",
-						"gradeLevel": null,
-						"items": [{
-							"prefix": "1",
-							"content": "0",
-							"score": "0"
-						}],
-						"analyze": "NotSure",
-						"correctArray": null,
-						"correct": null,
-						"score": "0",
-						"difficult": null,
-						"itemOrder": 1,
-						"questionOrder": 0,
-						"permanentId": "VAQ00001",
-						"questionReport": null,
-						"startTime": null,
-						"endTime": null,
-						"partOrder": 1,
-						"parentQuestionId": null,
-						"template": null,
-						"questionNumber": null,
-						"content": null,
-						"imgUrl": "http://47.114.179.216:8090/profile/images/2022/12/26/b698d623e7c9a55d9017ffa08477b121.jpg"
-					},
-				])
+				//console.log('initTestData...s',this.questionItems)
+				for (let item of this.questionItems) {
+					item['content'] = 1
+				}
+				for (let i = 0; i < this.step2ScoreRanges.length; i++) {
+					for (let j = 1; j <= this.step2ScoreRanges[i].quantity; j++) {
+						//console.log('for',i,j,this.step2ScoreRanges,this.questionItems)
+						for (let item of this.questionItems) {
+							if (this.isNull(item["subjectId"])) {
+								item["subjectId"] = this.step2ScoreRanges[i].itemOrder
+								break
+							}
+						}
+					}
+				}
+				console.log('initTestData...e', this.questionItems)
 			},
 			initStep2ScoreRanges(arr) {
+				//console.log('initStep2ScoreRanges...s', arr)
 				let _this = this
 				_this.step2ScoreRanges = _this.step2ScoreRanges.concat(arr)
-				//this.initTestData()
 				let s = 1
 				let a = 2 //-2
 				let max = _this.step2ScoreRanges.length
@@ -1089,17 +955,31 @@
 					//璁剧疆姣忛」step鍋忕鏈�鍚巗tep鐨勬璐熻窛绂诲�硷紙濂囨暟step姝e亸绂伙紝鍋舵暟step璐熷亸绂伙級
 					if (_this.step2ScoreRanges[i]['step'] % 2 == 0) { //鍋舵暟
 						deviate = (max4O - _this.step2ScoreRanges[i]['step']) - (max4O - _this.step2ScoreRanges[i][
-							'step']) / 2
+							'step'
+						]) / 2
 						_this.step2ScoreRanges[i]['deviate'] = 0 - deviate
 					} else {
 						deviate = (max4J - _this.step2ScoreRanges[i]['step']) - (max4J - _this.step2ScoreRanges[i][
-							'step']) / 2
+							'step'
+						]) / 2
 						_this.step2ScoreRanges[i]['deviate'] = deviate
 					}
 					//璁剧疆姣忛」宸查�夋嫨鐨勬暟閲�
 					_this.step2ScoreRanges[i]['selected'] = 0
 				}
-				//console.log('initStep2ScoreRanges...', this.step2ScoreRanges)
+				console.log('initStep2ScoreRanges...e', this.step2ScoreRanges)
+				_this.initQuestionItems()
+			},
+			initQuestionItems(){
+				let _this = this
+				for (let sr of _this.step2ScoreRanges) {
+					if(_this.isNotEmpty(sr['questionReports'])){
+						for(let q of sr.questionReports){
+							_this.resetQuestionItemsSubjectIdById(q.questionId,sr.itemOrder)
+						}
+					}
+				}
+				console.log('initQuestionItems...e', this.questionItems)
 			},
 			getStep2StepTagType(step) {
 				if (this.step2SubStep > step) {
@@ -1180,7 +1060,7 @@
 
 				// 鍒濆鍖栧紑濮嬫椂闂达紝璁剧疆绗竴涓椂闂�
 				for (let i = 0; i < this.answer.answerItems.length; i++) {
-					if (this.answer.answerItems[i].startTime == null || this.answer.answerItems[i].startTime.trim() ===
+					if (this.answer.answerItems[i].startTime == null || this.answer.answerItems[i].startTime.trim() ==
 						'') {
 						this.answer.answerItems[i].startTime = this.formatDate(new Date(), 'yyyy-MM-dd hh:mm:ss')
 						break
@@ -1254,6 +1134,16 @@
 			isEmpty(obj) {
 				return !this.isNotEmpty(obj)
 			},
+			getContentByQuestionId(id) {
+				let cont
+				for (let item of this.questionItems) {
+					if (item.id == id) {
+						cont = item.content
+						break
+					}
+				}
+				return cont;
+			},
 			getSubmitAnswerValue(nowPartOrder) {
 				let _this = this
 				let answerSubmit = JSON.parse(JSON.stringify(_this.answer))
@@ -1264,7 +1154,8 @@
 						answerItem.startTime = ''
 					}
 					answerItem.completed = true
-					//answerItem.content = this.getLikeTypeByScoreRangeItemOrder(answerItem.subjectId)
+					answerItem.content = this.getContentByQuestionId(answerItem
+						.questionId) //this.getLikeTypeByScoreRangeItemOrder(answerItem.subjectId)
 					answerItem.questionReport = {
 						questionOrder: answerItem.questionId,
 						questionTitle: answerItem.title,
@@ -1295,9 +1186,10 @@
 					item['completed'] = true
 					item['questionReports'] = []
 					for (let question of _this.questionItems) {
-						if (question.subjectId === item.itemOrder) {
+						if (question.subjectId == item.itemOrder) {
 							item['questionReports'].push({
-								questionOrder: question.questionOrder, //棰樼洰ID
+								questionId: question.id, //棰樼洰ID
+								questionOrder: question.questionOrder, //棰樼洰搴忓彿
 								questionTitle: question.questionTitle, //棰樼洰鏍囬
 								permanentId: question.permanentId, //棰樼洰姘镐箙缂栧彿
 								startTime: question.startTime, //绛旈寮�濮嬫椂闂�
@@ -1314,6 +1206,7 @@
 			},
 
 			submitSubAnswer: function() {
+				console.log('submitSubAnswer...')
 				let _this = this
 				this.answer.answerItems[_this.order].endTime = this.formatDate(new Date(), 'yyyy-MM-dd hh:mm:ss')
 				// 鎻愪氦閮ㄥ垎
@@ -1413,6 +1306,7 @@
 				_this.submitDisable = false
 			},
 			isForFinish(i) {
+				return false
 				return i === this.answer.answerItems.length - 1 && (this.answer.answerItems[i].content !== null && this
 					.answer.answerItems[i].content !== '')
 			},
@@ -1420,6 +1314,9 @@
 				let _this = this
 				return _this.form.titleItems[0].questionItems[_this.order].partOrder !== _this.form.titleItems[0]
 					.questionItems[_this.order - 1].partOrder
+			},
+			previewImg(refName) {
+				this.$refs[refName][0].showViewer = true
 			},
 			...mapMutations('user', ['setMemberTocken']),
 			...mapMutations('user', ['setLangType']),
@@ -1450,13 +1347,14 @@
 	.app-item-contain {
 		margin-top: 45px;
 	}
+
 	.footer {
 		position: absolute;
 		position: fixed;
 		z-index: 1000;
 		bottom: 0px;
 	}
-	
+
 	.mul-inlinediv-box {
 		overflow: auto;
 		display: block;
@@ -1467,26 +1365,44 @@
 		overflow-y: hidden;
 		overflow-x: auto;
 		white-space: nowrap;
-		border: 1px solid gray;
-		padding: 10px 0;
+		//border: 1px solid gray;
+		padding: 2px 0;
 		width: fit-content;
 	}
 
 	.mul-inlinediv div div {
 		display: inline-table;
 		vertical-align: top;
-		width: 180px;
-		margin: 0 2px;
+		width: 80px;
+		height: 80px;
+		min-width: 80px;
+		min-height: 80px;
+		margin: 0px;
 	}
 
 	.mul-inlinediv-row {
-		min-height: 210px;
+		min-height: 100px;
 		margin: 0 10px;
 	}
 
 	.mul-inlinediv-lineheight {
-		line-height: 210px;
-		padding: 10px 0;
+		line-height: 100px;
+		margin: 3px 0 4px 0;
+	}
+
+	.mul-inlinediv-item {
+		display: flex;
+		display: inline-block;
+		border: 1px solid gray;
+		width: 100px;
+		height: 100px;
+		padding: 10px;
+
+		.tools-button {
+			width: 20px;
+			height: 20px;
+			cursor: pointer;
+		}
 	}
 
 	.inlinediv {
@@ -1494,14 +1410,24 @@
 		overflow-x: auto;
 		white-space: nowrap;
 		min-height: 180px;
-		display: flex;
+		padding: 10px 0px;
+		//display: flex;
 	}
 
 	.inlinediv div {
-		display: inline-table;
-		vertical-align: top;
-		width: 100px;
-		margin: auto 2px;
+		//display: inline-table;
+		//vertical-align: top;
+		//width: 360px;
+		// margin: auto 2px;
+	}
+
+	.pic-tmparea-div {
+		overflow-y: hidden;
+		overflow-x: auto;
+		white-space: nowrap;
+		min-height: 180px;
+		padding: 10px 0px;
+		//display: flex;
 	}
 
 	.mullinediv {
@@ -1510,21 +1436,39 @@
 
 	.mullinediv-item {
 		display: flex;
-		display:
-			inline-block;
-		width: 180px;
+		display: inline-block;
+		width: 360px;
 		margin: 5px 4px;
+		padding: 10px 30px;
+		box-shadow: 1px 1px 1px grey, 0 0 5px grey, 0 0 10px grey;
+
+		.tools-button {
+			width: 20px;
+			height: 20px;
+			cursor: pointer;
+		}
 	}
 
-	.mullinediv-item:hover {}
+	.mullinediv-item2 {
+		display: inline-block;
+		width: 180px;
+		height: 180px;
+		// margin: 5px 4px;
+		padding: 10px;
+		box-shadow: 1px 1px 1px grey, 0 0 5px grey, 0 0 10px grey;
+
+		div {
+			height: 160px;
+		}
+	}
 
 	img:hover {
-		transform: scale(2);
-		-ms-transform: scale(2);
-		-webkit-transform: scale(2);
-		-o-transform: scale(2);
-		-moz-transform: scale(2);
-		transition-duration: 0.5s;
+		// transform: scale(2);
+		// -ms-transform: scale(2);
+		// -webkit-transform: scale(2);
+		// -o-transform: scale(2);
+		// -moz-transform: scale(2);
+		// transition-duration: 0.5s;
 	}
 
 	.container {
@@ -1534,4 +1478,10 @@
 			width: 600px;
 		}
 	}
+
+	.wrapper {
+		display: flex;
+		justify-content: center;
+		width: 100%;
+	}
 </style>

--
Gitblit v1.9.1