Bladeren bron

物业报修

zhengkaixin 2 jaren geleden
bovenliggende
commit
727eb1dc27

+ 18 - 0
src/projects/business/apis/Master/property.js

@@ -10,6 +10,15 @@ export function companyContactsList(params) {
 	})
 }
 
+//联系门卫
+export function findCompanyById(id) {
+	return request({
+		url: '/mobile/information/findCompanyById/'+id,
+		//data: Qs.stringify(params),
+		method: 'get',
+	})
+}
+
 //获取报修及投诉列表
 export function getRepairAndComplaintList(params) {
 	return request({
@@ -37,6 +46,15 @@ export function subRepairAndComplaint(params) {
 	})
 }
 
+//提交报修及投诉
+export function subRepairAndComplaint2(params) {
+	return request({
+		url: '/mobile/information/add2',
+		data: Qs.stringify(params),
+		method: 'post',
+	})
+}
+
 //物业获取报修及投诉列表
 export function getRepairAndComplaintListProperty(params) {
 	return request({

+ 11 - 0
src/projects/business/router/master.js

@@ -510,6 +510,17 @@ const routesMaster = [
 									title: '报事报修表单',
 								}
 							},
+							//报事报修表单-公共入口
+							{
+								path: 'formBy',
+								name: 'MasterPropertyRepairFormBy',
+								component: () => import('../views/Master/Property/Repair/FormBy.vue'),
+								meta: {
+									requireAuth: false,
+									role: [],
+									title: '报事报修表单',
+								}
+							},
 							//接收报修记录列表
 							{
 								path: 'verifyList',

+ 283 - 0
src/projects/business/views/Master/Property/Repair/FormBy.vue

@@ -0,0 +1,283 @@
+<template>
+	<div>
+		<!-- <common ref="common" @asynCallBack="asynCallBack"></common> -->
+		<top-header :pageTitle="pageTitle" :leftShow="false"></top-header>
+		<div class="mui-content margin60" v-if="!company">
+			<h1>请扫描正确的二维码</h1>
+		</div>
+		<div class="mui-content margin60" v-if="company">
+			<div class="vongi-yqsb flew-items">
+				<i class="iconfont icon-shouye2 color4fc5f7"></i> {{company.name}}
+			</div>
+			<div class="vongi-meform-pho">
+				
+				<div class="mui-input-row">
+					<label>姓名<span style="color: red;">*</span></label>
+					<input v-model="subForm.personName" type="text" placeholder="请输入姓名"></input>
+				</div>
+				<div class="mui-input-row">
+					<label>联系电话<span style="color: red;">*</span></label>
+					<input v-model="subForm.linkPhone" type="text" placeholder="请输入联系电话"></input>
+				</div>
+				<div class="mui-input-row">
+					<label>详细地址<span style="color: red;">*</span></label>
+					<input v-model="subForm.address" type="text" placeholder="请输入楼栋与寝室号"></input>
+				</div>
+				
+			</div>
+			
+			<div class="vongi-meform-pho">
+				<h5>报修类型</h5>
+				<ul class="mui-table-view mui-table-view-radio flew-sp">
+					<li v-for="(item,index) in categoryList" :key="index" class="mui-table-view-cell">
+						<a @click="subForm.category=item.value" v-text="item.name"></a>
+					</li>
+				</ul>
+			</div>
+			<div class="vongi-meform-pho">
+				<h5>报修内容</h5>
+				<div class="mui-input-row">
+					<textarea v-model="subForm.content" rows="5" placeholder="请描述您遇到的问题"></textarea>
+				</div>
+			</div>
+			<div class="vongi-wordcard vongi-meform-pho">
+				<h5>上传图片<span class="color999">(选填,提供问题截图,最多5张)</span></h5>
+				<div class="fyy-upphoto">
+					<div v-for="(item,index) in picList" :key="index"  class="mui-col-xs-3 fyy-upphoto-close">
+						<img :src="item" />
+						<a class="mui-icon mui-icon-closeempty" @click="delPic(item)"></a>
+					</div>
+					
+					<input   type="file" ref="myFile"  style="display: none" class="mui-btn mui-btn-block mui-navigate-right" accept="image/*" @change="uploadPicture($event)"/>
+					
+					<div class="mui-col-xs-3" @click="chooseImage" v-show="picList.length<5">
+						<a><span class="mui-icon mui-icon-camera"></span></a>
+					</div>
+				</div>
+			</div>
+		</div>
+
+		<div class="fyy-footer"  v-if="company" >
+			<div class="bindfyy-btn"><button @click="submit" type="submit" class="mui-btn mui-btn-primary ">提交</button></div>
+		</div>
+
+		<loading :visible="isLoading"></loading>
+	</div>
+</template>
+
+<script>
+	import * as API_Property from '@/apis/Master/property'
+	import Common from '$project/components/Common.vue'
+	import Loading from '$project/components/Loading.vue'
+	import TopHeader from '$project/components/TopHeader.vue'
+	import {
+		mapGetters,
+		mapMutations
+	} from 'vuex'
+	import {
+		checkPhone,isWeiXin
+	} from '$project/utils'
+	import * as WxJsApi from '$project/utils/wxJsApi'
+	export default {
+		name: 'MasterPropertyRepairForm',
+		components: {
+			Common,
+			Loading,
+			TopHeader
+		},
+		data() {
+			return {
+				pageTitle: '物业报修',
+
+				isLoading: false,
+
+				subForm: {
+					content: '',
+					type: 2,
+					img: '',
+					category: ''
+				},
+				picList: [],
+				company:{},
+				
+				categoryList: [],
+			}
+		},
+		created() {
+			this.subForm.companyId=this.$route.query.id;
+			this.subForm.openId=this.openId;
+			this.findCompanyById()
+		},
+		methods: {
+			findCompanyById(){
+				
+				this.isLoading = true;
+				API_Property.findCompanyById(this.subForm.companyId).then(response => {
+					this.isLoading = false;
+					this.company=response
+				}).catch(error => {
+					this.isLoading = false;
+					this.company=false
+					mui.toast("请扫描正确的二维码");
+				})
+			},
+			//选择图片
+			uploadPicture(event) {
+			
+			
+			  var files =  event.target.files;
+			 var  reader = new FileReader();
+			 var _this=this;
+			  if(files && files[0]) {
+			    reader.onload = function (ev) {
+			
+			
+			      var localData=ev.target.result;
+			      if (localData.indexOf('data:image') != 0) {
+			        //判断是否有这样的头部
+			        localData = 'data:image/jpeg;base64,' + localData
+			      }
+			      localData = localData.replace(/\r|\n/g, '').replace('data:image/jgp', 'data:image/jpeg')
+			      _this.imgBase64 = localData;
+			      //显示裁剪图片
+			      //_this.showCropper('photo');
+			      _this.uploadpic();
+			    }
+			    reader.readAsDataURL(files[0]);
+			
+			  }
+			
+			},
+			
+			//微信选择图片
+			chooseImage() {
+				if(isWeiXin()){
+					WxJsApi.chooseImage().then(res => {
+						var localData = res.localData;
+					
+						if (localData.indexOf('data:image') != 0) {
+							//判断是否有这样的头部
+							localData = 'data:image/jpeg;base64,' + localData
+						}
+						localData = localData.replace(/\r|\n/g, '').replace('data:image/jgp', 'data:image/jpeg')
+						this.imgBase64 = localData;
+						//显示裁剪图片
+						//_this.showCropper(field);
+						this.uploadpic();
+					}).catch(error => {
+						mui.toast(error);
+					})
+				}else{
+					this.$refs.myFile.click();
+				}
+				
+			},
+			//上传图片
+			uploadpic() {
+				this.isLoading = true;
+				WxJsApi.uploadPic(this.imgBase64).then(response => {
+					this.isLoading = false;
+
+					this.picList.push(response);
+				}).catch(error => {
+					this.isLoading = false;
+					mui.toast(error);
+				})
+			},
+			//删除图片
+			delPic(item) {
+				let picList = this.picList;
+				let index = picList.indexOf(item);
+				if (index > -1) {
+					picList.splice(index, 1);
+				}
+				this.picList = picList;
+			},
+			//检测表单
+			checkForm() {
+				 let phoneResult = checkPhone(this.subForm.linkPhone);
+				 
+				if (!this.subForm.personName) {
+					mui.toast('请输入姓名');
+					return false;
+				}else if (!this.subForm.linkPhone) {
+					mui.toast('请输入联系电话');
+					return false;
+				}else if (phoneResult!==true) {
+					mui.toast(phoneResult);
+					return false;
+				}else if (!this.subForm.address) {
+					mui.toast('请输入楼栋与寝室号');
+					return false;
+				}else 
+				if (!this.subForm.category) {
+					mui.toast('请选择报修类别');
+					return false;
+				} else if (!this.subForm.content) {
+					mui.toast('请输入内容详情');
+					return false;
+				} else {
+					return true;
+				}
+			},
+			//提交
+			submit() {
+				this.subForm.img = this.picList.join(',');
+				var category= this.subForm.category
+				if (this.checkForm()) {
+					this.isLoading = true;
+					API_Property.subRepairAndComplaint2(this.subForm).then(response => {
+						this.isLoading = false;
+						mui.alert('提交成功,请勿重复提交!');
+						this.subForm={}
+						this.subForm.companyId=this.$route.query.id;
+						this.subForm.openId=this.openId;
+						this.subForm.type=2;
+						this.subForm.category=category
+						this.picList=[];
+						//this.$router.go(-1);
+					}).catch(error => {
+						this.isLoading = false;
+						mui.toast(error);
+					})
+				}
+			},
+			//获取类别
+			getCategoryList() {
+				this.isLoading = true;
+				API_Property.getCategoryList({
+					type: this.subForm.type
+				}).then(response => {
+					this.isLoading = false;
+					this.categoryList = response;
+				}).catch(error => {
+					this.isLoading = false;
+					mui.toast(error);
+				})
+			},
+			asynCallBack() {
+
+			},
+		},
+		mounted() {
+			//获取微信配置
+			WxJsApi.getWxConfig();
+			this.getCategoryList();
+		},
+		computed: {
+			...mapGetters({
+				openId: 'wx_openid',
+				token: 'token',
+				person_data: 'person_data',
+				person_popedom: 'person_popedom',
+				menu_list: 'menu_list',
+				common_menu_list: 'common_menu_list',
+			})
+		},
+	}
+</script>
+
+<style scoped src="$project/assets/css/xpwyfyy.css"></style>
+<style src="$project/assets/css/iconfont.css"></style>
+<style>
+</style>