<template> <view class="content"> <u-form :model="form" ref="form" label-width="140"> <u-form-item label="评价内容" prop="content" required> <u-input v-model="form.content" placeholder="请输入评价内容" type="textarea" auto-height :height="100" /> </u-form-item> <u-form-item label="上传附件" label-position="top"> <u-upload max-count="5" :multiple="false" :action="uploadUrl" :header="uploadHeader" @on-success="uploadSuccess" @on-error="uploadError" @on-remove="uploadRemove"></u-upload> </u-form-item> </u-form> <view class="handle-fix-box"> <u-button type="warning" shape="circle" :ripple="true" :custom-style="customStyle" @click="submitForm()">提交</u-button> </view> <u-top-tips ref="uTips"></u-top-tips> </view> </template> <script> import { mapGetters } from 'vuex' const NET = require('@/utils/request') const API = require('@/config/api') export default { computed: { ...mapGetters([ 'customStyle', ]) }, data() { return { classId: '', form: { content: '', fileId: [], }, uploadUrl: API.uploadFile, uploadHeader: { Authorization: uni.getStorageSync('token') }, rules: { content: [{ required: true, message: '请输入评价内容', trigger: 'change' }], }, } }, onLoad(options) { this.classId = options.id }, onReady() { this.$refs.form.setRules(this.rules); }, methods: { // 文件上传成功回调 uploadSuccess(res, index, lists, name) { this.form.fileId.push(res.data.id) this.$refs.uTips.show({ title: '文件上传成功', type: 'success', }) return true }, // 文件上传失败回调 uploadError(res, index, lists, name) { this.$refs.uTips.show({ title: '文件上传失败', type: 'warning', }) }, // 移除文件回调 uploadRemove(index, lists, name) { this.form.fileId.splice(index, 1) }, // 提交表单 submitForm() { this.$refs.form.validate(valid => { if (valid) { NET.request(API.submitGrowForm, { id: this.classId, ...this.form }, 'POST').then(res => { this.$refs.uTips.show({ title: '填写成功', type: 'success', }) setTimeout(() => { uni.navigateBack() }, 1000) }).catch(error => { this.$refs.uTips.show({ title: error.message, type: 'warning', }) }) } }); }, }, } </script> <style> page { width: 100%; height: 100%; position: relative; } </style> <style lang="scss" scoped> @import "@/static/css/themes.scss"; .content { width: 100%; float: left; padding: 0 15px 60px 15px; box-sizing: border-box; } </style>