From 15a55f79a84e5dab670d54a9dc0c6b9133a18441 Mon Sep 17 00:00:00 2001 From: Liuyi <candymxq888@outlook.com> Date: 星期一, 21 十月 2024 17:29:37 +0800 Subject: [PATCH] 添加更改用户头像,添加故障上报校验 --- pages/infoBreakdown/index.vue | 160 ++++++++++++++++++++++++++++++++++++----------------- 1 files changed, 108 insertions(+), 52 deletions(-) diff --git a/pages/infoBreakdown/index.vue b/pages/infoBreakdown/index.vue index ecaec78..3209322 100644 --- a/pages/infoBreakdown/index.vue +++ b/pages/infoBreakdown/index.vue @@ -9,7 +9,38 @@ describe:'', url:'', }) - const test = ref() + //校验 + const formRef = ref() + const rules = ref({ + facilityCode: { + rules:[ + {required: true,errorMessage: '请扫描设备二维码获取'}] + }, + userPhone: { + rules:[ + {required: true,errorMessage: '请输入您的手机号'}, + {pattern: /^1[3-9]\d{9}$/, errorMessage: '手机号格式不正确'} + ] + }, + type: { + rules:[ + {required: true,errorMessage: '请选择设备类型'}] + }, + describe: { + rules:[ + {required: true,errorMessage: '请输入故障内容'}, + {maxLength:200,errorMessage: '请输入故障内容'}, + ] + }, + }) + const typeList = ref([ + {text:'温度',value:1}, + {text:'水压',value:2}, + {text:'网络',value:3}, + {text:'缺液',value:4}, + {text:'流量计',value:5}, + {text:'其他',value:6}, + ]) const uploadList = ref(['','','']) function uploadImg(val){ uni.chooseImage({ @@ -42,28 +73,41 @@ } }); } - async function submit(){ - form.value.url = uploadList.value - //去掉数组中空字符串,数组转字符串 - form.value.url = form.value.url.filter(str => str !== '').join() - await infoBreakdownApi(form.value).then((res) =>{ - if(res.code == 200){ - uni.showToast({ - title: '上报成功', - duration: 2000, - }); - setTimeout(()=>{ - form.value = { - facilityCode:'', - userPhone:'', - type:'', - describe:'', - url:'', - } - uni.navigateBack() - },1000) + + function toScan(){ + // 调用二维码扫描接口 + uni.scanCode({ + scanType: ['qrCode'], + success: function (res) { + console.log('条码内容:' + res.result); + form.value.facilityCode = res.result } - }) + }); + } + async function submit(){ + if(formRef.value.validate()){ + form.value.url = uploadList.value + //去掉数组中空字符串,数组转字符串 + form.value.url = form.value.url.filter(str => str !== '').join() + await infoBreakdownApi(form.value).then((res) =>{ + if(res.code == 200){ + uni.showToast({ + title: '上报成功', + duration: 2000, + }); + setTimeout(()=>{ + form.value = { + facilityCode:'', + userPhone:'', + type:'', + describe:'', + url:'', + } + // uni.navigateBack() + },1000) + } + }) + } } </script> <template> @@ -71,28 +115,26 @@ <navbar title="故障上报"></navbar> <view class="content"> <view class="main"> - <view class="title">请填写故障信息{{test}}</view> + <view class="title">请填写故障信息</view> <view class="info-box"> <view class="form-box"> - <form> - <view class="form-item"> - <view class="label">设备号:</view> - <input class="item-input" v-model="form.facilityCode" name="input" placeholder="请扫描水机站牌二维码或输入设备号" /> - <image src="../../static/images/addCard/code.png" alt=""></image> - </view> - <view class="form-item"> - <view class="label">联系方式:</view> - <input class="item-input" v-model="form.userPhone" name="input" placeholder="请输入您的手机号" /> - </view> - <view class="form-item"> - <view class="label">问题类型:</view> - <input class="item-input" name="input" v-model="form.type" placeholder="请选择问题类型" /> - </view> - <view class="form-item"> - <view class="label">问题描述:</view> - <input class="item-input" name="input" v-model="form.describe" placeholder="请输入故障内容" /> - </view> - </form> + <uni-forms ref="formRef" :model="form" :rules="rules" label-width=100> + <uni-forms-item label="设备号:" name="facilityCode"> + <view class="form-item"> + <input v-model="form.facilityCode" placeholder="请扫描设备二维码获取" /> + <image class="scan-img" @click="toScan()" src="../../static/images/addCard/code.png" alt=""></image> + </view> + </uni-forms-item> + <uni-forms-item label="联系方式:" name="userPhone"> + <input v-model="form.userPhone" placeholder="请输入您的手机号" /> + </uni-forms-item> + <uni-forms-item label="问题类型:" name="type"> + <uni-data-select v-model="form.type" :localdata="typeList"></uni-data-select> + </uni-forms-item> + <uni-forms-item label="问题描述:" name="describe"> + <input type="textarea" v-model="form.describe" placeholder="请输入故障内容" /> + </uni-forms-item> + </uni-forms> </view> <view class="upload-box"> <view class="upload-title">选择照片</view> @@ -100,6 +142,7 @@ <block v-for="(item,index) in uploadList"> <view @click="uploadImg(index)" class="upload-img-item"> <image v-if="item" :src="item"></image> + <image v-else class="default-img" src="../../static/images/other/img-add.png" alt=""></image> </view> </block> </view> @@ -145,22 +188,26 @@ .form-box{ height:500rpx; border-bottom:1rpx solid rgba(90, 128, 218, 0.4); + input{ + height:100%; + line-height:100%; + } .form-item{ + height:100%; + line-height:100%; display: flex; align-items: center; - border-bottom: 1rpx solid rgba(111, 111, 111, 0.1); - height:100rpx; - image{ - margin-left:60rpx; - width:50rpx; - height:50rpx; + justify-content: space-around; + .scan-img{ + width:56rpx; + height:56rpx; } } } .upload-box{ .upload-title{ - color: #5b93dc; - margin: 10rpx 20rpx 0; + color: #6a717e; + margin-top: 10rpx; } .upload-img{ display: flex; @@ -174,9 +221,16 @@ border-radius:20rpx; border:1rpx dashed #b7d4ff; margin-bottom: 10rpx; + display: flex; + justify-content: center; + align-items: center; image{ - width:180rpx; - height:180rpx; + width:170rpx; + height:170rpx; + } + .default-img{ + width:120rpx; + height:120rpx; } } } @@ -192,6 +246,8 @@ left: calc(50% - 35%); text-align: center; border-radius:50rpx; + color: #5b93dc; + letter-spacing:5rpx; } } } -- Gitblit v1.9.3