You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
189 lines
4.3 KiB
189 lines
4.3 KiB
<template>
|
|
<u-navbar :title="titleData.title" placeholder="true" bg-color="#F1F3F9" :auto-back="true"></u-navbar>
|
|
<view class="container">
|
|
<u-form labelPosition="top">
|
|
<u-form-item :label="item.title" :prop="item.type" v-for="(item,index) in titleData.question" :key="index">
|
|
<u-input v-model="item.answer" v-if="item.type === 'input'" />
|
|
<u-textarea v-model="item.answer" v-if="item.type === 'textarea'" placeholder="请输入内容"
|
|
autoHeight></u-textarea>
|
|
<u-radio-group v-model="item.answer" v-if="item.type === 'radio'" placement="column"
|
|
@change="groupChange">
|
|
<u-radio :customStyle="{marginBottom: '16rpx'}" v-for="(item, index) in item.choose" :key="index"
|
|
:label="item.name" :name="item.name">
|
|
</u-radio>
|
|
</u-radio-group>
|
|
<u-checkbox-group v-model="item.answer" v-if="item.type === 'checkbox'" placement="column"
|
|
>
|
|
<u-checkbox :customStyle="{marginBottom: '16rpx'}" v-for="(item, index) in item.choose" :key="index"
|
|
:label="item.name" :name="item.name">
|
|
</u-checkbox>
|
|
</u-checkbox-group>
|
|
</u-form-item>
|
|
</u-form>
|
|
</view>
|
|
<view class="baombut">
|
|
<view class="buttt" @click="submit">
|
|
确认提交
|
|
</view>
|
|
</view>
|
|
</template>
|
|
|
|
<script setup>
|
|
import {
|
|
onLoad
|
|
} from '@dcloudio/uni-app'
|
|
import {
|
|
ref
|
|
} from 'vue'
|
|
import {
|
|
specialSign
|
|
} from '@/api/index'
|
|
|
|
const titleData = ref({})
|
|
const ztid = ref('')
|
|
|
|
|
|
function processCheckboxAnswers(arr) {
|
|
return arr.map(item => {
|
|
// 基础对象结构
|
|
const result = { id: item.id };
|
|
|
|
// 处理answer属性
|
|
if (item.type === 'checkbox' && typeof item.answer === 'object') {
|
|
// 将对象值转为逗号分隔的字符串(带中文引号)
|
|
result.answer = Object.values(item.answer)
|
|
.map(val => `'${val}'`)
|
|
.join(',');
|
|
} else {
|
|
// 非checkbox类型或answer非对象的情况
|
|
result.answer = item.answer;
|
|
}
|
|
|
|
return result;
|
|
});
|
|
}
|
|
|
|
// 提交方法
|
|
function submit() {
|
|
let istrue = true
|
|
titleData.value.question.forEach((ele) => {
|
|
if (ele.answer === '' || !ele.answer) {
|
|
uni.showToast({
|
|
title: '请填写选择完整',
|
|
duration: 3000,
|
|
icon:'error'
|
|
})
|
|
istrue = false
|
|
}
|
|
})
|
|
if(istrue) {
|
|
let param = {
|
|
special_list_id: ztid.value,
|
|
form_id: titleData.value.form_id,
|
|
answer: processCheckboxAnswers(titleData.value.question)
|
|
}
|
|
specialSign(param).then((res)=> {
|
|
if(res.code === 1) {
|
|
uni.showToast({
|
|
title: '提交成功!',
|
|
duration: 2000
|
|
})
|
|
setTimeout(()=> {
|
|
uni.navigateBack()
|
|
},2000)
|
|
} else {
|
|
uni.showToast({
|
|
title: res.msg,
|
|
})
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
onLoad(async (param) => {
|
|
ztid.value = param.id
|
|
titleData.value = JSON.parse(param.form)
|
|
})
|
|
</script>
|
|
|
|
<style scoped lang="scss">
|
|
.container {
|
|
background-color: #F1F3F9;
|
|
height: calc(100vh - 350rpx);
|
|
width: 100%;
|
|
padding: 0 48rpx;
|
|
box-sizing: border-box;
|
|
overflow-y: auto;
|
|
|
|
.titlepart {
|
|
display: flex;
|
|
align-items: baseline;
|
|
margin-bottom: 40rpx;
|
|
|
|
.title {
|
|
font-family: Source Han Sans;
|
|
font-weight: 550;
|
|
font-size: 36rpx;
|
|
color: #0c092a;
|
|
margin-left: 20rpx;
|
|
}
|
|
}
|
|
|
|
.text {
|
|
margin-top: 32rpx;
|
|
font-family: Source Han Sans;
|
|
font-size: 32rpx;
|
|
font-weight: 300;
|
|
line-height: 60rpx;
|
|
letter-spacing: normal;
|
|
color: #3d3d3d;
|
|
}
|
|
|
|
.fbtime {
|
|
font-family: Roboto;
|
|
font-size: 28rpx;
|
|
font-weight: normal;
|
|
line-height: 142rpx;
|
|
letter-spacing: normal;
|
|
/* 外部/SCMP Grey/nobel */
|
|
/* 样式描述:06 Small Grey txt */
|
|
color: #a1a1a1;
|
|
}
|
|
|
|
:deep(.u-input) {
|
|
background-color: #FFFFFF;
|
|
}
|
|
|
|
:deep(.u-form-item__body__left__content__label) {
|
|
white-space: nowrap;
|
|
font-family: Source Han Sans;
|
|
font-size: 28rpx;
|
|
color: #0C092A;
|
|
}
|
|
}
|
|
|
|
.baombut {
|
|
width: 100%;
|
|
padding: 36rpx 0;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
box-shadow: 0rpx 0rpx 20rpx 0rpx rgba(0, 0, 0, 0.3);
|
|
background: #FFFFFF;
|
|
position: fixed;
|
|
bottom: 0;
|
|
|
|
.buttt {
|
|
width: 574rpx;
|
|
height: 96rpx;
|
|
border-radius: 248rpx;
|
|
background: linear-gradient(90deg, #007FFF 0%, #99CCFF 100%);
|
|
font-family: Source Han Sans;
|
|
font-size: 36rpx;
|
|
color: #FFFFFF;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
}
|
|
}
|
|
</style>
|