From 4efeb31d5b4921d7e851c256009486ad86bc70e2 Mon Sep 17 00:00:00 2001
From: zengh <123456>
Date: Tue, 21 Jun 2022 09:14:57 +0800
Subject: [PATCH] 地址替换

---
 pages/dispatch/dispatch.vue |  583 +++++++++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 533 insertions(+), 50 deletions(-)

diff --git a/pages/dispatch/dispatch.vue b/pages/dispatch/dispatch.vue
index ac3b753..8b33dab 100644
--- a/pages/dispatch/dispatch.vue
+++ b/pages/dispatch/dispatch.vue
@@ -1,85 +1,568 @@
 <template>
-	<view class="container">
-		<view class="service-box">
-			<u-grid :col="4" :border="false">
-				<u-grid-item bg-color="transparent" v-for="(item, index) in serviceButton" :key="index" @click="goBusinessPage(item.url,index)">
-					<view class="service-item">
-						<image :src="item.img" mode="widthFix" class="img"></image>
-						<view class="name">{{ item.name }}</view>
+
+	<view class="page-container" style="height: 100%; position: relative;">
+		<view class="head top-absolute">
+			<u-navbar :is-fixed="false" :border-bottom="false" :is-back="false" title=""
+				:background="{ background: '#0BB9C8' }">
+				<view class="nav-wrap">
+
+					<view style="position: relative;">
+
+						<view class="btn-return-box">
+							<view class="btn-return">
+								<i class="uni-btn-icon" @click="goReturnPage"
+									style="color: rgb(255, 255, 255); font-size: 27px;"></i>
+							</view>
+						</view>
+
+						<span class="header-title">调度指令</span>
+
+						<u-icon v-if="$store.state.UserData.rname[0].indexOf('保安') == -1" @click="goToAddPage" top='4'
+							class="header-add" name="plus" color="#fff">
+						</u-icon>
+
 					</view>
-				</u-grid-item>
-			</u-grid>
+
+				</view>
+			</u-navbar>
+		</view>
+		<view class="head">
+			<u-navbar :is-fixed="false" :border-bottom="false" :is-back="false" title=""
+				:background="{ background: '#0BB9C8' }">
+				<view class="nav-wrap">
+
+					<view style="position: relative;">
+
+						<view class="btn-return-box">
+							<view class="btn-return">
+								<i class="uni-btn-icon" @click="goReturnPage"
+									style="color: rgb(255, 255, 255); font-size: 27px;"></i>
+							</view>
+						</view>
+
+						<span class="header-title">调度指令</span>
+
+						<u-icon @click="goToAddPage" top='4' class="header-add" name="plus" color="#fff">
+						</u-icon>
+
+					</view>
+
+				</view>
+			</u-navbar>
+		</view>
+
+		<view class="wrapper">
+
+			<view class="body">
+
+				<view class="body-content">
+
+					<u-tabs :list="list" :is-scroll="false" :current="current" active-color="#14B9C8"
+						inactive-color="#595959" height="100" @change="change"></u-tabs>
+
+					<u-search v-model='keyValue' placeholder='请输入指令内容' shape="round" class="u-search"
+						input-align="center" height="70" @search='searchValue' @custom='searchValue' @clear='clearValue'
+						@change='changeValue'>
+					</u-search>
+
+					<view v-show="current == 0 && newsList.length > 0">
+						<view class="inTmain" v-for="(item,index) in newsList">
+							<u-card :title="item.content" @click="goDetail(item)">
+								<view class="" slot="body">
+									<view>
+										<view style="margin-bottom: 10px;" class="u-body-item-title u-line-2">
+											发送指令人:{{item.sendName}}</view>
+									</view>
+									<view>
+										<view class="u-body-item-title u-line-2">接受指令人:{{item.receiveName}}</view>
+									</view>
+								</view>
+								<view class="" slot="foot">
+									</u-icon>发送指令时间:{{item.sendTime}}</view>
+							</u-card>
+						</view>
+						<u-loadmore class='msg' :status="status" />
+					</view>
+
+					<view v-show="current == 1 && newsList.length > 0">
+						<view class="inTmain" v-for="(item,index) in newsList">
+							<u-card :title="item.content" @click="goDetail(item)">
+								<view class="" slot="body">
+									<view>
+										<view style="margin-bottom: 10px;" class="u-body-item-title u-line-2">
+											发送指令人:{{item.sendName}}</view>
+									</view>
+									<view>
+										<view class="u-body-item-title u-line-2">接受指令人:{{item.receiveName}}</view>
+									</view>
+								</view>
+								<view class="" slot="foot">
+									</u-icon>发送指令时间:{{item.sendTime}}</view>
+							</u-card>
+						</view>
+						<u-loadmore class='msg' :status="status" />
+					</view>
+
+					<view class="msg" v-show='newsList.length == 0'>
+						暂无数据
+					</view>
+
+				</view>
+
+			</view>
+
 		</view>
 	</view>
+
 </template>
 
 <script>
-	import {
-		fakeServiceButton
-	} from "@/api/mock/dispatch.js";
-	
 	export default {
 		data() {
 			return {
-				dataList:[],
-				serviceButton: []
+
+				list: [],
+
+				current: 0,
+
+				dataList: [],
+				newsList: [],
+
+				status: 'loadmore',
+				keyValue: '',
+
+				dataList: [],
+				newsList: [],
+				pagelist: 0,
+				pages: 0,
+				flag: true,
+
+				pullDown: false
+
 			};
 		},
 		onLoad() {
-			
+
+			if (this.$store.state.UserData.rname[0] == '保安') {
+
+				this.list = [{
+					name: '接收指令查询'
+				}]
+				
+				this.getSend();
+
+			} else if (this.$store.state.UserData.rname[0] == '保安公司管理员') {
+
+				this.list = [{
+					name: '接收指令查询'
+				}]
+				
+				this.getSend();
+
+			} else {
+				this.list = [{
+					name: '下发指令查询'
+				}, {
+					name: '接收指令查询'
+				}]
+				
+				this.getReceive()
+			}
+
 		},
 		onReachBottom() {
-			
+			var that = this;
+
+			if (that.flag == false) {
+				that.status = 'nomore';
+				return
+			}
+			// 后续将改为与后端联动
+			that.status = 'loading';
+
+			setTimeout(() => {
+				if (that.current == 0) {
+					that.getReceive();
+				} else {
+					that.getSend();
+				}
+			}, 1000);
+		},
+
+		onPullDownRefresh: function() {
+			var that = this;
+
+			this.pullDown = true;
+			this.pagelist = 0;
+			this.pages = 0;
+			this.flag = true;
+			this.dataList = [];
+			this.newsList = [];
+			this.status = 'loading';
+			this.keyValue = '';
+			setTimeout(() => {
+				if (that.current == 0) {
+					that.getReceive();
+				} else {
+					that.getSend();
+				}
+			}, 1000)
+
 		},
 		mounted() {
 		},
 		methods: {
-			onLoad() {
-				// 加载服务按钮数据
-				fakeServiceButton().then(data => {
-					this.serviceButton = data;
+			getReceive() {
+				var that = this;
+
+				if (that.pagelist < that.pages || that.pagelist == 0) {
+					that.pagelist++
+				} else if (that.pagelist == that.pages) {
+					that.flag = false
+					that.status = 'nomore';
+					return
+				}
+
+				uni.request({
+					url: this.$store.state.piAPI + "/directive/page?sendDirectiveId=" + this.$store.state
+						.puserID,
+					method: "get",
+					data: {
+						current: that.pagelist,
+						size: 10
+					},
+					success: (res) => {
+						that.pages = res.data.data.pages;
+
+						var resdata = res.data.data.records;
+
+						if (this.pullDown == true) {
+							this.pullDown = false;
+							uni.stopPullDownRefresh();
+						}
+
+						if (resdata.length == 0) {
+							that.flag = false
+							that.status = 'nomore';
+							return
+						} else {
+							resdata.forEach(item => {
+								that.newsList.push(item)
+								that.dataList.push(item)
+							})
+						}
+
+						if (that.pagelist == that.pages) {
+							that.flag = false
+							that.status = 'nomore';
+							return
+						}
+
+					}
 				});
 			},
-			//页面跳转
-			goBusinessPage(url,index){
+			getSend() {
+				var that = this;
+
+				if (that.pagelist < that.pages || that.pagelist == 0) {
+					that.pagelist++
+				} else if (that.pagelist == that.pages) {
+					that.flag = false
+					that.status = 'nomore';
+					return
+				}
+
+				uni.request({
+					url: this.$store.state.piAPI + "/directive/page?receiveDirectiveIds=" + this.$store.state.puserID,
+					method: "get",
+					data: {
+						current: that.pagelist,
+						size: 10
+					},
+					success: (res) => {
+						that.pages = res.data.data.pages;
+
+						var resdata = res.data.data.records;
+
+						if (this.pullDown == true) {
+							this.pullDown = false;
+							uni.stopPullDownRefresh();
+						}
+
+						if (resdata.length == 0) {
+							that.flag = false
+							that.status = 'nomore';
+							return
+						} else {
+							resdata.forEach(item => {
+								that.newsList.push(item)
+								that.dataList.push(item)
+							})
+						}
+
+						if (that.pagelist == that.pages) {
+							that.flag = false
+							that.status = 'nomore';
+							return
+						}
+
+					}
+				});
+			},
+			goDetail(item) {
 				uni.navigateTo({
-					url:url
+					url: './lookDetail?detailData=' + JSON.stringify(item)
+				});
+			},
+			change(index) {
+				if (this.current == index) return;
+				this.dataList = [];
+				this.newsList = [];
+				this.pagelist = 0;
+				this.pages = 0;
+				this.flag = true;
+				this.current = index;
+				if (index == 0) {
+					this.getReceive();
+				} else {
+					this.getSend();
+				}
+			},
+			searchValue(value) {
+				var that = this;
+				var str = value.replace(/\s*/g, "");
+				if (str == '') {
+					return
+				} else {
+					that.newsList = [];
+
+					if (that.current == 0) {
+						uni.request({
+							url: this.$store.state.piAPI + "/directive/page?receiveDirectiveIds=" + this.$store
+								.state
+								.puserID,
+							method: "get",
+							data: {
+								current: 1,
+								size: 999999,
+								content: str
+							},
+							success: (res) => {
+								var resdata = res.data.data.records;
+
+								resdata.forEach(item => {
+									that.newsList.push(item)
+								})
+
+							}
+						});
+					} else {
+						uni.request({
+							url: this.$store.state.piAPI + "/directive/page?sendDirectiveId=" + this.$store.state
+								.puserID,
+							method: "get",
+							data: {
+								current: 1,
+								size: 999999,
+								content: str
+							},
+							success: (res) => {
+								var resdata = res.data.data.records;
+
+								resdata.forEach(item => {
+									that.newsList.push(item)
+								})
+
+							}
+						});
+					}
+
+					that.flag = false
+					that.status = 'nomore';
+				}
+			},
+			clearValue() {
+				this.keyValue = ''
+				this.newsList = [];
+
+				this.dataList.forEach(item => {
+					this.newsList.push(item)
 				})
-			},	
+
+				if (this.pagelist < this.pages) {
+					this.flag = true;
+					this.status = 'loading';
+				} else {
+					this.flag = false;
+					this.status = 'nomore';
+				}
+			},
+			changeValue(value) {
+				if (value == '') {
+					this.newsList = [];
+
+					this.dataList.forEach(item => {
+						this.newsList.push(item)
+					})
+
+					if (this.pagelist < this.pages) {
+						this.flag = true;
+						this.status = 'loading';
+					} else {
+						this.flag = false;
+						this.status = 'nomore';
+					}
+				}
+			},
+			goReturnPage() {
+				uni.switchTab({
+					url: '/pages/home/home'
+				});
+			},
+			goToAddPage() {
+				uni.navigateTo({
+					url: './imgissue'
+				});
+			},
 		}
 	};
 </script>
 
-
 <style lang="scss">
-	.container {
-		background-color: #f7f7f7;
-		min-height: 100vh;
-		overflow: hidden;
-	}
-	.service-box {
-		background: #ffffff;
-		border-radius: 20px 20px 20px 20px;
-		margin: 30rpx 20rpx 0;
-		padding: 0rpx 20rpx;
+	.page-container {
+		position: fixed;
+		display: block;
+		width: 100%;
+		max-height: 100vh;
 
-		.service-item {
-			display: flex;
-			flex-direction: column;
-			justify-content: space-between;
-			align-items: center;
+
+
+		.head {
+			position: relative;
+
+
 			width: 100%;
-			height: 120rpx;
-			font-size: 26rpx;
-			font-family: PingFang SC;
-			font-weight: 500;
-			color: #585b61;
 
-			.img {
-				width: 70rpx;
-				height: auto;
+
+			.nav-wrap {
+				width: 100%;
+				height: 44px;
+				line-height: 30px;
+				padding: 7px 3px;
+				height: calc(44px + constant(safe-area-inset-top));
+				height: calc(44px + env(safe-area-inset-top));
+				color: rgb(255, 255, 255);
+
+				.btn-return-box {
+					display: flex;
+					align-items: center;
+					font-size: 16px;
+					box-sizing: border-box;
+
+					.btn-return {
+						position: relative;
+						width: auto;
+						margin: 0 2px;
+						word-break: keep-all;
+						white-space: pre;
+						cursor: pointer;
+					}
+				}
+
+				.header-title {
+					position: absolute;
+					top: 0;
+					left: 0;
+					right: 0;
+					bottom: 0;
+					margin: auto;
+					width: 60%;
+					font-weight: 700;
+					line-height: 30px;
+					font-size: 16px;
+					opacity: 1;
+					text-overflow: ellipsis;
+					text-align: center;
+					min-width: 1em;
+				}
+
+				.header-add {
+					position: absolute;
+					top: 0;
+					left: auto;
+					right: 10px;
+					bottom: 0;
+					margin: auto;
+					display: inline-block;
+					font: normal normal normal 14px/1 unibtn;
+					text-rendering: auto;
+					-webkit-font-smoothing: antialiased;
+					font-size: 24px;
+				}
 			}
+
+		}
+
+		.top-absolute {
+			position: fixed;
+			top: 0;
+			left: 0;
+			z-index: 101;
+		}
+
+		.wrapper {
+
+			width: 100%;
+			display: block;
+			height: calc(100% - 44px);
+			height: calc(100% - 44px - constant(safe-area-inset-top));
+			height: calc(100% - 44px - env(safe-area-inset-top));
+
+			.body {
+				width: 100%;
+				height: 100%;
+				overflow-x: hidden;
+				overflow-y: auto;
+
+				.body-content {
+					height: auto;
+
+				}
+
+			}
+
 		}
 	}
-</style>
 
+	.u-card-wrap {
+		background-color: $u-bg-color;
+		padding: 1px;
+	}
+
+	.u-body-item {
+		font-size: 32rpx;
+		color: #333;
+		padding: 20rpx 10rpx;
+	}
+
+	.u-body-item image {
+		width: 120rpx;
+		flex: 0 0 120rpx;
+		height: 120rpx;
+		border-radius: 8rpx;
+		margin-left: 12rpx;
+	}
+
+	.u-search {
+		padding: 20rpx 30rpx 0 30rpx;
+	}
+
+	.inTmain {}
+
+	.msg {
+		height: 72rpx;
+		line-height: 72rpx;
+		text-align: center;
+		color: #999;
+	}
+</style>

--
Gitblit v1.9.3