Browse Source

智慧巡检剩余接口联调完成

htc 1 month ago
parent
commit
fd1f5b9225

+ 31 - 12
pagesInspection/index.vue

@@ -22,39 +22,43 @@
 			</div>
 			<div class="info">
 				<div class="pre">
-					<text>{{3}}</text>
+					<text>{{orderInfo[1]||0}}</text>
 					<p>待指派</p>
 				</div>
 				<div class="pre">
-					<text>{{2}}</text>
+					<text>{{orderInfo[2]||0}}</text>
 					<p>待维修</p>
 				</div>
 				<div class="pre">
-					<text>{{1}}</text>
+					<text>{{orderInfo[3]||0}}</text>
 					<p>已维修</p>
 				</div>
 			</div>
 		</div>
 		<div class="card">
 			<div class="title" @tap="toTurn('/pagesInspection/abnormalDevice/index')">
-				<div class="left">设备</div>
+				<div class="left">设备异常</div>
 				<div class="right">
 					<text>立即查看</text>
 					<u-icon name="arrow-right" color="#198CFF" size="28"></u-icon>
 				</div>
 			</div>
-			<div class="info">
+			<div class="info device">
+				<div class="pre">
+					<text>{{deviceInfo.abnormalNum||0}}</text>
+					<p>异常总数</p>
+				</div>
 				<div class="pre">
-					<text>{{3}}</text>
-					<p>设备总数</p>
+					<text>{{deviceInfo.maps.AirConditioner||0}}</text>
+					<p>空调异常</p>
 				</div>
 				<div class="pre">
-					<text>{{2}}</text>
-					<p>正常设备</p>
+					<text>{{deviceInfo.maps.WaterMeter||0}}</text>
+					<p>水表异常</p>
 				</div>
 				<div class="pre">
-					<text>{{1}}</text>
-					<p>异常设备</p>
+					<text>{{deviceInfo.maps.Relay||0}}</text>
+					<p>电表异常</p>
 				</div>
 			</div>
 		</div>
@@ -70,10 +74,22 @@
 		},
 		data(){
 			return {
-				
+				orderInfo:{},
+				deviceInfo:{}
 			}
 		},
+		onShow() {
+			this.getHomeData();
+		},
 		methods:{
+			getHomeData(){
+				this.$api.get('/home/homedata').then(res=>{
+					if(res.data.code===0){
+						this.orderInfo = res.data.data.workOrder;
+						this.deviceInfo = res.data.data.equip;
+					}else this.$showToast(res.data.msg)
+				})
+			},
 			toTurn(url){
 				if(!url) return
 				uni.navigateTo({ url })
@@ -189,6 +205,9 @@
 						margin-top: 20rpx;
 					}
 				}
+				&.device .pre{
+					width: 25%;
+				}
 			}
 		}
 	}

+ 226 - 69
pagesInspection/onlineRepair/index.vue

@@ -3,10 +3,10 @@
 		<cus-header title='报修'></cus-header>
 		<div class="form">
 			<div class="item">
-				<div class="left">报修位置</div>
+				<div class="left">报修区域</div>
 				<div class="right">
-					<div class="right" @tap="placeShow = true">
-						<text v-if="receiptDto.warehouseName">{{receiptDto.warehouseName}} ></text>
+					<div class="right" @tap="areaShow = true">
+						<text v-if="params.repairRegionName">{{params.repairRegionName}} ></text>
 						<div class="tip" v-else>
 							请选择<u-icon name="arrow-right" color="#B9C0C8" size="28"
 								style="margin-left: 10rpx;"></u-icon>
@@ -14,11 +14,11 @@
 					</div>
 				</div>
 			</div>
-			<div class="item">
-				<div class="left">报修区域</div>
+			<div class="item" v-if="params.repairRegionName">
+				<div class="left">报修位置</div>
 				<div class="right">
-					<div class="right" @tap="areaShow = true">
-						<text v-if="receiptDto.warehouseName">{{receiptDto.warehouseName}} ></text>
+					<div class="right" @tap="showPlace">
+						<text v-if="params.repairPositionName">{{params.repairPositionName}} ></text>
 						<div class="tip" v-else>
 							请选择<u-icon name="arrow-right" color="#B9C0C8" size="28"
 								style="margin-left: 10rpx;"></u-icon>
@@ -30,7 +30,7 @@
 				<div class="left">报修类型</div>
 				<div class="right">
 					<div class="right" @tap="typeShow = true">
-						<text v-if="receiptDto.warehouseName">{{receiptDto.warehouseName}} ></text>
+						<text v-if="params.repairTypeName">{{params.repairTypeName}} ></text>
 						<div class="tip" v-else>
 							请选择<u-icon name="arrow-right" color="#B9C0C8" size="28"
 								style="margin-left: 10rpx;"></u-icon>
@@ -41,111 +41,235 @@
 			<div class="item">
 				<div class="left">联系人</div>
 				<div class="right">
-					<input type="text" placeholder-class="repair-inp-ph" placeholder="请输入">
+					<input type="text" v-model="params.contactPerson" placeholder-class="repair-inp-ph" placeholder="请输入">
 				</div>
 			</div>
 			<div class="item">
 				<div class="left">联系电话</div>
 				<div class="right">
-					<input type="text" placeholder-class="repair-inp-ph" placeholder="请输入">
+					<input type="phone" v-model="params.contactPhone" placeholder-class="repair-inp-ph" placeholder="请输入">
 				</div>
 			</div>
 			<div class="pre">
 				<div class="title">故障描述</div>
 				<div class="desc">
-					<u--textarea placeholder="请输入" placeholder-class="repair-inp-ph" autoHeight></u--textarea>
+					<u--textarea v-model="params.faultDes" placeholder="请输入" placeholder-class="repair-inp-ph" autoHeight></u--textarea>
 				</div>
 			</div>
 		</div>
 		<div class="upload">
 			<div class="title">上传照片</div>
-			<div class="box">
-				<u-upload :fileList="fileList" @afterRead="afterRead" @delete="deletePic" multiple
-					name="1" :maxCount="10"></u-upload>
+			<div class="box" style="width: auto;height: auto;">
+				<view class="uploadPart">
+					<view class="allimg" v-for="img in fileList1">
+						<image :src="img" mode="aspectFill" class="newimg"></image>
+						<u-icon @click="deletePic(img)" class="mytrash" name="close-circle" color="#999"
+							size="30"></u-icon>
+					</view>
+				
+					<span @click="uploadImg" class="uploadBtn" v-if="fileList1.length<3"><u-icon color="#5c8fff"
+							size="30px" name="camera-fill"></u-icon></span>
+				</view>
 			</div>
 		</div>
 		<div class="bottom">
-			<div class="save">保存</div>
+			<div class="save" @tap="save">保存</div>
 		</div>
-		<u-picker :show="placeShow" :columns="placeColumns" title="报修位置" @cancel="placeShow=false" @confirm="e=>paramsConfirm(e,'')"></u-picker>
-		<u-picker :show="areaShow" :columns="areaColumns" title="报修区域" @cancel="areaShow=false" @confirm="e=>paramsConfirm(e,'')"></u-picker>
-		<u-picker :show="typeShow" :columns="typeColumns" title="报修类型" @cancel="typeShow=false" @confirm="e=>paramsConfirm(e,'')"></u-picker>
+		<u-picker :show="placeShow" :columns="placeColumns" keyName="orgName" title="报修位置" @cancel="placeCancel" @change="changeHandler" @confirm="placeConfirm"></u-picker>
+		<u-picker :show="placeShow2" :columns="placeColumns2" keyName="orgName" title="报修位置" @cancel="placeCancel" @change="changeHandler" @confirm="placeConfirm"></u-picker>
+		<u-picker :show="areaShow" :columns="areaColumns" keyName="label" title="报修区域" @cancel="areaShow=false" @confirm="e=>paramsConfirm(e,'repairRegion','repairRegionName')"></u-picker>
+		<u-picker :show="typeShow" :columns="typeColumns" keyName="label" title="报修类型" @cancel="typeShow=false" @confirm="e=>paramsConfirm(e,'repairType','repairTypeName')"></u-picker>
 	</view>
 </template>
 
 <script>
+	const baseApi = require('@/http/baseApi.js')
 	export default {
 		data() {
 			return {
 				placeShow: false,
+				placeShow2: false,
 				areaShow: false,
 				typeShow: false,
-				placeColumns:[
-					['位置1','位置2']
-				],
+				alldata:[],
+				placeColumns:[],
+				placeColumns2:[],
+				placeColumnData:[],
 				areaColumns:[
-					['区域1','区域2']
-				],
-				typeColumns:[
-					['类型1','类型2']
+					[{
+						label: '公共区域',
+						id: 1
+					
+					}, {
+						label: '室内',
+						id: 2
+					}]
 				],
+				typeColumns:[[]],
 				params: {
-
+					id: "",
+					buildingId: "", //  楼栋ID
+					storeyId: "", //  层数ID
+					houseId: "", //  房间ID
+					repairPositionName: "", //报修位置名称
+					repairRegion: '', //报修修区域
+					repairRegionName: "", //报修区域名称
+					repairType: '', //报修类型
+					repairTypeName: "", //报修类型
+					contactPerson: "", //联系人
+					contactPhone: "", //电话
+					faultDes: "", // 故障描述
+					faultPics: "", //图片
+				},
+				tip:{
+					repairRegion: '请选择报修区域',
+					buildingId: "请选择报修位置",
+					repairType: '请选择报修类型',
+					contactPerson: "请输入联系人", 
+					contactPhone: "请输入正确的联系电话",
+					faultDes: "请输入故障描述",
+					faultPics: "请上传图片"
 				},
 				fileList1: [],
 			}
 		},
+		onLoad() {
+			this.getXjTypeData();
+			this.getFloorInfo();
+		},
 		methods: {
+			getXjTypeData(){
+				this.$api.get('/sys/dict/data/getListByType/RepairType').then(res=>{
+					if(res.data.code===0){
+						res.data.data.forEach(d=>{
+							this.typeColumns[0].push({id:d.dictValue,label:d.dictLabel})
+						})
+					}else this.$showToast(res.data.msg)
+				})
+			},
+			getFloorInfo(){
+				this.$api.get('/control/getOrgStructureTree/').then(res=>{
+					if(res.data.code===0){
+						this.alldata = res.data.data[0].childrenList;
+						this.placeColumns = [
+							this.alldata,
+							this.alldata[0].childrenList,
+							[]
+						]
+						this.placeColumns2 = [
+							this.alldata,
+							this.alldata[0].childrenList,
+						]
+					}else this.$showToast(res.data.msg)
+				})
+			},
 			// 删除图片
 			deletePic(event) {
-				this[`fileList${event.name}`].splice(event.index, 1);
+				this.fileList1.splice(event.index, 1)
 			},
 			// 新增图片
-			async afterRead(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: "上传中",
-					});
+			uploadImg() {
+				uni.chooseImage({
+					count: 3,
+					success: (chooseImageRes) => {
+						const tempFilePaths = chooseImageRes.tempFilePaths;
+						for (let i = 0; i < tempFilePaths.length; i++) {
+							uni.uploadFile({
+								url: baseApi.BaseApi + '/uploadFile',
+								filePath: tempFilePaths[i],
+								name: 'file',
+								formData: {
+									'user': 'test'
+								},
+								success: (res) => {
+									this.fileList1.push(JSON.parse(res.data).data)
+									this.params.faultPics = this.fileList1.join(',')
+								}
+							});
+						}
+					}
 				});
-				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: "",
-							url: result,
-						})
-					);
-					fileListLen++;
+			},
+			showPlace(){
+				if (this.params.repairRegionName == '公共区域') this.placeShow2 = true;
+				else this.placeShow = true;
+			},
+			changeHandler(e) {
+				const {
+					columnIndex,
+					value,
+					values, // values为当前变化列的数组内容
+					index,
+					indexs,
+					picker = this.$refs.uPicker
+				} = e
+				if (columnIndex == 0) {
+					picker.setColumnValues(1, this.alldata[index].childrenList)
+					if (this.params.repairRegionName == '室内') {
+						if (this.alldata[indexs[0]].childrenList[0].childrenList == null) {
+							picker.setColumnValues(2, [])
+						} else {
+							picker.setColumnValues(2, this.alldata[indexs[0]].childrenList[0].childrenList)
+						}
+					}
+				} else if (this.params.repairRegionName == '室内' && columnIndex == 1) {
+					if (this.alldata[indexs[0]].childrenList[indexs[1]].childrenList == null) {
+						picker.setColumnValues(2, [])
+					} else {
+						picker.setColumnValues(2, this.alldata[indexs[0]].childrenList[indexs[1]].childrenList)
+					}
 				}
 			},
-			uploadFilePromise(url) {
-				return new Promise((resolve, reject) => {
-					let a = uni.uploadFile({
-						url: "http://192.168.2.21:7001/upload", // 仅为示例,非真实的接口地址
-						filePath: url,
-						name: "file",
-						formData: {
-							user: "test",
-						},
-						success: (res) => {
-							setTimeout(() => {
-								resolve(res.data.data);
-							}, 1000);
-						},
-					});
-				});
+			placeConfirm(e) {
+				if(this.params.repairRegionName == '室内'){
+					if (e.value[2] == undefined) {
+						this.params.repairPositionName = e.value[0].orgName + '/' + e.value[1].orgName;
+						this.params.buildingId = e.value[0].orgId;
+						this.params.storeyId = e.value[1].orgId;
+						this.params.houseId = '';
+					} else {
+						this.params.repairPositionName = e.value[0].orgName + '/' + e.value[1].orgName + '/' + e.value[2].orgName;
+						this.params.buildingId = e.value[0].orgId;
+						this.params.storeyId = e.value[1].orgId;
+						this.params.houseId = e.value[2].orgId;
+					}
+					this.placeShow = false;
+				}else{
+					this.params.repairPositionName = e.value[0].orgName + '/' + e.value[1].orgName;
+					this.params.buildingId = e.value[0].orgId;
+					this.params.storeyId = e.value[1].orgId;
+					this.params.houseId = '';
+					this.placeShow2 = false;
+				}
 			},
-			paramsConfirm(e,type){
-				this.placeShow = this.areaShow = this.typeShow = false;
+			placeCancel() {
+				if(this.params.repairRegionName == '室内') this.placeShow = false;
+				else this.placeShow2 = false;
+			},
+			paramsConfirm(e,key1,key2){
+				this.params[key1] = e.value[0].id;
+				this.params[key2] = e.value[0].label;
+				this.areaShow = this.typeShow = false;
+			},
+			save(){
+				let flag = true;
+				for(let t in this.tip){
+					if((t=='contactPhone'&&!this.$reg.mobile(this.params[t]))||(t!='contactPhone'&&!this.params[t])){
+						this.$showToast(this.tip[t])
+						flag = false;
+						break;
+					}
+				}
+				
+				if(!flag) return;
+				this.$api.post('/repairorder', this.params).then(res=>{
+					if(res.data.code===0){
+						this.$showToast('提交成功');
+						setTimeout(()=>{
+							uni.navigateBack();
+						},1500)
+					}else this.$showToast(res.data.msg)
+				})
 			}
 		}
 	}
@@ -153,10 +277,43 @@
 
 <style>
 	.repair-inp-ph{
-		color: #1D2129 !important;
+		color: #B9C0C8 !important;
 	}
 </style>
 <style scoped lang="less">
+	.uploadPart {
+		display: flex;
+		justify-content: center;
+		width: 100%;
+
+		.uploadBtn {
+			width: 160rpx;
+			height: 160rpx;
+			background-color: #ECF0FF;
+			text-align: center;
+			border-radius: 4rpx;
+			display: flex;
+			align-items: center;
+			justify-content: center;
+		}
+
+		.allimg {
+			position: relative;
+		}
+
+		.newimg {
+			width: 160rpx;
+			height: 160rpx;
+			margin-right: 10rpx;
+		}
+
+		.mytrash {
+			position: absolute;
+			top: 2px;
+			right: 10px;
+		}
+	}
+	
 	::v-deep .desc .u-textarea{
 		border: none;
 		padding: 0 !important;

+ 82 - 30
pagesInspection/waitOrder/detail.vue

@@ -5,63 +5,65 @@
 		<div class="form">
 			<div class="item">
 				<div class="left">报修时间</div>
-				<div class="right">{{order.time}}</div>
+				<div class="right">{{order.createDate||''}}</div>
 			</div>
 			<div class="item">
 				<div class="left">报修位置</div>
-				<div class="right">{{order.place}}</div>
+				<div class="right">{{order.repairPosition||''}}</div>
 			</div>
 			<div class="item">
 				<div class="left">报修区域</div>
-				<div class="right">{{'公告区域'}}</div>
+				<div class="right">{{order.repairRegion==1?'公共区域':(order.repairRegion==2?'室内':'')}}</div>
 			</div>
 			<div class="item">
 				<div class="left">报修类型</div>
-				<div class="right">{{order.typename}}</div>
+				<div class="right">{{RepairType[order.repairType]||''}}</div>
 			</div>
 			<div class="item">
 				<div class="left">联系人</div>
-				<div class="right">{{'张浩'}}</div>
+				<div class="right">{{order.contactPerson||''}}</div>
 			</div>
 			<div class="item">
 				<div class="left">联系电话</div>
-				<div class="right">{{'18799876098'}}</div>
+				<div class="right">{{order.contactPhone||''}}</div>
 			</div>
 			<div class="pre">
 				<div class="title">故障描述</div>
-				<div class="desc">{{'水龙头一直滴水关不上,请尽快处理!谢谢~'}}</div>
+				<div class="desc">{{order.faultDes||''}}</div>
 			</div>
 		</div>
 		<div class="photos">
 			<div class="title">照片</div>
 			<div class="list">
-				<div class="item" v-for="(item,index) in [1,2,3]" :key="index"></div>
+				<div class="item" v-for="(item,index) in picList" :key="index">
+					<image :src="item" style="width: 100%;height: 100%;"></image>
+				</div>
 			</div>
 		</div>
-		<div class="otitle" v-if="order.status!==1">维修信息</div>
-		<div class="form" v-if="order.status!==1">
+		<div class="otitle" v-if="order.status!=1">维修信息</div>
+		<div class="form" v-if="order.status!=1">
 			<div class="item">
 				<div class="left">紧急程度</div>
-				<div class="right">{{'非常紧急'}}</div>
+				<div class="right">{{urgencyCfg[order.urgency]||''}}</div>
 			</div>
 			<div class="item">
 				<div class="left">维修人员</div>
-				<div class="right">{{'张浩'}}</div>
+				<div class="right">{{order.repairPersonName||''}}</div>
 			</div>
 			<div class="item">
 				<div class="left">联系电话</div>
-				<div class="right">{{'18799876098'}}</div>
+				<div class="right">{{order.contactPhone||''}}</div>
 			</div>
 			<div class="item" v-if="order.status==3">
 				<div class="left">维修完成时间</div>
-				<div class="right">{{'2024-01-08 15:13:45'}}</div>
+				<div class="right">{{order.repairFinishTime||''}}</div>
 			</div>
 		</div>
 		<div class="bottom">
 			<div class="btn" v-if="order.status==1" @tap="show = true">指派维修人员</div>
 			<div class="btn" v-else @tap="back">返回</div>
 		</div>
-		<u-popup :show="show" @close="close">
+		<u-popup :show="show" @cencel="close">
 			<div class="popupbox">
 				<div class="title">
 					指派
@@ -86,8 +88,8 @@
 				<div class="btn" @tap="submit">提交</div>
 			</div>
 		</u-popup>
-		<u-picker :show="userShow" :columns="userColumns" @cancel="userShow=false" @confirm="e=>orderConfirm(e,'repairPerson')"></u-picker>
-		<u-picker :show="engreShow" :columns="engreColumns" @cancel="engreShow=false" @confirm="e=>orderConfirm(e,'engreLevel')"></u-picker>
+		<u-picker :show="userShow" :columns="userColumns" keyName="label" @cancel="userShow=false" @confirm="e=>orderConfirm(e,'renyuanid','repairPerson')"></u-picker>
+		<u-picker :show="engreShow" :columns="engreColumns" keyName="label" @cancel="engreShow=false" @confirm="e=>orderConfirm(e,'jjcd','engreLevel')"></u-picker>
 	</view>
 </template>
 
@@ -95,39 +97,90 @@
 	export default {
 		data(){
 			return {
+				companyOrgId:'',
+				renyuanid:'',
+				jjcd:'',
 				order:{},
+				RepairType:{},
+				urgencyCfg:{
+					1:'非常紧急',
+					2:'紧急',
+					3:'普通'
+				},
 				show:false,
 				userShow:false,
 				userColumns:[
-					['张三','李四','王五']
+					[]
 				],
 				engreShow:false,
 				engreColumns:[
-					['普通','紧急','非常紧急']
+					[{id:1,label:'非常紧急'},{id:2,label:'紧急'},{id:3,label:'普通'}]
 				],
+				picList:[]
 			}
 		},
-		onLoad(option) {
-			this.order = JSON.parse(option.order);
+		async onLoad(option) {
+			this.companyOrgId = option.id;
+			await this.getRepairTypeData();
+			this.getUserList();
+			this.getDetail(option.id);
 		},
 		methods:{
+			async getRepairTypeData(){
+				let res = await this.$api.get('/sys/dict/data/getListByType/RepairType');
+				if(res.data.code===0){
+					res.data.data.forEach(d=>{
+						this.RepairType[d.dictValue]=d.dictLabel;
+					})
+				}else this.$showToast(res.data.msg)
+			},
+			getUserList(){
+				this.$api.get('/user/list',{page:1,limit:9999}).then(res=>{
+					if(res.data.code===0){
+						res.data.data.forEach(d=>{
+							this.userColumns[0].push({id:d.id,label:d.realName})
+						})
+					}else this.$showToast(res.data.msg)
+				})
+			},
+			getDetail(id){
+				this.$api.get('/repairorder/'+id).then(res=>{
+					if(res.data.code===0){
+						this.order = res.data.data;
+						this.picList = this.order.faultPics.split(',');
+					}else this.$showToast(res.data.msg)
+				})
+			},
 			close(){
 				this.show = false;
+				this.order = {};
 			},
 			back(){
 				uni.navigateBack();
 			},
-			orderConfirm(e,type){
-				this.order[type] = e.value[0];
+			orderConfirm(e,key1,key2){
+				this[key1] = e.value[0].id;
+				this.order[key2] = e.value[0].label;
 				this.userShow = this.engreShow = false;
 			},
 			submit(){
-				this.$showToast('提交成功');
-				setTimeout(()=>{
-					uni.redirectTo({
-						url:'/pagesInspection/waitOrder/index?status=2'
-					})
-				},1500)
+				if(!this.renyuanid) return this.$showToast('请选择维修人员')
+				if(!this.jjcd) return this.$showToast('请选择紧急程度')
+				
+				this.$api.put('/repairorder',{
+					id: this.companyOrgId,
+					repairPersonId: this.renyuanid,
+					urgency: this.jjcd,
+				}).then(res=>{
+					if(res.data.code===0){
+						this.$showToast('提交成功');
+						setTimeout(()=>{
+							uni.redirectTo({
+								url:'/pagesInspection/waitOrder/index?status=2'
+							})
+						},1500)
+					}else this.$showToast(res.data.msg)
+				})
 			}
 		}
 	}
@@ -220,7 +273,6 @@
 					width: calc(100% / 3 - 30rpx);
 					height: 220rpx;
 					margin-top: 24rpx;
-					background: #D8D8D8;
 				}
 			}
 		}

+ 50 - 42
pagesInspection/waitOrder/index.vue

@@ -2,16 +2,16 @@
 	<view class="page" :style="{'min-height':h+'px', 'padding-top':mt+'px'}">
 		<cus-header title='工单待办'></cus-header>
 		<div class="tab">
-			<div class="pre" :class="{'active':tIdx===0}" @tap="changeType(0)">待指派</div>
-			<div class="pre" :class="{'active':tIdx===1}" @tap="changeType(1)">已指派(待维修)</div>
-			<div class="pre" :class="{'active':tIdx===2}" @tap="changeType(2)">已维修</div>
+			<div class="pre" :class="{'active':params.status==1}" @tap="changeType(1)">待指派</div>
+			<div class="pre" :class="{'active':params.status==2}" @tap="changeType(2)">已指派(待维修)</div>
+			<div class="pre" :class="{'active':params.status==3}" @tap="changeType(3)">已维修</div>
 		</div>
 		<div class="boxs" v-if="list.length">
 			<div class="box" v-for="(item,index) in list" :key="index" @tap="toDetail(item)">
-				<div class="place">{{item.place}}</div>
-				<div class="pre">报修类型<span>{{item.typename}}</span></div>
-				<div class="pre">报修时间<span>{{item.time}}</span></div>
-				<div class="type" :class="colorCfg[item.type]||'mr'">{{typeCfg[item.type]||'未知'}}</div>
+				<div class="place">{{item.repairPosition||''}}</div>
+				<div class="pre">报修类型<span>{{RepairType[item.repairType]||''}}</span></div>
+				<div class="pre">报修时间<span>{{item.createDate||''}}</span></div>
+				<div class="type" :class="colorCfg[item.urgency]||'mr'" v-if="params.status!==1">{{typeCfg[item.urgency]||'未知'}}</div>
 			</div>
 		</div>
 		<template v-else>
@@ -29,57 +29,65 @@
 		data(){
 			return {
 				typeCfg:{
-					1:'普通',
+					3:'普通',
 					2:'紧急',
-					3:'非常紧急'
+					1:'非常紧急'
 				},
 				colorCfg:{
-					1:'pt',
+					3:'pt',
 					2:'jj',
-					3:'fcjj'
+					1:'fcjj'
+				},
+				RepairType:{},
+				params:{
+					page:1,
+					limit:10,
+					status:1
 				},
-				tIdx:0,
-				source:[
-					{
-						place:'B座13楼1301',
-						typename:'水龙头漏水',
-						time:'2024-12-28 10:32:35',
-						type:3,//1普通 2紧急 3非常紧急
-						status:1//1待指派 2已指派待维修 3已维修
-					},
-					{
-						place:'B座13楼1301',
-						typename:'水龙头漏水',
-						time:'2024-12-28 10:32:35',
-						type:2,//1普通 2紧急 3非常紧急
-						status:2//1待指派 2已指派待维修 3已维修
-					},
-					{
-						place:'B座13楼1301',
-						typename:'水龙头漏水',
-						time:'2024-12-28 10:32:35',
-						type:1,//1普通 2紧急 3非常紧急
-						status:3//1待指派 2已指派待维修 3已维修
-					}
-				],
 				list:[]
 			}
 		},
-		onShow() {
+		async onShow() {
 			let pages = getCurrentPages();
 			let last = pages[pages.length-1];
 			let status = last.options?.status;
-			this.tIdx = status ? (status-1) : 0;
-			this.list = this.source.filter(l=>l.status==(status||1))
+			if(status) this.params.status = status;
+			this.getRepairTypeData();
+			this.getList();
+		},
+		async onReachBottom() {
+			if(this.isOver) return
+			this.getRepairTypeData();
+			this.getList();
 		},
 		methods:{
-			changeType(type){
-				this.tIdx = type;
-				this.list = this.source.filter(l=>l.status===(type+1))
+			changeType(status){
+				this.params.page = 1;
+				this.params.status = status;
+				this.list = [];
+				this.getList();
+			},
+			async getRepairTypeData(){
+				let res = await this.$api.get('/sys/dict/data/getListByType/RepairType');
+				if(res.data.code===0){
+					res.data.data.forEach(d=>{
+						this.RepairType[d.dictValue]=d.dictLabel;
+					})
+				}else this.$showToast(res.data.msg)
+			},
+			getList(){
+				this.$api.get('/repairorder/page',this.params).then(res=>{
+					if(res.data.code===0){
+						if(this.list.length<res.data.data.total){
+							this.params.page++;
+							this.list = [...this.list,...res.data.data.list];
+						}else this.isOver = true
+					}else this.$showModal(res.data.msg)
+				});
 			},
 			toDetail(item){
 				uni.navigateTo({
-					url:'/pagesInspection/waitOrder/detail?order='+JSON.stringify(item)
+					url:'/pagesInspection/waitOrder/detail?id='+item.id
 				})
 			}
 		}