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.

289 lines
6.7 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<template>
<view class="mybaoxiu-container">
<u-navbar bgColor="#ffffff" :placeholder="true" titleStyle="font-weight:600" title="我的报修" :autoBack="true">
</u-navbar>
<uni-forms :model="mybaoxiuForm" ref="mybaoxiuForm" :rules="rules" :errShowType="errorType">
<uni-forms-item name="question">
<view class="top-search">
<view class="top-search-prefix">报修原因</view>
<u-input ref="input" :focus="isfocus" clearable v-model="mybaoxiuForm.question" placeholder="请输入报修原因" fontSize="13px" @blur="onblur"></u-input>
</view>
</uni-forms-item>
<uni-forms-item>
<view class="upload-img">
<view class="upload-img-title">上传图片</view>
<u-line color="#E6E6E6"></u-line>
<view class="upload-img-box"><u-upload :fileList="fileList" auto-upload @delete="deletePic" @afterRead="getImage"></u-upload></view>
</view>
</uni-forms-item>
<!-- <uni-forms-item>
<view class="dispose-person">
<view class="dispose-item" @click="openPicker">
<view class="dispose-item-left">处理人</view>
<view class="dispose-item-right">
<view style="margin-right: 20rpx">请选择处理人</view>
<u-icon name="arrow-right"></u-icon>
</view>
</view>
</view>
</uni-forms-item> -->
</uni-forms>
<view class="submit" @click="addFrom()">提交报修</view>
<u-picker :show="personPopupShow" :columns="columns" @confirm="personPopupConfirm" @cancel="personPopupClose"></u-picker>
</view>
</template>
<script>
import config from '@/config.js';
import { getToken } from '@/utils/auth.js';
import { addFacilitiesRepair } from '@/api/indexpage/implement/index.js';
export default {
data() {
return {
errorType: 'toast',
mybaoxiuForm: { question: '', pic: '' },
fileList: [],
ssid: '',
columns: [],
isfocus: false,
rules: {
// 对name字段进行必填验证
question: {
rules: [
{
required: true,
errorMessage: '请输入报修原因',
trigger: ['blur', 'change']
}
]
}
},
personPopupShow: false
};
},
onLoad(options) {
this.ssid = options.ssId;
},
methods: {
onblur() {
this.isfocus = false;
},
addFocus() {
this.isfocus = true;
},
personPopupConfirm() {
this.personPopupShow = false;
},
openPicker() {
this.personPopupShow = true;
},
personPopupClose() {
this.personPopupShow = false;
},
//确定提交
addFrom() {
this.$refs.mybaoxiuForm
.validate()
.then(res => {
//把图片数组对象中的id转成逗号隔开的字符串,赋值给from表单
this.mybaoxiuForm.pic = this.fileList
.map(item => {
return item.id;
})
.join(',');
let params = {
facilitiesId: this.ssid,
...this.mybaoxiuForm
};
addFacilitiesRepair(params).then(res => {
this.mybaoxiuForm = { question: '', pic: '' };
this.fileList = [];
uni.navigateBack({
delta: 1
});
this.$modal.msg('提交成功');
});
})
.catch(err => {
this.$modal.msg(err);
});
},
// 删除图片
deletePic(event) {
//删除本地
this[`fileList${event.name}`].splice(event.index, 1);
},
// 图片上传结果
async getImage(event) {
// 当设置 multiple 为 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].url);
let item = this[`fileList${event.name}`][fileListLen];
this[`fileList${event.name}`].splice(
fileListLen,
1,
Object.assign(item, {
status: 'success',
message: '',
id: result
})
);
fileListLen++;
}
},
uploadFilePromise(url) {
return new Promise((resolve, reject) => {
let a = uni.uploadFile({
url: `${config.baseUrlImg}/filemanage/upload1`, // 仅为示例,非真实的接口地址
filePath: url,
name: 'file',
header: {
Authorization: 'Bearer ' + getToken()
},
formData: {
isFullDir: false,
classify: '1',
dir: '/inspectionPic'
},
success: res => {
let result = JSON.parse(res.data);
console.log('result', result);
setTimeout(() => {
resolve(result.data.id);
}, 1000);
}
});
});
}
}
};
</script>
<style lang="scss" scoped>
.mybaoxiu-container {
// #ifndef APP-PLUS
height: calc(100vh - 44px);
// #endif
// #ifdef APP-PLUS
height: calc(100vh);
// #endif
background-color: #fff;
overflow-y: auto;
font-family: Noto Sans S Chinese;
/deep/ .uni-forms-item {
margin-bottom: 0;
}
.top-search {
height: 134rpx;
box-sizing: border-box;
padding: 20rpx 28rpx 28rpx;
display: flex;
align-items: center;
/deep/ .input-placeholder {
text-align: right !important;
color: red;
}
::v-deep .u-input {
height: 100%;
border-radius: 0 9px 9px 0;
background-color: #f8f9fb;
border: none;
}
/deep/ .uni-input-placeholder {
text-align: right;
}
.top-search-prefix {
font-weight: 400;
height: 100%;
display: flex;
justify-content: center;
width: 140rpx;
background-color: #f8f9fb;
align-items: center;
border-radius: 9px 0 0 9px;
font-size: 13px;
color: #666666;
}
.top-search-suffix {
width: 100px;
font-weight: 400;
font-size: 13px;
color: #999999;
line-height: 19px;
}
}
.upload-img {
width: calc(100% - 56rpx);
margin: 0 auto;
box-sizing: border-box;
padding: 28rpx 28rpx 42rpx 28rpx;
background-color: #f8f9fb;
border-radius: 18rpx;
.upload-img-title {
width: 100%;
font-weight: 400;
font-size: 13px;
color: #666666;
margin-bottom: 20rpx;
}
.upload-img-box {
margin-top: 34rpx;
}
}
.dispose-person {
height: 134rpx;
box-sizing: border-box;
padding: 30rpx 28rpx 28rpx;
.dispose-item {
width: 100%;
border-radius: 18rpx;
height: 42px;
background: #f8f9fb;
display: flex;
align-items: center;
justify-content: space-between;
box-sizing: border-box;
padding: 0 26rpx;
.dispose-item-left {
font-weight: 400;
font-size: 13px;
color: #666666;
}
.dispose-item-right {
display: flex;
align-items: center;
font-weight: 400;
font-size: 13px;
color: #999999;
line-height: 19px;
}
}
}
.submit {
height: 94rpx;
background: linear-gradient(0deg, #2a86ff, #8fbcff);
line-height: 94rpx;
width: calc(100% - 140rpx);
text-align: center;
margin: 0 auto;
margin-top: 200rpx;
border-radius: 50rpx;
color: #fff;
font-size: 30rpx;
}
}
</style>