zouling 4 tháng trước cách đây
mục cha
commit
fe83159411
32 tập tin đã thay đổi với 1906 bổ sung398 xóa
  1. 6 0
      property_ui/App.vue
  2. 11 3
      property_ui/api/work/car.js
  3. 43 3
      property_ui/api/work/people.js
  4. 109 0
      property_ui/api/work/service.js
  5. 10 3
      property_ui/api/work/work.js
  6. 12 5
      property_ui/car/pages/illegalrecord.vue
  7. 2 2
      property_ui/manage/pages/community/newsadd.vue
  8. 2 2
      property_ui/manage/pages/community/newsadddj.vue
  9. 2 2
      property_ui/manage/pages/community/newsaddsq.vue
  10. 1 1
      property_ui/manage/pages/community/newsaddvideo.vue
  11. 1 1
      property_ui/manage/pages/community/sqmoneyadd.vue
  12. 10 1
      property_ui/pages.json
  13. 35 23
      property_ui/people/components/car/list.vue
  14. 108 0
      property_ui/people/components/w-select/readme.md
  15. 575 0
      property_ui/people/components/w-select/w-select.vue
  16. 190 36
      property_ui/people/pages/people/comeadd.vue
  17. 91 49
      property_ui/people/pages/people/comegl.vue
  18. 13 7
      property_ui/people/pages/people/staffadd.vue
  19. 53 9
      property_ui/service/components/car/list.vue
  20. 1 1
      property_ui/service/components/popup/popup.vue
  21. 41 13
      property_ui/service/pages/service/patrol.vue
  22. 107 54
      property_ui/service/pages/service/patroladd.vue
  23. 170 0
      property_ui/service/pages/service/patrollist.vue
  24. 42 9
      property_ui/service/pages/service/patrolrecord.vue
  25. 151 64
      property_ui/service/pages/service/patrolset.vue
  26. 3 1
      property_ui/static/style.css
  27. 0 1
      property_ui/utils/common.js
  28. 16 10
      property_ui/work/components/car/list.vue
  29. 14 5
      property_ui/work/pages/manage/house.vue
  30. 87 93
      property_ui/work/pages/manage/houseadd.vue
  31. BIN
      property_ui/work/static/manage/houseb.png
  32. BIN
      property_ui/work/static/manage/housec.png

+ 6 - 0
property_ui/App.vue

@@ -175,6 +175,12 @@ import {updateUserProfile,findVersion} from "@/api/system/user.js"
   }
 </script>
 
+<style>
+/deep/ .uni-forms-item__error{left:auto !important;right: 0;margin-top: 10rpx;z-index: 1;}
+ /deep/ .uniui-calendar::before{display: none;}
+/deep/ .uni-date__x-input{text-align: right;color: #272727;}
+/deep/ .uni-easyinput__content-textarea{margin: 0;}
+</style>
 <style lang="scss">
 @import "@/static/style.css";
   @import '@/static/scss/index.scss'

+ 11 - 3
property_ui/api/work/car.js

@@ -5,7 +5,7 @@ export function illegalParkingAdd(data) {
   return request({
     url: '/wuYe/illegalParking',
     method: 'post',
-    data: data
+    'data': data
   })
 }
 // 违章停车登记-修改
@@ -13,7 +13,7 @@ export function illegalParkingPut(data) {
   return request({
     url: '/wuYe/illegalParking/put',
     method: 'post',
-    data: data
+    'data': data
   })
 }
 // 违章停车登记-删除
@@ -28,7 +28,7 @@ export function illegalParkingList(data) {
   return request({
     url: '/wuYe/illegalParking/list',
     method: 'get',
-    data: data
+    'data': data
   })
 }
 // 违章停车登记-详情
@@ -38,3 +38,11 @@ export function illegalParkingDet(data) {
     method: 'get',
   })
 }
+// 解除黑名单
+export function illegalParkingCancel(data) {
+  return request({
+    url: '/wuYe/illegalParking/cancel',
+    method: 'post',
+	'data': data
+  })
+}

+ 43 - 3
property_ui/api/work/people.js

@@ -5,7 +5,7 @@ export function visitorList(data) {
   return request({
     url: '/wuYe/visitorManage/list',
     method: 'get',
-    data: data
+    'data': data
   })
 }
 // 来访管理-详情wuYe:visitorManage:query
@@ -20,7 +20,7 @@ export function visitorAdd(data) {
   return request({
     url: '/wuYe/visitorManage',
     method: 'post',
-    data: data
+    'data': data
   })
 }
 // 来访管理-修改wuYe:visitorManage:edit
@@ -28,7 +28,7 @@ export function visitorPut(data) {
   return request({
     url: '/wuYe/visitorManage/put',
     method: 'post',
-    data: data
+    'data': data
   })
 }
 // 来访管理-删除wuYe:visitorManage:remove
@@ -39,6 +39,46 @@ export function visitorDel(data) {
   })
 }
 
+// 预约记录-列表wuYe:reservRecord:list
+export function reservList(data) {
+  return request({
+    url: '/wuYe/reservRecord/list',
+    method: 'get',
+    'data': data
+  })
+}
+// 预约记录-详情wuYe:reservRecord:query
+export function reservDet(data) {
+  return request({
+    url: '/wuYe/reservRecord/'+data,
+    method: 'get',
+  })
+}
+// 预约记录-新增wuYe:reservRecord:add
+export function reservAdd(data) {
+  return request({
+    url: '/wuYe/reservRecord',
+    method: 'post',
+    'data': data
+  })
+}
+// 预约记录-修改wuYe:reservRecord:edit
+export function reservPut(data) {
+  return request({
+    url: '/wuYe/reservRecord/put',
+    method: 'post',
+    'data': data
+  })
+}
+// 预约记录-删除wuYe:reservRecord:remove
+export function reservDel(data) {
+  return request({
+    url: '/wuYe/reservRecord/delete/'+data,
+    method: 'get',
+  })
+}
+
+
 // 员工管理-列表wuYe:staffManage:list
 export function staffList(data) {
   return request({

+ 109 - 0
property_ui/api/work/service.js

@@ -0,0 +1,109 @@
+import request from '@/utils/request'
+
+// 巡更信点管理-新增wuYe:checkPointManage:add
+export function xgdglAdd(data) {
+  return request({
+    url: '/wuYe/checkPointManage',
+    method: 'post',
+    'data': data
+  })
+}
+// 巡更信点管理-修改wuYe:checkPointManage:edit
+export function xgdglPut(data) {
+  return request({
+    url: '/wuYe/checkPointManage/put',
+    method: 'post',
+    'data': data
+  })
+}
+// 巡更信点管理-删除wuYe:checkPointManage:remove
+export function xgdglDel(data) {
+  return request({
+    url: '/wuYe/checkPointManage/delete/'+data,
+    method: 'get',
+  })
+}
+// 巡更信点管理-列表wuYe:checkPointManage:list
+export function xgdglList(data) {
+  return request({
+    url: '/wuYe/checkPointManage/list',
+    method: 'get',
+    'data': data
+  })
+}
+// 巡更信点管理-详情wuYe:checkPointManage:query
+export function xgdglDet(data) {
+  return request({
+    url: '/wuYe/checkPointManage/'+data,
+    method: 'get',
+  })
+}
+// 巡更信点管理-列表不分页wuYe:checkPointManage:listNoPage
+export function xgdgllistNoPage(data) {
+  return request({
+    url: '/wuYe/checkPointManage/listNoPage',
+    method: 'get',
+  })
+}
+// 巡更点管理-批量新增wuYe:checkPointManage:addList
+export function xgdgllisplAdd(data) {
+  return request({
+    url: '/wuYe/checkPointManage/addList',
+    method: 'post',
+	'data': data
+  })
+}
+
+// 巡更点记录-新增wuYe:checkPointRecord:add
+export function xgdjlAdd(data) {
+  return request({
+    url: '/wuYe/checkPointRecord',
+    method: 'post',
+    'data': data
+  })
+}
+// 巡更点记录-修改wuYe:checkPointRecord:edit
+export function xgdjlPut(data) {
+  return request({
+    url: '/wuYe/checkPointRecord/put',
+    method: 'post',
+    'data': data
+  })
+}
+// 巡更点记录-删除wuYe:checkPointRecord:remove
+export function xgdjlDel(data) {
+  return request({
+    url: '/wuYe/checkPointRecord/delete/'+data,
+    method: 'get',
+  })
+}
+// 巡更点记录-列表wuYe:checkPointRecord:list
+export function xgdjlList(data) {
+  return request({
+    url: '/wuYe/checkPointRecord/list',
+    method: 'get',
+    'data': data
+  })
+}
+// 巡更点记录-详情wuYe:checkPointRecord:query
+export function xgdjlDet(data) {
+  return request({
+    url: '/wuYe/checkPointRecord/'+data,
+    method: 'get',
+  })
+}
+// 巡更点记录-统计wuYe:checkPointManage:listNoPage
+export function xgdjlCount(data) {
+  return request({
+    url: '/wuYe/checkPointRecord/count',
+    method: 'post',
+	'data':data
+  })
+}
+
+
+
+
+
+
+

+ 10 - 3
property_ui/api/work/work.js

@@ -5,7 +5,7 @@ export function houseInfoAdd(data) {
   return request({
     url: '/wuYe/houseInfo',
     method: 'post',
-    data: data
+    'data': data
   })
 }
 // 房屋信息-修改wuYe:houseInfo:edit
@@ -13,7 +13,7 @@ export function houseInfoPut(data) {
   return request({
     url: '/wuYe/houseInfo/put',
     method: 'post',
-    data: data
+    'data': data
   })
 }
 // 房屋信息-删除wuYe:houseInfo:remove
@@ -28,7 +28,7 @@ export function houseInfoList(data) {
   return request({
     url: '/wuYe/houseInfo/list',
     method: 'get',
-    data: data
+    'data': data
   })
 }
 // 房屋信息-详情wuYe:houseInfo:query
@@ -38,3 +38,10 @@ export function houseInfoDet(data) {
     method: 'get',
   })
 }
+// 房屋信息-列表不分页wuYe:houseInfo:listNoPage
+export function houseInfolistNoPage(data) {
+  return request({
+    url: '/wuYe/houseInfo/listNoPage',
+    method: 'get',
+  })
+}

+ 12 - 5
property_ui/car/pages/illegalrecord.vue

@@ -37,7 +37,12 @@
 				</view>
 			</view>
 		</view>
-		<view class="rfbtn" @click="getDelFn">解除黑名单</view>
+		<block >
+			<!-- v-if="datainfo.isBlack=='Y'" -->
+			<view style="height: 100rpx;"></view>
+			<view class="rfbtn" @click="getDelFn" >解除黑名单</view>
+		</block>
+		
 		<loading></loading>
 	</view>
 </template>
@@ -45,7 +50,7 @@
 <script>
 	import config from '@/config'
 	import {selectDictValue} from "@/utils/common.js"
-	import {illegalParkingDet,illegalParkingDel} from "@/api/work/car.js"
+	import {illegalParkingDet,illegalParkingDel,illegalParkingCancel} from "@/api/work/car.js"
 	import {getDictionaryFn} from "@/api/system/user.js"
 	import { checkPermi, checkRole } from "@/utils/permission"; // 权限判断函数
 	export default{
@@ -121,7 +126,7 @@
 					confirmText: '确认',
 					success: function(res) {
 						if (res.confirm) {
-							// that.filelist.splice(idx,1)
+							that.getLiftFn()
 						} else if (res.cancel) {
 						}
 					}
@@ -129,7 +134,9 @@
 			},
 			getLiftFn(){
 				var that=this;
-				illegalParkingDel(this.id).then(res=>{
+				var params=JSON.parse(JSON.stringify(this.datainfo));
+				params.isBlack="N"
+				illegalParkingCancel(params).then(res=>{
 					if(res.code==200){
 						this.$toast("解除成功")
 						setTimeout(function(){
@@ -146,7 +153,7 @@
 </script>
 <style lang="scss" scoped>
 .bgef{background: #EFF4FF;}
-.irecord{background: #FFFFFF;border-radius: 20rpx;flex: 1;padding-bottom: 110rpx;
+.irecord{background: #FFFFFF;border-radius: 20rpx;flex: 1;padding-bottom: 10rpx;
 	.ctop{padding:20rpx 48rpx;margin-bottom:14rpx;
 		.imgs{width: 30rpx;height: 24rpx;margin-right: 12rpx;}
 		.tit{font-size: 32rpx;color: #272727;font-weight: bold;margin-right: 14rpx;}

+ 2 - 2
property_ui/manage/pages/community/newsadd.vue

@@ -4,7 +4,7 @@
 			<!-- <view class="cbox">
 				<view class="chmain">
 					<uni-forms-item label="文章类型" name="phonenumber">
-						<picker range-key='text' :value="syqxidx" :range="sexs"   @change='bindDateChange'>
+						<picker range-key='dictLabel' :value="syqxidx" :range="sexs"   @change='bindDateChange'>
 							<view class="flexc">
 								<view class="flex1 txr f13" :class="datainfo.iszc?'co27':'coa'">{{datainfo.iszc?'是':'请选择文章类型'}}</view>
 								<view class="rimg"><image :src="rimg"></image></view>
@@ -24,7 +24,7 @@
 					<!-- <uni-forms-item label="文章类型" name="phonenumber">
 						<view class="flexc">
 							
-							<picker range-key='text' :value="syqxidx" :range="sexs"   @change='bindDateChange'>
+							<picker range-key='dictLabel' :value="syqxidx" :range="sexs"   @change='bindDateChange'>
 								<view class="rimg"><image :src="rimg"></image></view>
 							</picker>
 						</view>

+ 2 - 2
property_ui/manage/pages/community/newsadddj.vue

@@ -4,7 +4,7 @@
 			<view class="cbox">
 				<view class="chmain">
 					<uni-forms-item label="文章类型" name="phonenumber">
-						<picker range-key='text' :value="syqxidx" :range="sexs"   @change='bindDateChange'>
+						<picker range-key='dictLabel' :value="syqxidx" :range="sexs"   @change='bindDateChange'>
 							<view class="flexc">
 								<view class="flex1 txr f13" :class="datainfo.iszc?'co27':'coa'">{{datainfo.iszc?'是':'请选择文章类型'}}</view>
 								<view class="rimg"><image :src="rimg"></image></view>
@@ -24,7 +24,7 @@
 					<!-- <uni-forms-item label="文章类型" name="phonenumber">
 						<view class="flexc">
 							
-							<picker range-key='text' :value="syqxidx" :range="sexs"   @change='bindDateChange'>
+							<picker range-key='dictLabel' :value="syqxidx" :range="sexs"   @change='bindDateChange'>
 								<view class="rimg"><image :src="rimg"></image></view>
 							</picker>
 						</view>

+ 2 - 2
property_ui/manage/pages/community/newsaddsq.vue

@@ -4,7 +4,7 @@
 			<view class="cbox">
 				<view class="chmain">
 					<uni-forms-item label="资讯类型" name="phonenumber">
-						<picker range-key='text' :value="syqxidx" :range="sexs"   @change='bindDateChange'>
+						<picker range-key='dictLabel' :value="syqxidx" :range="sexs"   @change='bindDateChange'>
 							<view class="flexc">
 								<view class="flex1 txr f13" :class="datainfo.iszc?'co27':'coa'">{{datainfo.iszc?'是':'请选择资讯类型'}}</view>
 								<view class="rimg"><image :src="rimg"></image></view>
@@ -24,7 +24,7 @@
 					<!-- <uni-forms-item label="文章类型" name="phonenumber">
 						<view class="flexc">
 							
-							<picker range-key='text' :value="syqxidx" :range="sexs"   @change='bindDateChange'>
+							<picker range-key='dictLabel' :value="syqxidx" :range="sexs"   @change='bindDateChange'>
 								<view class="rimg"><image :src="rimg"></image></view>
 							</picker>
 						</view>

+ 1 - 1
property_ui/manage/pages/community/newsaddvideo.vue

@@ -4,7 +4,7 @@
 			<!-- <view class="cbox">
 				<view class="chmain">
 					<uni-forms-item label="文章类型" name="phonenumber">
-						<picker range-key='text' :value="syqxidx" :range="sexs"   @change='bindDateChange'>
+						<picker range-key='dictLabel' :value="syqxidx" :range="sexs"   @change='bindDateChange'>
 							<view class="flexc">
 								<view class="flex1 txr f13" :class="datainfo.iszc?'co27':'coa'">{{datainfo.iszc?'是':'请选择文章类型'}}</view>
 								<view class="rimg"><image :src="rimg"></image></view>

+ 1 - 1
property_ui/manage/pages/community/sqmoneyadd.vue

@@ -5,7 +5,7 @@
 			<view class="cbox">
 				<view class="chmain">
 					<uni-forms-item label="资讯类型" name="phonenumber">
-						<!-- <picker range-key='text' :value="syqxidx" :range="sexs"   @change='bindDateChange'>
+						<!-- <picker range-key='dictLabel' :value="syqxidx" :range="sexs"   @change='bindDateChange'>
 							<view class="flexc">
 								<view class="flex1 txr f13" :class="datainfo.iszc?'co27':'coa'">{{datainfo.iszc?'是':'请选择资讯类型'}}</view>
 								<view class="rimg"><image :src="rimg"></image></view>

+ 10 - 1
property_ui/pages.json

@@ -272,7 +272,7 @@
 			{
 				"path": "pages/people/comeadd",
 				"style": {
-					"navigationBarTitleText": "添加访客",
+					"navigationBarTitleText": "访客登记",
 					"h5":{
 						"titleNView":false
 					}
@@ -347,6 +347,15 @@
 					}
 				}
 			},
+			{
+				"path": "pages/service/patrollist",
+				"style": {
+					"navigationBarTitleText": "巡更点设置",
+					"h5":{
+						"titleNView":false
+					}
+				}
+			},
 			{
 				"path": "pages/service/warranty",
 				"style": {

+ 35 - 23
property_ui/people/components/car/list.vue

@@ -73,29 +73,35 @@
 		</view>
 		<!-- 来访管理 -->
 		<block v-if="type=='comepeo'">
-			<view class="carlist peolist" v-for="(ite,idx) in datainfo" :key="idx">
-				<view class="ctop flexc">
-					<image :src="hicoa" class="imgs"></image>
-					<!-- <image :src="hicob" class="imgs" v-if="ite.type==2"></image> -->
-					<view class="tit">{{ite.houseAddress}}</view>
-					<view class="btn" :class="{'btnbga':ite.status==1,'btnbgc':ite.status==2}">{{kaType(ite.status,visitorType)}}</view>
-					<!-- <view class="btn btnbgc">临时</view> -->
-					<view class="flex1"></view>
-					<view class="txt cc" v-if="ite.isCar=='Y'">驾车</view>
-				</view>
-				<view class="clists">
-					<view class="clist"><view class="tit">预约时间</view>{{ite.reserveTime}}</view>
-					<view class="clist"><view class="tit">来访时间</view>{{ite.visitorTime}}</view>
-					<view class="w50 flexc">
-						<view class="clist"><view class="tit">访客姓名</view>{{ite.name}}</view>
-						<view class="clist"><view class="tit">来访人数</view>{{ite.num}}人</view>
+			<view class="carlist peolist pr" v-for="(ite,idx) in datainfo" :key="idx" @click="getDetail(ite)" 
+				:data-idx="idx"
+				@touchstart="drawStart" @touchmove="drawMove" @touchend="drawEnd" :style="'right:'+ite.right+'px'"
+			>
+				<view class="pbr">
+					<view class="ctop flexc">
+						<image :src="hicoa" class="imgs"></image>
+						<!-- <image :src="hicob" class="imgs" v-if="ite.type==2"></image> -->
+						<view class="tit">{{ite.houseAddress}}</view>
+						<!-- <view class="btn" :class="{'btnbga':ite.status==1,'btnbgc':ite.status==2}">{{kaType(ite.status,visitorType)}}</view> -->
+						<!-- <view class="btn btnbgc">临时</view> -->
+						<view class="flex1"></view>
+						<view class="txt cc" v-if="ite.isCar=='Y'">驾车</view>
 					</view>
-					<view class="w50 flexc">
-						<view class="clist"><view class="tit">来访事由</view>{{ite.reason}}</view>
-						<view class="clist"><view class="tit">车牌号码</view>{{ite.plateNumber}}</view>
+					<view class="clists">
+						<!-- <view class="clist"><view class="tit">预约时间</view>{{ite.reserveTime}}</view> -->
+						<view class="clist"><view class="tit">来访时间</view>{{ite.visitorTime}}</view>
+						<view class="w50 flexc">
+							<view class="clist"><view class="tit">访客姓名</view>{{ite.name}}</view>
+							<view class="clist"><view class="tit">来访人数</view>{{ite.num}}人</view>
+						</view>
+						<view class="w50 flexc">
+							<view class="clist"><view class="tit">来访事由</view>{{ite.reason}}</view>
+							<view class="clist"><view class="tit">车牌号码</view>{{ite.plateNumber}}</view>
+						</view>
+						<view class="clist"><view class="tit">手机号码</view>{{ite.mobileNumber}}</view>
 					</view>
-					<view class="clist"><view class="tit">手机号码</view>{{ite.mobileNumber}}</view>
 				</view>
+				<view class="spdel" v-if="ite.right>0" @click.stop="getDelFn(ite)">删除</view>
 			</view>
 		</block>
 		<view class="shax">{{wtdt}}</view>
@@ -153,8 +159,8 @@
 					return []
 				}
 			},
-			topval:{
-				type:String,
+			tabval:{
+				type:[Number,String],
 				default () {
 					return ''
 				}
@@ -207,6 +213,12 @@
 			},
 			getDelFn(e){
 				var that=this;
+				var id=''
+				if(this.tabval==1){
+					id=e.reservRecordId
+				}else{
+					id=e.visitorManageId
+				}
 				uni.showModal({
 					title: '确认删除',
 					content: "是否确认删除",
@@ -214,7 +226,7 @@
 					confirmText: '确认',
 					success: function(res) {
 						if (res.confirm) {
-							that.$emit('getDelFn',e)
+							that.$emit('getDelFn',id)
 						} else if (res.cancel) {
 						}
 					}

+ 108 - 0
property_ui/people/components/w-select/readme.md

@@ -0,0 +1,108 @@
+#### props
+
+| 名称         | 类型    | 默认值   | 说明                                                   |
+| ------------ | ------- | -------- | ------------------------------------------------------ |
+| width        | string  | '200px'  | 选择框宽度                                             |
+| height       | string  | '30px'   | 选择框高度                                             |
+| bgColor      | string  | '#fff'   | 选择框背景颜色                                         |
+| defaultValue | string  | '请选择' | 默认显示的名称                                         |
+| valueName    | string  | 'label'  | 显示的内容字段名                                       |
+| keyName      | string  | 'value'  | 绑定的内容字段名                                       |
+| list         | array   | []       | 展示的内容列表                                         |
+| showClose    | boolean | true     | 是否显示删除按钮                                       |
+| multiple     | boolean | false    | 是否开启多选                                           |
+| filterable   | boolean | false    | 是否开启搜索功能,开启后直接输入值不选择也可以保存内容 |
+
+该组件默认下拉选择器是从底部弹出,当检测到底部高度不足时则会在上面弹出
+
+#### events
+
+| 事件名 | 说明                                         |
+| ------ | -------------------------------------------- |
+| change | 选择的内容改变时触发,返回的参数为列表的item |
+
+#### 基本使用
+
+绑定的值通过`v-model`绑定,如下面的`chooseValue`,需要获取item的值可以监听`@change`事件
+
+```vue
+<template>
+  <view class="login">
+    <w-select 
+      style="margin-left: 20rpx;" 
+      v-model='chooseValue' 
+      :list='list'
+      valueName='content' 
+      keyName="id"
+      @change='change'
+    >
+    </w-select>
+  </view>
+</template>
+<script>
+  export default {
+    data() {
+      return {
+        chooseValue: "",
+        list: [{
+          id: 1,
+          content: '张三'
+        }, {
+          id: 2,
+          content: '李四'
+        }, {
+          id: 3,
+          content: '王五'
+        }],
+      };
+    },
+    methods: {
+      change(e) {
+        console.log('chooseValue', this.chooseValue)
+      }
+    },
+  }
+</script>
+```
+
+#### 多选
+
+多选开启`multiple`属性,双向绑定的值必须为数组类型,在change事件中根据自己需求进行处理。
+
+```vue
+<template>
+    <w-select 
+      v-model='chooseValue' 
+      :list='list'
+      multiple
+      valueName='content' 
+      keyName="id"
+      @change='change'
+    >
+    </w-select>
+</template>
+<script>
+  export default {
+    data() {
+      return {
+        chooseValue: [],
+        list: [{
+          id: 1,
+          content: '张三'
+        }, {
+          id: 2,
+          content: '李四'
+        }, {
+          id: 3,
+          content: '王五'
+        }],
+      };
+    },
+    methods: {
+      change(e) {
+        console.log('chooseValue', this.chooseValue)
+      }
+    },
+  }
+</script>
+```

+ 575 - 0
property_ui/people/components/w-select/w-select.vue

@@ -0,0 +1,575 @@
+<template>
+	<view
+	  class="w-select"
+	  id="wSelect"
+	  :style="{
+		'--select-wrap-width': width,
+		'--select-wrap-height': height,
+		'--select-bg-color': bgColor
+	  }"
+	>
+	  <view :class="isShow ? 'select-wrap-active' : ''" class="select-wrap" @click="changeShow">
+		<view v-if="multiple" class="select-content">
+		  <view class="select-content-item-default" v-if="multiSelectList.length === 0 && !filterable">
+			{{ defaultValue }}
+		  </view>
+		  <view class="select-content-item" v-if="multiSelectList.length > 0">
+			{{ multiSelectList[0][valueName] }}
+		  </view>
+		  <view class="select-content-item" v-if="multiSelectList.length > 1">
+			{{ multiLength }}
+		  </view>
+		</view>
+		<input
+		  v-if="!multiple || filterable"
+		  type="text"
+		  @input="inputChange"
+		  @blur="blurChange"
+		  :placeholder="multiple ? multiSelectList.length === 0 ? defaultValue : '' : defaultValue"
+		  :disabled="!filterable"
+		  :style="!filterable ? 'pointer-events: none' : ''"
+		  :value="inputData"
+		>
+		<!-- #ifdef VUE2 -->
+		<view
+		  @click.stop="refreshValue"
+		  class="close-icon"
+		  v-if="showClose && (multiple ? value.length > 0 : value)"
+		>
+		  <image :src="refreshUrl" mode="" />
+		</view>
+		<view
+		  v-if="value.length <= 0 || !showClose"
+		  :class="isShow ? 'w-select-arrow-up' : ''"
+		  class="w-select-arrow "
+		/>
+		<!-- #endif -->
+		<!-- #ifdef VUE3 -->
+		<view
+		  @click.stop="refreshValue"
+		  class="close-icon"
+		  v-if="showClose && (multiple ? modelValue.length > 0 : modelValue)"
+		>
+		  <image :src="refreshUrl" mode="" />
+		</view>
+		<view
+		  v-if="modelValue.length <= 0 || !showClose"
+		  :class="isShow ? 'w-select-arrow-up' : ''"
+		  class="w-select-arrow "
+		/>
+		<!-- #endif -->
+  
+		<scroll-view
+		  scroll-y
+		  v-show="optionsShow"
+		  :class="[
+			isShow
+			  ? showPosition === 'bottom'
+				? 'animation-bottom-in'
+				: 'animation-top-in'
+			  : showPosition === 'bottom'
+				? 'animation-bottom-out'
+				: 'animation-top-out',
+			showPosition === 'bottom'
+			  ? 'position-bottom'
+			  : 'position-top'
+		  ]"
+		  class="select-options"
+		>
+		  <!-- #ifdef VUE2 -->
+		  <view
+			@click.stop="handleClickItem(item)"
+			:class="
+			  multiple &&
+				multiSelectList.find(
+				  res => res[keyName] === item[keyName]
+				)
+				? 'item-active'
+				: value == item[keyName]
+				  ? 'item-active'
+				  : ''
+			"
+			v-for="item in filterList"
+			:key="item[keyName]"
+			class="select-option-item"
+		  >
+			{{ item[valueName] }}
+		  </view>
+		  <!-- #endif -->
+		  <!-- #ifdef VUE3 -->
+		  <view
+			@click.stop="handleClickItem(item)"
+			:class="
+			  multiple &&
+				multiSelectList.find(
+				  res => res[keyName] === item[keyName]
+				)
+				? 'item-active'
+				: modelValue == item[keyName]
+				  ? 'item-active'
+				  : ''
+			"
+			v-for="item in filterList"
+			:key="item[keyName]"
+			class="select-option-item"
+		  >
+			{{ item[valueName] }}
+		  </view>
+		  <!-- #endif -->
+  
+		  <view class="options-no-data" v-if="filterList.length < 1">
+			无匹配数据~
+		  </view>
+		</scroll-view>
+	  </view>
+	  <view v-if="isShow" @click="closeContentSelect" class="contentMask" />
+	</view>
+  </template>
+  
+  <script>
+  export default {
+	props: {
+	  width: {
+		type: String,
+		default: '200px'
+	  },
+	  height: {
+		type: String,
+		default: '30px'
+	  },
+	  bgColor: {
+		type: String,
+		default: '#fff'
+	  },
+	  // 是否多选
+	  multiple: {
+		type: Boolean,
+		default: false
+	  },
+	  // 是否可搜索
+	  filterable: {
+		type: Boolean,
+		default: false
+	  },
+	  // 是否显示关闭按钮
+	  showClose: {
+		type: Boolean,
+		default: false
+	  },
+	  // 渲染列表
+	  list: {
+		type: Array,
+		default: () => []
+	  },
+	  // #ifdef VUE3
+	  // 双向绑定的值
+	  modelValue: {
+		type: [Array, String, Number],
+		default: ''
+	  },
+	  // #endif
+	  // #ifdef VUE2
+	  // 双向绑定的值
+	  value: {
+		type: [Array, String, Number],
+		default: ''
+	  },
+	  // #endif
+	  // 默认显示的内容
+	  defaultValue: {
+		type: String,
+		default: '请选择'
+	  },
+	  // 显示的内容
+	  valueName: {
+		type: String,
+		default: 'label'
+	  },
+	  // 绑定的内容
+	  keyName: {
+		type: String,
+		default: 'value'
+	  },
+	  chosevalue:{
+	  		type: String,
+	  		default: '' 
+	  }
+	},
+	// #ifdef VUE3
+	emits: ['update:modelValue', 'change'],
+	// #endif
+	watch: {
+		chosevalue(newval){
+			if(newval&&!this.inputData){
+				this.inputData=newval
+			}
+		},
+	  list: {
+		immediate: true,
+		deep: true,
+		handler (news) {
+		  this.filterList = news
+		  const findItem = news.find(item => {
+			let isItem = ''
+			// #ifdef VUE3
+			if (item[this.keyName] === this.modelValue) {
+			  isItem = true
+			} else {
+			  isItem = false
+			}
+			// #endif
+  
+			// #ifdef VUE2
+			
+			if (item[this.keyName] === this.value) {
+			  isItem = true
+			} else {
+			  isItem = false
+			}
+			// #endif
+			return isItem
+		  })
+		  if (findItem) { 
+			this.inputData = findItem[this.valueName]
+		  }
+		}
+	  }
+	},
+	computed: {
+	  multiLength () {
+		const length = this.multiSelectList.length - 1
+		return '+' + length
+	  },
+	  bottomDistance () {
+		return (
+		  this.windowHeight - this.distanceTop - this.curHeight
+		) // 当前元素距离可视屏幕底部的距离
+	  }
+	},
+	data () {
+	  return {
+		inputData: '',
+		// #ifdef VUE3
+		multiSelectList: this.multiple ? this.modelValue : [],
+		// #endif
+		// #ifdef VUE2
+		multiSelectList: this.multiple ? this.value : [],
+		// #endif
+		isShow: false,
+		optionsShow: false,
+		windowHeight: null,
+		curHeight: null,
+		distanceTop: null,
+		showPosition: 'bottom',
+		filterList: [],
+		refreshUrl: 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDQ4IDQ4IiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxyZWN0IHdpZHRoPSI0OCIgaGVpZ2h0PSI0OCIgZmlsbD0id2hpdGUiIGZpbGwtb3BhY2l0eT0iMC4wMSIvPjxwYXRoIGQ9Ik0yNCA0NEMzNS4wNDU3IDQ0IDQ0IDM1LjA0NTcgNDQgMjRDNDQgMTIuOTU0MyAzNS4wNDU3IDQgMjQgNEMxMi45NTQzIDQgNCAxMi45NTQzIDQgMjRDNCAzNS4wNDU3IDEyLjk1NDMgNDQgMjQgNDRaIiBmaWxsPSJub25lIiBzdHJva2U9IiM3YzZlNmUiIHN0cm9rZS13aWR0aD0iNCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjxwYXRoIGQ9Ik0yOS42NTY5IDE4LjM0MzFMMTguMzQzMiAyOS42NTY4IiBzdHJva2U9IiM3YzZlNmUiIHN0cm9rZS13aWR0aD0iNCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+PHBhdGggZD0iTTE4LjM0MzIgMTguMzQzMUwyOS42NTY5IDI5LjY1NjgiIHN0cm9rZT0iIzdjNmU2ZSIgc3Ryb2tlLXdpZHRoPSI0IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48L3N2Zz4='
+	  }
+	},
+	mounted () {
+	  this.$nextTick(() => {
+		const res = uni.getSystemInfoSync()
+		this.windowHeight = res.windowHeight // 当前设备屏幕高度
+		uni
+		  .createSelectorQuery()
+		  .in(this)
+		  .select('#wSelect')
+		  .boundingClientRect(data => {
+			this.distanceTop = data.top // 当前元素距离顶部的距离
+			this.curHeight = data.height
+		  })
+		  .exec()
+	  })
+	},
+	methods: {
+	  showPositon () {
+		this.showPosition = 'bottom'
+		if (this.bottomDistance < this.windowHeight / 3) {
+		  this.showPosition = 'top'
+		}
+	  },
+	  changeShow () {
+		this.isShow = !this.isShow
+		if (this.isShow === false) {
+		  this.filterList = this.list
+		  setTimeout(() => {
+			this.optionsShow = false
+		  }, 200)
+		} else {
+		  this.showPositon()
+		  this.optionsShow = this.isShow;
+		  // 重置列表
+		  this.filterList = this.list
+		}
+	  },
+	  closeContentSelect () {
+		this.isShow = false
+		setTimeout(() => {
+		  this.optionsShow = false
+		}, 200)
+	  },
+	  setValue (value = '') {
+		// #ifdef VUE3
+		this.$emit('update:modelValue', value)
+		// #endif
+  
+		// #ifdef VUE2
+		this.$emit('input', value)
+		// #endif
+	  },
+	  inputChange (e) {
+		const value = e.detail.value
+		if(this.multiple && this.filterable) {
+			this.inputData = value
+		}else {
+			// this.setValue(value)
+			this.inputData = value
+		}
+		
+		this.filterList = this.list.filter(item =>
+		  item[this.valueName].includes(value)
+		)
+	  },
+	  blurChange(e) {
+		const value = e.detail.value
+		this.inputData=this.chosevalue;
+		if(this.multiple && this.filterable && value) {
+			let curValue ={
+				[this.keyName]:value,
+				[this.valueName]:value
+			}
+			this.multiSelect(curValue)
+		}
+	  },
+	  refreshValue () {
+		this.setValue('')
+		this.inputData = ''
+		this.$emit('change', '')
+		this.filterList = this.list
+		if (this.multiple) {
+		  this.multiSelectList = []
+		}
+	  },
+	  handleClickItem (e) {
+		if (this.multiple) {
+		  this.multiSelect(e)
+		} else {
+		  this.setValue(e[this.keyName])
+		  this.inputData = e[this.valueName]
+		  this.$emit('change', e)
+		  this.changeShow()
+		}
+	  },
+	  multiSelect (item) {
+		const index = this.multiSelectList.findIndex(
+		  res => res[this.valueName] === item[this.valueName]
+		)
+		if (index > -1) {
+		  this.multiSelectList.splice(index, 1)
+		} else {
+		  this.multiSelectList.push(item)
+		}
+		this.inputData = ''
+		this.filterList = this.list
+		this.setValue(this.multiSelectList)
+		this.$emit('change', item)
+	  }
+	}
+  }
+  </script>
+  <style lang="scss" scoped>
+.select-wrap /deep/ .input-placeholder{font-size: 30rpx;color: #AAAAAA;}
+  .w-select {
+	--select-wrap-width: 200px;
+	--select-wrap-height: 30px;
+	--select-border-radius: 4px;
+	--select-border: 1px solid #dcdfe6;
+	--select-active-border: 1px solid #409eff;
+	--select-options-max-height: 150px;
+	--select-option-item-font-size: 14px;
+	--select-input-font-size: 14px;
+	--no-data-default-color: #999999;
+	--select-options-box-shadow: 0px 0px 12px rgb(0 0 0 / 12%);
+	--select-bg-color: #ffffff;
+	.select-wrap {
+	  position: relative;
+	  display: flex;
+	  justify-content: space-between;
+	  align-items: center;
+	  width: var(--select-wrap-width);
+	  height: var(--select-wrap-height);
+	  border: var(--select-border);
+	  border-radius: var(--select-border-radius);
+	  background-color: var(--select-bg-color);
+	  transition: all 0.2s;
+	  input {
+		padding: 0 2px;
+		width: 100%;
+		min-width: 0;
+		height: 100%;
+		font-size: var(--select-input-font-size);
+		flex: 1;
+		text-align: right;
+	  }
+	  .select-content {
+		display: flex;
+		align-items: center;
+		font-size: var(--select-option-item-font-size);
+		.select-content-item {
+		  margin-left: 5px;
+		  padding: 2px 6px;
+		  border-radius: var(--select-border-radius);
+		  color: #aa93b1;
+		  background-color: #f4f4f5;
+		}
+		.select-content-item-default {
+		  margin-left: 5px;
+		  color: var(--no-data-default-color);
+		}
+	  }
+	  .close-icon {
+		position: absolute;
+		top: 50%;
+		right: 7px;
+		z-index: 1000;
+		width: 15px;
+		height: 15px;
+		transform: translateY(-50%);
+		image {
+		  width: 100%;
+		  height: 100%;
+		}
+	  }
+	  .position-bottom {
+		top: calc(var(--select-wrap-height) + 10px);
+	  }
+	  .position-top {
+		bottom: calc(var(--select-wrap-height) + 10px);
+	  }
+	  .select-options {
+		position: absolute;
+		right: 0;
+		left: 0;
+		z-index: 999;
+		overflow: scroll;
+		padding: 10px;
+		max-height: var(--select-options-max-height);
+		border-radius: var(--select-border-radius);
+		background-color: var(--select-bg-color);
+		box-shadow: var(--select-options-box-shadow);
+		.select-option-item {
+		  margin-bottom: 5px;
+		  padding: 5px;
+		  font-size: var(--select-option-item-font-size);
+		  transition: background-color 0.2s;
+		}
+		.item-active {
+		  font-weight: 700;
+		  color: #409eff;
+		  background-color: #f5f7fa;
+		}
+		.options-no-data {
+		  font-size: var(--select-option-item-font-size);
+		  text-align: center;
+		  color: var(--no-data-default-color);
+		}
+	  }
+	  .w-select-arrow {
+		display: inline-block;
+		margin: 3px 10px 0;
+		width: 8px;
+		height: 8px;
+		border-top: 1px solid transparent;
+		border-right: 1px solid transparent;
+		border-bottom: 1px solid #999999;
+		border-left: 1px solid #999999;
+		transition: all 0.3s;
+		transform: translateY(-50%) rotate(-45deg);
+	  }
+	  .w-select-arrow-up {
+		transform: rotate(-225deg);
+	  }
+	}
+	.select-wrap-active {
+	  border: var(--select-active-border);
+	}
+	.animation-bottom-in {
+	  animation-name: bottom-in;
+	  animation-duration: 0.4s;
+	  animation-timing-function: ease-out;
+	  animation-fill-mode: both;
+	}
+	.animation-bottom-out {
+	  animation-name: bottom-out;
+	  animation-duration: 0.2s;
+	  animation-timing-function: ease-out;
+	  animation-fill-mode: both;
+	}
+	.animation-top-in {
+	  animation-name: top-in;
+	  animation-duration: 0.4s;
+	  animation-timing-function: ease-out;
+	  animation-fill-mode: both;
+	}
+	.animation-top-out {
+	  animation-name: top-out;
+	  animation-duration: 0.2s;
+	  animation-timing-function: ease-out;
+	  animation-fill-mode: both;
+	}
+  
+	@keyframes bottom-in {
+	  0% {
+		opacity: 0;
+		transform: translateY(-15%);
+	  }
+	  100% {
+		opacity: 1;
+		transform: translateY(0);
+	  }
+	}
+  
+	@keyframes bottom-out {
+	  0% {
+		opacity: 1;
+		transform: translateY(0);
+	  }
+	  100% {
+		opacity: 0;
+		transform: translateY(-20%);
+	  }
+	}
+  
+	@keyframes top-in {
+	  0% {
+		opacity: 0;
+		transform: translateY(15%);
+	  }
+	  100% {
+		opacity: 1;
+		transform: translateY(0);
+	  }
+	}
+  
+	@keyframes top-out {
+	  0% {
+		opacity: 1;
+		transform: translateY(0);
+	  }
+	  100% {
+		opacity: 0;
+		transform: translateY(20%);
+	  }
+	}
+	.contentMask {
+	  position: fixed;
+	  top: 0;
+	  right: 0;
+	  bottom: 0;
+	  left: 0;
+	  z-index: 998;
+	  width: 100%;
+	  height: 100%;
+	}
+  }
+  </style>
+  

+ 190 - 36
property_ui/people/pages/people/comeadd.vue

@@ -1,37 +1,60 @@
 <template>
 	<view class="check">
-		<uni-forms ref="form" :model="datainfo">
+		<uni-forms ref="form" :model="datainfo" :rules="rules">
 			<view class="cbox">
 				<view class="chtop flexc">
 					<image :src="line"></image>
 					<view>访客信息</view>
 				</view>
 				<view class="chmain">
+					<!-- 选择房屋 -->
 					<uni-forms-item label="访客姓名" name="name">
 						<view class="flexc">
-							<uni-easyinput v-model="datainfo.name"  :inputBorder='false' placeholder="请输入访客姓名" />
-							<uni-data-checkbox selectedColor="#0156FE" selectedTextColor="#272727" v-model="datainfo.sex" :localdata="sexs" />
+							<uni-easyinput :disabled="isdisabled" v-model="datainfo.name"  :inputBorder='false' placeholder="请输入访客姓名" />
+							<!-- <uni-data-checkbox selectedColor="#0156FE" selectedTextColor="#272727" v-model="datainfo.sex" :localdata="sexs" /> -->
 						</view>
 					</uni-forms-item>
 					<uni-forms-item label="来访人数" name="num">
 						<view class="flexc">
-							<uni-easyinput v-model="datainfo.num" type="Number" :inputBorder='false' placeholder="请输入来访人数" />
+							<uni-easyinput :disabled="isdisabled" v-model="datainfo.num" type="Number" :inputBorder='false' placeholder="请输入来访人数" />
 							<view class="rimg"><image :src="rimg"></image></view>
 						</view>
 					</uni-forms-item>
+					<uni-forms-item label="来访时间" name="visitorTime" v-if="tabval==1">
+						<uni-datetime-picker  :disabled="isdisabled" :class="datainfo.visitorTime?'co27':'coa'" type="date" placeholder="请选择来访时间" :border="false" :hide-second='true' v-model="datainfo.visitorTime" @change="changeLog" />
+						<!-- <picker range-key='dictLabel' :value="vxlbidx" :range="vxlbList"   @change='bindDateChangea'>
+							<view class="flexc">
+								<view class="flex1 txr f13 co27" v-if="datainfo.maintenanceCategory&&!vxlb">{{statusFormats(datainfo.maintenanceCategory,vxlbList,'vxlb')}}</view>
+								<view class="flex1 txr f13" v-else :class="vxlb?'co27':'coa'">{{vxlb||"请选择来访时间"}}</view>
+								<view class="rimg"><image :src="rimg"></image></view>
+							</view>
+						</picker> -->
+					</uni-forms-item>
 					<uni-forms-item label="来访事由" name="reason">
 						<view class="flexc">
-							<uni-easyinput v-model="datainfo.reason" :inputBorder='false' placeholder="请选择或输入来访事由" />
-							<picker range-key='text' :value="syqxidx" :range="sexs"   @change='bindDateChange'>
+							<uni-easyinput  :disabled="isdisabled" v-model="datainfo.reason" :inputBorder='false' placeholder="请输入来访事由" />
+							<view class="rimg"><image :src="rimg"></image></view>
+							<!-- <picker range-key='dictLabel' :value="syqxidx" :range="sexs"   @change='bindDateChange'>
 								<view class="rimg"><image :src="rimg"></image></view>
-							</picker>
+							</picker> -->
 						</view>
 					</uni-forms-item>
-					<uni-forms-item label="来访门户" name="houseAddress">
-						<view class="flexc">
+					<uni-forms-item label="来访门户" name="portalId">
+						<!-- <view class="flexc">
 							<uni-easyinput v-model="datainfo.houseAddress" :inputBorder='false' placeholder="请输入门户号" />
 							<view class="rimg"></view>
-						</view>
+						</view> -->
+						<w-select
+						      style="margin-left: 20rpx;" 
+						     v-model="chooseValue"
+						      :list='fwlist'
+						      valueName='label' 
+						      keyName="value"
+							  :chosevalue="datainfo.houseAddress"
+							  :filterable='filterable'
+						      @change='getchange'
+						    >
+						    </w-select>
 					</uni-forms-item>
 				</view>
 			</view>
@@ -56,7 +79,7 @@
 					<uni-forms-item label="车牌号码" name="plateNumber">
 						<view class="flexc">
 							<!-- disabled -->
-							<uni-easyinput v-model="datainfo.plateNumber" :inputBorder='false' placeholder="拍照自动识别" />
+							<uni-easyinput :disabled="isdisabled" v-model="datainfo.plateNumber" :inputBorder='false' placeholder="拍照自动识别" />
 							<view class="aphoto" @click="getaddImage">
 								<image :src="aphoto"></image>
 							</view>
@@ -65,15 +88,19 @@
 					</uni-forms-item>
 					<uni-forms-item label="手机号码" name="mobileNumber">
 						<view class="flexc">
-							<uni-easyinput v-model="datainfo.mobileNumber" :inputBorder='false' placeholder="请输入手机号码" />
+							<uni-easyinput :disabled="isdisabled" v-model="datainfo.mobileNumber" :inputBorder='false' placeholder="请输入手机号码" />
 							<view class="rimg"></view>
 						</view>
 					</uni-forms-item>
+					<view class="tips" v-if="tabval==1">
+						如驾车,填写车牌后,访客到访时,车闸机自动打开
+					</view>
 				</view>
 			</view>
 		</uni-forms>
 		<view class="pdlr12 mt63">
-			<view class="rhbtn" @click="getSubmit">确定</view>
+			<view class="rhbtn" @click="getEditFn" v-if="isdisabled">修改</view>
+			<view class="rhbtn" @click="getSubmit" v-else>确定</view>
 		</view>
 
 		<loading></loading>
@@ -84,9 +111,11 @@
 	import config from '@/config'
 	import {checkPermi,checkRole} from "@/utils/permission"; // 权限判断函数
 	import {uploadIdentify,uploadmore} from '@/utils/common.js'
-	import {visitorAdd} from "@/api/work/people.js"
+	import {visitorAdd,reservAdd,visitorDet,reservDet,visitorPut,reservPut} from "@/api/work/people.js"
+	import {houseInfolistNoPage} from "@/api/work/work.js"
+	import wSelect from "@/people/components/w-select/w-select.vue"
 	export default {
-		components: {},
+		components: {wSelect},
 		data() {
 			return {
 				line: require('@/car/static/car/line.png'),
@@ -98,7 +127,7 @@
 				baseUrl: config.baseUrl,
 				checkflag:true,
 				datainfo: {
-					"visitorManageId":"",//来访主键
+					// "visitorManageId":"",//来访主键
 					 "portalId":"",//门户id
 					 "houseAddress":"",//详细门牌号
 					 "name":"",//访客姓名
@@ -107,10 +136,10 @@
 					 "mobileNumber":"",//手机号码
 					 "isCar":"N",//是否驾车 N:否 Y:是
 					 "plateNumber":"",//车牌号码
-					 "reserveTime":"",//预约时间
+					 // "reserveTime":"",//预约时间
 					 "visitorTime":"",//来访时间
-					 "status":"",//状态 1:预约成功 2:已来访 3:已过期
-					 "photo":""//人脸信息
+					 // "status":"",//状态 1:预约成功 2:已来访 3:已过期
+					 // "photo":""//人脸信息
 				},
 				syqxidx:'',
 				sexs: [{
@@ -120,47 +149,169 @@
 					text: '女',
 					value: 1
 				}],
+				rules:{name: {rules: [{required: true,errorMessage: '请输入访客姓名' }]},
+				  portalId: {rules: [{required: true,errorMessage: '请选择来访门户' }]},
+				  mobileNumber: {rules: [{required: true,errorMessage: '请输入手机号'}, {pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,errorMessage:'请输入正确的手机号码'}]},},
 				phofile:[],
+				filterable:true,
+				chooseValue:'',
+				fwlist:[],
+				tabval:'',//1预约,2 临时
+				id:'',
+				isdisabled:false,
+				ptype:'add',
 			}
 		},
-		onLoad: function() {
-
+		onLoad: function(e) {
+			this.tabval=e.type;
+			if(e.id){
+				this.id=e.id;
+				this.ptype="edit";
+				this.isdisabled=true;
+				this.getDetail()
+			}
+			this.init()
 		},
 		methods: {
 			checkPermi,
 			checkRole,
+			getEditFn(){
+				this.isdisabled=false;
+			},
+			init(){
+				houseInfolistNoPage().then(res=>{
+					if(res.code==200){
+						this.fwlist= res.rows.map(v => {
+							return {
+								label: v.detailedAddress,
+								value: v.houseId,
+								location: v.location
+							}
+						})
+					}
+				})
+			},
 			bindDateChange(e){
 				var val=e.detail.value;
 				// this.datainfo.applicationBank=this.sdyhlist[val].value;
 				// this.applicationBank=this.sdyhlist[val].label;
 			},
 			getChangeFn(){
+				if(this.isdisabled){
+					return
+				}
 				if(this.datainfo.isCar=='Y'){
 					this.datainfo.isCar='N'
 				}else{
 					this.datainfo.isCar='Y'
 				}
 			},
-			getSubmit(){
-				var params=JSON.parse(JSON.stringify(this.datainfo))
-				// 手机号验证
-				let regphone = /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/
-				if (params.mobileNumber && !regphone.test(params.mobileNumber)) {
-					this.$toast("请输入正确的手机号")
-					return
+			getDetail(){
+				if(this.tabval==1){
+					reservDet(this.id).then(res=>{
+						if(res.code==200){
+							this.datainfo=res.data;
+							this.chooseValue=res.data.portalId
+						}
+					})
+				}else{
+					visitorDet(this.id).then(res=>{
+						if(res.code==200){
+							this.datainfo=res.data;
+							this.chooseValue=res.data.portalId
+						}
+					})
 				}
-				visitorAdd(params).then(res=>{
-					if(res.code==200){
-						this.$toast("新增成功")
-						setTimeout(function(){
-							uni.$emit("refComelist")
-							uni.navigateBack({
-								delta:1
+			},
+			getSubmit(){
+				this.$refs.form.validate().then(res => {
+					var params=JSON.parse(JSON.stringify(this.datainfo))
+					// // 手机号验证
+					// let regphone = /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/
+					// if (params.mobileNumber && !regphone.test(params.mobileNumber)) {
+					// 	this.$toast("请输入正确的手机号")
+					// 	return
+					// }
+					if(!params.portalId){
+						this.$toast("请选择来访门户")
+						return
+					}
+					if(params.isCar=='Y'&&!params.plateNumber){
+						this.$toast("请输入车牌号")
+						return
+					}
+					if(this.tabval==1){
+						if(!params.visitorTime){
+							this.$toast("请选择来访时间")
+							return
+						}
+						var lng = '117.211954';
+						var lat = '31.839676';
+						params.lgt=lng;
+						params.lat=lat;
+						if(this.ptype=='add'){
+							reservAdd(params).then(res=>{
+								if(res.code==200){
+									this.$toast("新增成功")
+									setTimeout(function(){
+										uni.$emit("refComelist")
+										uni.navigateBack({
+											delta:1
+										})
+									},1500)
+								}
+							})
+						}else{
+							reservPut(params).then(res=>{
+								if(res.code==200){
+									this.$toast("修改成功")
+									setTimeout(function(){
+										uni.$emit("refComelist")
+										uni.navigateBack({
+											delta:1
+										})
+									},1500)
+								}
+							})
+						}
+						
+					}else{
+						if(this.ptype=='add'){
+							visitorAdd(params).then(res=>{
+								if(res.code==200){
+									this.$toast("新增成功")
+									setTimeout(function(){
+										uni.$emit("refComelist")
+										uni.navigateBack({
+											delta:1
+										})
+									},1500)
+								}
 							})
-						},1500)
+						}else{
+							visitorPut(params).then(res=>{
+								if(res.code==200){
+									this.$toast("修改成功")
+									setTimeout(function(){
+										uni.$emit("refComelist")
+										uni.navigateBack({
+											delta:1
+										})
+									},1500)
+								}
+							})
+						}
+						
 					}
 				})
 			},
+			getchange(e){
+				this.datainfo.portalId=e.value;
+				this.datainfo.houseAddress=e.label;
+				if(this.tabval=='1'){
+					this.datainfo.detailAddress=e.location;
+				}
+			},
 			getaddImage(e) {
 				let that = this;
 				let file = [],
@@ -255,6 +406,8 @@
 	page{background: #F3F3F0;}
 </style>
 <style lang="scss" scoped>
+.coa /deep/ .uni-date__x-input{text-align: right;color: #AAAAAA;}
+.check /deep/ .select-wrap{border: none;width: 100%;}
 .check /deep/ .uni-forms-item{min-height: 106rpx;box-sizing: border-box;display: flex;align-items: center;margin-bottom: 0;border-bottom: 2rpx solid #E6E6E6;padding:10rpx 0;}
 .check .cbox /deep/ .uni-forms-item:last-child{border: none;}
 .check /deep/ .uni-forms-item__label{font-weight: bold;font-size: 26rpx;color: #222327;flex: 0 0 auto;width: auto !important;}
@@ -289,4 +442,5 @@
 	}
 	
 }
+.tips{font-weight: 500;font-size: 22rpx;color: #0256FD;padding: 20rpx 0;}
 </style>

+ 91 - 49
property_ui/people/pages/people/comegl.vue

@@ -5,7 +5,7 @@
 				<image :src="reset" class="resetimg" @click="getReset"></image>
 				<picker mode="date"   @change='bindDateChangea'>
 					<view class="chekt flexc">
-						<view>{{xzrq|| "选择日期"}}</view>
+						<view>{{xzrq|| "来访日期"}}</view>
 						<image :src="up"></image>
 					</view>
 				</picker>
@@ -22,11 +22,11 @@
 		</view>
 		<!-- 列表 -->
 		<view class="carlists">
-			<car-list :datainfo="list" :visitorType="visitorType" :wtdt="wtdt" type='comepeo'></car-list>
+			<car-list :datainfo="list" :tabval="tabval" :visitorType="visitorType" :wtdt="wtdt" type='comepeo' @getDelFn="getDelFn" @getDetail="getDetail"></car-list>
 		</view>
 		<block v-if="checkPermi(['wuYe:visitorManage:add'])">
 			<view style="height: 100rpx;"></view>
-			<view class="rfbtn" @click="getAddFn">添加访客</view>
+			<view class="rfbtn"  @click="getAddFn">添加访客</view>
 		</block>
 		<loading></loading>
 	</view>
@@ -38,7 +38,7 @@
 	import carList from "@/people/components/car/list.vue"
 	import { checkPermi, checkRole } from "@/utils/permission"; // 权限判断函数
 	import {getDictionaryFn} from "@/api/system/user.js"
-	import {visitorList} from "@/api/work/people.js"
+	import {visitorList,reservList,reservDel,visitorDel} from "@/api/work/people.js"
 	export default{
 		components:{carList},
 		data(){
@@ -53,8 +53,8 @@
 				pageNum: 1,
 				reachflag: true,
 				wtdt:'',
-				tabval:'-1',
-				tablist:[{tit:'全部',val:-1}],
+				tabval:'1',
+				tablist:[{tit:'预约来访',val:1},{tit:'临时来访',val:2},],
 				visitorType:[],//访客状态
 			}
 		},
@@ -77,26 +77,18 @@
 		},
 		methods:{
 			checkPermi, checkRole,
-			init(){//car_type
-				// 预约状态
-				getDictionaryFn('visitor_status').then(res=>{
-					if(res.code==200){
-						this.visitorType = res.data.map(v => {
-							var obj={
-								tit: v.dictLabel,
-								val: v.dictValue
-							}
-							this.tablist.push(obj)
-							return {
-								dictLabel: v.dictLabel,
-								dictValue: v.dictValue
-							}
-						})
-					}
-				})
-			},
+			init(){},
 			getAddFn(){
-				this.$tab.navigateTo("/people/pages/people/comeadd")
+				this.$tab.navigateTo("/people/pages/people/comeadd?type="+this.tabval)
+			},
+			getDetail(ite){
+				var id='';
+				if(this.tabval==1){
+					id=ite.reservRecordId
+				}else{
+					id=ite.visitorManageId
+				}
+				this.$tab.navigateTo("/people/pages/people/comeadd?type="+this.tabval+'&id='+id)
 			},
 			getConfirm(){
 				this.getrefreshData()
@@ -119,46 +111,96 @@
 			bindDateChangea(e){
 				var val=e.detail.value;
 				this.xzrq=val;
+				this.getrefreshData()
+			},
+			getDelFn(id){
+				var that=this;
+				if(this.tabval==1){
+					reservDel(id).then(res=>{
+						if(res.code==200){
+							that.$toast("删除成功")
+							setTimeout(function(){
+								that.getrefreshData()
+							},1500)
+						}
+					})
+				}else{
+					visitorDel(id).then(res=>{
+						if(res.code==200){
+							that.$toast("删除成功")
+							setTimeout(function(){
+								that.getrefreshData()
+							},1500)
+						}
+					})
+				}
 			},
 			getDataFn(){
 				var params={
 					pageSize:this.pageSize,
 					pageNum: this.pageNum,
 				}
-				if(this.tabval!='-1'){
-					params.status=this.tabval
-				}
 				if(this.text){
 					params.houseAddress=this.tabval
 				}
 				if(this.xzrq){
-					params.reserveTime=this.xzrq
+					params.visitorTime=this.xzrq
 				}
-				visitorList(params).then(res=>{
-					if(res.code==200){
-						if (res.rows.length < this.pageSize) {
-							this.reachflag = false
-							this.wtdt = '到底了~';
-						} else {
-							var num = parseInt(res.rows.length) + parseInt(this.pageSize) * parseInt(this.pageNum -	1)
-							if (num < res.total) {
-								this.reachflag = true
-								this.wtdt = ''
-							} else {
+				if(this.tabval==1){
+					reservList(params).then(res=>{
+						if(res.code==200){
+							if (res.rows.length < this.pageSize) {
 								this.reachflag = false
 								this.wtdt = '到底了~';
+							} else {
+								var num = parseInt(res.rows.length) + parseInt(this.pageSize) * parseInt(this.pageNum -	1)
+								if (num < res.total) {
+									this.reachflag = true
+									this.wtdt = ''
+								} else {
+									this.reachflag = false
+									this.wtdt = '到底了~';
+								}
+							}
+							var newArr=JSON.parse(JSON.stringify(res.rows))
+							newArr.forEach(ite=>{
+								ite.right=0;
+							})
+							if (this.pageNum == 1) {
+								this.list = newArr;
+							} else {
+								this.list = this.list.concat(newArr)
 							}
+						}else{
+							this.$toast(res.msg)
 						}
-						if (this.pageNum == 1) {
-							this.list = res.rows;
-						} else {
-							this.list = this.list.concat(res.rows)
+					})
+				}else{
+					visitorList(params).then(res=>{
+						if(res.code==200){
+							if (res.rows.length < this.pageSize) {
+								this.reachflag = false
+								this.wtdt = '到底了~';
+							} else {
+								var num = parseInt(res.rows.length) + parseInt(this.pageSize) * parseInt(this.pageNum -	1)
+								if (num < res.total) {
+									this.reachflag = true
+									this.wtdt = ''
+								} else {
+									this.reachflag = false
+									this.wtdt = '到底了~';
+								}
+							}
+							if (this.pageNum == 1) {
+								this.list = res.rows;
+							} else {
+								this.list = this.list.concat(res.rows)
+							}
+						}else{
+							this.$toast(res.msg)
 						}
-					}else{
-						this.$toast(res.msg)
-					}
-				})
-				
+					})
+				}
 			},
 		}
 	}

+ 13 - 7
property_ui/people/pages/people/staffadd.vue

@@ -9,14 +9,14 @@
 				<view class="chmain">
 					<uni-forms-item label="人员姓名" name="staffName">
 						<view class="flexc">
-							<uni-easyinput v-model="datainfo.staffName" :inputBorder='false' placeholder="请输入人员姓名" />
+							<uni-easyinput :disabled="isdisabled" v-model="datainfo.staffName" :inputBorder='false' placeholder="请输入人员姓名" />
 							<view class="rimg"><image :src="rimg"></image></view>
 						</view>
 					</uni-forms-item>
 					<uni-forms-item label="人员性别" name="gender">
 						<view class="flexc">
 							<view class="flex1"></view>
-							<uni-data-checkbox selectedColor="#0156FE" :map="map" selectedTextColor="#272727" v-model="datainfo.gender" :localdata="ygxbList" />
+							<uni-data-checkbox :disabled="isdisabled" selectedColor="#0156FE" :map="map" selectedTextColor="#272727" v-model="datainfo.gender" :localdata="ygxbList" />
 						</view>
 					</uni-forms-item>
 					<uni-forms-item label="员工类别" name="staffCategory">
@@ -26,7 +26,7 @@
 								<view class="rimg"><image :src="rimg"></image></view>
 							</picker>
 						</view> -->
-						<picker range-key='dictLabel' :value="yglbidx" :range="yglbList"   @change='bindDateChange'>
+						<picker range-key='dictLabel' :disabled="isdisabled" :value="yglbidx" :range="yglbList"   @change='bindDateChange'>
 							<view class="flexc">
 								<view class="flex1 txr f13 co27" v-if="datainfo.staffCategory&&!yglb">{{statusFormats(datainfo.staffCategory,yglbList,'yglb')}}</view>
 								<view class="flex1 txr f13" v-else :class="yglb?'co27':'coa'">{{yglb||"请选择员工类别"}}</view>
@@ -35,7 +35,7 @@
 						</picker>
 					</uni-forms-item>
 					<uni-forms-item label="维修类别" name="maintenanceCategory">
-						<picker range-key='dictLabel' :value="vxlbidx" :range="vxlbList"   @change='bindDateChangea'>
+						<picker range-key='dictLabel' :disabled="isdisabled" :value="vxlbidx" :range="vxlbList"   @change='bindDateChangea'>
 							<view class="flexc">
 								<view class="flex1 txr f13 co27" v-if="datainfo.maintenanceCategory&&!vxlb">{{statusFormats(datainfo.maintenanceCategory,vxlbList,'vxlb')}}</view>
 								<view class="flex1 txr f13" v-else :class="vxlb?'co27':'coa'">{{vxlb||"请选择维修类别"}}</view>
@@ -45,13 +45,13 @@
 					</uni-forms-item>
 					<uni-forms-item label="手机号码" name="phoneNumber">
 						<view class="flexc">
-							<uni-easyinput v-model="datainfo.phoneNumber" :inputBorder='false' placeholder="请输入手机号码" />
+							<uni-easyinput :disabled="isdisabled" v-model="datainfo.phoneNumber" :inputBorder='false' placeholder="请输入手机号码" />
 							<view class="rimg"></view>
 						</view>
 					</uni-forms-item>
 					<uni-forms-item label="身份证号" name="idCard">
 						<view class="flexc">
-							<uni-easyinput v-model="datainfo.idCard" :inputBorder='false' placeholder="请输入身份证号" />
+							<uni-easyinput :disabled="isdisabled" v-model="datainfo.idCard" :inputBorder='false' placeholder="请输入身份证号" />
 							<view class="rimg"></view>
 						</view>
 					</uni-forms-item>
@@ -59,7 +59,8 @@
 			</view>
 		</uni-forms>
 		<view class="pdlr12 mt55">
-			<view class="rhbtn" @click="getSubmit">确定</view>
+			<view class="rhbtn" @click="getEditFn" v-if="isdisabled">修改</view>
+			<view class="rhbtn" @click="getSubmit" v-else>确定</view>
 		</view>
 
 		<loading></loading>
@@ -115,6 +116,7 @@
 				map:{text:'dictLabel',value:'dictValue'},
 				id:'',
 				ptype:'add',
+				isdisabled:false,
 			}
 		},
 		onLoad: function(e) {
@@ -122,12 +124,16 @@
 			if(e.id){
 				this.id=e.id;
 				this.ptype='edit';
+				this.isdisabled=true;
 				this.getDetailFn()
 			}
 		},
 		methods: {
 			checkPermi,
 			checkRole,
+			getEditFn(){
+				this.isdisabled=false;
+			},
 			statusFormats(data, list,type) {
 				var aite=selectValueKey(list, data);
 				if(type=='yglb'){

+ 53 - 9
property_ui/service/components/car/list.vue

@@ -3,23 +3,41 @@
 	<!-- 第一种样式  人员管理-->
 	<block v-if="datainfo.length>0">
 		<!-- 巡更地点patrol -->
+		<block v-if="type=='patrollist'">
+			<view class="patlist" v-for="(ite,idx) in datainfo" :key="idx" @click="getDetail(ite.checkPointManageId)">
+				<view class="pattop flexc">
+					<image :src="home" class="imgs"></image>
+					<view class="tit">{{ite.checkAddress}}</view>
+					<view class="flex1"></view>
+				</view>
+				<view class="patlistr">
+					<view class="clist"><view class="tit">巡检类型</view>:{{kaType(ite.checkType,xglxlist)}}</view>
+					<view class="clist"><view class="tit">巡检时间</view>:{{ite.checkTime}}</view>
+				</view>
+				<view class="patbtns">
+					<view class="btna" @click.stop="getDetail(ite.checkPointManageId)">修改</view>
+					<view  class="btnc" @click.stop="getDelFn(ite.checkPointManageId)">删除</view>
+				</view>
+			</view>
+		</block>
+		<!-- 巡更记录patrol -->
 		<block v-if="type=='patrol'">
 			<view class="patlist" v-for="(ite,idx) in datainfo" :key="idx" @click="getDetail">
 				<view class="pattop flexc">
 					<image :src="home" class="imgs"></image>
-					<view class="tit">幸福小区1栋2单元电梯间</view>
+					<view class="tit">{{ite.checkAddress}}</view>
 					<view class="flex1"></view>
-					<view class="txt cd" v-if="ite.type==1">未巡更</view>
-					<view class="txt cc" v-if="ite.type==2">已巡更</view>
+					<view class="txt cc" v-if="ite.checkStatus==2">已巡更</view>
+					<view class="txt cd" v-else>未巡更</view>
 				</view>
 				<view class="patlistr">
-					<view class="clist"><view class="tit">巡检类型</view>:设备维修</view>
-					<view class="clist"><view class="tit">巡检时间</view>:2024-11-27 10:00</view>
-					<view class="clist"><view class="tit">巡检人</view>:刘兵琦</view>
+					<view class="clist"><view class="tit">巡检类型</view>:{{kaType(ite.checkType,xglxlist)}}</view>
+					<view class="clist"><view class="tit">巡检时间</view>:{{ite.checkTime}}</view>
+					<!-- <view class="clist"><view class="tit">巡检人</view>:刘兵琦</view> -->
 				</view>
 				<view class="patbtns">
-					<view class="btna" @click.stop="getDetail">查看</view>
-					<view  class="btnb" @click.stop="getAddFn">去巡更</view>
+					<view class="btna" @click.stop="getDetail" v-if="ite.checkStatus==2">查看</view>
+					<view  class="btnb" @click.stop="getAddFn(ite.checkPointRecordId)" v-else>去巡更</view>
 				</view>
 			</view>
 		</block>
@@ -79,6 +97,7 @@
 </template>
 
 <script>
+	import {selectDictValue} from "@/utils/common.js"
 	import { checkPermi, checkRole } from "@/utils/permission"; // 权限判断函数
 	import config from '@/config'
 	export default{
@@ -106,6 +125,12 @@
 				default () {
 					return ''
 				}
+			},
+			xglxlist:{
+				type:Array,
+				default () {
+					return []
+				}
 			}
 		},
 		data(){
@@ -141,6 +166,9 @@
 		},
 		methods:{
 			checkPermi, checkRole,
+			kaType(data, list) {
+				return selectDictValue(list, data);
+			},
 			getDetail(e){
 				this.$emit('getDetail',e)
 			},
@@ -172,6 +200,21 @@
 					fail: function(err) {}
 				});
 			},
+			getDelFn(id){
+				var that=this;
+				uni.showModal({
+					title: '确认删除',
+					content: "是否确认删除",
+					cancelText: '取消',
+					confirmText: '确认',
+					success: function(res) {
+						if (res.confirm) {
+							that.$emit('getDelFn',id)
+						} else if (res.cancel) {
+						}
+					}
+				});
+			},
 			//开始触摸滑动
 			drawStart(e) {
 				// console.log("开始触发");
@@ -281,7 +324,7 @@ font-size: 26rpx;color: #272727;display: flex;line-height: 34rpx;
 // 巡更地点
 .patlist{background: #FFFFFF;border-radius: 20rpx;margin-bottom: 24rpx;padding: 0 24rpx 30rpx;
 	.pattop{padding:22rpx 30rpx;margin-bottom: 2rpx;
-		.imgs{width: 28rpx;height: 28rpx;margin-right: 12rpx;}
+		.imgs{width: 28rpx;height: 28rpx;margin-right: 12rpx;flex: 0 0 auto;}
 		.tit{font-size: 30rpx;color: #272727;font-weight: bold;margin-right: 14rpx;}
 		.txt{font-weight: 500;font-size:24rpx;
 			&.ca{color: #3565ED;}
@@ -299,6 +342,7 @@ font-size: 26rpx;color: #272727;display: flex;line-height: 34rpx;
 		view{min-width: 156rpx;height: 52rpx;font-weight: 500;font-size: 26rpx;background: #FFFFFF;border-radius: 20rpx;box-sizing: border-box;display: flex;align-items: center;justify-content: center;padding: 0 10rpx;margin-left: 24rpx;margin-top: 24rpx;
 		&.btna{border: 2rpx solid #0256FD;color: #0256FD;}
 		&.btnb{background: #0256FD;color: #ffffff;}
+		&.btnc{border: 2rpx solid #FE5A0E;color: #FE5A0E;}
 		
 }
 	}

+ 1 - 1
property_ui/service/components/popup/popup.vue

@@ -6,7 +6,7 @@
 		<view v-if="type=='assign'" class="assignbox">
 			<view class="assbox">
 				<view class="asstit">报修指派</view>
-				<picker range-key='text' :value="syqxidx" :range="sexs"   @change='bindDateChange'>
+				<picker range-key='dictLabel' :value="syqxidx" :range="sexs"   @change='bindDateChange'>
 					<view class="flexc asline">
 						<view class="flex1  f13" :class="datainfo.iszc?'co27':'coa'">{{datainfo.iszc?'是':'请选择是类型'}}</view>
 						<view class="rimg"><image :src="rimg"></image></view>

+ 41 - 13
property_ui/service/pages/service/patrol.vue

@@ -10,17 +10,17 @@
 				</view>
 				<view class="patabs flexc">
 					<view class="patab cof7" @click="tabval=0">
-						<view class="pattit">25</view>
+						<view class="pattit">{{countinfo.checkPoint}}</view>
 						<view class="pattxt">巡更点</view>
 						<image :src="linea" class="line" v-if="tabval==0"></image>
 					</view>
 					<view class="patab co02" @click="tabval=1">
-						<view class="pattit">25</view>
+						<view class="pattit">{{countinfo.yCheckPoint}}</view>
 						<view class="pattxt">已巡更</view>
 						<image :src="lineb" class="line" v-if="tabval==1"></image>
 					</view>
 					<view class="patab cof6" @click="tabval=2">
-						<view class="pattit">25</view>
+						<view class="pattit">{{countinfo.wCheckPoint}}</view>
 						<view class="pattxt">未巡更</view>
 						<image :src="linec" class="line" v-if="tabval==2"></image>
 					</view>
@@ -36,17 +36,17 @@
 				</view>
 				<view class="patabs flexc">
 					<view class="patab cof7" @click="tabval=0">
-						<view class="pattit">25</view>
+						<view class="pattit">{{countinfo.checkPoint}}</view>
 						<view class="pattxt">巡更点</view>
 						<image :src="linea" class="line" v-if="tabval==0"></image>
 					</view>
 					<view class="patab co02" @click="tabval=1">
-						<view class="pattit">25</view>
+						<view class="pattit">{{countinfo.yCheckPoint}}</view>
 						<view class="pattxt">已巡更</view>
 						<image :src="lineb" class="line" v-if="tabval==1"></image>
 					</view>
 					<view class="patab cof6" @click="tabval=2">
-						<view class="pattit">25</view>
+						<view class="pattit">{{countinfo.wCheckPoint}}</view>
 						<view class="pattxt">未巡更</view>
 						<image :src="linec" class="line" v-if="tabval==2"></image>
 					</view>
@@ -54,7 +54,7 @@
 			</view>
 			<!-- 列表 -->
 			<view class="carlists">
-				<car-list :datainfo="list" :wtdt="wtdt" type='patrol' @getDetail="getDetail" @getAddFn="getAddFn"></car-list>
+				<car-list :datainfo="list" :xglxlist="xglxList" :wtdt="wtdt" type='patrol' @getDetail="getDetail" @getAddFn="getAddFn"></car-list>
 			</view>
 		</view>
 		<loading></loading>
@@ -66,6 +66,8 @@
 	const baseUrl = config.baseUrl
 	import carList from "@/service/components/car/list.vue"
 	import { checkPermi, checkRole } from "@/utils/permission"; // 权限判断函数
+	import {xgdjlCount,xgdjlList,xgdglList} from "@/api/work/service.js"
+	import {getDictionaryFn} from "@/api/system/user.js"
 	export default{
 		components:{carList},
 		data(){
@@ -83,6 +85,8 @@
 				wtdt:'',
 				nvaHeight:44,
 				tabval:0,
+				xglxList:[],
+				countinfo:{},
 			}
 		},
 		onPageScroll(e) {
@@ -106,6 +110,9 @@
 					this.nvaHeight = Number(e.statusBarHeight)+44;
 				}
 			})
+			this.getCount();
+			this.init()
+			// this.getDataFn()
 		},
 		methods:{
 			checkPermi, checkRole,
@@ -116,24 +123,45 @@
 				this.$tab.navigateTo("/service/pages/service/patrolrecord")
 			},
 			getSetFn(){
-				this.$tab.navigateTo("/service/pages/service/patrolset")
+				this.$tab.navigateTo("/service/pages/service/patrollist")
 			},
-			getAddFn(){
-				this.$tab.navigateTo("/service/pages/service/patroladd")
+			getAddFn(id){
+				this.$tab.navigateTo("/service/pages/service/patroladd?id="+id)
 			},
 			getBackFn(){
 				uni.navigateBack({
 					delta:1
 				})
 			},
+			init(){
+				// 巡更类型
+				getDictionaryFn('patrol_type').then(res=>{
+					if(res.code==200){
+						this.xglxList = res.data.map(v => {
+							return {
+								dictLabel: v.dictLabel,
+								dictValue: v.dictValue
+							}
+						})
+					}
+				})
+			},
+			getCount(){
+				xgdjlCount().then(res=>{
+					if(res.code==200){
+						var data=res.data;
+						this.countinfo=data.data;
+						console.log(this.countinfo)
+					}
+				})
+			},
 			getDataFn(){
-				return
 				var params={
 					pageSize:this.pageSize,
 					pageNum: this.pageNum,
 				}
-				params.noticeType=this.tabidx
-				getNoticeList(params).then(res=>{
+				// xgdglList ,xgdjlList
+				xgdjlList(params).then(res=>{
 					if(res.code==200){
 						if (res.rows.length < this.pageSize) {
 							this.reachflag = false

+ 107 - 54
property_ui/service/pages/service/patroladd.vue

@@ -9,21 +9,27 @@
 						<view class="flex1"></view>
 					</view>
 					<view class="patlistr">
-						<view class="clist"><view class="tit">巡检类型</view>:设备维修</view>
-						<view class="clist"><view class="tit">巡检时间</view>:2024-11-27 10:00</view>
-						<view class="clist"><view class="tit">巡检路线</view>:幸福小区1号楼1-2单元</view>
-						<view class="clist"><view class="tit">巡检人</view>:刘兵琦</view>
+						<view class="clist"><view class="tit">巡检类型</view>:{{kaType(datainfo.checkType)}}</view>
+						<view class="clist"><view class="tit">巡检时间</view>:{{datainfo.checkTime}}</view>
+						<view class="clist"><view class="tit">巡检路线</view>:{{datainfo.checkAddress}}</view>
 					</view>
 				</view>
 			</view>
 			<view class="cbox" style="padding-bottom: 98rpx;">
 				<view class="chmain">
 					<uni-forms-item label="巡检结果" name="phonenumber">
-						<picker range-key='text' :value="syqxidx" :range="sexs"   @change='bindDateChange'>
+						<!-- <picker range-key='dictLabel' :value="xgjgidx" :range="xgjgList"   @change='bindDateChange'>
 							<view class="flexc">
 								<view class="flex1 txr f13" :class="datainfo.iszc?'co27':'coa'">{{datainfo.iszc?'是':'请选择是否正常'}}</view>
 								<view class="rimg"><image :src="rimg"></image></view>
 							</view>
+						</picker> -->
+						<picker range-key='dictLabel' :disabled="isdisabled" :value="xgjgidx" :range="xgjgList"   @change='bindDateChange'>
+							<view class="flexc">
+								<view class="flex1 txr f13 co27" v-if="datainfo.checkResult&&!xgjg">{{statusFormats(datainfo.checkResult,xgjgList,'xgjg')}}</view>
+								<view class="flex1 txr f13" v-else :class="xgjg?'co27':'coa'">{{xgjg||"请选择巡更结果"}}</view>
+								<view class="rimg"><image :src="rimg"></image></view>
+							</view>
 						</picker>
 					</uni-forms-item>
 					<uni-easyinput maxlength='-1' type="textarea" autoHeight v-model="datainfo.companyIntroduction" :inputBorder='false' placeholder="可详细描述巡检结果…" />
@@ -35,22 +41,12 @@
 					</view>
 					<!-- 图片 -->
 					<view class="imgs">
-						<view class="img" @click="getPreview">
-							<image :src="photo" class="pico"></image>
-							<image :src="del" class="del" @click="getDelFn"></image>
-						</view>
-						<view class="img" @click="getPreview">
-							<image :src="photo" class="pico"></image>
-							<image :src="del" class="del" @click="getDelFn"></image>
-						</view>
-						<view class="img" @click="getPreview">
-							<image :src="photo" class="pico"></image>
-							<image :src="del" class="del" @click="getDelFn"></image>
-						</view>
-						<view class="img" @click="getPreview">
-							<image :src="photo" class="pico"></image>
-							<image :src="del" class="del" @click="getDelFn"></image>
-						</view>
+						<block v-if="phofile&&phofile.length">
+							<view class="img" v-for="(ite,idx) in phofile" :key="idx" @click="getPreview(idx,phofile)">
+								<image :src="baseUrl+ite" class="pico"></image>
+								<image :src="del" class="del" @click.stop="getDelFn(idx)"></image>
+							</view>
+						</block>
 						<view class="addbox" @click="getaddImage">
 							<image :src="photo" class="pico"></image>
 							<view>添加图片</view>
@@ -58,7 +54,7 @@
 					</view>
 				</view>
 				<view class="pdlr12 mt63">
-					<view class="rhbtn" @click="getNext">提交信息</view>
+					<view class="rhbtn" @click="getSubmit">提交信息</view>
 				</view>
 			</view>
 		</uni-forms>
@@ -72,6 +68,9 @@
 	import config from '@/config'
 	import {checkPermi,checkRole} from "@/utils/permission"; // 权限判断函数
 	import {uploadmore} from '@/utils/common.js'
+	import {getDictionaryFn} from "@/api/system/user.js"
+	import {xgdjlDet,xgdjlPut} from "@/api/work/service.js"
+	import {selectDictValue,selectValueKey} from "@/utils/common.js"
 	export default {
 		components: {},
 		data() {
@@ -84,28 +83,67 @@
 				baseUrl: config.baseUrl,
 				checkflag:true,
 				datainfo: {
-					sex:0,
+					"checkType":"1",//巡更类型
+					"checkTime":"2",//巡更时间
+					"checkAddress":"3",//巡更路线
+					"checkUserName":"",//巡更人姓名
+					"checkUseId":"",//巡更人id
+					"checkResult":"",//巡更结果 1:正常 2:损坏
+					"checkResultDetails":"",//巡更结果详情
+					"checkResultPhoto":"",//巡更结果照片
+					// "checkResultTime":""//巡更结果时间
 				},
-				syqxidx:'',
-				sexs: [{
-					text: '男',
-					value: 0
-				}, {
-					text: '女',
-					value: 1
-				}],
+				ptype:'add',
+				id:2,
+				isdisabled:false,
+				xgjg:'',
+				xgjgidx:'',
+				xglxList:[],
+				xgjgList:[{dictLabel:'正常',dictValue:"1"},{dictLabel:'损坏',dictValue:"2"}],
+				phofile:[]
 			}
 		},
-		onLoad: function() {
-
+		onLoad: function(e) {
+			this.init();
+			// this.ptype='edit';
+			// this.getDetail()
+			// if(e.id){
+			// 	this.ptype='edit';
+			//this.id=e.id;
+			// 	this.getDetail()
+			// }
 		},
 		methods: {
 			checkPermi,
 			checkRole,
+			init(){
+				// 巡更类型
+				getDictionaryFn('patrol_type').then(res=>{
+					if(res.code==200){
+						this.xglxList = res.data.map(v => {
+							return {
+								dictLabel: v.dictLabel,
+								dictValue: v.dictValue
+							}
+						})
+					}
+				})
+				//巡更结果checkResult
+			},
+			kaType(data){
+				return selectDictValue(this.xglxList, data);
+			},
+			statusFormats(data, list,type) {
+				var aite=selectValueKey(list, data);
+				if(type=='xgjg'){
+					this.xgjgidx=aite.key
+				}
+				return aite.actions;
+			},
 			bindDateChange(e){
 				var val=e.detail.value;
-				// this.datainfo.applicationBank=this.sdyhlist[val].value;
-				// this.applicationBank=this.sdyhlist[val].label;
+				this.datainfo.checkResult=this.xgjgList[val].dictValue;
+				this.xgjg=this.xgjgList[val].dictLabel;
 			},
 			getPreview(idx,arr) {
 				var newArr=[];
@@ -120,7 +158,7 @@
 					fail: function(err) {}
 				});
 			},
-			getDelFn(){
+			getDelFn(idx){
 				var that=this;
 				uni.showModal({
 					title: '确认删除',
@@ -129,7 +167,7 @@
 					confirmText: '确认',
 					success: function(res) {
 						if (res.confirm) {
-							// that.filelist.splice(idx,1)
+							that.phofile.splice(idx,1)
 						} else if (res.cancel) {
 						}
 					}
@@ -137,19 +175,9 @@
 			},
 			getaddImage(e){
 				let that = this;
-				// var rs=['D:\\idcard.png']
-				// if(rs&&rs.length>0){
-				// 	var obj={
-				// 		type:e,
-				// 		// url:baseUrl+rs.join(',')
-				// 		url:rs.join(',')
-				// 	}
-				// 	that.getOcrIdCard(obj)
-				// }
-				// return
 				let file =[],count=9
 				uni.chooseImage({
-					count: 1,
+					// count: 1,
 					success:function(res){
 						let img= res.tempFilePaths;
 						if(img.length + file.length > count){
@@ -162,17 +190,42 @@
 							let imglen = res.tempFilePaths.length;
 							var fuwufile = [];
 							uploadmore('/common/upload',img,0,0,0,imglen,fuwufile,function(rs){
-								var resurl=rs[0];
-								// if(e=='front'){
-								// 	that.datainfo.front=resurl.fileName;
-								// }else{
-								// 	that.datainfo.back=resurl.fileName;
-								// }
+								that.phofile = that.phofile.concat(rs);
 							})	
 						}
 					}
 				});
 			},
+			getDetail(){
+				xgdjlDet(this.id).then(res=>{
+					if(res.code==200){
+						this.datainfo=res.data
+					}
+				})
+			},
+			getSubmit(){
+				var that=this;
+				var params=JSON.parse(JSON.stringify(this.datainfo))
+				var phofile=JSON.parse(JSON.stringify(this.phofile))
+				if(phofile&&phofile.length){
+					params.checkResultPhoto=this.phofile.join(',');
+				}
+				if(!params.checkResult){
+					this.$toast("请选择巡更结果")
+					return
+				}
+				xgdjlPut(params).then(res=>{
+					if(res.code==200){
+						this.$toast("操作成功")
+						setTimeout(function(){
+							uni.$emit("refCarPark")
+							uni.navigateBack({
+								delta:1
+							})
+						},1500)
+					}
+				})
+			}
 		}
 	}
 </script>

+ 170 - 0
property_ui/service/pages/service/patrollist.vue

@@ -0,0 +1,170 @@
+<template>
+	<view class="car">
+		<view class="cartop">
+			<!-- <view class="topa flexc">
+				<image :src="day" class="resetimg" @click="getReset"></image>
+				<picker mode="date"   @change='bindDateChangea'>
+					<view class="chekt flexc">
+						<view>{{cxrq|| "选择日期"}}</view>
+						<image :src="up"></image>
+					</view>
+				</picker>
+			</view>
+ -->
+		</view>
+		<!-- 列表 -->
+		<view class="carlists">
+			<car-list :datainfo="list" :xglxlist="xglxList" :wtdt="wtdt" type='patrollist' @getDetail="getDetail" @getAddFn="getAddFn" @getDelFn="getDelFn"></car-list>
+		</view>
+		<block v-if="checkPermi(['wuYe:checkPointManage:add'])">
+			<view style="height: 100rpx;"></view>
+			<view class="rfbtn" @click="getAddFn">新增巡更点</view>
+		</block>
+		<loading></loading>
+	</view>
+</template>
+
+<script>
+	import config from '@/config'
+	const baseUrl = config.baseUrl
+	import carList from "@/service/components/car/list.vue"
+	import { checkPermi, checkRole } from "@/utils/permission"; // 权限判断函数
+	import {xgdglList,xgdglDel} from "@/api/work/service.js"
+	import {getDictionaryFn} from "@/api/system/user.js"
+	export default{
+		components:{carList},
+		data(){
+			return{
+				reset:require('@/car/static/car/reset.png'),
+				up:require('@/car/static/car/up.png'),
+				day:require('@/service/static/service/day.png'),
+				cxrq:"",
+				text:'',
+				list:[{tit:'皖A IC520',type:1},{tit:'晋E KD783',type:2},],
+				pageSize: 10,
+				pageNum: 1,
+				reachflag: true,
+				wtdt:'',
+				xglxList:[],
+			}
+		},
+		onUnload() {
+			uni.$off('refpatrolSet')
+		},
+		onLoad: function(){
+			uni.$on('refpatrolSet',(res)=>{
+				this.getrefreshData()
+			})
+			this.init()
+			this.getDataFn()
+		},
+		// 上拉触底加载更多触发事件
+		onReachBottom() {
+			if (this.reachflag) {
+				this.pageNum++
+				this.getDataFn()
+			}
+		},
+		methods:{
+			checkPermi, checkRole,
+			init(){
+				// 巡更类型
+				getDictionaryFn('patrol_type').then(res=>{
+					if(res.code==200){
+						this.xglxList = res.data.map(v => {
+							return {
+								dictLabel: v.dictLabel,
+								dictValue: v.dictValue
+							}
+						})
+					}
+				})
+			},
+			getDetail(id){
+				this.$tab.navigateTo("/service/pages/service/patrolset?id="+id)
+			},
+			getAddFn(){
+				this.$tab.navigateTo("/service/pages/service/patrolset?")
+			},
+			getConfirm(){
+				this.getrefreshData()
+			},
+			getReset(){
+				this.cxrq='';
+				this.text='';
+				this.getrefreshData()
+			},
+			getrefreshData(){
+				this.pageNum=1;
+				this.list=[];
+				this.reachflag=true;
+				this.getDataFn()
+			},
+			getTabFn(val){
+				this.tabval=val
+			},
+			bindDateChangea(e){
+				var val=e.detail.value;
+				this.cxrq=val;
+			},
+			getDelFn(id){
+				var that=this;
+				xgdglDel(id).then(res=>{
+					if(res.code==200){
+						this.$toast("删除成功")
+						setTimeout(function(){
+							that.getrefreshData()
+						},1500)
+					}
+				})
+			},
+			getDataFn(){
+				var params={
+					pageSize:this.pageSize,
+					pageNum: this.pageNum,
+				}
+				xgdglList(params).then(res=>{
+					if(res.code==200){
+						if (res.rows.length < this.pageSize) {
+							this.reachflag = false
+							this.wtdt = '到底了~';
+						} else {
+							var num = parseInt(res.rows.length) + parseInt(this.pageSize) * parseInt(this.pageNum -	1)
+							if (num < res.total) {
+								this.reachflag = true
+								this.wtdt = ''
+							} else {
+								this.reachflag = false
+								this.wtdt = '到底了~';
+							}
+						}
+						if (this.pageNum == 1) {
+							this.list = res.rows;
+						} else {
+							this.list = this.list.concat(res.rows)
+						}
+					}else{
+						this.$toast(res.msg)
+					}
+				})
+				
+			},
+		}
+	}
+</script>
+<style>
+	page{background: #F3F3F0;}
+</style>
+<style lang="scss" scoped>
+.car{padding-top: 24rpx;}
+.cartop{position: fixed;left: 0;right: 0;top: 0;background-color: #F3F3F0;z-index: 2;
+	.topa{padding: 30rpx 74rpx;
+		.resetimg{width: 28rpx;height: 30rpx;margin-right: 30rpx;flex: 0 0 auto;}
+		.chekt{min-width: 180rpx;
+			view{font-weight: 500;font-size: 26rpx;color: #272727;flex: 1;}
+			image{width: 24rpx;height: 16rpx;margin-left: 18rpx;flex: 0 0 auto;}
+		}
+	}
+}
+.carlists{padding: 0 18rpx;}
+</style>

+ 42 - 9
property_ui/service/pages/service/patrolrecord.vue

@@ -14,7 +14,7 @@
 		</view>
 		<!-- 列表 -->
 		<view class="carlists">
-			<car-list :datainfo="list" :topval="tabval" :wtdt="wtdt" type='patrol' @getDetail="getDetail" @getAddFn="getAddFn"></car-list>
+			<car-list :datainfo="list" :xglxlist="xglxList" :wtdt="wtdt" type='patrol' @getDetail="getDetail" @getAddFn="getAddFn" @getDelFn="getDelFn"></car-list>
 		</view>
 		<loading></loading>
 	</view>
@@ -25,6 +25,8 @@
 	const baseUrl = config.baseUrl
 	import carList from "@/service/components/car/list.vue"
 	import { checkPermi, checkRole } from "@/utils/permission"; // 权限判断函数
+	import {xgdjlList,xgdjlDel} from "@/api/work/service.js"
+	import {getDictionaryFn} from "@/api/system/user.js"
 	export default{
 		components:{carList},
 		data(){
@@ -39,10 +41,18 @@
 				pageNum: 1,
 				reachflag: true,
 				wtdt:'',
+				xglxList:[],
 			}
 		},
-		onLoad: function() {
-		
+		onUnload() {
+			uni.$off('refpatrolSet')
+		},
+		onLoad: function(){
+			uni.$on('refpatrolSet',(res)=>{
+				this.getrefreshData()
+			})
+			this.init()
+			this.getDataFn()
 		},
 		// 上拉触底加载更多触发事件
 		onReachBottom() {
@@ -53,11 +63,24 @@
 		},
 		methods:{
 			checkPermi, checkRole,
-			getDetail(){
-				this.$tab.navigateTo("/service/pages/service/patroldetail")
+			init(){
+				// 巡更类型
+				getDictionaryFn('patrol_type').then(res=>{
+					if(res.code==200){
+						this.xglxList = res.data.map(v => {
+							return {
+								dictLabel: v.dictLabel,
+								dictValue: v.dictValue
+							}
+						})
+					}
+				})
+			},
+			getDetail(id){
+				this.$tab.navigateTo("/service/pages/service/patroladd?id="+id)
 			},
 			getAddFn(){
-				this.$tab.navigateTo("/service/pages/service/patroladd")
+				this.$tab.navigateTo("/service/pages/service/patroladd?")
 			},
 			getConfirm(){
 				this.getrefreshData()
@@ -80,13 +103,23 @@
 				var val=e.detail.value;
 				this.cxrq=val;
 			},
+			getDelFn(id){
+				var that=this;
+				xgdjlDel(id).then(res=>{
+					if(res.code==200){
+						this.$toast("删除成功")
+						setTimeout(function(){
+							that.getrefreshData()
+						},1500)
+					}
+				})
+			},
 			getDataFn(){
 				var params={
 					pageSize:this.pageSize,
 					pageNum: this.pageNum,
 				}
-				params.noticeType=this.tabidx
-				getNoticeList(params).then(res=>{
+				xgdjlList(params).then(res=>{
 					if(res.code==200){
 						if (res.rows.length < this.pageSize) {
 							this.reachflag = false
@@ -119,7 +152,7 @@
 	page{background: #F3F3F0;}
 </style>
 <style lang="scss" scoped>
-.car{padding-top: 106rpx;}
+.car{padding-top: 120rpx;}
 .cartop{position: fixed;left: 0;right: 0;top: 0;background-color: #F3F3F0;z-index: 2;
 	.topa{padding: 30rpx 74rpx;
 		.resetimg{width: 28rpx;height: 30rpx;margin-right: 30rpx;flex: 0 0 auto;}

+ 151 - 64
property_ui/service/pages/service/patrolset.vue

@@ -1,56 +1,47 @@
 <template>
 	<view class="check">
 		<uni-forms ref="form" :model="datainfo">
-			<view class="tabs">
-				<view class="tab" :class="tabval==ite.val?'act':''" v-for="(ite,idx) in weekList" :key="idx">{{ite.tit}}</view>
-			</view>
-			<view class="cbox" v-for="(ite,idx) in list" :key=''>
+			<view class="cbox" v-for="(ite,idx) in list" :key='idx'>
 				<view class="chmain">
-					<uni-forms-item label="巡检类型" name="phonenumber">
-						<picker range-key='text' :value="syqxidx" :range="sexs"   @change='bindDateChange'>
-							<view class="flexc">
-								<view class="flex1 txr f13" :class="datainfo.iszc?'co27':'coa'">{{datainfo.iszc?'是':'请选择巡检类型'}}</view>
-								<view class="rimg"><image :src="rimg"></image></view>
-							</view>
-						</picker>
-					</uni-forms-item>
-					<uni-forms-item label="巡检时间" name="phonenumber">
-						<picker mode="date" range-key='text' :value="syqxidx" :range="sexs"   @change='bindDateChange'>
-							<view class="flexc">
-								<view class="flex1 txr f13" :class="datainfo.iszc?'co27':'coa'">{{datainfo.iszc?'是':'请选择时间'}}</view>
-								<view class="rimg"><image :src="rimg"></image></view>
-							</view>
-						</picker>
-					</uni-forms-item>
-					<uni-forms-item label="巡检路线" name="phonenumber">
-						<view class="flexc">
-							<uni-easyinput v-model="datainfo.phonenumber" :inputBorder='false' placeholder="请选择或输入巡检路线" />
-							<picker range-key='text' :value="syqxidx" :range="sexs"   @change='bindDateChange'>
-								<view class="rimg"><image :src="rimg"></image></view>
+					<view @click="getChose(idx)">
+						<uni-forms-item label="巡检类型" name="checkType">
+							<picker range-key='dictLabel' :value="xglxidx" :range="xglxList"   @change='bindDateChange'>
+								<view class="flexc">
+									<view class="flex1 txr f13" :class="ite.checkType?'co27':'coa'">{{ite.checkType?kaType(ite.checkType):'请选择巡检类型'}}</view>
+									<view class="rimg"><image :src="rimg"></image></view>
+								</view>
 							</picker>
+						</uni-forms-item>
+					</view>
+					<view @click="getChose(idx)">
+						<uni-forms-item label="巡检时间" name="checkTime">
+							<picker mode="time" range-key='dictLabel'    @change='bindDateChangea'>
+								<view class="flexc">
+									<view class="flex1 txr f13" :class="ite.checkTime?'co27':'coa'">{{ite.checkTime?ite.checkTime:'请选择时间'}}</view>
+									<view class="rimg"><image :src="rimg"></image></view>
+								</view>
+							</picker>
+						</uni-forms-item>
+					</view>
+					<uni-forms-item label="巡检路线" name="checkAddress">
+						<view class="flexc">
+							<uni-easyinput type="textarea" autoHeight v-model="ite.checkAddress" :inputBorder='false' placeholder="请输入巡检路线" />
+							<view class="rimg"><image :src="rimg"></image></view>
 						</view>
 					</uni-forms-item>
-					<uni-forms-item label="巡检人" name="phonenumber">
-						<picker range-key='text' :value="syqxidx" :range="sexs"   @change='bindDateChange'>
-							<view class="flexc">
-								<view class="flex1 txr f13" :class="datainfo.iszc?'co27':'coa'">{{datainfo.iszc?'是':'请选择巡检人'}}</view>
-								<view class="rimg"><image :src="rimg"></image></view>
-							</view>
-						</picker>
-					</uni-forms-item>
-					<view class="addbox ">
+					<view class="addbox " v-if="ptype=='add'">
 						<view class="btna flexc" @click="getAddFn">
 							<image :src="addimg"></image>
 							<view>新增</view>
 						</view>
-						<view  class="btnb flexc" @click="getDelFn(idx)">
+						<view  class="btnb flexc" v-if="idx!=0" @click="getDelFn(idx)">
 							<image :src="delimg"></image><view>删除</view>
 						</view>
 					</view>
 				</view>
 			</view>
 		</uni-forms>
-		<view class="rfbtn" @click="getNext">确定</view>
+		<view class="rfbtn" @click="getSubmit">确定</view>
 
 		<loading></loading>
 	</view>
@@ -58,7 +49,10 @@
 
 <script>
 	import config from '@/config'
+	import {selectDictValue} from "@/utils/common.js"
 	import {checkPermi,checkRole} from "@/utils/permission"; // 权限判断函数
+	import {getDictionaryFn} from "@/api/system/user.js"
+	import {xgdgllisplAdd,xgdglDet,xgdglPut} from "@/api/work/service.js"
 	export default {
 		components: {},
 		data() {
@@ -68,40 +62,62 @@
 				addimg: require('@/service/static/service/add.png'),
 				delimg: require('@/service/static/service/del.png'),
 				baseUrl: config.baseUrl,
-				checkflag:true,
-				tabval:0,
-				weekList:[{tit:"星期一",val:0,},{tit:"星期一",val:1,},{tit:"星期一",val:2,},{tit:"星期一",val:3,},{tit:"星期一",val:0,},{tit:"星期一",val:1,},{tit:"星期一",val:2,},{tit:"星期一",val:3,}],
-				list:[{tit:''}],
-				datainfo: {
-					sex:0,
-					realName: '',
-					idCard: '',
-					address: '',
-					expirationDate: '',
-					phonenumber: '',
-					front: '',
-					back: '',
-				},
-				syqxidx:'',
-				sexs: [{
-					text: '男',
-					value: 0
-				}, {
-					text: '女',
-					value: 1
+				datainfo: {},
+				list:[ {
+					"checkType":"",//巡更类型
+					"checkTime":"",//巡更时间
+					"checkAddress":"",//巡更路线
 				}],
+				xglxidx:'',
+				xglxList:[],//巡更类型
+				choseidx:'',
+				ptype:'add',
+				id:'',
 			}
 		},
-		onLoad: function() {
-
+		onLoad: function(e) {
+			this.init()
+			if(e.id){
+				this.ptype='edit';
+				this.id=e.id;
+				this.getDetail()
+			}
 		},
 		methods: {
 			checkPermi,
 			checkRole,
+			kaType(data){
+				return selectDictValue(this.xglxList, data);
+			},
 			bindDateChange(e){
 				var val=e.detail.value;
-				// this.datainfo.applicationBank=this.sdyhlist[val].value;
-				// this.applicationBank=this.sdyhlist[val].label;
+				var idx=Number(this.choseidx);
+				var arr=JSON.parse(JSON.stringify(this.list))
+				arr[idx].checkType=this.xglxList[val].dictValue
+				this.list=JSON.parse(JSON.stringify(arr))
+			},
+			bindDateChangea(e){
+				var val=e.detail.value+':00';
+				var idx=Number(this.choseidx);
+				var arr=JSON.parse(JSON.stringify(this.list))
+				arr[idx].checkTime=val
+				this.list=JSON.parse(JSON.stringify(arr))
+			},
+			getChose(idx){
+				this.choseidx=idx;
+			},
+			init(){
+				// 巡更类型
+				getDictionaryFn('patrol_type').then(res=>{
+					if(res.code==200){
+						this.xglxList = res.data.map(v => {
+							return {
+								dictLabel: v.dictLabel,
+								dictValue: v.dictValue
+							}
+						})
+					}
+				})
 			},
 			getAddFn(){
 				var obj={tit:''}
@@ -120,8 +136,79 @@
 						} else if (res.cancel) {
 						}
 					}
-				});
+				});	
+			},
+			getDetail(){
+				xgdglDet(this.id).then(res=>{
+					if(res.code==200){
+						var obj=JSON.parse(JSON.stringify(res.data))
+						this.list.splice(0,1,obj)
+					}
+				})
+			},
+			getSubmit(){
+				var that=this;
+				var list=JSON.parse(JSON.stringify(this.list))
+				var a=0;
+				var newArr=[];
+				list.some(function(i,key){
+					var num=Number(key)+1;
+					var str="请选择"
+					if(i.checkType||i.checkTime||!i.checkAddress){
+						if(!i.checkType){
+							a=1;
+							that.$toast(str+'巡更类型')
+							return true
+						}
+						if(!i.checkTime){
+							a=1;
+							that.$toast(str+'巡更时间')
+							return true
+						}
+						if(!i.checkAddress){
+							a=1;
+							that.$toast('请输入巡更路线')
+							return true
+						}
+						// i.classNumber=num;
+						newArr.push(i)
+					}
+				})
+				if(a==1){
+					return
+				}
+				var params={};
+				if(this.ptype=='add'){
+					params.checkPointManageList=JSON.parse(JSON.stringify(newArr))
+					xgdgllisplAdd(params).then(res=>{
+						if(res.code==200){
+							this.$toast("新增成功")
+							setTimeout(function(){
+								uni.$emit("refpatrolSet")
+								uni.navigateBack({
+									delta:1
+								})
+							},1500)
+						}
+					})
+				}else{
+					params=newArr[0]
+					xgdglPut(params).then(res=>{
+						if(res.code==200){
+							this.$toast("修改成功")
+							setTimeout(function(){
+								uni.$emit("refpatrolSet")
+								uni.navigateBack({
+									delta:1
+								})
+							},1500)
+						}
+					})
+				}
 				
+				// if(this.ptype=='add'){
+					
+				// }
 			}
 		}
 	}
@@ -131,7 +218,7 @@
 </style>
 <style lang="scss" scoped>
 .check /deep/ .uni-forms-item{min-height: 106rpx;box-sizing: border-box;display: flex;align-items: center;margin-bottom: 0;border-bottom: 2rpx solid #E6E6E6;padding:10rpx 0;}
-.check .cbox /deep/ .uni-forms-item:last-child{border: none;}
+// .check .cbox /deep/ .uni-forms-item:last-child{border: none;}
 .check /deep/ .uni-forms-item__label{font-weight: bold;font-size: 26rpx;color: #222327;flex: 0 0 auto;width: auto !important;}
 .check /deep/ .uni-easyinput{flex: 1;text-align: right;font-size: 26rpx;color: #222327;}
 .check /deep/ .uni-easyinput__content-textarea{min-height: 40rpx;font-size: 26rpx;}
@@ -141,7 +228,7 @@
 .check /deep/ .is-disabled{color: #222327;background-color: #ffffff !important;}
 .check /deep/ .uni-data-checklist .checklist-group .checklist-box{margin:10rpx 8rpx 10rpx 16rpx;}
 .check /deep/ .uni-data-checklist{flex: 0 0 auto;}
-.check{min-height: 100vh;padding: 148rpx 24rpx 110rpx;box-sizing: border-box;}
+.check{min-height: 100vh;padding: 24rpx 24rpx 110rpx;box-sizing: border-box;}
 .cbox{background: #FFFFFF;border-radius: 20rpx;flex: 1;margin-bottom: 24rpx;
 	.chmain{
 		padding: 0 32rpx;

+ 3 - 1
property_ui/static/style.css

@@ -16,7 +16,8 @@
   display: block;
   clear: both;
 }
-
+.pr{position: relative;}
+.pbr{background-color: #ffffff;border-radius: 20rpx;position: relative;z-index: 1;}
 .overa{overflow: auto;}
 .over{overflow: hidden;white-space: nowrap;text-overflow: ellipsis;}
 .overtwo{word-break: break-all;text-overflow: ellipsis;overflow: hidden;display: -webkit-box;-webkit-line-clamp: 2;-webkit-box-orient: vertical;white-space: normal;}
@@ -34,6 +35,7 @@ font-weight: bold;font-size: 26rpx;color: #FFFFFF;background: #0256FD;border-rad
 .f12{font-size: 24rpx;}
 .f13{font-size: 26rpx;}
 .coa{color: #aaaaaa;}
+.co6{color: #666666;}
 .co27{color: #272727;}
 .co01{color: #0156FE;}
 .cofe{color: #FE5A0E;}

+ 0 - 1
property_ui/utils/common.js

@@ -240,7 +240,6 @@ export function uploadmore(api, filePaths, successUp, failUp, i, length, files,
 			failUp++;
 		},
 		complete: function(rsp) {
-			console.log(rsp, filePaths[i])
 			uni.hideLoading();
 			i++;
 			if (i == length) {

+ 16 - 10
property_ui/work/components/car/list.vue

@@ -4,21 +4,25 @@
 	<block v-if="datainfo.length>0">
 		<!-- 房屋管理 -->
 		<block v-if="type=='comehouse'">
-			<view class="carlist houselist" v-for="(ite,idx) in datainfo" :key="idx">
+			<view class="carlist houselist" v-for="(ite,idx) in datainfo" :key="idx" @click="getDetail(ite.houseId,'look')">
 				<view class="ctop flexc">
-					<image :src="house" class="imgs" v-if="ite.type==1"></image>
-					<image :src="housea" class="imgs" v-if="ite.type==2"></image>
-					<view class="tit">幸福小区12#1101室</view>
+					<image :src="house" class="imgs" v-if="ite.houseStatus==1"></image>
+					<image :src="housea" class="imgs" v-if="ite.houseStatus==2"></image>
+					<image :src="houseb" class="imgs" v-if="ite.houseStatus==3"></image>
+					<image :src="housec" class="imgs" v-if="ite.houseStatus==4"></image>
+					<view class="tit">{{ite.communityName}}12#1101室</view>
 					<!-- view class="btn btnbga">预约</view>
 					<view class="btn btnbgb">已来访</view>
 					<view class="btn btnbgc">待来访</view> -->
 					<view class="flex1"></view>
-					<view class="txt ca" v-if="ite.type==1">自住</view>
-					<view class="txt cb" v-if="ite.type==2">出租</view>
+					<view class="txt ca" v-if="ite.houseStatus==1">自住</view>
+					<view class="txt cb" v-if="ite.houseStatus==2">出租</view>
+					<view class="txt cc" v-if="ite.houseStatus==3">空闲</view>
+					<view class="txt co6" v-if="ite.houseStatus==4">代售</view>
 				</view>
 				<view class="clists">
-					<view class="clist"><view class="tit">房屋坐落</view>袁玥</view>
-					<view class="clist"><view class="tit">建筑面积</view>121.3m²</view>
+					<view class="clist"><view class="tit">房屋坐落</view>{{ite.location}}</view>
+					<view class="clist"><view class="tit">建筑面积</view>{{ite.area}}m²</view>
 					<!-- <view class="w50 flexc">
 						<view class="clist"><view class="tit">房屋所属</view>袁玥</view>
 						<view class="clist"><view class="tit">建筑面积</view>121.3m²</view>
@@ -33,8 +37,8 @@
 					<!-- <view class="clist"><view class="tit">手机号码</view>13656788668</view> -->
 				</view>
 				<view class="btns flexc">
-					<view class="bga">编辑信息</view>
-					<view class="bgb">居住信息</view>
+					<view class="bga" v-if="checkPermi(['wuYe:houseInfo:edit'])" @click.stop="getDetail(ite.houseId,'edit')">编辑信息</view>
+					<view class="bgb" >居住信息</view>
 					<view class="bgc"> 车辆信息</view>
 				</view>
 			</view>
@@ -243,6 +247,8 @@
 				time:require("@/work/static/manage/time.png"),
 				house:require("@/work/static/manage/house.png"),
 				housea:require("@/work/static/manage/housea.png"),
+				houseb:require("@/work/static/manage/houseb.png"),
+				housec:require("@/work/static/manage/housec.png"),
 				home:require("@/service/static/service/home.png"),
 				upimg:require("@/static/images/home/up.png"),
 				star:require('@/manage/static/community/star.png'),

+ 14 - 5
property_ui/work/pages/manage/house.vue

@@ -12,7 +12,7 @@
 				<view class="search flexc">
 					<image :src="search"></image>
 					<!-- confirm-type="search" @confirm="getConfirm" -->
-					<input placeholder="请输入车牌号进行搜索"  v-model="text"/>
+					<input placeholder="请输入号进行搜索"  v-model="text"/>
 					<view class="btn" @click="getConfirm">搜索</view>
 				</view>
 			</view>
@@ -22,7 +22,7 @@
 		</view>
 		<!-- 列表 -->
 		<view class="carlists">
-			<car-list :datainfo="list" :topval="tabval" :wtdt="wtdt" type='comehouse'></car-list>
+			<car-list :datainfo="list" :wtdt="wtdt" type='comehouse' @getDetail="getDetail"></car-list>
 		</view>
 		<view class="cdbtns">
 			<view class="btna" @click="getAddFn">单个添加</view>
@@ -48,12 +48,12 @@
 				up:require('@/car/static/car/up.png'),
 				cxrq:"",
 				text:'',
-				list:[{tit:'皖A IC520',type:1},{tit:'晋E KD783',type:2},],
+				list:[],
 				pageSize: 10,
 				pageNum: 1,
 				reachflag: true,
 				wtdt:'',
-				tabval:'',
+				tabval:'-1',
 				tablist:[{tit:"全部",val:'-1'},],
 				fwztList:[],
 			}
@@ -65,7 +65,7 @@
 			uni.$on('refHouseList',(res)=>{
 				this.getrefreshData()
 			})
-			this.int()
+			this.init()
 			this.getDataFn();
 		},
 		// 上拉触底加载更多触发事件
@@ -98,6 +98,9 @@
 			getAddFn(){
 				this.$tab.navigateTo("/work/pages/manage/houseadd")
 			},
+			getDetail(e){
+				this.$tab.navigateTo("/work/pages/manage/houseadd?id="+e)
+			},
 			getTabFn(val){
 				this.tabval=val
 			},
@@ -124,6 +127,12 @@
 					pageSize:this.pageSize,
 					pageNum: this.pageNum,
 				}
+				if(this.tabval!=-1){
+					params.houseStatus=this.tabval
+				}
+				if(this.text){
+					params.propertyUnitNumber=this.text
+				}
 				houseInfoList(params).then(res=>{
 					if(res.code==200){
 						if (res.rows.length < this.pageSize) {

+ 87 - 93
property_ui/work/pages/manage/houseadd.vue

@@ -7,36 +7,44 @@
 					<view>房屋信息</view>
 				</view>
 				<view class="chmain">
-					<uni-forms-item label="房屋坐落" name="phonenumber">
+					<uni-forms-item label="房屋坐落" name="location">
 						<view class="flexc">
-							<uni-easyinput v-model="datainfo.phonenumber" :inputBorder='false' placeholder="请输入房屋坐落" />
+							<uni-easyinput v-model="datainfo.location" :disabled="isdisabled" :inputBorder='false' placeholder="请输入房屋坐落" />
 							<view class="rimg"></view>
 						</view>
 					</uni-forms-item>
-					<uni-forms-item label="房屋所属" name="phonenumber">
+					
+					<uni-forms-item label="房屋所属" name="rightType">
 						<view class="flexc">
-							<uni-easyinput v-model="datainfo.phonenumber" :inputBorder='false' placeholder="请输入房屋所属" />
+							<uni-easyinput v-model="datainfo.rightType" :disabled="isdisabled" :inputBorder='false' placeholder="请输入房屋所属" />
 							<view class="rimg"></view>
 						</view>
 					</uni-forms-item>
-					<uni-forms-item label="建筑面积" name="phonenumber">
+					<uni-forms-item label="建筑面积" name="area">
 						<view class="flexc">
-							<uni-easyinput v-model="datainfo.phonenumber" :inputBorder='false' placeholder="请输入建筑面积" />
+							<uni-easyinput v-model="datainfo.area" :disabled="isdisabled" :inputBorder='false' placeholder="请输入建筑面积" />
 							<view class="tips">m²</view>
 							<view class="rimg"></view>
 						</view>
 					</uni-forms-item>
-					
-					
+					<!-- <uni-forms-item label="建筑面积" name="area">
+						<picker range-key='dictLabel' :value="yglbidx" :range="yglbList"   @change='bindDateChange'>
+							<view class="flexc">
+								<view class="flex1 txr f13 co27" v-if="datainfo.staffCategory&&!yglb">{{statusFormats(datainfo.staffCategory,yglbList,'yglb')}}</view>
+								<view class="flex1 txr f13" v-else :class="yglb?'co27':'coa'">{{yglb||"请选择员工类别"}}</view>
+								<view class="rimg"><image :src="rimg"></image></view>
+							</view>
+						</picker>
+					</uni-forms-item> -->
 					<uni-forms-item label="房型" name="realName">
 						<view class="flexjd">
-							<picker range-key='text' :value="syqxidx" :range="sexs"   @change='bindDateChange'>
+							<picker range-key='dictLabel' :disabled="isdisabled" :value="syqxidx" :range="sexs"   @change='bindDateChange'>
 								<view class="flexc ml10">
 									<view class="flex1 txr f13" :class="datainfo.iszc?'co27':'coa'">{{datainfo.iszc?'是':'请选择'}}</view>
 									<view class="tips">室</view>
 								</view>
 							</picker>
-							<picker range-key='text' :value="syqxidx" :range="sexs"   @change='bindDateChange'>
+							<picker range-key='dictLabel' :disabled="isdisabled" :value="syqxidx" :range="sexs"   @change='bindDateChange'>
 								<view class="flexc ml10">
 									<view class="flex1 txr f13" :class="datainfo.iszc?'co27':'coa'">{{datainfo.iszc?'是':'请选择'}}</view>
 									<view class="tips">厅</view>
@@ -46,32 +54,24 @@
 						</view>
 					</uni-forms-item>
 					<uni-forms-item label="居住人口" name="realName">
-						<picker range-key='text' :value="syqxidx" :range="sexs"   @change='bindDateChange'>
+						<picker range-key='dictLabel' :disabled="isdisabled" :value="syqxidx" :range="sexs"   @change='bindDateChange'>
 							<view class="flexc">
 								<view class="flex1 txr f13" :class="datainfo.iszc?'co27':'coa'">{{datainfo.iszc?'是':'请选择居住人口'}}</view>
 								<view class="rimg"><image :src="rimg"></image></view>
 							</view>
 						</picker>
 					</uni-forms-item>
-					<uni-forms-item label="有无车位" name="realName">
-						<picker range-key='text' :value="syqxidx" :range="sexs"   @change='bindDateChange'>
+					<uni-forms-item label="有无车位" name="hasParkingSpace">
+						<picker range-key='dictLabel' :disabled="isdisabled" :value="syqxidx" :range="sexs"   @change='bindDateChange'>
 							<view class="flexc">
-								<view class="flex1 txr f13" :class="datainfo.iszc?'co27':'coa'">{{datainfo.iszc?'是':'请选择有/无'}}</view>
+								<view class="flex1 txr f13" :class="datainfo.hasParkingSpace?'co27':'coa'">{{datainfo.hasParkingSpace?'是':'请选择有/无'}}</view>
 								<view class="rimg"><image :src="rimg"></image></view>
 							</view>
 						</picker>
 					</uni-forms-item>
-					<!-- <uni-forms-item label="维修类别" name="phonenumber">
-						<view class="flexc">
-							<uni-easyinput v-model="datainfo.phonenumber" :inputBorder='false' placeholder="请选择或输入维修类别" />
-							<picker range-key='text' :value="syqxidx" :range="sexs"   @change='bindDateChange'>
-								<view class="rimg"><image :src="rimg"></image></view>
-							</picker>
-						</view>
-					</uni-forms-item> -->
-					<uni-forms-item label="爱好" name="phonenumber">
+					<uni-forms-item label="车位号" name="phonenumber">
 						<view class="flexc">
-							<uni-easyinput v-model="datainfo.phonenumber" :inputBorder='false' placeholder="请输入爱好" />
+							<uni-easyinput :disabled="isdisabled" v-model="datainfo.phonenumber" :inputBorder='false' placeholder="请输入车位号" />
 							<view class="rimg"></view>
 						</view>
 					</uni-forms-item>
@@ -88,13 +88,11 @@
 
 <script>
 	import config from '@/config'
-	import {
-		checkPermi,
-		checkRole
-	} from "@/utils/permission"; // 权限判断函数
-	import {
-		uploadIdentify
-	} from '@/utils/common.js'
+	import {checkPermi,checkRole} from "@/utils/permission"; // 权限判断函数
+	import {uploadIdentify} from '@/utils/common.js'
+	import {houseInfoAdd,houseInfoPut,houseInfoDet} from "@/api/work/people.js"
+	import {getDictionaryFn} from "@/api/system/user.js"
+	import {selectValueKey} from "@/utils/common.js"
 	export default {
 		components: {},
 		data() {
@@ -108,23 +106,30 @@
 				baseUrl: config.baseUrl,
 				checkflag:true,
 				datainfo: {
-					sex:0,
-					realName: '',
-					idCard: '',
-					address: '',
-					expirationDate: '',
-					phonenumber: '',
-					front: '',
-					back: '',
+					// "houseId":"",//房屋信息主键
+					 "ownerName":"",////权利人姓名
+					 "location":"",//房屋坐落位置
+					 "rightType":"",//权利类型,如所有权、使用权等
+					 "area":"",//房屋面积,单位为平方米
+					 "documentNumber":"",//房屋相关的字第号
+					 "propertyUnitNumber":"",//不动产单元号
+					 "coOwnership":"",//房屋的共有情况,如共有比例等
+					 "usageType":"",//房屋用途,如住宅、商业等
+					 "usagePeriod":"",//房屋使用期限
+					 "registrationDate":"",//房屋登记日期
+					 "coOwner":"",//共有人姓名,多个共有人可以用逗号分隔
+					 "detailedAddress":"",//房屋的详细门牌号
+					 "hasParkingSpace":"",//是否有车位,Y表示有,N表示无
+					 "communityName":"",//房屋所在小区名称
+					 "houseStatus":""//房屋状态:1-自住,2-出租,3-空闲,4-待售
 				},
-				syqxidx:'',
-				sexs: [{
-					text: '男',
-					value: 0
-				}, {
-					text: '女',
-					value: 1
-				}],
+				cwlist:[{dictLabel:'有',dictValue:"Y"},{dictLabel:'无',dictValue:"N"}],
+				id:'',
+				fwztidx:'',
+				fwztList:[],
+				qllxList:[],
+				fwytList:[],
+				isdisabled:false,
 			}
 		},
 		onLoad: function() {
@@ -133,57 +138,46 @@
 		methods: {
 			checkPermi,
 			checkRole,
+			init(){
+				// 房屋状态
+				getDictionaryFn('house_status').then(res=>{
+					if(res.code==200){
+						this.fwztList = res.data.map(v => {
+							return {
+								dictLabel: v.dictLabel,
+								dictValue: v.dictValue
+							}
+						})
+					}
+				})
+				//权利类型
+				getDictionaryFn('types_rights').then(res=>{
+					if(res.code==200){
+						this.qllxList = res.data.map(v => {
+							return {
+								dictLabel: v.dictLabel,
+								dictValue: v.dictValue
+							}
+						})
+					}
+				})
+				//房屋用途
+				getDictionaryFn('use_remises').then(res=>{
+					if(res.code==200){
+						this.fwytList = res.data.map(v => {
+							return {
+								dictLabel: v.dictLabel,
+								dictValue: v.dictValue
+							}
+						})
+					}
+				})
+			},
 			bindDateChange(e){
 				var val=e.detail.value;
 				// this.datainfo.applicationBank=this.sdyhlist[val].value;
 				// this.applicationBank=this.sdyhlist[val].label;
 			},
-			getaddImage(e) {
-				let that = this;
-				// var rs=['D:\\idcard.png']
-				// if(rs&&rs.length>0){
-				// 	var obj={
-				// 		type:e,
-				// 		// url:baseUrl+rs.join(',')
-				// 		url:rs.join(',')
-				// 	}
-				// 	that.getOcrIdCard(obj)
-				// }
-				// return
-				let file = [],
-					count = 9
-				uni.chooseImage({
-					count: 1,
-					success: function(res) {
-						let img = res.tempFilePaths;
-						if (img.length + file.length > count) {
-							uni.showToast({
-								title: '最多上传' + count + '张图片',
-								icon: 'none',
-								duration: 2000
-							})
-						} else {
-							let imglen = res.tempFilePaths.length;
-							var fuwufile = [];
-							uploadIdentify('/common/upload', img, 0, 0, 0, imglen, fuwufile, function(rs) {
-								var resurl = rs[0];
-								if (e == 'front') {
-									that.datainfo.front = resurl.fileName;
-								} else {
-									that.datainfo.back = resurl.fileName;
-								}
-								if (rs && rs.length > 0) {
-									var obj = {
-										type: e,
-										url: resurl.urlOnline
-									}
-									that.getOcrIdCard(obj)
-								}
-							})
-						}
-					}
-				});
-			},
 			getOcrIdCard(obj) {
 				var params = {
 					image: obj.url,

BIN
property_ui/work/static/manage/houseb.png


BIN
property_ui/work/static/manage/housec.png