|                                                                                                                      |  | <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>
 |