From 17ea4b4d7b1ddf8d4eb345af7440df9b42df9614 Mon Sep 17 00:00:00 2001
From: jialh <1972868360@qq.com>
Date: 星期五, 01 八月 2025 17:40:36 +0800
Subject: [PATCH] 更新

---
 constant/UrlConstant.js                 |    3 
 constant/url.js                         |    1 
 pages.json                              |    6 
 pages/my/my.vue                         |    2 
 components/service/service-property.vue |  179 +++++++-------
 pages/family/familyList.vue             |   74 +++--
 pages/family/familyUpdate.vue           |  260 +++++++++++++++++++++
 pages/family/family.vue                 |   74 +++--
 components/my/my-menu.vue               |   72 +++---
 9 files changed, 484 insertions(+), 187 deletions(-)

diff --git a/components/my/my-menu.vue b/components/my/my-menu.vue
index d515c7b..93d5490 100644
--- a/components/my/my-menu.vue
+++ b/components/my/my-menu.vue
@@ -103,54 +103,54 @@
 						href: '/pages/complaint/complaintList',
 						ownerAuth: true
 					},
-					{
-						name: '闂ㄧ鏃ュ織',
-						src: this.imgUrl + '/h5/images/serve/my9.png',
-						href: '/pages/machine/machineTranslateLog',
-						ownerAuth: true
-					},
-					{
-						name: '绌虹疆鎴胯褰�',
-						src: this.imgUrl + '/h5/images/serve/my8.png',
-						href: '/pages/applyRoom/myRoomList',
-						ownerAuth: true
-					},
+					// {
+					// 	name: '闂ㄧ鏃ュ織',
+					// 	src: this.imgUrl + '/h5/images/serve/my9.png',
+					// 	href: '/pages/machine/machineTranslateLog',
+					// 	ownerAuth: true
+					// },
+					// {
+					// 	name: '绌虹疆鎴胯褰�',
+					// 	src: this.imgUrl + '/h5/images/serve/my8.png',
+					// 	href: '/pages/applyRoom/myRoomList',
+					// 	ownerAuth: true
+					// },
 					{
 						name: '瑁呬慨璁板綍',
 						src: this.imgUrl + '/h5/images/serve/my10.png',
 						href: '/pages/renovation/myRoomList',
 						ownerAuth: true
 					},
-					{
-						name: '璁㈠満璁板綍',
-						src: this.imgUrl + '/h5/images/serve/my8.png',
-						href: '/pages/appointment/myBoomList',
-						ownerAuth: false
-					},
-					{
-						name: '棰勭害璁板綍',
-						src: this.imgUrl + '/h5/images/serve/my8.png',
-						href: '/pages/reserve/reserveMyOrder',
-						ownerAuth: false
-					},
-					{
-						name: '鏀捐璁板綍',
-						src: this.imgUrl + '/h5/images/serve/my8.png',
-						href: '/pages/itemRelease/myItemReleaseList',
-						ownerAuth: true
-					},
+					// {
+					// 	name: '璁㈠満璁板綍',
+					// 	src: this.imgUrl + '/h5/images/serve/my8.png',
+					// 	href: '/pages/appointment/myBoomList',
+					// 	ownerAuth: false
+					// },
+					// {
+					// 	name: '棰勭害璁板綍',
+					// 	src: this.imgUrl + '/h5/images/serve/my8.png',
+					// 	href: '/pages/reserve/reserveMyOrder',
+					// 	ownerAuth: false
+					// },
+					// {
+					// 	name: '鏀捐璁板綍',
+					// 	src: this.imgUrl + '/h5/images/serve/my8.png',
+					// 	href: '/pages/itemRelease/myItemReleaseList',
+					// 	ownerAuth: true
+					// },
 					// {
 					// 	name: '鍏呯數璁㈠崟',
 					// 	src: this.imgUrl + '/h5/images/serve/11.png',
 					// 	href: '/pages/machine/chargeMachineOrders',
 					// 	ownerAuth: false
 					// },
-					{
-						name: '鍙戠エ',
-						src: this.imgUrl + '/h5/images/serve/my5.png',
-						href: '/pages/invoice/invoice',
-						ownerAuth: true
-					},
+					// {
+					// 	name: '鍙戠エ',
+					// 	src: this.imgUrl + '/h5/images/serve/my5.png',
+					// 	href: '/pages/invoice/invoice',
+					// 	ownerAuth: true
+					// },
 				]
 			};
 		},
diff --git a/components/service/service-property.vue b/components/service/service-property.vue
index e004705..f00237b 100644
--- a/components/service/service-property.vue
+++ b/components/service/service-property.vue
@@ -64,48 +64,49 @@
 
 			},
 			_loadMenu: function() {
-				this.real_list = [{
-						name: '鐢熸椿缂磋垂',
-						src: this.imgUrl + '/h5/images/serve/1.png',
-						href: '/pages/fee/oweFee',
-						ownerAuth:true
-					},
+				this.real_list = [
+					// {
+					// 	name: '鐢熸椿缂磋垂',
+					// 	src: this.imgUrl + '/h5/images/serve/1.png',
+					// 	href: '/pages/fee/oweFee',
+					// 	ownerAuth:true
+					// },
 					{
 						name: '鎴垮眿璐�',
 						src: this.imgUrl + '/h5/images/serve/5.png',
 						href: '/pages/fee/roomFeeListNew',
 						ownerAuth:true
 					}, {
-						name: '杞︿綅璐�',
+						name: '鍋滆溅璐�',
 						src: this.imgUrl + '/h5/images/serve/9.png',
 						href: '/pages/fee/payParkingFeeList',
 						ownerAuth:true
-					}, {
-						name: '鍚堝悓璐�',
-						src: this.imgUrl + '/h5/images/serve/12.png',
-						href: '/pages/fee/contractFeeList',
-						ownerAuth:true
+					// }, {
+					// 	name: '鍚堝悓璐�',
+					// 	src: this.imgUrl + '/h5/images/serve/12.png',
+					// 	href: '/pages/fee/contractFeeList',
+					// 	ownerAuth:true
 					},
 					{
-						name: '姘寸數鍏呭��',
+						name: '姘寸數缂磋垂',
 						src: this.imgUrl + '/h5/images/serve/5.png',
 						href: '/pages/meter/meter',
 						ownerAuth:true
 					},
 					{
-						name: '瀹跺涵鎴愬憳',
-						src: this.imgUrl + '/h5/images/serve/2.png',
-						href: '/pages/family/familyList',
-						ownerAuth:true
+						name: '绀惧尯鍏憡',
+						src: this.imgUrl + '/h5/images/serve/7.png',
+						href: '/pages/notice/index',
+						ownerAuth:false
 					},
+					// {
+					// 	name: '璁垮閫氳',
+					// 	src: this.imgUrl + '/h5/images/serve/3.png',
+					// 	href: '/pages/visit/visitList',
+					// 	ownerAuth:true
+					// },
 					{
-						name: '璁垮閫氳',
-						src: this.imgUrl + '/h5/images/serve/3.png',
-						href: '/pages/visit/visitList',
-						ownerAuth:true
-					},
-					{
-						name: '鎶曡瘔鍜ㄨ',
+						name: '鎶曡瘔寤鸿',
 						src: this.imgUrl + '/h5/images/serve/4.png',
 						href: '/pages/complaint/complaint',
 						ownerAuth:true
@@ -116,72 +117,62 @@
 						href: '/pages/repair/repair',
 						ownerAuth:true
 					},
-					{
-						name: '绀惧尯鍏憡',
-						src: this.imgUrl + '/h5/images/serve/7.png',
-						href: '/pages/notice/index',
-						ownerAuth:false
-					},
-					{
-						name: '涓�閿紑闂�',
-						src: this.imgUrl + '/h5/images/serve/8.png',
-						href: '/pages/machine/openDoor',
-						ownerAuth:true
-					},
+					
+					// {
+					// 	name: '涓�閿紑闂�',
+					// 	src: this.imgUrl + '/h5/images/serve/8.png',
+					// 	href: '/pages/machine/openDoor',
+					// 	ownerAuth:true
+					// },
 					{
 						name: '瑁呬慨鎶ュ',
 						src: this.imgUrl + '/h5/images/serve/10.png',
 						href: '/pages/renovation/roomRenovation',
 						ownerAuth:true
 					},
-					{
-						name: '涓氫富淇℃伅',
-						src: this.imgUrl + '/h5/images/serve/my1.png',
-						href: '/pages/viewBindOwner/viewBindOwner',
-						ownerAuth:true
-					},
-					{
-						name: "杞︿綅鐢宠",
-						src: this.imgUrl + "/h5/images/serve/my6.png",
-						href: "/pages/car/applyparking",
-						ownerAuth:true
-					},
+					
+					// {
+					// 	name: "杞︿綅鐢宠",
+					// 	src: this.imgUrl + "/h5/images/serve/my6.png",
+					// 	href: "/pages/car/applyparking",
+					// 	ownerAuth:true
+					// },
 					{
 						name: "鎶曠エ闂嵎",
 						src: this.imgUrl + "/h5/images/serve/my2.png",
 						href: "/pages/questionAnswer/questionAnswer",
 						ownerAuth:true
 					},
-					{
-						name: '绌虹疆鎴跨敵璇�',
-						src: this.imgUrl + '/h5/images/serve/my9.png',
-						href: '/pages/applyRoom/applyRoom',
-						ownerAuth:true
-					},
-					{
-						name: '鐞冨満棰勭害',
-						src: this.imgUrl + '/h5/images/serve/order4.png',
-						href: '/pages/appointment/appointment',
-						ownerAuth:false
-					},
-					{
-						name: '灏遍',
-						src: this.imgUrl + '/h5/images/serve/order4.png',
-						href: '/pages/reserve/reserveDining',
-						ownerAuth:false
-					},
-					{
-						name: '棰勭害鏈嶅姟',
-						src: this.imgUrl + '/h5/images/serve/order4.png',
-						href: '/pages/reserve/reserveService',
-						ownerAuth:false
-					},
-					{
-						name: '鐗╁搧鏀捐',
-						src: this.imgUrl + '/h5/images/serve/order4.png',
-						href: '/pages/itemRelease/itemRelease',
-						ownerAuth:true
-					},
+					// {
+					// 	name: '绌虹疆鎴跨敵璇�',
+					// 	src: this.imgUrl + '/h5/images/serve/my9.png',
+					// 	href: '/pages/applyRoom/applyRoom',
+					// 	ownerAuth:true
+					// },
+					// {
+					// 	name: '鐞冨満棰勭害',
+					// 	src: this.imgUrl + '/h5/images/serve/order4.png',
+					// 	href: '/pages/appointment/appointment',
+					// 	ownerAuth:false
+					// },
+					// {
+					// 	name: '灏遍',
+					// 	src: this.imgUrl + '/h5/images/serve/order4.png',
+					// 	href: '/pages/reserve/reserveDining',
+					// 	ownerAuth:false
+					// },
+					// {
+					// 	name: '棰勭害鏈嶅姟',
+					// 	src: this.imgUrl + '/h5/images/serve/order4.png',
+					// 	href: '/pages/reserve/reserveService',
+					// 	ownerAuth:false
+					// },
+					// {
+					// 	name: '鐗╁搧鏀捐',
+					// 	src: this.imgUrl + '/h5/images/serve/order4.png',
+					// 	href: '/pages/itemRelease/itemRelease',
+					// 	ownerAuth:true
+					// },
 					{
 						name: '杞﹁締鏈堝崱',
 						src: this.imgUrl + '/h5/images/serve/my3.png',
@@ -200,18 +191,30 @@
 						href: '/pages/common/communityPublicity',
 						ownerAuth:false
 					},
+					// {
+					// 	name: '涓氫富淇℃伅',
+					// 	src: this.imgUrl + '/h5/images/serve/my1.png',
+					// 	href: '/pages/viewBindOwner/viewBindOwner',
+					// 	ownerAuth:true
+					// },
 					{
-						name: '鍏呯數妗�',
-						src: this.imgUrl + '/h5/images/serve/my1.png',
-						href: '/pages/machine/chargeMachines',
-						ownerAuth:false
+						name: '瀹跺涵鎴愬憳',
+						src: this.imgUrl + '/h5/images/serve/2.png',
+						href: '/pages/family/familyList',
+						ownerAuth:true
 					},
-					{
-						name: '鐩戞帶',
-						src: this.imgUrl + '/h5/images/camera.png',
-						href: '/pages/machine/monitorCamera',
-						ownerAuth:false
-					}
+					// {
+					// 	name: '鍏呯數妗�',
+					// 	src: this.imgUrl + '/h5/images/serve/my1.png',
+					// 	href: '/pages/machine/chargeMachines',
+					// 	ownerAuth:false
+					// },
+					// {
+					// 	name: '鐩戞帶',
+					// 	src: this.imgUrl + '/h5/images/camera.png',
+					// 	href: '/pages/machine/monitorCamera',
+					// 	ownerAuth:false
+					// }
 				];
 			}
 		}
diff --git a/constant/UrlConstant.js b/constant/UrlConstant.js
index 77aaa6d..138d6bf 100644
--- a/constant/UrlConstant.js
+++ b/constant/UrlConstant.js
@@ -22,6 +22,8 @@
 
 const saveOwner = baseUrl + 'app/owner.saveOwnerMember'; //瀹跺涵鎴愬憳鍒楄〃
 
+const updateOwnerMembers = baseUrl + 'app/owner.updateOwnerMembers'; //鎶曡瘔寤鸿鍒楄〃
+
 const queryOwnerMembers = baseUrl + 'app/owner.queryOwnerMembers'; //鎶曡瘔寤鸿鍒楄〃
 
 const listComplaints = baseUrl + 'app/complaint.listComplaints'; //娣诲姞鎶曡瘔寤鸿
@@ -202,6 +204,7 @@
 	appUserBindingOwner: appUserBindingOwner,
 	queryAppUserBindingOwner: queryAppUserBindingOwner,
 	queryOwnerMembers: queryOwnerMembers,
+	updateOwnerMembers: updateOwnerMembers,
 	listComplaints: listComplaints,
 	saveComplaint: saveComplaint,
 	appUserUnBindingOwner: appUserUnBindingOwner,
diff --git a/constant/url.js b/constant/url.js
index 4f7ae7f..52ff486 100644
--- a/constant/url.js
+++ b/constant/url.js
@@ -14,6 +14,7 @@
 	saveOwnerRepair: baseUrl + 'app/ownerRepair.saveOwnerRepair', //鎶ヤ慨
 	listOwnerRepairs: baseUrl + 'app/ownerRepair.listOwnerRepairs', //鏌ヨ鎶ヤ慨
 	saveOwner: baseUrl + 'app/owner.saveOwnerMember', //瀹跺涵鎴愬憳鍒楄〃
+	updateOwnerMembers: baseUrl + 'app/owner.updateOwnerMembers', //淇敼瀹跺涵鎴愬憳鍒楄〃
 	queryOwnerMembers: baseUrl + 'app/owner.queryAppOwnerMembers', //鎶曡瘔寤鸿鍒楄〃
 	listComplaints: baseUrl + 'app/complaint.queryUserComplaints', //娣诲姞鎶曡瘔寤鸿
 	listComplaintEvent: baseUrl + 'app/complaint.listPhoneComplaintEvent', //娣诲姞鎶曡瘔寤鸿
diff --git a/pages.json b/pages.json
index 4bad93b..0b2be56 100644
--- a/pages.json
+++ b/pages.json
@@ -106,6 +106,12 @@
 			}
 		},
 		{
+			"path": "pages/family/familyUpdate",
+			"style": {
+				"navigationBarTitleText": "淇敼鎴愬憳"
+			}
+		},
+		{
 			"path": "pages/family/familyList",
 			"style": {
 				"navigationBarTitleText": "瀹跺涵鎴愬憳"
diff --git a/pages/family/family.vue b/pages/family/family.vue
index 23d0d10..25415ab 100644
--- a/pages/family/family.vue
+++ b/pages/family/family.vue
@@ -7,7 +7,7 @@
 		</view>
 		<view class="cu-form-group">
 			<view class="title">韬唤璇�</view>
-			<input v-model="idCard" placeholder="閫夊~,璇疯緭鍏ヨ韩浠借瘉" ></input>
+			<input v-model="idCard" placeholder="閫夊~,璇疯緭鍏ヨ韩浠借瘉"></input>
 		</view>
 		<view class="cu-form-group">
 			<view class="title">鎬у埆</view>
@@ -31,13 +31,15 @@
 		</view>
 		<view class="cu-form-group">
 			<view class="title">鎵嬫満鍙�</view>
-			<input v-model="link" placeholder="閫夊~,璇疯緭鍏ユ墜鏈哄彿"></input>
+			<input v-model="link" placeholder="蹇呭~,璇疯緭鍏ユ墜鏈哄彿"></input>
 		</view>
-		
+
 		<view class="block__title">鐩稿叧鍥剧墖</view>
-		<uploadImageAsync ref="vcUploadRef" :communityId="communityId" :maxPhotoNum="uploadImage.maxPhotoNum" :canEdit="uploadImage.canEdit" :title="uploadImage.imgTitle" @sendImagesData="sendImagesData"></uploadImageAsync>
-			
-		
+		<uploadImageAsync ref="vcUploadRef" :communityId="communityId" :maxPhotoNum="uploadImage.maxPhotoNum"
+			:canEdit="uploadImage.canEdit" :title="uploadImage.imgTitle" @sendImagesData="sendImagesData">
+		</uploadImageAsync>
+
+
 		<!-- <view class="cu-form-group margin-top">
 			<textarea v-model="remark" placeholder="璇疯緭鍏ュ娉�"></textarea>
 		</view> -->
@@ -51,9 +53,15 @@
 <script>
 	// pages/enterCommunity/enterCommunity.js
 	import context from '../../lib/java110/Java110Context.js';
-	import {isIDCard,checkPhoneNumber,idCardInfoExt} from '../../lib/java110/utils/StringUtil.js';
+	import {
+		isIDCard,
+		checkPhoneNumber,
+		idCardInfoExt
+	} from '../../lib/java110/utils/StringUtil.js';
 	import uploadImageAsync from "../../components/vc-upload-async/vc-upload-async.vue";
-	import {sendMsgCode} from '../../api/user/userApi.js';
+	import {
+		sendMsgCode
+	} from '../../api/user/userApi.js';
 	const constant = context.constant;
 	const factory = context.factory;
 
@@ -68,8 +76,7 @@
 				"remark": "",
 				"ownerId": "",
 				"userId": "",
-				"typeCds": [
-					{
+				"typeCds": [{
 						value: '3',
 						name: '瀹跺涵鎴愬憳'
 					},
@@ -87,17 +94,17 @@
 					}
 				],
 				"typeCdIndex": 0,
-				"personRole":'3',
+				"personRole": '3',
 				"ownerTypeCd": "1002",
 				"idCard": "",
 				"memberId": "-1",
 				"communityId": "",
 				"second": 60,
-				"btnDisabled":false,
+				"btnDisabled": false,
 				"btnValue": "楠岃瘉鐮�",
-				"msgCode":'',
+				"msgCode": '',
 				"address": "",
-				photos:'',
+				photos: '',
 				uploadImage: {
 					maxPhotoNum: 1,
 					imgTitle: '鍥剧墖涓婁紶',
@@ -105,7 +112,7 @@
 				}
 			};
 		},
-		
+
 		components: {
 			uploadImageAsync
 		},
@@ -115,7 +122,7 @@
 		 */
 		onLoad: function(options) {
 			let _that = this;
-			 context.onLoad(options);
+			context.onLoad(options);
 			context.getOwner(function(_owner) {
 				_that.ownerId = _owner.ownerId;
 				_that.communityId = _owner.communityId;
@@ -126,7 +133,7 @@
 		 */
 		onPullDownRefresh: function() {},
 		methods: {
-			sendImagesData: function(e){
+			sendImagesData: function(e) {
 				this.photos = e[0].url;
 			},
 			submitOwnerMember: function(e) {
@@ -142,20 +149,24 @@
 					"memberId": this.memberId,
 					"communityId": this.communityId,
 					"idCard": this.idCard,
-					"personRole":this.personRole,
-					"personType":'P',
+					"personRole": this.personRole,
+					"personType": 'P',
 					"address": this.address,
 					"ownerPhotoUrl": this.photos
 				}
-				
+
 				let msg = "";
 				if (obj.ownerId == "") {
 					msg = "璇峰~鍐欎笟涓�";
 				} else if (obj.name == "") {
 					msg = "璇峰~鍐欏鍚�";
-				} 
-				 // todo 杩欓噷鎵嬫満鍙峰叧闂� 鍥犱负 灏忔湅鍙嬫病鏈夋墜鏈哄彿
-				 //else if (obj.msgCode == "") {
+				} else if (obj.link == "") {
+					msg = "璇峰~鍐欐墜鏈哄彿";
+				} else if (!this.validatePhoneNumber(obj.link)) { // 娣诲姞鎵嬫満鍙锋牸寮忔牎楠�
+					msg = "鎵嬫満鍙锋牸寮忎笉姝g‘";
+				}
+				// todo 杩欓噷鎵嬫満鍙峰叧闂� 鍥犱负 灏忔湅鍙嬫病鏈夋墜鏈哄彿
+				//else if (obj.msgCode == "") {
 				// 	msg = "璇峰~鍐欓獙璇佺爜";
 				// }
 				if (msg != "") {
@@ -198,13 +209,18 @@
 					});
 				}
 			},
-			_changeTypeCd: function(e){
+			// 鏂板鎵嬫満鍙锋牸寮忔牎楠岀殑鏂规硶
+			validatePhoneNumber(phone) {
+				const phoneRegex = /^1[3-9]\d{9}$/; // 涓浗鎵嬫満鍙风殑姝e垯琛ㄨ揪寮�
+				return phoneRegex.test(phone); // 妫�鏌ユ墜鏈哄彿鏄惁绗﹀悎鏍煎紡
+			},
+			_changeTypeCd: function(e) {
 				this.typeCdIndex = e.detail.value;
 				this.personRole = this.typeCds[this.typeCdIndex].value;
 			},
-			idCardChange: function(){
+			idCardChange: function() {
 				let idCard = this.idCard;
-				if(!isIDCard(idCard)){
+				if (!isIDCard(idCard)) {
 					uni.showToast({
 						title: '韬唤璇佸彿鏈夎',
 						icon: 'none',
@@ -218,9 +234,9 @@
 				this.sex = e.detail.value;
 			},
 			_sendMsgCode: function() {
-				sendMsgCode(this.link,this);
+				sendMsgCode(this.link, this);
 			},
-			
+
 		}
 	};
 </script>
@@ -236,4 +252,4 @@
 	.button_up_blank {
 		height: 40rpx;
 	}
-</style>
+</style>
\ No newline at end of file
diff --git a/pages/family/familyList.vue b/pages/family/familyList.vue
index 5854654..092018c 100644
--- a/pages/family/familyList.vue
+++ b/pages/family/familyList.vue
@@ -2,7 +2,8 @@
 	<view>
 		<view v-if="owners.length>0">
 			<view class="block__title">鎴愬憳淇℃伅</view>
-			<view v-for="(item,index) in owners" :key="index" class="bg-white margin-bottom margin-right-xs radius margin-left-xs padding">
+			<view v-for="(item,index) in owners" :key="index"
+				class="bg-white margin-bottom margin-right-xs radius margin-left-xs padding">
 				<view class="flex padding-bottom-xs solid-bottom justify-between">
 					<view>{{item.name}}</view>
 					<view class="text-gray">{{item.link}}</view>
@@ -15,19 +16,18 @@
 					<view class="text-gray">韬唤璇佸彿</view>
 					<view class="text-gray">{{item.idCard}}</view>
 				</view>
-
-				<view class="flex margin-top-xs justify-between">
+				<!-- <view class="flex margin-top-xs justify-between">
 					<view class="text-gray">鎴愬憳骞撮緞</view>
 					<view class="text-gray">{{item.age}}宀�</view>
-				</view>
+				</view> -->
 				<view class="flex margin-top-xs justify-between">
 					<view class="text-gray">鎴愬憳鎬у埆</view>
 					<view class="text-gray">{{item.sex == 0? '鐢�': '濂�'}}</view>
 				</view>
-				
+
 				<view class="solid-top flex justify-end margin-top padding-top-sm padding-bottom-sm">
-					<button  class="cu-btn sm bg-green " @click="_deleteOwnerMember(item)">淇敼</button>
-					<button  class="cu-btn sm bg-red " @click="_deleteOwnerMember(item)">鍒犻櫎</button>
+					<button class="cu-btn sm bg-green " @click="_updateOwnerMember(item)">淇敼</button>
+					<button class="cu-btn sm bg-red " @click="_deleteOwnerMember(item)">鍒犻櫎</button>
 				</view>
 			</view>
 		</view>
@@ -36,7 +36,8 @@
 		</view>
 		<view class="button_up_blank"></view>
 
-		<view v-if="ownerTypeCd == '1001'" class="bg-white  border flex justify-end" style="position: fixed;width: 100%;bottom: 0;">
+		<view v-if="ownerTypeCd == '1001'" class="bg-white  border flex justify-end"
+			style="position: fixed;width: 100%;bottom: 0;">
 			<view class="action text-orange margin-right line-height">
 
 			</view>
@@ -44,7 +45,7 @@
 				<button class="cu-btn bg-green shadow-blur lgplus sharp" @click="goAdd()">娣诲姞鎴愬憳</button>
 			</view>
 		</view>
-		
+
 		<view class="cu-modal" :class="delOwnerMemberFlag==true?'show':''">
 			<view class="cu-dialog">
 				<view class="cu-bar bg-white justify-end">
@@ -69,19 +70,21 @@
 	import context from '../../lib/java110/Java110Context.js';
 	const constant = context.constant;
 	import noDataPage from '@/components/no-data-page/no-data-page.vue';
-	
-	import {deleteOwnerMember} from '../../api/owner/ownerApi.js'
+
+	import {
+		deleteOwnerMember
+	} from '../../api/owner/ownerApi.js'
 	export default {
 		data() {
 			return {
 				owners: [],
-				delOwnerMemberFlag:false,
+				delOwnerMemberFlag: false,
 				page: 1,
 				totalPage: 0,
 				loading: false,
 				communityId: '',
 				ownerId: '',
-				curOwnerMember:{},
+				curOwnerMember: {},
 				ownerTypeCd: '',
 			};
 		},
@@ -93,10 +96,10 @@
 		},
 		onShow: function() {
 			this._initData();
-			
+
 		},
 		methods: {
-			_initData:function(){
+			_initData: function() {
 				let that = this;
 				that.owners = [];
 				context.getOwner(function(_owner) {
@@ -139,31 +142,36 @@
 					url: "/pages/family/family"
 				})
 			},
-			_deleteOwnerMember:function(item){
+			_updateOwnerMember(item) {
+			    this.vc.navigateTo({
+			        url: `/pages/family/familyUpdate?memberId=${item.memberId}`
+			    });
+			},
+			_deleteOwnerMember: function(item) {
 				this.delOwnerMemberFlag = true;
 				this.curOwnerMember = item;
 			},
-			_cancleDeleteOwnerMember:function(item){
+			_cancleDeleteOwnerMember: function(item) {
 				this.delOwnerMemberFlag = false;
 			},
-			_doDeleteOwnerMember:function(){
+			_doDeleteOwnerMember: function() {
 				let that = this;
 				this.curOwnerMember.communityId = this.communityId;
 				deleteOwnerMember(this.curOwnerMember)
-				.then((res)=>{
-					uni.showToast({
-						icon:'none',
-						title:'鍒犻櫎鎴愬姛'
-					});
-					that._cancleDeleteOwnerMember();
-					that._initData();
-				},(err)=>{
-					uni.showToast({
-						icon:'none',
-						title:err
-					});
-					that._cancleDeleteOwnerMember();
-				})
+					.then((res) => {
+						uni.showToast({
+							icon: 'none',
+							title: '鍒犻櫎鎴愬姛'
+						});
+						that._cancleDeleteOwnerMember();
+						that._initData();
+					}, (err) => {
+						uni.showToast({
+							icon: 'none',
+							title: err
+						});
+						that._cancleDeleteOwnerMember();
+					})
 			}
 		}
 	};
@@ -199,4 +207,4 @@
 	.line-height {
 		line-height: 100upx;
 	}
-</style>
+</style>
\ No newline at end of file
diff --git a/pages/family/familyUpdate.vue b/pages/family/familyUpdate.vue
new file mode 100644
index 0000000..e48cebe
--- /dev/null
+++ b/pages/family/familyUpdate.vue
@@ -0,0 +1,260 @@
+<template>
+	<view>
+		<view class="block__title">鍩烘湰淇℃伅</view>
+		<view class="cu-form-group">
+			<view class="title">濮撳悕</view>
+			<input v-model="name" placeholder="蹇呭~,璇疯緭鍏ユ垚鍛樺悕绉�" />
+		</view>
+		<view class="cu-form-group">
+			<view class="title">韬唤璇�</view>
+			<input v-model="idCard" placeholder="閫夊~,璇疯緭鍏ヨ韩浠借瘉" @blur="idCardChange" />
+		</view>
+		<view class="cu-form-group">
+			<view class="title">鎬у埆</view>
+			<picker :value="sexIndex" :range="sexArr" @change="sexChange">
+				<view class="picker">
+					{{ sexArr[sexIndex] }}
+				</view>
+			</picker>
+		</view>
+		<view class="cu-form-group">
+			<view class="title">浜哄憳瑙掕壊</view>
+			<picker :value="typeCdIndex" :range="typeCds" range-key="name" @change="_changeTypeCd">
+				<view class="picker">
+					{{typeCds[typeCdIndex].name}}
+				</view>
+			</picker>
+		</view>
+		<view class="cu-form-group">
+			<view class="title">鍦板潃</view>
+			<input type="text" v-model="address" placeholder="閫夊~,璇疯緭鍏ュ湴鍧�" />
+		</view>
+		<view class="cu-form-group">
+			<view class="title">鎵嬫満鍙�</view>
+			<input v-model="link" placeholder="閫夊~,璇疯緭鍏ユ墜鏈哄彿" />
+		</view>
+
+		<view class="block__title">鐩稿叧鍥剧墖</view>
+		<uploadImageAsync ref="vcUploadRef" :communityId="communityId" :maxPhotoNum="uploadImage.maxPhotoNum"
+			:canEdit="uploadImage.canEdit" :title="uploadImage.imgTitle" @sendImagesData="sendImagesData">
+		</uploadImageAsync>
+
+		<view class="flex flex-direction margin-top margin-bottom">
+			<button class="cu-btn bg-green margin-tb-sm lg" @click="submitOwnerMember()">鎻愪氦</button>
+		</view>
+	</view>
+</template>
+
+<script>
+	import context from '../../lib/java110/Java110Context.js';
+	import {
+		isIDCard,
+		idCardInfoExt
+	} from '../../lib/java110/utils/StringUtil.js';
+	import uploadImageAsync from "../../components/vc-upload-async/vc-upload-async.vue";
+	const constant = context.constant;
+
+	export default {
+		data() {
+			return {
+				sexArr: ["鐢�", "濂�"],
+				sexIndex: 0,
+				name: "",
+				link: "",
+				idCard: "",
+				address: "",
+				photos: '',
+				typeCds: [{
+						value: '3',
+						name: '瀹跺涵鎴愬憳'
+					},
+					{
+						value: '2',
+						name: '绉熷'
+					},
+					{
+						value: '4',
+						name: '鍏徃鍛樺伐'
+					},
+					{
+						value: '99',
+						name: '鍏朵粬'
+					}
+				],
+				typeCdIndex: 0,
+				personRole: '3',
+				memberId: "-1",
+				communityId: "",
+				ownerId: "",
+				uploadImage: {
+					maxPhotoNum: 1,
+					imgTitle: '鍥剧墖涓婁紶',
+					canEdit: true
+				}
+			};
+		},
+
+		components: {
+			uploadImageAsync
+		},
+
+		onLoad: function(options) {
+			context.onLoad(options);
+			this.memberId = options.memberId; // 鑾峰彇浼犲叆鐨� memberId
+			this.getOwnerDetailsByIndex(this.memberId); // 璋冪敤鏂规硶鑾峰彇鎴愬憳璇︾粏淇℃伅
+		},
+		onShow: function() {
+			this._initData();
+		},
+		methods: {
+			sendImagesData(e) {
+				this.photos = e[0].url; // 鍋囪杩斿洖鐨勬槸鏁扮粍锛屽彇绗竴涓浘鐗囩殑 url
+			},
+			_initData: function() {
+				let that = this;
+				that.owners = [];
+				context.getOwner(function(_owner) {
+					that.communityId = _owner.communityId;
+					that.ownerId = _owner.ownerId;
+					that.ownerTypeCd = _owner.ownerTypeCds;
+				});
+			},
+			getOwnerDetailsByIndex(memberId) {
+				let that = this;
+				let params = {
+					"communityId": that.communityId,
+					"ownerId": that.ownerId,
+					"memberId": memberId, // 浣跨敤 memberId 鑾峰彇瀵瑰簲鐨勬垚鍛樹俊鎭�
+				};
+
+				context.request({
+					url: constant.url.queryOwnerMembers, // 杩欎釜鏄拰 list 椤甸潰鐩稿悓鐨勬帴鍙�
+					header: context.getHeaders(),
+					method: "GET",
+					data: params,
+					success: function(res) {
+						if (res.data.code === 0) {
+							const memberData = res.data.data[0]; // 鏍规嵁浼犲叆鐨� memberId 鑾峰彇瀵瑰簲鐨勬垚鍛樻暟鎹�
+							console.log("memberData:", memberData);
+							that.name = memberData.name;
+							that.idCard = memberData.idCard;
+							that.link = memberData.link;
+							that.address = memberData.address;
+							that.sexIndex = memberData.sex === '0' ? 0 : 1; // 鏍规嵁鎬у埆璁剧疆绱㈠紩
+							let personRoleNumber = parseInt(memberData.personRole, 10); // 灏嗗瓧绗︿覆杞崲涓烘暟瀛�
+							that.typeCdIndex = that.typeCds.findIndex(type => type.value == personRoleNumber); // 鏍规嵁瑙掕壊璁剧疆绱㈠紩
+							that.photos = memberData.ownerPhotoUrl || ""; // 鑾峰彇鍥剧墖 URL
+						} else {
+							uni.showToast({
+								title: '鍔犺浇鎴愬憳淇℃伅澶辫触',
+								icon: 'none'
+							});
+						}
+					},
+					fail: function() {
+						uni.showToast({
+							title: '鏈嶅姟鍣ㄥ紓甯�',
+							icon: 'none'
+						});
+					}
+				});
+			},
+			submitOwnerMember() {
+				let obj = {
+					sex: this.sexArr[this.sexIndex] === '鐢�' ? 0 : 1,
+					name: this.name,
+					link: this.link,
+					ownerId: this.ownerId,
+					memberId: this.memberId,
+					communityId: this.communityId,
+					idCard: this.idCard,
+					personRole: this.personRole,
+					address: this.address,
+					ownerPhotoUrl: this.photos
+				};
+
+				let msg = "";
+				if (!obj.name) {
+					msg = "璇峰~鍐欏鍚�";
+				}else if (obj.link == "") {
+					msg = "璇峰~鍐欐墜鏈哄彿";
+				}else if (!this.validatePhoneNumber(obj.link)) { // 娣诲姞鎵嬫満鍙锋牸寮忔牎楠�
+					msg = "鎵嬫満鍙锋牸寮忎笉姝g‘";
+				}
+				if (msg) {
+					uni.showToast({
+						title: msg,
+						icon: 'none',
+						duration: 2000
+					});
+				} else {
+					uni.showLoading({
+						title: '鎻愪氦涓�'
+					});
+					context.request({
+						url: constant.url.updateOwnerMembers,
+						header: context.getHeaders(),
+						method: "POST",
+						data: obj,
+						success: function(res) {
+							uni.hideLoading();
+							if (res.data.code === 0) {
+								uni.navigateBack();
+								return;
+							}
+							uni.showToast({
+								title: res.data.msg,
+								icon: 'none',
+								duration: 2000
+							});
+						},
+						fail: function() {
+							uni.hideLoading();
+							uni.showToast({
+								title: "鏈嶅姟鍣ㄥ紓甯�",
+								icon: 'none',
+								duration: 2000
+							});
+						}
+					});
+				}
+			},
+			// 鏂板鎵嬫満鍙锋牸寮忔牎楠岀殑鏂规硶
+			validatePhoneNumber(phone) {
+				const phoneRegex = /^1[3-9]\d{9}$/; // 涓浗鎵嬫満鍙风殑姝e垯琛ㄨ揪寮�
+				return phoneRegex.test(phone); // 妫�鏌ユ墜鏈哄彿鏄惁绗﹀悎鏍煎紡
+			},
+			_changeTypeCd(e) {
+				this.typeCdIndex = e.detail.value;
+				this.personRole = this.typeCds[this.typeCdIndex].value;
+			},
+			idCardChange() {
+				let idCard = this.idCard;
+				if (!isIDCard(idCard)) {
+					uni.showToast({
+						title: '韬唤璇佸彿鏈夎',
+						icon: 'none',
+					});
+					return;
+				}
+			},
+			sexChange(e) {
+				this.sexIndex = e.detail.value;
+			}
+		}
+	};
+</script>
+
+<style>
+	.block__title {
+		margin: 0;
+		font-weight: 400;
+		font-size: 14px;
+		color: rgba(69, 90, 100, .6);
+		padding: 40rpx 30rpx 20rpx;
+	}
+
+	.button_up_blank {
+		height: 40rpx;
+	}
+</style>
\ No newline at end of file
diff --git a/pages/my/my.vue b/pages/my/my.vue
index 8189abd..8b696dd 100644
--- a/pages/my/my.vue
+++ b/pages/my/my.vue
@@ -7,7 +7,7 @@
 
 		<my-system ref="mySystem"></my-system>
 		
-		<community-recommend></community-recommend>
+		<!-- <community-recommend></community-recommend> -->
 	</view>
 </template>
 

--
Gitblit v1.8.0