Ver Fonte

fix(questionnaire): align preview future options

Developer há 3 semanas atrás
pai
commit
2866150609
3 ficheiros alterados com 38 adições e 6 exclusões
  1. 9 4
      pagesPublish/questionnairePreview.vue
  2. 8 1
      tests/perillScore.test.js
  3. 21 1
      utils/perillScore.js

+ 9 - 4
pagesPublish/questionnairePreview.vue

@@ -49,8 +49,9 @@
 	</view>
 </template>
 
-<script>
-	import QuestionItem from '@/components/QuestionItem/index3.vue'
+<script>
+	import QuestionItem from '@/components/QuestionItem/index3.vue'
+	const { normalizeFutureExpectationOptions } = require('@/utils/perillScore.js')
 	export default {
 		components:{ QuestionItem },
 		data(){
@@ -75,7 +76,9 @@
 				this.isLoading = true;
 				this.$api.get(`/core/team/member/answer/listByUser/${id}`).then(({data:res})=>{
 					if(res.code!==0) return this.$showToast(res.msg)
-					this.list = res.data;
+					this.list = res.data.map(item => Object.assign({}, item, {
+						userAnswer: normalizeFutureExpectationOptions(item.userAnswer)
+					}));
 					this.total = res.data.length;
 					this.isLoading = false;
 				})
@@ -92,7 +95,9 @@
 					if(res.code!==0) return this.$showToast(res.msg)
 					this.arrayKey = 'questionOption';
 					if(res.data){
-						this.list = res.data.detailList||[];
+						this.list = (res.data.detailList||[]).map(item => Object.assign({}, item, {
+							questionOption: normalizeFutureExpectationOptions(item.questionOption)
+						}));
 						this.total = this.list.length;
 					}
 					if(responses[1]){

+ 8 - 1
tests/perillScore.test.js

@@ -1,7 +1,7 @@
 const assert = require('node:assert/strict')
 const fs = require('node:fs')
 const path = require('node:path')
-const { validateFutureExpectation } = require('../utils/perillScore')
+const { validateFutureExpectation, normalizeFutureExpectationOptions } = require('../utils/perillScore')
 
 const method = (assessmentMethod, score) => ({
 	assessmentMethod,
@@ -18,6 +18,13 @@ assert.equal(
 	'一年后期待分应高于现状评分,请注意!'
 )
 
+const previewMethods = normalizeFutureExpectationOptions([
+	{ assessmentMethod: '1', questionOption: [{ number: 1, questionOption: '1-强烈不同意(Strongly disagree)' }] },
+	{ assessmentMethod: '2', questionOption: [{ number: 1, questionOption: '1-非常不重要(Very unimportant)' }] }
+])
+assert.equal(previewMethods[0].questionOption[0].questionOption, '1-强烈不同意(Strongly disagree)')
+assert.equal(previewMethods[1].questionOption[0].questionOption, '1-强烈不同意(Strongly disagree)')
+
 const questionnaireConfig = fs.readFileSync(
 	path.join(__dirname, '../../ChuangHeng_new/src/views/modules/agent/questionnaireList.vue'),
 	'utf8'

+ 21 - 1
utils/perillScore.js

@@ -15,4 +15,24 @@ function validateFutureExpectation(answerMethods) {
 	return ''
 }
 
-module.exports = { validateFutureExpectation }
+const AGREEMENT_OPTIONS = {
+	1: '1-强烈不同意(Strongly disagree)',
+	2: '2-不同意(Disagree)',
+	3: '3-中立(Neutral)',
+	4: '4-同意(Agree)',
+	5: '5-完全同意(Totally agree)'
+}
+
+function normalizeFutureExpectationOptions(methods) {
+	return (methods || []).map(method => {
+		if (String(method.assessmentMethod) !== '2') return method
+		return Object.assign({}, method, {
+			questionOption: (method.questionOption || []).map(option => {
+				const text = AGREEMENT_OPTIONS[option.number]
+				return text ? Object.assign({}, option, { questionOption: text }) : option
+			})
+		})
+	})
+}
+
+module.exports = { validateFutureExpectation, normalizeFutureExpectationOptions }