Browse Source

feat(commercial): 添加地块图片上传功能及相关验证

在经营性用地表单中添加地块图片上传组件,包括上传、删除功能及表单验证
移除视频时长限制的校验代码
master
主管理员 21 hours ago
parent
commit
3e5ea84c61
2 changed files with 66 additions and 10 deletions
  1. +63
    -9
      pages_subpack/house/commercial.vue
  2. +3
    -1
      pages_subpack/house/other.vue

+ 63
- 9
pages_subpack/house/commercial.vue View File

@ -70,6 +70,13 @@
<view class="input-tip">请输入数字支持小数点后两位</view>
</uv-form-item>
<!-- 8. 地块图片 -->
<uv-form-item label="地块图片" labelWidth="250" prop="images" labelPosition="top" required>
<view class="upload-tip">请上传地块现状照片展示地块实际情况</view>
<uv-upload customStyle="margin-top:20rpx;" :fileList="form.images" @afterRead="afterImageRead" @delete="deleteImagePic" name="1"
multiple :maxCount="10"></uv-upload>
</uv-form-item>
<!-- 分类标识 -->
<uv-form-item label="分类标识" prop="classId" @click="handleClass()">
<uv-input v-model="form.className" @click="handleClass()" disabled disabledColor="#ffffff" placeholder="选择分类标识" border="none">
@ -125,6 +132,7 @@
landArea: '', //
videos: [], //
price: '', //
images: [], //
description: '', //
longitude: '', //
latitude: '', //
@ -155,6 +163,20 @@
{ required: true, message: '请输入价格', trigger: ['blur', 'change'] },
{ pattern: /^\d+(\.\d{1,2})?$/, message: '请输入正确的价格格式', trigger: ['blur', 'change'] }
],
images: [
{
required: true,
message: '请上传地块图片',
trigger: ['blur', 'change'],
validator: (rule, value, callback) => {
if (!value || value.length === 0) {
callback(new Error('请上传地块图片'));
} else {
callback();
}
}
}
],
classId: [
{ required: true, message: '请选择分类标识', trigger: ['blur', 'change'] }
]
@ -290,16 +312,16 @@
for (let file of e.file) {
try {
//
const duration = await this.getVideoDuration(file.url)
// const duration = await this.getVideoDuration(file.url)
// 60
if (duration > 60) {
uni.showToast({
title: '视频时长不能超过1分钟',
icon: 'none'
})
continue //
}
// if (duration > 60) {
// uni.showToast({
// title: '1',
// icon: 'none'
// })
// continue //
// }
//
self.$Oss.ossUpload(file.url).then(url => {
@ -359,6 +381,30 @@
this.debounceSaveFormData()
},
//
async afterImageRead(e) {
let self = this
e.file.forEach(file => {
self.$Oss.ossUpload(file.url).then(url => {
self.form.images.push({
url
})
//
self.debounceSaveFormData()
//
self.$refs.form.validateField('images')
})
})
},
deleteImagePic(event) {
this.form.images.splice(event.index, 1)
//
this.debounceSaveFormData()
//
this.$refs.form.validateField('images')
},
//
submit() {
this.$refs.form.validate().then(res => {
@ -379,6 +425,14 @@
return;
}
if (this.form.images.length === 0) {
uni.showToast({
title: '请上传地块图片',
icon: 'none'
});
return;
}
// index.vue
const params = {
userId: uni.getStorageSync('userInfo')?.id || "",
@ -422,7 +476,7 @@
timeGo: "", // -
title: `${this.form.type === 'rent' ? '出租' : '出让'}-经营性建设用地-${this.form.address.split('市')[1] || this.form.address}`, // -
unit: this.form.type === 'rent' ? '元/亩/年' : '万元/亩', //
image: "", // -
image: this.form.images.map(item => item.url).join(','), //
iconImage: "", //
homeImage: this.form.propertyImages.map(item => item.url).join(','), //
homeMp4: this.form.videos.map(item => item.url).join(','), //


+ 3
- 1
pages_subpack/house/other.vue View File

@ -39,7 +39,9 @@
<!-- 4. 照片和视频 -->
<uv-form-item label="资源照片" labelWidth="250" prop="images" labelPosition="top" required>
<view class="upload-tip">请上传资源相关照片</view>
<uv-upload customStyle="margin-top:20rpx;" :fileList="form.images" @afterRead="afterImageRead" @delete="deleteImagePic" name="1"
<uv-upload customStyle="margin-top:20rpx;"
:fileList="form.images" @afterRead="afterImageRead"
@delete="deleteImagePic" name="1"
multiple :maxCount="10"></uv-upload>
</uv-form-item>


Loading…
Cancel
Save