fix: render错误数据不同步问题
This commit is contained in:
parent
6b7b3a12d8
commit
9afd1d1c7c
@ -30,7 +30,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import { computed, ref, watch, toRefs } from 'vue'
|
import { ref, watch, toRefs } from 'vue'
|
||||||
import communalLoader from '@materials/communals/communalLoader.js'
|
import communalLoader from '@materials/communals/communalLoader.js'
|
||||||
import MaterialGroup from '@/management/pages/edit/components/MaterialGroup.vue'
|
import MaterialGroup from '@/management/pages/edit/components/MaterialGroup.vue'
|
||||||
import { storeToRefs } from 'pinia'
|
import { storeToRefs } from 'pinia'
|
||||||
@ -47,12 +47,12 @@ const mainOperation = ref(null)
|
|||||||
const materialGroup = ref(null)
|
const materialGroup = ref(null)
|
||||||
|
|
||||||
const { bannerConf, submitConf, skinConf } = toRefs(schema)
|
const { bannerConf, submitConf, skinConf } = toRefs(schema)
|
||||||
const autoScrollData = computed(() => {
|
// const autoScrollData = computed(() => {
|
||||||
return {
|
// return {
|
||||||
currentEditOne: currentEditOne.value,
|
// currentEditOne: currentEditOne.value,
|
||||||
len: questionDataList.value.length
|
// len: questionDataList.value.length
|
||||||
}
|
// }
|
||||||
})
|
// })
|
||||||
|
|
||||||
const handleChange = (data) => {
|
const handleChange = (data) => {
|
||||||
if (currentEditOne.value === null) {
|
if (currentEditOne.value === null) {
|
||||||
@ -108,22 +108,24 @@ watch(
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
watch(autoScrollData, (newVal) => {
|
// 实际编辑题目不会只是从上到下而需要上下题目对比。
|
||||||
const { currentEditOne } = newVal
|
// 一直跳动到顶部影响编辑操作,若有场景需要可自行放开
|
||||||
if (typeof currentEditOne === 'number') {
|
// watch(autoScrollData, (newVal) => {
|
||||||
setTimeout(() => {
|
// const { currentEditOne } = newVal
|
||||||
const field = questionDataList.value?.[currentEditOne]?.field
|
// if (typeof currentEditOne === 'number') {
|
||||||
if (field) {
|
// setTimeout(() => {
|
||||||
const questionModule = materialGroup.value?.getQuestionRefByField(field)
|
// const field = questionDataList.value?.[currentEditOne]?.field
|
||||||
if (questionModule && questionModule.$el) {
|
// if (field) {
|
||||||
questionModule.$el.scrollIntoView({
|
// const questionModule = materialGroup.value?.getQuestionRefByField(field)
|
||||||
behavior: 'smooth'
|
// if (questionModule && questionModule.$el) {
|
||||||
})
|
// questionModule.$el.scrollIntoView({
|
||||||
}
|
// behavior: 'smooth'
|
||||||
}
|
// })
|
||||||
}, 0)
|
// }
|
||||||
}
|
// }
|
||||||
})
|
// }, 0)
|
||||||
|
// }
|
||||||
|
// })
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
|
@ -2,16 +2,17 @@
|
|||||||
<div class="result-page-wrap">
|
<div class="result-page-wrap">
|
||||||
<div class="result-page">
|
<div class="result-page">
|
||||||
<div class="page-content">
|
<div class="page-content">
|
||||||
<img class="img" :src="errorImageUrl" />
|
<img class="img" :src="errorImage" />
|
||||||
<div class="msg" v-html="errorMsg"></div>
|
<div class="msg" v-html="errorMsg"></div>
|
||||||
</div>
|
</div>
|
||||||
<LogoIcon :logo-conf="logoConf" :readonly="true" />
|
<LogoIcon :logo-conf="logoConf" :readonly="true" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script setup>
|
||||||
import { computed } from 'vue'
|
import { computed } from 'vue'
|
||||||
// @ts-ignore
|
import { storeToRefs } from 'pinia'
|
||||||
|
|
||||||
import communalLoader from '@materials/communals/communalLoader.js'
|
import communalLoader from '@materials/communals/communalLoader.js'
|
||||||
import { useErrorInfo } from '../stores/errorInfo'
|
import { useErrorInfo } from '../stores/errorInfo'
|
||||||
import { useSurveyStore } from '../stores/survey'
|
import { useSurveyStore } from '../stores/survey'
|
||||||
@ -19,20 +20,21 @@ import { useSurveyStore } from '../stores/survey'
|
|||||||
const LogoIcon = communalLoader.loadComponent('LogoIcon')
|
const LogoIcon = communalLoader.loadComponent('LogoIcon')
|
||||||
|
|
||||||
const surveyStore = useSurveyStore()
|
const surveyStore = useSurveyStore()
|
||||||
const { errorInfo } = useErrorInfo()
|
const errorStore = useErrorInfo()
|
||||||
|
const { errorInfo } = storeToRefs(errorStore)
|
||||||
|
const imageMap = {
|
||||||
|
overTime: '/imgs/icons/overtime.webp',
|
||||||
|
default: '/imgs/icons/error.webp'
|
||||||
|
}
|
||||||
|
|
||||||
const errorImageUrl = computed(() => {
|
const errorImage = computed(() => {
|
||||||
const errorType = errorInfo?.errorType
|
const errorType = errorInfo.value.errorType
|
||||||
const imageMap = {
|
|
||||||
overTime: '/imgs/icons/overtime.webp',
|
|
||||||
default: '/imgs/icons/error.webp'
|
|
||||||
}
|
|
||||||
|
|
||||||
return imageMap[errorType as 'overTime'] || imageMap.default
|
return imageMap[errorType] || imageMap.default
|
||||||
})
|
})
|
||||||
|
|
||||||
const errorMsg = computed(() => {
|
const errorMsg = computed(() => {
|
||||||
return errorInfo?.errorMsg || '提交失败'
|
return errorInfo.value.errorMsg || '提交失败'
|
||||||
})
|
})
|
||||||
const logoConf = computed(() => surveyStore.bottomConf || {})
|
const logoConf = computed(() => surveyStore.bottomConf || {})
|
||||||
</script>
|
</script>
|
||||||
|
@ -2,17 +2,17 @@ import { ref } from 'vue'
|
|||||||
import { defineStore } from 'pinia'
|
import { defineStore } from 'pinia'
|
||||||
|
|
||||||
export const useErrorInfo = defineStore('errorInfo', () => {
|
export const useErrorInfo = defineStore('errorInfo', () => {
|
||||||
const errorInfo = ref( {
|
const errorInfo = ref({
|
||||||
errorType: '',
|
errorType: '',
|
||||||
errorMsg: ''
|
errorMsg: ''
|
||||||
})
|
})
|
||||||
|
|
||||||
const setErrorInfo = ( { errorType, errorMsg }) => {
|
const setErrorInfo = ({ errorType, errorMsg }) => {
|
||||||
errorInfo.value = {
|
errorInfo.value = {
|
||||||
errorType,
|
errorType,
|
||||||
errorMsg
|
errorMsg
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
errorInfo,
|
errorInfo,
|
||||||
|
@ -61,7 +61,7 @@ export const useSurveyStore = defineStore('survey', () => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const canFillQuestionnaire = (baseConf) => {
|
const canFillQuestionnaire = (baseConf, submitConf) => {
|
||||||
const { begTime, endTime, answerBegTime, answerEndTime } = baseConf
|
const { begTime, endTime, answerBegTime, answerEndTime } = baseConf
|
||||||
const { msgContent } = submitConf
|
const { msgContent } = submitConf
|
||||||
const now = Date.now()
|
const now = Date.now()
|
||||||
@ -104,7 +104,7 @@ export const useSurveyStore = defineStore('survey', () => {
|
|||||||
const initSurvey = (option) => {
|
const initSurvey = (option) => {
|
||||||
setEnterTime()
|
setEnterTime()
|
||||||
|
|
||||||
if (!canFillQuestionnaire(option.baseConf)) {
|
if (!canFillQuestionnaire(option.baseConf, option.submitConf)) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -121,6 +121,7 @@ export const useSurveyStore = defineStore('survey', () => {
|
|||||||
questionStore.questionData = questionData
|
questionStore.questionData = questionData
|
||||||
questionStore.questionSeq = questionSeq
|
questionStore.questionSeq = questionSeq
|
||||||
|
|
||||||
|
// 将数据设置到state上
|
||||||
rules.value = _rules
|
rules.value = _rules
|
||||||
bannerConf.value = option.bannerConf
|
bannerConf.value = option.bannerConf
|
||||||
baseConf.value = option.baseConf
|
baseConf.value = option.baseConf
|
||||||
@ -134,6 +135,7 @@ export const useSurveyStore = defineStore('survey', () => {
|
|||||||
questionStore.initVoteData()
|
questionStore.initVoteData()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 用户输入或者选择后,更新表单数据
|
||||||
const changeData = (data) => {
|
const changeData = (data) => {
|
||||||
let { key, value } = data
|
let { key, value } = data
|
||||||
if (key in formValues.value) {
|
if (key in formValues.value) {
|
||||||
|
Loading…
Reference in New Issue
Block a user