This repository has been archived on 2024-09-18. You can view files and clone it, but cannot push or open issues or pull requests.
elder_inst_Miniprogram/src/pages_radioQustion/pages/index.vue

166 lines
4.2 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view class="form-container">
<u-form :model="form" label-width="250px" label-position="top">
<u-divider></u-divider>
<view v-for="(parent, index) in firstArray" :key="parent.questionId">
<text>{{ parent.questionName }}</text>
<template v-if="secondArray[index] === '是否'">
<u-radio-group v-model="selectedValues[index]">
<u-radio :value="parent.value" size="large">是</u-radio>
<u-radio :value="0" size="large">否</u-radio>
</u-radio-group>
</template>
<template v-else>
<u-radio-group v-model="selectedValues[index]">
<u-radio v-for="child in secondArray[index]" :key="child.questionId" :value="child.value"
size="large">
{{ child.questionName }}
</u-radio>
</u-radio-group>
</template>
</view>
<u-form-item class="submit-btn-container">
<u-button type="primary" @click="submitForm">提交</u-button>
<u-button @click="goBack">取消</u-button>
</u-form-item>
</u-form>
</view>
</template>
<script setup>
import {
ref,
onMounted
} from 'vue';
import {
onLoad,
onShow,
onHide,
onReady
} from '@dcloudio/uni-app'
import {
useRoute
} from 'vue-router'; // 如果使用 vue-router
import {
listQuestionnaireTemplate,
listElderProfile,
addLrnlpg
} from '@/api/elder/pensionAssessment/fwzypgmb/index';
const name = ref('');
const loading = ref(false); // 定义 loading 变量
const DataList = ref([]); // 定义 DataList 变量
const total = ref(0); // 定义 total 变量
const elderList = ref([])
const firstArray = ref([]);
const secondArray = ref([]);
const selectedValues = ref([]);
const questionTitles = ref([])
const dataList = ref([])
let moban=ref({})
const questionnaireTemplateList = ref([])
const isSubmitting = ref(false);
const route = useRoute(); // 使用 vue-router 获取当前路由信息
onLoad((option) => {
console.log('-----option',JSON.parse(option.item))
moban.value = JSON.parse(option.item)
console.log('-----option',moban.value.elderQuestionnairePaperId)
getList();
})
function getList() {
loading.value = true;
const receivedName = moban.value.elderQuestionnairePaperId;
// 更新响应式数据
name.value = receivedName ? decodeURIComponent(receivedName) : '';
console.log("Received name:", name.value);
listElderProfile().then((res) => {
// console.log("老人信息", res.rows[0]);
elderList.value = res.rows[0]
// 根据需要处理 res 数据
}).finally(() => {
loading.value = false;
});
listQuestionnaireTemplate({
paperId: moban.value.elderQuestionnairePaperId,
status: 0
}).then((res) => {
questionTitles.value = res.rows;
questionnaireTemplateList.value = res.rows;
firstArray.value = res.rows.filter(item => item.parentQuestionid === null || item.parentQuestionid ===
'0');
secondArray.value = firstArray.value.map(parent => {
const children = res.rows.filter(item => item.parentQuestionid === parent.questionId);
if (parent.questionType === '2') {
return '是否';
} else {
return children;
}
});
selectedValues.value = new Array(firstArray.value.length).fill(null);
console.log(selectedValues.value, 888)
// 更新总数
total.value = res.total;
}).finally(() => {
loading.value = false;
});
}
function submitForm() {
if (isSubmitting.value) {
console.log('提交已被锁定,防止多次提交');
return; // 防止多次提交
}
isSubmitting.value = true; // 标记为正在提交
// 创建一个空的list
const list = [];
const params = new URLSearchParams(location.search);
// 遍历firstArray生成包含questionId和value的对象
firstArray.value.forEach((parent, index) => {
list.push({
questionId: parent.questionId,
value: selectedValues.value[index]
});
});
// 打印list以便调试
console.log('生成的list:', list);
addLrnlpg({
list,
elderName: elderList.value.name,
birthDate: elderList.value.birthday,
elderNumber: elderList.value.sn,
elderProfileId: elderList.value.id,
elderQuestionnairePaperId: route.query.name,
gender: elderList.value.gender,
}).then(res => {
console.log(res)
})
}
function goBack() {
console.log('Cancel button clicked');
};
onMounted(() => {
});
</script>