From 83c8ed513caa29f7d4b3094e0beb9558a82e01ad Mon Sep 17 00:00:00 2001
From: Lou <luzhiping@qqyjz.com>
Date: Thu, 21 Dec 2023 18:11:33 +0800
Subject: [PATCH] 更新

---
 pages/user/center.vue                        |    4 
 pages/user/test.vue                          |  268 ++++++---
 subPackage/workbench/views/cscj02.vue        |  944 ++++++++++++++++++++++++++++++++++++
 subPackage/house/roomDetails/index.vue       |   47 +
 pages/home/index.vue                         |    4 
 subPackage/workbench/views/cscj.vue          |   15 
 subPackage/user/clockIn/index.vue            |    3 
 subPackage/workbench/components/selector.vue |  213 ++++++++
 subPackage/house/roomControl/index.vue       |   11 
 9 files changed, 1,389 insertions(+), 120 deletions(-)

diff --git a/pages/home/index.vue b/pages/home/index.vue
index c908b40..4c73428 100644
--- a/pages/home/index.vue
+++ b/pages/home/index.vue
@@ -129,7 +129,9 @@
 					</u-grid-item>
 				</u-grid>
 			</view>
-			<view class="bgc-ff mb-20 p-20 pb-20" v-if="roleType == 2 && curSelectSite.addressType == 2">
+			
+			<view class="bgc-ff mb-20 p-20 pb-20" v-if="(roleType == 2) && (curSelectSite.addressType == 2)">
+				
 				<caption-row title="工作台" />
 				<u-grid :border="false" col="4">
 					<u-grid-item @click="navigatorPage('/subPackage/workbench/views/editExamine')"
diff --git a/pages/user/center.vue b/pages/user/center.vue
index e4b1cc4..ba0e66c 100644
--- a/pages/user/center.vue
+++ b/pages/user/center.vue
@@ -64,9 +64,9 @@
 				<u-cell title="修改密码"  :border="false"   isLink  url="/subPackage/user/password/index">
 					<image slot="icon" src="/static/icon/menu-center-03.png" class="icon" mode=""></image>
 				</u-cell>
-				<!-- <u-cell title="测试页面"  :border="false"   isLink  url="test">
+				<u-cell title="测试页面"  :border="false"   isLink  url="test">
 					<image slot="icon" src="/static/icon/menu-center-03.png" class="icon" mode=""></image>
-				</u-cell> -->
+				</u-cell>
 				<!-- <u-cell-item title="评分">
 					<image slot="icon" src="/static/images/user/c5.png" class="icon" mode=""></image>
 				</u-cell-item>
diff --git a/pages/user/test.vue b/pages/user/test.vue
index adef062..decd9b0 100644
--- a/pages/user/test.vue
+++ b/pages/user/test.vue
@@ -1,97 +1,149 @@
 <template>
 	<view class="">
-		<view class="cell  flex j-c-s-b a-i-c  bgc-ff"   @click="isShow = true">
+		<view class="cell  flex j-c-s-b a-i-c  bgc-ff" @click="isShow = true">
 			<text class="f-28">选择标签</text>
 			<u-icon name="arrow-right"></u-icon>
 		</view>
-		
-		
-		<u-popup :show="isShow" @close="isShow = false"   :safeAreaInsetTop="true"  mode="bottom"  :closeable="true"  round="12">
-		    <view class="popup-title fw f-30">标签选择</view>
-			
+		<view class="mt-20 p-20 bgc-ff" v-if="selectedItem.length">
+			<view class="f-28">已选标签</view>
+			<view class="p-20 flex flex-wrap">
+				<view v-for="(item,index) in selectedItem" :key="index" class="mr-20">
+					<u-tag :closable="true"  size="mini" @close="delTag(index)"
+						:text="item.categoryName"></u-tag>
+				</view>
+			</view>
+		</view>
+
+
+
+
+
+		<u-popup :show="isShow" @close="closePopup" :safeAreaInsetTop="true" mode="bottom" :closeable="true"
+			round="12">
+			<view class="popup-title fw f-30">标签选择</view>
+
 			<view class="popup-list flex a-i-c">
-				<scroll-view scroll-y="true"  class="scroll">
-				<view class="popup-box bgc-f4">
-					<view :class="['box-item','f-28',index == fIndex?'bgc-ff':'']"  v-for="(item,index)  in  categoryList"   :key="index"  @click="handleSelect(item,index)">
-						{{item.categoryName}}
+				<scroll-view scroll-y="true" class="scroll">
+					<view class="popup-box">
+						<view :class="['box-item','f-28',index == fIndex?'c-main fw':'']"
+							v-for="(item,index)  in  categoryList" :key="index" @click="handleSelect(item,index)">
+							{{item.categoryName}}
+						</view>
 					</view>
-				</view>
 				</scroll-view>
-				<scroll-view scroll-y="true"  class="scroll">
-				<view class="popup-box">
-					<view :class="['box-item','f-28',item.isSelect?'c-main fw':'']"  v-for="(item,index)  in  childList"   :key="index"  @click="handleSelectChild(item,index)">
-						{{item.categoryName}}
+				<u-line direction="col" length="300rpx" v-if="childList.length"></u-line>
+				<scroll-view scroll-y="true" class="scroll" v-if="childList.length">
+					<view class="popup-box">
+						<view :class="['box-item','f-28',item.isSelect?'c-main fw':'']"
+							v-for="(item,index)  in  childList" :key="index" @click="handleSelectChild(item,index)">
+							{{item.categoryName}}
+						</view>
 					</view>
-				</view>
 				</scroll-view>
 			</view>
-			
-	    </u-popup>
-		
+		<!-- 	<view class="popup-footer flex j-c-s-b a-i-c">
+				<view class="popup-btn c-main"   @click="closePopup">
+					取消
+				</view>
+				<view class="popup-btn bgc-main c-ff">
+					确定
+				</view>
+			</view> -->
+		</u-popup>
+
 	</view>
 </template>
 
 <script>
 	import {
-	 getLabelCate
+		getLabelCate
 	} from "@/api/label/categoryLabel.js";
 	export default {
 		data() {
 			return {
-			  isShow:false,
-              categoryList:[],
-			  childList:[],
-			  fIndex:0,
-			  cId:null,
-			  showLabelList:[]
+				isShow: false,
+				categoryList: [],
+				childList: [],
+				fIndex: null,
+				cId: null,
+				showLabelList: [],
+				selectedItem: []
 			}
 		},
-		
+
 		onLoad() {
 			this.getCategory(1);
-			getLabelCate().then(res=>{
-				console.log(res)
-			})
 		},
-	
+
 		methods: {
-              getCategory(level,id){
-				  let params = {
-					  level
-				  }
-				  if(level == 2){
-					  params.parentNo = id;
-				  }
-				  getLabelCate(params).then(res=>{
-					  if(res.code == 200){
-						  if(level == 2){
-							  let data = res.data;
-							  for(let i of data){
-							  	i.isSelect = false;
-							  }
-							  this.childList = data;
-						  }else {
-							 
-							  this.categoryList = res.data;
-						  }
-					  }
-				  })
-			  },
-			  handleSelect(item,index){
-				  this.fIndex = index;
-				  this.getCategory(2,item.categoryNo);
-			  },
-			  handleSelectChild(item,index){
-				  // this.cId = item.id;
-				  
-				  
-				  this.childList[index].isSelect = !this.childList[index].isSelect
-				  
-				 
-				  
-				  
-				  
-			  }
+			getCategory(level, id) {
+				let params = {
+					level
+				}
+				if (level == 2) {
+					params.parentNo = id;
+				}
+				getLabelCate(params).then(res => {
+					if (res.code == 200) {
+						if (level == 2) {
+							let data = res.data;
+							for (let i of data) {
+								i.isSelect = false;
+							}
+							this.childList = data;
+						} else {
+
+							this.categoryList = res.data;
+						}
+					}
+				})
+			},
+			handleSelect(item, index) {
+				if (index == this.fIndex) return;
+				this.fIndex = index;
+				this.selectedItem = [item];
+				this.getCategory(2, item.categoryNo);
+				console.table( "选择父级=>",this.selectedItem)
+			},
+			handleSelectChild(item, index) {
+				this.childList[index].isSelect = !this.childList[index].isSelect;
+				this.getSelected()
+
+			},
+
+			getSelected() {
+				let arr = []
+				for (let i of this.childList) {
+					if (i.isSelect) {
+						arr.push(i);
+					}
+				}
+				this.selectedItem = arr;
+				console.table("选择子级=>",this.selectedItem);
+			},
+
+			showSelected() {
+				for (let i = 0, ii = this.childList.length; i < ii; i++) {
+					for (let k = 0, kk = this.selectedItem.length; k < kk; k++) {
+						if (this.childList[i].id == this.selectedItem[k].id) {
+							this.childList[i].isSelect = true;
+						}
+					}
+				}
+			},
+			
+			
+			closePopup(){
+				this.isShow = false;
+			},
+			
+			delTag(index){
+				this.selectedItem.splice(index,1);
+			}
+
+
+
+
 		}
 	}
 </script>
@@ -100,36 +152,76 @@
 	page {
 		background-color: #F5F5F5;
 	}
-	.cell{
-		padding:20rpx;
+
+	.cell {
+		padding: 20rpx;
 	}
-	.popup-title{
+
+	.popup-title {
 		padding: 20rpx 0;
 		text-align: center;
 	}
-	.scroll{
-		height:700rpx;
+
+	.scroll {
+		flex: 1;
+		height: 700rpx;
+		transition: all .2s;
 	}
-	.scroll:first-child{
-		width:40%;
+
+	// .scroll:first-child {
+	// 	flex:1;
+	// 	.box-item{
+	// 		border-bottom:1px solid #F5F5F5;
+	// 	}
+	// }
+
+	// .scroll:last-child {
+	// 	flex:2;
+	// }
+	.p-20{
+		padding:20rpx;
 	}
-	.scroll:last-child{
-		width:60%;
-	}
-	.popup-list{
-		width:100%;
-		height:700rpx;
-		.bgc-f4{
-			background-color:#f4f4f4;
+	
+
+	.popup-list {
+		width: 100%;
+		height: 700rpx;
+        padding:10rpx 0;
+		box-sizing: border-box;
+		.bgc-f4 {
+			background-color: #f4f4f4;
 		}
-		.popup-box{
+
+		.popup-box {
 			width: 100%;
-			height:700rpx;
-			.box-item{
-				width:100%;
-				padding:30rpx;
+			height: 700rpx;
+
+			.box-item {
+				width: 100%;
+				padding: 30rpx;
 				box-sizing: border-box;
+				text-align: center;
 			}
 		}
 	}
+
+	.popup-footer {
+		padding: 20rpx;
+		box-shadow: 0rpx 0rpx 10rpx 1rpx rgba(0, 0, 0, 0.1);
+
+		.popup-btn {
+			width: 45%;
+			height: 78rpx;
+			line-height: 78rpx;
+			border-radius: 10rpx;
+			text-align: center;
+			font-size: 28rpx;
+		}
+
+		.popup-btn:nth-child(1) {
+			border: 1px solid currentColor;
+		}
+	}
+	
+	
 </style>
\ No newline at end of file
diff --git a/subPackage/house/roomControl/index.vue b/subPackage/house/roomControl/index.vue
index d82bff5..615d871 100644
--- a/subPackage/house/roomControl/index.vue
+++ b/subPackage/house/roomControl/index.vue
@@ -33,7 +33,7 @@
 							@delete="deletePic" uploadIcon="/static/icon/upload.png">
 						</u-upload>
 					</view>
-					<view class=" flex label-btn-box b-c-w">
+					<view class=" flex label-btn-box b-c-w"  v-if="roleType == 2">
 						<newBoxTitle title="房屋标签"></newBoxTitle>
 						<view class="list">
 							<view v-for="(item, index) in labelBtnList" :key="index">
@@ -178,7 +178,8 @@
 				labelValue: "",
 				remark: '',
 				// 标记
-				number: 0
+				number: 0,
+				roleType:1
 
 			}
 		},
@@ -193,6 +194,12 @@
 				code
 			} = option
 			this.houseCode = code
+			
+			let roleName = uni.getStorageSync("activeRole").roleName;
+			if(roleName == "网格员"){
+				this.roleType = 2;
+			}
+			
 		},
 		onShow() {
 			// this.getLabelList()
diff --git a/subPackage/house/roomDetails/index.vue b/subPackage/house/roomDetails/index.vue
index d3f4254..37a15be 100644
--- a/subPackage/house/roomDetails/index.vue
+++ b/subPackage/house/roomDetails/index.vue
@@ -84,11 +84,11 @@
 				<view class="mt-20 rent-out-box">
 					<!-- <box-title :title="'出租管理'"></box-title> -->
 
-					<view class="mt-40 rent-out-list b-c-w rent-out-content" v-for="(item, index) in rentOutList"
+					<view class="mt-20 rent-out-list b-c-w rent-out-content" v-for="(item, index) in rentOutList"
 						:key="index">
 						<view class="t flex j-c-s-b a-i-c">
 							<view class="l">
-								租客:{{item.tenant}}(共{{item.allNum}}人)
+								租客:{{item.tenant || ""}}(共{{item.allNum}}人)
 							</view>
 							<view class="r">
 								<u-icon name="/static/icon/delete.png" color="red" @click="deleteRent(item)"></u-icon>
@@ -102,13 +102,30 @@
 								{{findObjValue(item.status, status)}}
 							</view>
 						</view>
-						<view class="btn-box flex j-c-s-a">
-							<u-button icon="edit-pen" class="btn-item" type="primary" plain text="修改"
+						<view class="btn-box flex j-c-s-b">
+							<!-- <u-button icon="edit-pen" class="btn-item bgc-main" type="primary"  size='small'    text="修改"
 								:disabled="item.status == 1 || item.status == 2" @click="editRent(item)"></u-button>
-							<u-button icon="calendar" class="btn-item" type="primary" plain text="续租"
+							<u-button icon="calendar" class="btn-item bgc-main" type="primary"  size='small'  text="续租"
 								:disabled="item.status == 2" @click="reletRent(item)"></u-button>
-							<u-button icon="order" class="btn-item" type="primary" plain text="终止"
-								:disabled="item.status == 1 || item.status == 2" @click="terRent(item)"></u-button>
+							<u-button icon="order" class="btn-item bgc-main" type="primary"  size='small'   text="终止"
+								:disabled="item.status == 1 || item.status == 2" @click="terRent(item)"></u-button>-->
+							<view class="btn-item">
+								<u-button  class="bgc-main" type="primary"  size='small'    text="修改"
+									:disabled="item.status == 1 || item.status == 2" @click="editRent(item)"></u-button>
+							</view>
+							<view class="btn-item">
+								<u-button  class="bgc-main" type="primary"  size='small'  text="续租"
+									:disabled="item.status == 2" @click="reletRent(item)"></u-button>
+							</view>
+							
+							<view class="btn-item">
+								<u-button  class="bgc-main" type="primary"  size='small'   text="终止"
+									:disabled="item.status == 1 || item.status == 2" @click="terRent(item)"></u-button>
+							</view>
+							
+							
+							
+								
 						</view>
 					</view>
 				</view>
@@ -509,13 +526,17 @@
 							&>.u-button {
 								margin: 0 16rpx;
 							}
-
-							.btn-item {
-								margin: 0 10rpx;
-								border: 0;
-								color: #009FFF;
-								font-weight: 700;
+							.btn-item{
+								width:180rpx;
 							}
+
+							//  /deep/ .btn-item {
+							// 	// margin: 0 10rpx;
+							// 	width:300rpx !important;
+							// 	border: 0;
+							// 	color: #009FFF;
+							// 	font-weight: 700;
+							// }
 						}
 					}
 				}
diff --git a/subPackage/user/clockIn/index.vue b/subPackage/user/clockIn/index.vue
index d7a6659..4eeae32 100644
--- a/subPackage/user/clockIn/index.vue
+++ b/subPackage/user/clockIn/index.vue
@@ -115,7 +115,8 @@
 							title: '提交成功',
 							success() {
 								setTimeout(() => {
-									this.$u.func.globalNavigator("", "navBack")
+									// this.$u.func.globalNavigator("", "navBack")
+								   uni.navigateBack();
 								}, 1000)
 							}
 						})
diff --git a/subPackage/workbench/components/selector.vue b/subPackage/workbench/components/selector.vue
new file mode 100644
index 0000000..c4845d8
--- /dev/null
+++ b/subPackage/workbench/components/selector.vue
@@ -0,0 +1,213 @@
+<template>
+	<view class="">
+
+		<u-popup :show="isShow" @close="closePopup" :safeAreaInsetTop="true" mode="bottom" :closeable="true" round="12">
+			<view class="popup-title fw f-30">标签选择</view>
+
+			<view class="popup-list flex a-i-c">
+				<scroll-view scroll-y="true" class="scroll">
+					<view class="popup-box">
+						<view :class="['box-item','f-28',index == fIndex?'c-main fw':'']"
+							v-for="(item,index)  in  categoryList" :key="index" @click="handleSelect(item,index)">
+							{{item.categoryName}}
+						</view>
+					</view>
+				</scroll-view>
+				<u-line direction="col" length="300rpx" v-if="childList.length"></u-line>
+				<scroll-view scroll-y="true" class="scroll" v-if="childList.length">
+					<view class="popup-box">
+						<view :class="['box-item','f-28',item.isSelect?'c-main fw':'']"
+							v-for="(item,index)  in  childList" :key="index" @click="handleSelectChild(item,index)">
+							{{item.categoryName}}
+						</view>
+					</view>
+				</scroll-view>
+			</view>
+			<!-- 	<view class="popup-footer flex j-c-s-b a-i-c">
+				<view class="popup-btn c-main"   @click="closePopup">
+					取消
+				</view>
+				<view class="popup-btn bgc-main c-ff">
+					确定
+				</view>
+			</view> -->
+		</u-popup>
+	</view>
+</template>
+
+<script>
+	import {
+		getLabelCate
+	} from "@/api/label/categoryLabel.js";
+	export default {
+		name: "selector",
+		data() {
+			return {
+				isShow: false,
+				fIndex: null,
+				selectedItem: [],
+				selectedId: [],
+				categoryList: [],
+				childList: []
+			}
+		},
+		methods: {
+
+			getCategory(level, id) {
+				let params = {
+					level
+				}
+				if (level == 2) {
+					params.parentNo = id;
+				}
+				getLabelCate(params).then(res => {
+					if (res.code == 200) {
+						if (level == 2) {
+							let data = res.data;
+							for (let i of data) {
+								i.isSelect = false;
+							}
+							this.childList = data;
+						} else {
+
+							this.categoryList = res.data;
+						}
+					}
+				})
+			},
+
+			open() {
+				this.isShow = true;
+			},
+			close() {
+				this.isShow = false;
+			},
+			handleSelect(item, index) {
+				if (index == this.fIndex) return;
+				this.fIndex = index;
+				this.selectedItem = [item];
+				this.selectedId = [item.id]
+				this.getCategory(2, item.categoryNo);
+				this.$emit("select", {
+					selected: this.selectedItem,
+					selectedId: this.selectedId
+				})
+			},
+			handleSelectChild(item, index) {
+				this.childList[index].isSelect = !this.childList[index].isSelect;
+				this.getSelected()
+				this.$emit("select", {
+					selected: this.selectedItem,
+					selectedId: this.selectedId
+				});
+
+			},
+			getSelected() {
+				let arr = []
+				let ids = []
+				for (let i of this.childList) {
+					if (i.isSelect) {
+						arr.push(i);
+						ids.push(i.id)
+					}
+				}
+				this.selectedItem = arr;
+				this.selectedId = ids;
+			},
+
+			setDefault(arr) {
+				let ids = [];
+				this.selectedItem = arr;
+				if (arr.length == 1) {
+					for (let i = 0, ii = this.categoryList.length; i < ii; i++) {
+						if (this.categoryList[i].id == arr[0].id) {
+							this.fIndex = i;
+							this.selectedId = [arr[0].id]
+						}
+					}
+				} else {
+					for (let i = 0, ii = this.childList.length; i < ii; i++) {
+						for (let k = 0, kk = arr.length; k < kk; k++) {
+							if (this.childList[i].id == this.arr[k].id) {
+								this.childList[i].isSelect = true;
+								ids.push(this.arr[k].id);
+							}
+						}
+					}
+					this.selectedId = ids;
+				}
+			}
+
+		}
+
+	}
+</script>
+
+<style lang="scss" scoped>
+	.popup-title {
+		padding: 20rpx 0;
+		text-align: center;
+	}
+
+	.scroll {
+		flex: 1;
+		height: 700rpx;
+		transition: all .2s;
+	}
+
+	// .scroll:first-child {
+	// 	flex:1;
+	// 	.box-item{
+	// 		border-bottom:1px solid #F5F5F5;
+	// 	}
+	// }
+
+	// .scroll:last-child {
+	// 	flex:2;
+	// }
+	.p-20 {
+		padding: 20rpx;
+	}
+
+
+	.popup-list {
+		width: 100%;
+		height: 700rpx;
+		padding: 10rpx 0;
+		box-sizing: border-box;
+
+		.bgc-f4 {
+			background-color: #f4f4f4;
+		}
+
+		.popup-box {
+			width: 100%;
+			height: 700rpx;
+
+			.box-item {
+				width: 100%;
+				padding: 30rpx;
+				box-sizing: border-box;
+				text-align: center;
+			}
+		}
+	}
+
+	.popup-footer {
+		padding: 20rpx;
+		box-shadow: 0rpx 0rpx 10rpx 1rpx rgba(0, 0, 0, 0.1);
+
+		.popup-btn {
+			width: 45%;
+			height: 78rpx;
+			line-height: 78rpx;
+			border-radius: 10rpx;
+			text-align: center;
+			font-size: 28rpx;
+		}
+
+		.popup-btn:nth-child(1) {
+			border: 1px solid currentColor;
+		}
+	}
+</style>
\ No newline at end of file
diff --git a/subPackage/workbench/views/cscj.vue b/subPackage/workbench/views/cscj.vue
index f08f8cd..9e06ac8 100644
--- a/subPackage/workbench/views/cscj.vue
+++ b/subPackage/workbench/views/cscj.vue
@@ -172,7 +172,7 @@
 	import uploadMixin from "@/mixin/uploadMixin";
 	import lineItem from "@/subPackage/workbench/components/lineItem.vue"
 	import {
-		getLabelList,getLabelCate
+		getLabelList
 	} from "@/api/label/categoryLabel.js";
 	import {
 		getDoorplateAddressDetail,
@@ -416,7 +416,6 @@
 		},
 		onShow() {
 			this.getLabel()
-			this.getCategory();
 			// this.getLocation()
 		},
 		methods: {
@@ -533,7 +532,7 @@
 					})
 					
 					
-					this.form.jwd = `${Number(data.lat).toFixed(6)},${Number(data.lng).toFixed(6)}`
+					this.form.jwd = `${Number(data.lng).toFixed(6)},${Number(data.lat).toFixed(6)}`
 
 					this.form.building = arr.join("")
 					setTimeout(() => {
@@ -722,16 +721,6 @@
 			popup() {
 				this.$refs.uniPopup.open()
 			},
-			
-			getCategory(){
-				getLabelCate({
-					level:2,
-					parentNo:11
-				}).then(res=>{
-					console.log("category===>",res)
-				})
-			},
-			
 
 			getLabel() {
 				getLabelList({
diff --git a/subPackage/workbench/views/cscj02.vue b/subPackage/workbench/views/cscj02.vue
new file mode 100644
index 0000000..08fe435
--- /dev/null
+++ b/subPackage/workbench/views/cscj02.vue
@@ -0,0 +1,944 @@
+<template>
+	<view class="container">
+		<view class="wrap">
+		<u-form labelWidth="70" :model="form" :rules="rules" ref="form">
+			<view class="item">
+				<!-- u-form-item v-if="!currentId" @click="showPicker = true" class="form-item" labelWidth="100" label="楼栋:"
+					:required="isRequired" :disabled="isDisabled" prop="buildingCode">
+					<u--input border="none" disabledColor="#ffffff" v-model="form.building" placeholder="请选择">
+					</u--input>
+					<u-icon slot="right" name="arrow-right"></u-icon>
+				</u-form-item> -->
+				<view class="box-title">
+					<box-title title="基础信息"></box-title>
+				</view>
+				<u-form-item class="form-item" labelWidth="100" label="场所名称:" :required="isRequiredPlace"
+					:disabled="isDisabled" prop="placeName">
+					<u--input border="none" v-model="form.placeName" placeholder="请输入">
+					</u--input>
+				</u-form-item>
+
+				<u-form-item @click="popup" class="form-item" labelWidth="100" label="标签:" :required="isRequired"
+					:disabled="isDisabled" prop="label">
+					<u--input border="none" disabled disabledColor="#ffffff" placeholder="请选择">
+					</u--input>
+					<u-icon slot="right" name="arrow-right"></u-icon>
+				</u-form-item>
+				<view v-if="showLabelList.length" class="label" style="border-bottom:1px solid eff1f3;">
+					<view v-for="(item,index) in showLabelList" :key="index" class="activeLabel">
+						<u-tag :closable="currentId?false:true" :show="!item.isClose" size="mini" @close="delTag(item)"
+							:text="item.text"></u-tag>
+					</view>
+				</view>
+
+				<u-form-item class="form-item" labelWidth="100" label="备注:" prop="remark">
+					<u--input border="none" v-model="form.remark" placeholder="请输入">
+					</u--input>
+				</u-form-item>
+
+				<!-- <u-form-item class="form-item" labelWidth="100" label="经纬度:" prop="location">
+					<u--input border="none" disabled disabledColor="#ffffff" v-model="form.jwd" placeholder="请输入">
+					</u--input>
+				</u-form-item> -->
+				<u-form-item label="经纬度:" prop="location"  labelWidth="100">
+					<view class="address-row flex">
+						<view class="address-content f-28" v-if="form.jwd">
+							{{form.jwd}}
+						</view>
+						<view class="address-content f-30"  style="color: #c0c4cc;"  v-if="!form.jwd">
+							请选择地址
+						</view>
+						<view class="location-btn c-main f-24" @click="getLocation()">
+							获取地址
+						</view>
+					</view>
+				</u-form-item>
+				
+				
+			</view>
+
+			<view class="item">
+				<view class="box-title">
+					<box-title title="负责人信息"></box-title>
+				</view>
+				<u-form-item class="form-item" labelWidth="100" :required="isRequired" :disabled="isDisabled"
+					label="场所负责人:" prop="username">
+					<u--input border="none" v-model="form.username" placeholder="请输入">
+					</u--input>
+				</u-form-item>
+				<u-form-item class="form-item" labelWidth="100" :required="isRequired" :disabled="isDisabled"
+					label="手机号:" prop="phone">
+					<u--input border="none" v-model="form.phone" placeholder="请输入">
+					</u--input>
+				</u-form-item>
+			</view>
+
+			<view class="item pic" v-if="(currentId && form.images.length) || !currentId ">
+				<view class="box-title">
+					<box-title title="场所照片"></box-title>
+				</view>
+				<u-upload :fileList="form.images" :previewFullImage="uploadConfig.previewFullImage"
+					:accept="uploadConfig.acceptImg" :multiple="uploadConfig.multiple" :maxCount="uploadConfig.maxCount"
+					:capture="uploadConfig.capture" uploadIcon="/static/icon/upload.png" @afterRead="afterReadImg"
+					@delete="deletePic" :disabled="currentId?true:false" :deletable="currentId?false:true">
+				</u-upload>
+			</view>
+
+		</u-form>
+
+
+
+		<view class="item">
+			<view class="box-title">
+				<box-title title="综治网格">
+					<template slot="titleMore">
+						<view class="title-more">
+							<view class="red item"></view>
+							<view class="orange item">85.9</view>
+							<view class="green item"></view>
+						</view>
+					</template>
+				</box-title>
+			</view>
+			<lineItem :dataInfo="comprehensiveData.basic">
+			</lineItem>
+
+			<lineItem :dataInfo="comprehensiveData.scene">
+				<template v-slot:pic="{scope}">
+					<view class="image" v-if="scope.value !== ''">
+						<u--image @click="imgPreview(scope.value)" width="200rpx" height="200rpx"
+							:src="scope.value"></u--image>
+					</view>
+					<view class="" v-else>
+						{{scope.value}}
+					</view>
+				</template>
+			</lineItem>
+		</view>
+
+
+
+		<view class="item">
+			<view class="box-title">
+				<box-title title="公安网格">
+					<template slot="titleMore">
+						<view class="title-more">
+							<view class="red item"></view>
+							<view class="orange item">85.9</view>
+							<view class="green item"></view>
+						</view>
+					</template>
+				</box-title>
+			</view>
+			<lineItem :dataInfo="publicData.basic">
+			</lineItem>
+
+			<lineItem :dataInfo="publicData.scene">
+				<template v-slot:pic="{scope}">
+					{{scope.value}}
+				</template>
+			</lineItem>
+		</view>
+
+
+		<!-- <view class="bottom">
+			<view class="btn">
+				<u-button @click="submit" type="primary" text="提交" v-if="!currentId"></u-button>
+			</view>
+		</view> -->
+        </view>
+		<footer-btn @click="submit" v-if="!currentId" />
+
+		<uni-popup class="citys_win popup_win" ref="uniPopup" type="bottom">
+			<wyh-tree-select :items="labelList" title="标签选择" :showNav="true" defaultActiveColor="#4586fe"
+				:activeIds="activeIds" @clickItem="labelClick" :showCancel="false" :showConfirm="false">
+			</wyh-tree-select>
+		</uni-popup>
+
+
+		<u-picker :show="showPicker" :defaultIndex="defaultIndex" ref="uPicker" keyName="name" :loading="pickerLoading"
+			:columns="pickColumns" @change="changeHandler" @confirm="confirmPicker"
+			@cancel="showPicker = false"></u-picker>
+          
+		  <selector ref="select"    @select="selectChange" />
+		  
+		  
+
+	</view>
+</template>
+
+<script>
+	import uploadMixin from "@/mixin/uploadMixin";
+	import lineItem from "@/subPackage/workbench/components/lineItem.vue"
+	import {
+		getLabelList,getLabelCate
+	} from "@/api/label/categoryLabel.js";
+	import {
+		getDoorplateAddressDetail,
+		getDoorplateAddressList
+	} from "@/api/doorplateAddress/doorplateAddress";
+	import {
+		getPlaceDetail
+	} from '@/api/place/place.js'
+	import {
+		add
+	} from "@/api/place/place";
+	import {
+		format
+	} from "echarts";
+	import boxTitle from '../components/boxTitle/index.vue'
+	import {
+		minioBaseUrl
+	} from "../../../common/setting";
+	import selector from '../components/selector.vue'
+	export default {
+		mixins: [uploadMixin],
+		components: {
+			lineItem,
+			boxTitle,
+			selector
+		},
+		data() {
+			return {
+				isRequired: false,
+				isRequiredPlace: true,
+				isDisabled: true,
+				showPicker: false,
+				pickerLoading: false,
+				pickColumns: [],
+				defaultIndex: [0, 0, 0, 0, 0],
+
+				selectValue: [],
+
+				form: {
+					// buildingCode: "",
+					images: [],
+					label: "",
+					remark: "",
+					imageUrls: "",
+					placeName: "",
+					username: '',
+					phone: '',
+					lat:'',
+					lng:''
+				},
+				rules: {
+					// 'buildingCode': {
+					// 	type: 'string',
+					// 	required: true,
+					// 	message: '请选择楼栋',
+					// 	trigger: ['blur', 'change']
+					// },
+					'placeName': {
+						type: 'string',
+						required: true,
+						message: '请输入场所名称',
+						trigger: ['blur', 'change']
+					},
+					'label': {
+						type: 'string',
+						required: true,
+						message: '请选择标签',
+						trigger: ['blur', 'change'],
+					},
+					'username': {
+						type: 'string',
+						required: true,
+						message: '请输入场所负责人',
+						trigger: ['blur', 'change'],
+					},
+					'phone': {
+						type: 'string',
+						required: true,
+						message: '请输入手机号',
+						trigger: ['blur', 'change'],
+					},
+				},
+
+				labelList: [{
+					text: '全部标签',
+					children: [],
+					dot: false
+				}, ],
+
+				comprehensiveData: {
+					basic: [{
+							label: "社区名称",
+							name: 'communityName',
+							value: "暂无数据"
+						},
+						{
+							label: "网格名称",
+							name: 'gridName',
+							value: "暂无数据"
+						},
+						{
+							label: "网格员",
+							name: 'realName',
+							value: "暂无数据"
+						},
+						{
+							label: "联系电话",
+							name: 'gridPhone',
+							value: "暂无数据"
+						}
+					],
+					scene: [{
+							label: "场所照片",
+							name: 'imageUrls',
+							value: "",
+							useSlot: "pic",
+						},
+						{
+							label: "场所负责人",
+							name: 'username',
+							value: "未完善",
+						},
+						{
+							label: "采集人",
+							name: 'createUserName',
+							value: "未完善"
+						},
+						{
+							label: "采集时间",
+							name: 'createTime',
+							value: "未完善"
+						},
+						{
+							label: "历史事件",
+							value: "未完善",
+						}
+					],
+				},
+				publicData: {
+					basic: [{
+							label: "公安局",
+							name: 'branchName',
+							value: "暂无数据"
+						},
+						{
+							label: "派出所",
+							name: 'localPoliceStationName',
+							value: "暂无数据"
+						},
+						{
+							label: "辖区民警",
+							name: 'policeman',
+							value: "暂无数据"
+						},
+						{
+							label: "联系电话",
+							name: 'policemanPhone',
+							value: "暂无数据"
+						}
+					],
+					scene: [{
+							label: "消防照片",
+							useSlot: "pic",
+						},
+						{
+							label: "采集人",
+							value: "未完善"
+						},
+						{
+							label: "采集时间",
+							value: "未完善"
+						},
+						{
+							label: "消防负责人",
+							value: "未完善",
+						},
+						{
+							label: "采集人",
+							value: "未完善"
+						},
+						{
+							label: "采集时间",
+							value: "未完善",
+						},
+						{
+							label: "历史事件",
+							value: "未完善",
+						}
+					],
+				},
+
+				activeIds: [],
+				showLabelList: [],
+				houseCode: "",
+				currentId: "",
+				addressType: 2,
+				selectItem:[]
+			}
+		},
+		watch: {
+			activeIds: {
+				handler(newVal) {
+					this.form.label = newVal.join(",")
+				}
+			},
+			"form.buildingCode": {
+				handler(newVal) {}
+			},
+			showLabelList(newVal) {}
+		},
+
+		created() {
+			this.buildColumn()
+		},
+		mounted() {
+
+		},
+		options: {
+			styleIsolation: 'shared', // 解除样式隔离
+		},
+		onLoad(option) {
+			console.log(option)
+			const {
+				type
+			} = option
+			if (option.addressType) {
+				this.addressType = option.addressType
+			}
+			if (option.id) {
+				this.currentId = option.id
+			}
+			if (option.houseCode) {
+				this.houseCode = option.houseCode
+				this.form.houseCode = option.houseCode
+			}
+			if (option.id || option.houseCode) {
+				this.getBuildingDetail()
+			}
+			if (!!type || type != void 0) {
+				uni.setNavigationBarTitle({
+					title: '详情'
+				})
+			}
+			// this.$refs.selector.getCategory(1);
+		},
+		onShow() {
+			this.getLabel()
+			this.getCategory();
+			// this.getLocation()
+		},
+		methods: {
+
+			// getBuildingDetail(params = {}) {
+			// 	getDoorplateAddressDetail(Object.assign(params, {
+			// 		stdId: this.stdId
+			// 	})).then(res => {
+			// 		let data = res.data
+			// 		this.form.buildingCode = data.buildingCode
+
+			// 		let buildingNameArr = [data.townStreetName, data.neiName, data.streetRuName, data.aoiName,
+			// 			data.buildingName
+			// 		]
+			// 		let arr = buildingNameArr.filter(e => {
+			// 			return e != null || e != ''
+			// 		})
+
+			// 		// 赋值
+			// 		// this.form.placeName = data['placeName']
+			// 		Object.keys(this.form).forEach(key => {
+			// 			if (!data[key]) {
+			// 				this.form[key] = data.place[key]
+			// 			} else {
+			// 				this.form[key] = data[key]
+			// 			}
+			// 		})
+
+			// 		this.form.building = arr.join("")
+
+			// 		Object.keys(this.comprehensiveData).forEach(key => {
+			// 			this.comprehensiveData[key].forEach(item => {
+			// 				if (!data[item.name]) {
+			// 					item.value = data.place[item.name] || '未完善'
+			// 				} else {
+			// 					item.value = data[item.name] || '未完善'
+			// 				}
+			// 			})
+			// 			this.publicData[key].forEach(item => {
+			// 				if (!data[item.name]) {
+			// 					item.value = data.place[item.name] || '未完善'
+			// 				} else {
+			// 					item.value = data[item.name] || '未完善'
+			// 				}
+			// 			})
+			// 		})
+			// 	})
+			// },
+
+			getBuildingDetail(params = {}) {
+				let idorCodeParams = {}
+				if (this.houseCode) {
+					idorCodeParams = {
+						houseCode: this.houseCode,
+						// addressType:this.addressType
+					}
+				}
+				if (this.addressType) {
+					idorCodeParams.addressType = this.addressType
+				}
+				if (this.currentId) {
+					idorCodeParams = {
+						id: this.currentId
+					}
+				}
+				getPlaceDetail({
+					...params,
+					...idorCodeParams
+				}).then(({
+					code,
+					data
+				}) => {
+					if (code !== 200) {
+						uni.showToast({
+							title: "数据加载失败",
+							icon: 'error'
+						})
+						return
+					}
+					const dpaEntity = data?.doorplateAddressEntity || {}
+
+					const gridEntity = data?.grid || {}
+
+					// this.form.buildingCode = dpaEntity?.buildingCode || ''
+
+					let buildingNameArr = [
+						dpaEntity?.townStreetName,
+						dpaEntity?.neiName,
+						dpaEntity?.streetRuName,
+						dpaEntity?.aoiName,
+						dpaEntity?.buildingName
+					]
+					let arr = buildingNameArr.filter(e => {
+						return e != null || e != ''
+					})
+					this.form.placeName = data['placeName'] || ''
+
+					Object.keys(this.form).forEach(key => {
+						if (!data[key]) {
+							// this.form[key] = dpaEntity[key] || '未完善'
+							this.form[key] = dpaEntity[key]
+						} else {
+							// this.form[key] = data[key] || '未完善'
+							this.form[key] = data[key]
+						}
+						if (key === "images") {
+							// this.form[key] = data.imageUrls
+							if (data.imageUrls) {
+								this.form.images = this.$setImageUrl(data.imageUrls, 2);
+							} else {
+								this.form.images = []
+							}
+						}
+					})
+					
+					
+					this.form.jwd = `${Number(data.lat).toFixed(6)},${Number(data.lng).toFixed(6)}`
+
+					this.form.building = arr.join("")
+					// setTimeout(() => {
+					// 	data.placePoiLabelVOList.forEach(item => {
+					// 		let label = this.labelList[0].children.find(sl => sl.text === item
+					// 			.labelName) || {}
+					// 		label['isClose'] = false
+					// 		label?.text && this.showLabelList.push(label)
+					// 	})
+					// }, 500)
+					let labelList = data.placePoiLabelVOList
+					if(labelList.length){
+					    this.getCategory(2,labelList[0].id);	
+					}
+					setTimeout(() => {
+						for(let i of labelList){
+							i.categoryName = i.text;
+						}
+						this.selectItem = labelList;
+						this.$refs.select.setDefault(labelList);
+					}, 500)
+					
+					
+					Object.keys(this.comprehensiveData).forEach(key => {
+						this.comprehensiveData[key].forEach(item => {
+							if (!data[item.name]) {
+								item.value = dpaEntity[item.name] || '未完善'
+								item.value = gridEntity[item.name] || '未完善'
+							} else {
+								item.value = data[item.name] || '未完善'
+								if (item.name == "imageUrls") {
+									item.value = this.$setImageUrl(data[item.name])
+									// item.value = minioBaseUrl + data[item.name] || '未完善'
+								}
+							}
+						})
+						this.publicData[key].forEach(item => {
+							if (!data[item.name]) {
+								item.value = dpaEntity[item.name] || '未完善'
+							} else {
+								item.value = data[item.name] || '未完善'
+							}
+						})
+					})
+
+				})
+			},
+
+			//表单提交
+			submit() {
+				const that = this
+				this.$refs.form.validate().then(valid => {
+					if (valid) {
+						if (this.form?.images?.length > 0) {
+							let urls = []
+							this.form.images.forEach(e => {
+								urls.push(e.name)
+							})
+							this.form.imageUrls = urls.join(",")
+						}
+						add(this.form).then(res => {
+							uni.showToast({
+								icon: 'success',
+								title: '提交成功',
+								success() {
+									setTimeout(() => {
+										that.$u.func.globalNavigator(
+											"/pages/home/index", "switchTab")
+									}, 1000)
+								}
+							})
+						})
+					}
+				})
+			},
+
+			async buildColumn() {
+
+				//设置街道
+				const townStreet = await this.getDoorplateAddressList(null, "townStreet")
+				this.setColumn(townStreet, 0)
+				//设置社区
+				const nei = await this.getDoorplateAddressList(townStreet[0]?.code, "nei")
+				this.setColumn(nei, 1)
+				//设置路
+				const streetRu = await this.getDoorplateAddressList(nei[0]?.code, "streetRu")
+				this.setColumn(streetRu, 2)
+				//设置地区
+				const district = await this.getDoorplateAddressList(streetRu[0]?.code, "district")
+				this.setColumn(district, 3)
+				//设置楼栋
+				const building = await this.getDoorplateAddressList(district[0]?.code, "building")
+				this.setColumn(building, 4)
+			},
+
+			setColumn(data, index) {
+				this.$set(this.pickColumns, index, data)
+			},
+
+			getLocation() {
+				const that = this
+				uni.getLocation({
+					type: 'wgs84', // 坐标系类型
+					success: function(res) {
+						var latitude = res.latitude; // 维度
+						var longitude = res.longitude; // 经度
+
+						that.form.lng = longitude
+						that.form.lat = latitude
+
+						that.form.jwd = longitude + "," + latitude
+					},
+					fail: function(res) {
+						console.log('获取定位失败:' + res.errMsg);
+					}
+				});
+			},
+			
+			getLocation() {
+				uni.chooseLocation({
+					success: (res) => {
+						this.form.lat = res.latitude;
+						this.form.lng = res.longitude;
+						this.form.jwd = `${Number(res.latitude).toFixed(5)},${Number(res.longitude).toFixed(5)}`
+					}
+				})
+			},
+
+			async getDoorplateAddressList(code, type) {
+				const res = await getDoorplateAddressList(code, type)
+				return res.data
+			},
+
+			confirmPicker(e) {
+
+				if (e.value[4]) {
+					this.selectValue = e.value
+
+					let arr = this.selectValue.map(e => e.name)
+					this.form.building = arr.join("")
+
+					this.form.buildingCode = e.value[4].code
+				}
+				this.showPicker = false
+			},
+
+			async changeHandler(e) {
+				const {
+					columnIndex,
+					index,
+					// 微信小程序无法将picker实例传出来,只能通过ref操作
+					picker = this.$refs.uPicker
+				} = e
+				let item = e.values[columnIndex][index]
+				//街道
+				if (columnIndex === 0) {
+					//获取社区列表
+					const nei = await this.getDoorplateAddressList(item.code, "nei")
+					picker.setColumnValues(1, nei)
+
+					const streetRu = await this.getDoorplateAddressList(nei[0].code, "streetRu")
+					picker.setColumnValues(2, streetRu)
+
+					const district = await this.getDoorplateAddressList(streetRu[0].code, "district")
+					picker.setColumnValues(3, district)
+
+					const building = await this.getDoorplateAddressList(district[0].code, "building")
+					picker.setColumnValues(4, building)
+				}
+
+				if (columnIndex === 1) {
+					const streetRu = await this.getDoorplateAddressList(item.code, "streetRu")
+					picker.setColumnValues(2, streetRu)
+
+					const district = await this.getDoorplateAddressList(streetRu[0].code, "district")
+					picker.setColumnValues(3, district)
+
+					const building = await this.getDoorplateAddressList(district[0].code, "building")
+					picker.setColumnValues(4, building)
+				}
+
+				if (columnIndex === 2) {
+
+					const district = await this.getDoorplateAddressList(item.code, "district")
+					picker.setColumnValues(3, district)
+
+					const building = await this.getDoorplateAddressList(district[0].code, "building")
+					picker.setColumnValues(4, building)
+				}
+
+				if (columnIndex === 3) {
+					const building = await this.getDoorplateAddressList(item.code, "building")
+					picker.setColumnValues(4, building)
+				}
+
+			},
+
+			//弹出层打开
+			popup() {
+				// this.$refs.uniPopup.open()
+				this.$refs.selector.open()
+			},
+			
+			
+			//标签选择
+			selectChange(val){
+				this.selectItem = val.selected;
+				this.form.label = val.selectedId.join(",");
+			},
+			
+			getCategory(){
+				getLabelCate({
+					// level:2,
+					// parentNo:11
+					level:3,
+					parentNo:1101
+				}).then(res=>{
+					console.log("category===>",res)
+				})
+			},
+			
+
+			getLabel() {
+				getLabelList({
+					size: -1
+				}).then(res => {
+					let data = res.data.records
+					data.sort((a, b) => a.sort - b.sort)
+
+					data.forEach(label => {
+						this.labelList[0].children.push({
+							id: label.categoryNo,
+							text: label.categoryName
+						})
+					})
+				})
+			},
+
+			labelClick(item) {
+
+				//判断label是否已在
+				const label = this.showLabelList.find(e => e.id == item.id)
+				if (label) {
+					//在,去掉
+					this.showLabelList = this.showLabelList.filter(e => e.id != label.id)
+					this.activeIds = this.activeIds.filter(e => e != label.id)
+				} else {
+					//不在,添加
+					item.isClose = false
+					this.showLabelList.push(item)
+					this.activeIds.push(item.id)
+				}
+
+				this.showLabelList.sort((a, b) => a.sort - b.sort)
+
+			},
+			delTag(label) {
+				label.isClose = true
+				this.showLabelList = this.showLabelList.filter(e => e.id != label.id)
+				this.activeIds = this.activeIds.filter(e => e != label.id)
+
+			},
+			imgPreview(value) {
+				uni.previewImage({
+					urls: minioBaseUrl + [value],
+				})
+			},
+		}
+	}
+</script>
+
+<style scoped lang="scss">
+	.container {
+		position: relative;
+		width: calc(100% - 60rpx);
+		// height: 100%;
+		display: flex;
+		flex-direction: column;
+		background: #f5f5f5;
+		padding: 0 30rpx 20rpx 30rpx;
+        .wrap{
+			width:100%;
+			margin-bottom:120rpx;
+		}
+		.box-title {
+			padding: 10px 0;
+
+			.title-more {
+				display: flex;
+				align-items: center;
+				height: 100%;
+
+				.item {
+					width: 50rpx;
+					height: 40rpx;
+					color: #ffffff;
+					padding: 6rpx;
+					font-size: 2rpx;
+					text-align: center;
+					line-height: 20px;
+				}
+
+			}
+		}
+
+		.item {
+			margin-top: 20rpx;
+			background-color: #ffffff;
+			border-radius: 8rpx;
+			padding: 0 30rpx;
+
+			.form-item {
+				background-color: #ffffff;
+				padding: 2rpx 10px;
+				border-bottom: 0.1px solid #eff1f3;
+			}
+
+			.label {
+				padding: 10rpx 30rpx;
+				display: flex;
+				background-color: #ffffff;
+				flex-wrap: wrap;
+
+				.activeLabel {
+					// width: 80rpx;
+					margin-left: 10rpx;
+					margin-top: 10rpx
+				}
+			}
+
+
+
+		}
+
+		.pic {
+			background-color: #ffffff;
+			padding-bottom: 20rpx;
+
+			/deep/ .u-upload__button {
+				border: 1rpx solid #EEEEEE;
+				background-color: #fff;
+			}
+		}
+
+		.image {
+			padding: 20rpx;
+		}
+
+		.bottom {
+			padding: 20rpx;
+			background-color: #ffffff;
+			display: flex;
+			justify-content: center;
+			align-items: center;
+
+			.btn {
+				width: calc(100% - 40rpx);
+			}
+		}
+	}
+
+	/deep/ .u-form-item {
+		background-color: #ffffff;
+		padding: 2rpx 10px;
+		border-bottom: 1px solid #eff1f3;
+	}
+
+	.red {
+		background-color: red;
+		border-radius: 10rpx 0rpx 0rpx 10rpx;
+	}
+
+	.orange {
+		background-color: orange;
+	}
+
+	.green {
+		background-color: green;
+		border-radius: 0rpx 10rpx 10rpx 0rpx;
+	}
+	
+	
+	.address-row {
+		flex: 1;
+		justify-content: flex-end;
+		align-items: center;
+	}
+	
+	.address-content {
+		width: calc(100% - 116rpx - 12rpx);
+		margin-right: 12rpx;
+	}
+	
+	.location-btn {
+		width: 116rpx;
+		height: 46rpx;
+		line-height: 46rpx;
+		border-radius: 4rpx;
+		border: 1px solid currentColor;
+		padding: 0;
+		background-color: #fff;
+		text-align: center;
+	}
+	
+</style>
\ No newline at end of file

--
Gitblit v1.9.3