<template>
|
|
<view class="pd20">
|
|
<steps-component :current="0"/>
|
|
<view class="cell-box">
|
|
<uni-section title="宠物基本信息" type="line">
|
|
<view class="example">
|
|
<!-- 基础表单校验 -->
|
|
<uni-forms ref="valForm" :rules="rules" :modelValue="formData" label-width="100px">
|
|
<uni-forms-item label="姓名" required name="name">
|
|
<uni-easyinput v-model="formData.name" placeholder="请输入姓名" :inputBorder="false"/>
|
|
</uni-forms-item>
|
|
<uni-forms-item label="性别" required name="gender">
|
|
<uni-data-checkbox selectedColor="#FFBF60" v-model="formData.gender" :localdata="actions"/>
|
|
</uni-forms-item>
|
|
<uni-forms-item label="年龄" required name="age">
|
|
<uni-easyinput v-model="formData.age" placeholder="请输入年龄" :inputBorder="false"/>
|
|
</uni-forms-item>
|
|
<uni-forms-item label="养宠经验" name="feedingAge">
|
|
<uni-easyinput type="number" v-model="formData.feedingAge" placeholder="请输入养宠经验"
|
|
:inputBorder="false">
|
|
<template #right>
|
|
<view>年</view>
|
|
</template>
|
|
</uni-easyinput>
|
|
</uni-forms-item>
|
|
<uni-forms-item label="宠物类型" name="petType" required>
|
|
<uni-data-checkbox selectedColor="#FFBF60" multiple v-model="formData.petType"
|
|
:localdata="typeData"></uni-data-checkbox>
|
|
</uni-forms-item>
|
|
</uni-forms>
|
|
</view>
|
|
</uni-section>
|
|
|
|
<view class="personal-pet-info-title border-bottom ">
|
|
<view class="mb20">爱宠图片</view>
|
|
<view class="font24" style="color: #999999">请上传3~6张个人所养宠物的照片,并保证和上面选择的宠物相同</view>
|
|
</view>
|
|
<uni-file-picker v-model="fileList" @select="successUpload" limit="6" title="最多选择6张图片"
|
|
:image-styles="imageStyles"></uni-file-picker>
|
|
</view>
|
|
</view>
|
|
<submitBut text="下一步" @click="handleClick"></submitBut>
|
|
</template>
|
|
|
|
<script setup>
|
|
import {ref} from "vue";
|
|
import StepsComponent from "../../../components/stepsComponent/index.vue"
|
|
import submitBut from "../../../components/submitBut/index.vue"
|
|
import modal from "@/plugins/modal";
|
|
import {saveBaseInfo} from "../../../api/work/work";
|
|
import {getStorage, setStorage} from "../../../utils/auth";
|
|
import {getPersonalInfo} from "../../../api/system/user";
|
|
import tab from "../../../plugins/tab";
|
|
|
|
const current = ref(1)
|
|
const valForm = ref()
|
|
const fileList = ref([])
|
|
const model = ref({})
|
|
const actions = ref([
|
|
{text: '男', value: 1},
|
|
{text: '女', value: 2}
|
|
])
|
|
const typeData = ref(
|
|
[
|
|
{value: '1', text: "猫咪"},
|
|
{value: '2', text: "狗狗"},
|
|
{value: '3', text: "异宠"}
|
|
]
|
|
)
|
|
const imageStyles = ref({
|
|
width: 100,
|
|
height: 100,
|
|
})
|
|
const formData = ref({})
|
|
const rules = ref({
|
|
name: {rules: [{required: true, errorMessage: '姓名不能为空'}]},
|
|
gender: {rules: [{required: true, errorMessage: '请选择宠物性别'}]},
|
|
age: {rules: [{required: true, errorMessage: '请输入宠物年龄'}]},
|
|
feedingAge: {rules: [{required: true, errorMessage: '请输入养宠经验'}]},
|
|
petType: {rules: [{required: true, errorMessage: '请输选择宠物类型'}]},
|
|
})
|
|
const initForm = () => {
|
|
let userInfo = getStorage('userInfo')
|
|
formData.value = {
|
|
id: userInfo.id,
|
|
name: userInfo.name,
|
|
gender: userInfo.gender > 0 ? userInfo.gender : null,
|
|
age: userInfo.age,
|
|
feedingAge: userInfo.feedingAge,
|
|
petType: userInfo.petType ? userInfo.petType.split(',') : []
|
|
}
|
|
console.log(formData.value);
|
|
fileList.value = userInfo.petImages ? userInfo.petImages : []
|
|
}
|
|
initForm()
|
|
// 下一步
|
|
const handleClick = async () => {
|
|
valForm.value.validate().then(async () => {
|
|
if (fileList.value.length <= 0) {
|
|
modal.msgError("请上传宠物照片")
|
|
return
|
|
}
|
|
await saveBaseInfo({
|
|
...formData.value,
|
|
petImages: fileList.value,
|
|
petType: formData.value.petType.join(',')
|
|
})
|
|
getUserInfo()
|
|
}).catch(err => {
|
|
console.log(err);
|
|
})
|
|
}
|
|
const getUserInfo = async () => {
|
|
const {data} = await getPersonalInfo()
|
|
setStorage('userInfo', data)
|
|
tab.navigateTo("/otherPages/workbenchManage/examNotice/index")
|
|
}
|
|
// 新增图片
|
|
const successUpload = async (event) => {
|
|
console.log(event);
|
|
// 当设置 multiple 为 true 时, file 为数组格式,否则为对象格式
|
|
let lists = [].concat(event.tempFiles)
|
|
let fileListLen = fileList.value.length
|
|
lists.map((item) => {
|
|
fileList.value.push({
|
|
...item
|
|
})
|
|
})
|
|
for (let i = 0; i < lists.length; i++) {
|
|
const result = await uploadFilePromise(lists[i].url)
|
|
let item = fileList.value[fileListLen]
|
|
fileList.value.splice(fileListLen, 1, Object.assign(item, {
|
|
status: 'success',
|
|
message: '',
|
|
url: result
|
|
}))
|
|
fileListLen++
|
|
}
|
|
}
|
|
const uploadFilePromise = (url) => {
|
|
return new Promise((resolve, reject) => {
|
|
uni.uploadFile({
|
|
url: 'https://store-test.catmdogd.com/test-api/h5/oss/upload', // 仅为示例,非真实的接口地址
|
|
filePath: url,
|
|
name: 'file',
|
|
formData: {
|
|
user: 'test'
|
|
},
|
|
success: (res) => {
|
|
setTimeout(() => {
|
|
if (res && res.data) {
|
|
let resData = JSON.parse(res.data);
|
|
resolve(resData.url);
|
|
}
|
|
reject("上传失败");
|
|
}, 1000)
|
|
}
|
|
});
|
|
})
|
|
}
|
|
|
|
</script>
|
|
|
|
<style scoped lang="scss">
|
|
@import "index";
|
|
|
|
</style>
|