123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- <template>
- <view class="problem">
- <view class="problem-form">
- <u--form labelPosition="left" :model="reportForm" :rules="rules" ref="reportForm">
- <u-form-item label="问题描述:" prop="content" labelWidth="80">
- <u--textarea v-model="reportForm.content" placeholder="请详细描述问题内容" count maxlength="300" height="80">
- </u--textarea>
- </u-form-item>
- <u-form-item label="上传图片:" labelWidth="80">
- <u-upload :fileList="fileList1" @afterRead="afterRead" @delete="deletePic" name="1" multiple
- :maxCount="10" uploadIcon="plus" uploadIconColor="rgba(0, 0, 0, 0.45)"
- uploadText="上传照片" width="104" height="104" bgColor="#fff"></u-upload>
- </u-form-item>
- <u-form-item label="" labelWidth="20">
- <u-button type="primary" text="提交" :loading="loading" @click="submitForm"></u-button>
- </u-form-item>
- </u--form>
- </view>
- <u-toast ref="uToast"></u-toast>
- </view>
- </template>
- <script>
- export default {
- data() {
- return {
- reportForm: {
- content: '',
- fileList: []
- },
- rules: {
- content: [
- {
- type: 'string',
- required: true,
- message: '请详细描述问题内容',
- trigger: ['blur']
- }
- ]
- },
- fileList1: [],
- loading: false
- }
- },
- methods: {
- // 删除图片
- deletePic(event) {
- this[`fileList${event.name}`].splice(event.index, 1)
- },
- // 新增图片
- async afterRead(event) {
- // 当设置 mutiple 为 true 时, file 为数组格式,否则为对象格式
- let lists = [].concat(event.file)
- let fileListLen = this[`fileList${event.name}`].length
- lists.map((item) => {
- this[`fileList${event.name}`].push({
- ...item,
- status: 'uploading',
- message: '上传中'
- })
- })
- for (let i = 0; i < lists.length; i++) {
- const result = await this.uploadFilePromise(lists[i].thumb)
- let item = this[`fileList${event.name}`][fileListLen]
- this[`fileList${event.name}`].splice(fileListLen, 1, Object.assign(item, {
- status: 'success',
- message: '',
- url: result
- }))
- fileListLen++
- this.reportForm.fileList = this.fileList1.map(item => {
- return item.url.url
- })
- }
- },
- uploadFilePromise(url) {
- return new Promise((resolve, reject) => {
- let a = uni.uploadFile({
- url: 'https://wx.hw.hongweisoft.com/veterans/file/upload/single/minio',
- filePath: url,
- name: 'file',
- formData: {
- user: 'test'
- },
- success: (res) => {
- setTimeout(() => {
- resolve(JSON.parse(res.data)?.data)
- }, 1000)
- }
- });
- })
- },
- submitForm() {
- this.$refs.reportForm.validate().then(res => {
- console.log(this.reportForm)
- this.loading = true
- this.$refs.uToast.show({
- type: 'success',
- title: '提示',
- message: "提交成功",
- iconUrl: 'https://cdn.uviewui.com/uview/demo/toast/success.png'
- })
- setTimeout(() => {
- uni.$u.route({
- url: 'pages/mine/mine',
- type: 'switchTab'
- })
- }, 2000)
- }).catch(error => {
-
- })
- }
- }
- }
- </script>
- <style lang="scss" scoped>
- .problem {
- padding: 20rpx 40rpx;
- }
- </style>
|