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