猫妈狗爸伴宠师小程序前端代码
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.
 
 
 
 

118 lines
3.4 KiB

<template>
<view class="sort-answer">
<uni-forms ref="baseForm" :modelValue="formData" label-position="top" label-width="auto">
<uni-forms-item
v-for="(item,index) in formData.answerList"
:name="`answerList[${index}].answer`"
:rules="[{
required: true,
errorMessage: item.question.includes('请上传')?'请上传照片':'请输入考试答题' ,
}]"
:label="item.order+'、'+item.question" required>
<up-textarea v-if="!item.question.includes('请上传')" v-model="item.answer" :maxlength="1000"
placeholder="请输入内容,600百字以内" :height="200"
count></up-textarea>
<uni-file-picker v-else v-model="item.answer" @select="(e)=>successUpload(e,item)" limit="6"
title="最多选择6张图片"
:image-styles="imageStyles"></uni-file-picker>
</uni-forms-item>
</uni-forms>
</view>
<submitBut text="提交" @click="handleClick"></submitBut>
</template>
<script setup>
import submitBut from "../../../components/submitBut/index.vue"
import {getTrainQuestion, submitTrainCheckAnswer} from "../../../api/work/work";
import {ref} from "vue"
import tab from "../../../plugins/tab";
import {getStorage} from "../../../utils/auth";
const formData = ref({
answerList: [],
staffId: getStorage("userInfo").id
})
const imageStyles = ref({
width: 100,
height: 100,
})
const baseForm = ref()
const value = ref()
const getTrainQuestions = async () => {
const {data} = await getTrainQuestion()
formData.value.answerList = data || []
}
getTrainQuestions()
const handleClick = async () => {
baseForm.value.validate((valida, err) => {
console.log(!valida);
})
await submitTrainCheckAnswer(formData.value)
tab.navigateTo("/otherPages/workbenchManage/queryResults/index")
}
// 新增图片
const successUpload = async (event, item) => {
console.log(event);
// 当设置 multiple 为 true 时, file 为数组格式,否则为对象格式
let lists = [].concat(event.tempFiles)
let fileList = item.answer || []
let fileListLen = fileList.length
lists.map((item) => {
fileList.push({
...item
})
})
for (let i = 0; i < lists.length; i++) {
const result = await uploadFilePromise(lists[i].url)
let item = fileList[fileListLen]
fileList.splice(fileListLen, 1, Object.assign(item, {
status: 'success',
message: '',
url: result
}))
fileListLen++
}
item.answer = fileList
}
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">
.sort-answer {
padding: 40rpx 40rpx 140rpx;
background: #FFFFFF;
&-item {
margin-bottom: 30rpx;
}
&-question {
display: flex;
margin-bottom: 20rpx;
line-height: 50rpx;
}
:deep(.uni-forms-item__label) {
height: auto !important;
align-items: start !important;
}
}
</style>