소스 검색

refactor:页面修改

zhanghui 2 년 전
부모
커밋
777bc9be2e

+ 17 - 0
common/js/api.js

@@ -4,6 +4,23 @@ import request from '../js/request.js';
 export default {
 export default {
 
 
 
 
+	// get请求 根据id获取工位信息
+	getByPersonId(data) {
+		return request({
+			url: '/business/wechat/sp/getByPersonId/'+data.personId,
+			method: 'GET'
+		})
+	},
+
+
+	// get请求 根据id获取工位信息
+	getStationById(data) {
+		return request({
+			url: '/store/uniapp/getStationById/'+data.stationId,
+			method: 'GET'
+		})
+	},
+
 	// get请求 通过会员编号获取老系统充值记录
 	// get请求 通过会员编号获取老系统充值记录
 	category(data) {
 	category(data) {
 		return request({
 		return request({

+ 149 - 410
myPages/ServiceObjectManagement/index.vue

@@ -1,449 +1,188 @@
 <template>
 <template>
-  <view class="user-info-wrap">
-    <view class="nav-bar">
-      <view class="nav-content">
-        <view class="nav-info">
-          <view class="nav-desc">
-            <view class="nav-name">
-              <view class="">头像</view>
-            </view>
-          </view>
-          <view @click="uploadImg1(1)" class="arrow-right">
-            <view class="head-img">
-              <image v-if="userInfo.facePhotoUrl" :src="userInfo.facePhotoUrl" mode=""></image>
-              <image v-else src="../../static/me/u1796.png" mode=""></image>
-            </view>
-            <!-- <u-icon name="arrow-right" color="#666" size="26"></u-icon> -->
-          </view>
-        </view>
-      </view>
-      <view class="custom-line"></view>
-      <view class="nav-content">
-        <view class="nav-info">
-          <view class="nav-desc">
-            <view class="nav-name">
-              <view class="">昵称</view>
-            </view>
-            <input class="custom-input" v-model="userInfo.nickName" type="text" placeholder="请输入昵称">
-          </view>
-        </view>
-      </view>
-      <view class="custom-line"></view>
-      <view class="nav-content">
-        <view class="nav-info">
-          <view class="nav-desc">
-            <view class="nav-name">
-              <view class="">性别</view>
-            </view>
-          </view>
-          <view @click="chooseGender()" class="arrow-right">
-            <view class="change-store">
-              <text v-if="userInfo.sex == 0">男</text>
-              <text v-else-if="userInfo.sex == 1">女</text>
-              <text v-else-if="userInfo.sex == 2">未知</text>
-              <text v-else>请选择性别</text>
-            </view>
-            <u-icon name="arrow-right" color="#666" size="16"></u-icon>
-          </view>
-        </view>
-      </view>
-      <view class="custom-line"></view>
-      <view class="nav-content">
-        <view class="nav-info">
-          <view class="nav-desc">
-            <view class="nav-name">
-              <view class="">生日</view>
-            </view>
-          </view>
-          <view @click="chooseServiceDate()" class="arrow-right">
-            <view class="change-store">
-              <text v-if="userInfo.birthday">{{ userInfo.birthday }}</text>
-              <text v-else>请选择生日</text>
-            </view>
-            <u-icon name="arrow-right" color="#666" size="16"></u-icon>
-          </view>
-        </view>
-      </view>
-      <view class="custom-line"></view>
-      <view class="nav-content">
-        <view class="nav-info">
-          <view class="nav-desc">
-            <view class="nav-name">
-              <view class="">是否双胞胎</view>
-            </view>
-          </view>
-          <view class="arrow-right">
-            <view class="change-store">
-              <u-radio-group v-model="ranksState" size="14" @change="handleRankChange" placement="row">
-                <u-radio activeColor="#eac00f" name="0" label="否"></u-radio>
-                <u-radio activeColor="#eac00f" name="1" label="是"></u-radio>
-              </u-radio-group>
-            </view>
-          </view>
-        </view>
-      </view>
-      <view v-if="ranksState == '1'" class="custom-line"></view>
-      <view v-if="ranksState == '1'" class="nav-content">
-        <view class="nav-info">
-          <view class="nav-desc">
-            <view class="nav-name">
-              <view class="">排行</view>
-            </view>
-          </view>
-          <view class="arrow-right button-group">
-            <text class="button" @click="decrement">-</text>
-            <input class="custom-input-ranks" v-model="userInfo.ranks" disabled="disabled" type="text">
-            <text class="button" @click="increment">+</text>
-          </view>
-        </view>
+  <view class="">
+    <view class="service-object-wrap">
+      <view @click="gotoAddServiceObject()" class="add">
+        +<text class="name">添加服务对象</text>
       </view>
       </view>
-      <view class="custom-line"></view>
 
 
-      <view class="nav-content">
-        <view class="nav-info">
-          <view class="nav-desc">
-            <view class="nav-name">
-              <text class="">关系</text>
-            </view>
-            <input class="custom-input" v-model="userInfo.blood" type="text" placeholder="请输入有关系(如父子)">
-          </view>
-<!--          <view class="arrow-right">-->
-<!--          </view>-->
-        </view>
-      </view>
-      <view class="custom-line"></view>
-      <view class="nav-content">
-        <view class="nav-info">
-          <view class="nav-desc">
-            <view class="nav-name">
-              <view class="">是否监护人</view>
-            </view>
+      <view class="service-object-list" >
+
+        <view v-for="item in serviceObjectList" class="store-content">
+          <view class="store-img">
+            <image v-if="item.imgUrl" :src="item.imgUrl" mode=""></image>
+            <image v-else src="../../static/logo.png" mode=""></image>
           </view>
           </view>
-          <view class="arrow-right">
-            <view class="change-store">
-              <u-radio-group size="14" v-model="userInfo.wardship" placement="row">
-                <u-radio class="radio-item" activeColor="#eac00f" name="1" label="否"></u-radio>
-                <u-radio class="radio-item" activeColor="#eac00f" name="2" label="是"></u-radio>
-              </u-radio-group>
+          <view class="content">
+            <view class="title-price">
+              <view class="title">
+                <text v-if="item.nickName">{{item.nickName}}</text>
+                <text v-else>未填写</text>
+              </view>
+              <view @click="gotoUpdateServiceObject(item)" class="icon-btn">
+                <image src="/static/me/u2299.png" mode=""></image>
+              </view>
             </view>
             </view>
-          </view>
-        </view>
-      </view>
-      <view class="custom-line"></view>
-      <view class="nav-content">
-        <view class="nav-info">
-          <view class="nav-desc">
-            <view class="nav-name">
-              <view class="">备注</view>
+            <view class="desc">
+              <view class="in-progress">关系:{{item.blood}}</view>
+              <view class="completed" >
+                备注:<text>{{item.remark || '无'}}</text>
+              </view>
             </view>
             </view>
-            <input   class="custom-input" v-model="userInfo.remark" type="text" placeholder="请输入备注信息">
           </view>
           </view>
         </view>
         </view>
-      </view>
-    </view>
 
 
-    <view @click="saveUserInfo()" class="sure-btn">
-      <view class="btn">保存</view>
+      </view>
     </view>
     </view>
-
-
-    <!-- 日期时间选择 -->
-    <u-datetime-picker :show="dateShow" v-model="value1" mode="date" @confirm="sureChooseDate()"></u-datetime-picker>
-
-    <!-- 性别选择 -->
-    <u-picker :show="genderShow" keyName="gender" @confirm="sureChooseGender" :columns="genderList"></u-picker>
-
   </view>
   </view>
 </template>
 </template>
 
 
 <script>
 <script>
-
-export default {
-  data() {
-    return {
-      userInfo: {
-        auth: true,
-        nickName: '',
-        sex: '1',
-        birthday: '',
-        selfPhoto: '',
-        memberType: '',
-        facePhotos: '',
-        facePhoto: '',
-        ranks: 0,
-        wardship: '2',
-        blood: '',
-        ranksState: '0',
-        facePhotoUrl: '',
-        name: '',
-        authBook: '',
-        signPhoto: ''
-      },
-      ranksState: '0',
-      genderShow: false,
-      dateShow: false,
-      value1: '2023-12-12',
-      // 服务时间
-      genderList: [
-        [{ gender: '男', id: '0' },
-        { gender: '女', id: '1' },
-        { gender: '未知', id: '2' }
-        ],
-      ],
-      imgUrl1: ''
-    };
-  },
-  mounted() {
-  },
-  onLoad(option) {
-
-    // 判断Openid是否为空
-    if (option.data) {
-      const data = JSON.parse(option.data);
-      this.userInfo = data;
-      if (this.userInfo.ranks != '0') {
-        this.userInfo.ranksState = '1';
-      }
-    }
-    console.log(this.userInfo)
-
-  },
-  methods: {
-    increment() {
-      this.userInfo.ranks++;
-    },
-    decrement() {
-      if (this.userInfo.ranks > 1) {
-        this.userInfo.ranks--;
-      }
-    },
-    handleRankChange(value) {
-      console.log('Rank changed:', value);
-      this.userInfo.ranks = value;
-      // 在这里处理值改变事件的逻辑
-    },
-    // 选择性别
-    chooseGender() {
-      this.genderShow = true;
+  export default {
+    data() {
+      return {
+        reqParm: {
+          auth: true
+        },
+        serviceObjectList: [],
+        images: [],
+      };
     },
     },
-    // 选择值
-    sureChooseGender(e) {
-      this.genderShow = false;
-      this.userInfo.sex = e.value[0].id;
+    mounted() {
     },
     },
-    // 确定选择的服务日期
-    sureChooseDate() {
-      this.dateShow = false;
-      this.userInfo.birthday = this.$formatDate(this.value1)
+    onLoad() {
+      // 查询服务对象列表
+      this.listServiceObject();
     },
     },
-    // 选择服务日期
-    chooseServiceDate() {
-      this.value1 = Date.now();
-      this.dateShow = true;
-    },
-    // 去会员信息页
-    gotoMemberInfo() {
-      uni.navigateTo({
-        url: '/pages/member/member-info',
-      })
-    },
-    // 保存用户信息
-    saveUserInfo() {
-      if (this.$isDataEmpty(this.userInfo.nickName)) {
-        uni.showToast({
-          title: "请认真填写昵称"
-        })
-        return;
-      }
-      if (this.$isDataEmpty(this.userInfo.blood)) {
-        uni.showToast({
-          title: "请认真填写关系"
-        })
-        return;
-      }
-      if (this.$isDataEmpty(this.userInfo.birthday)) {
-        uni.showToast({
-          title: "请认真填写生日"
-        })
-        return;
-      }
-      this.userInfo.auth = true;
-      // 保存数据
-      this.$api.updateServiceObject(null, { data: this.userInfo }).then((res) => {
-        console.log(res)
-        // 去服务对象列表页
+    methods: {
+      // 查询服务对接信息列表
+      listServiceObject(){
+        this.$api.listServiceObject(this.reqParm).then((res)=>{
+          console.log(res)
+          this.serviceObjectList = res.data.data
+           this.getImgUrlByBannerOssId(this.serviceObjectList);
+        }).catch(() =>{
+          uni.showToast({
+            title: "操作失败"
+          })
+        });
+      },
+      // 获取图片
+      getImgUrlByBannerOssId(items){
+        for(let i = 0; i <items.length; i++) {
+          if (items[i].facePhoto){
+            this.$api.getImgUrlByOssId({ossId:items[i].facePhoto}).then(res=>{
+              items[i].facePhoto = res.data.data[0].url.replace(/^http:/, "https:")
+            })
+          }
+        }
+      },
+
+
+      /* 添加服务对象 */
+      gotoAddServiceObject(){
         uni.navigateTo({
         uni.navigateTo({
-          url: '/pages/me/service-object-mgt',
-        })
-      }).catch(() => {
-        uni.showToast({
-          title: "操作失败"
+          url: '/myPages/serviceObjectFaceAuth/index',
         })
         })
-      });
-    },
-    //头像上传
-    uploadImg1(imgIndex) {
-      let that = this;
-      uni.chooseImage({
-        count: 1,
-        success: (chooseImageRes) => {
-          const tempFilePaths = chooseImageRes.tempFilePaths;
-          uni.uploadFile({
-            url: that.$host + '/resource/oss/upload', //仅为示例,非真实的接口地址
-            filePath: tempFilePaths[0],
-            name: 'file',
-            header: {
-              'Authorization': 'Bearer ' + that.$store.state.loginState.accessToken,
-            },
-            success: (uploadFileRes) => {
-              let res = JSON.parse(uploadFileRes.data)
-              console.log(res.data)
-              that.imgUrl1 = res.data.url;
-              that.userInfo.selfPhoto = res.data.ossId
-            }
-          });
+      },
+      // 去修改服务对象
+      gotoUpdateServiceObject(item){
+        item.facePhotoUrl = item.imgUrl;
+        if(item.wardship == '1'){ // 监护人
+          uni.navigateTo({
+            url: '/myPages/serviceObjectAllInfo/index?data=' + JSON.stringify(item),
+          })
+        } else { // 不是监护人
+          item.opType = '2';
+          uni.navigateTo({
+            url: '/myPages/serviceObjectInfo/index?data=' + JSON.stringify(item) ,
+          })
         }
         }
-      });
-    }
-  }
-};
-</script>
-
-<style scoped lang="scss">
-@import './index.rpx.scss';
 
 
-.user-info-wrap {
-  margin-left: 24rpx;
-  margin-right: 24rpx;
 
 
-  /* 导航菜单 */
-  .nav-bar {
-    background: #fff;
-    border-radius: 20rpx;
-    margin-top: 24rpx;
 
 
-    /* 商店信息 */
-    .nav-content {
-      padding-right: 12rpx;
-      padding-top: 20rpx;
-      padding-bottom: 12rpx;
+      },
+    }
+  };
+</script>
 
 
-      .nav-info {
+<style lang="scss" scoped>
+  .service-object-wrap{
+    margin-left: 12px;
+    margin-right: 12px;
+    .add{
+      position: fixed;
+      bottom: 12px;
+      right: 12px;
+      left: 12px;
+      margin-top: 20px;
+      text-align: center;
+      color: #333333;
+      line-height: 42px;
+      border-radius: 6px;
+      font-size: 16px;
+      height: 42px;
+      background: #FFE05C;
+      border-radius: 27px;
+      .name{
+        padding-left: 6px;
+      }
+    }
+    .service-object-list{
+      .store-content{
+        padding:10px;
+        margin-top: 16px;
+        background: #fff;
         display: flex;
         display: flex;
-        padding-left: 20rpx;
-        align-items: center;
-
-        .logo {
-          width: 12%;
-          text-align: center;
-
-          image {
-            width: 48rpx;
-            height: 48rpx;
+        border-radius: 6px;
+        .store-img{
+          image{
+            width: 90px;
+            height: 90px;
+            border-radius: 3px;
           }
           }
         }
         }
-
-        .nav-desc {
+        .content{
           width: 100%;
           width: 100%;
-          display: flex;
-          line-height: 60rpx;
-          font-family: PingFangSC-Regular, PingFang SC;
-          font-weight: 400;
-          align-items: center;
-
-          .custom-input {
-            font-size: 24rpx;
-          }
-
-          .nav-name {
-            width: 60%;
-            font-size: 28rpx;
-            color: #333333;
-            line-height: 44rpx;
-          }
-
-          .change-store {
-            text-align: right;
-            width: 40%;
-            font-size:24rpx;
-            color: #333333;
-            line-height: 44rpx;
-          }
-        }
-
-        .arrow-right {
-          width: 64%;
-          text-align: right;
-          margin: 0 auto;
-          cursor: pointer;
-          padding-top: 6rpx;
-          display: flex;
-          justify-content: flex-end;
-          align-items: center;
-
-          image {
-            width: 36rpx;
-            height: 36rpx;
+          padding-left: 8px;
+          padding-top: 4px;
+          .title-price{
+            display: flex;
+            font-size: 20px;
+            .title{
+              font-size: 16px;
+              color: #111111;
+              width: 100%;
+              font-family: "黑体", sans-serif;
+              line-height: 30px;
+            }
+            .icon-btn{
+              text-align: right;
+              padding-right: 12px;
+              image{
+                height: 36px;
+                width: 36px;
+              }
+            }
           }
           }
 
 
-          .head-img {
-            text-align: center;
-            padding-right: 40rpx;
-
-            image {
-              width: 48rpx;
-              height: 48rpx;
+          .desc{
+            line-height: 26px;
+            color: #999999;
+            font-size: 12px;
+            white-space: nowrap; /* Prevent line breaks */
+            overflow: hidden; /* Hide overflowing content */
+            text-overflow: ellipsis; /* Show ellipsis (...) for overflow */
+            .teacher{
+              padding-left: 6px;
+            }
+            .completed{
             }
             }
           }
           }
 
 
-          .change-store {
-            font-size: 28rpx;
-            color: #999;
-            line-height: 44rpx;
-          }
         }
         }
-      }
-    }
-  }
 
 
-  .sure-btn {
-    margin-top: 40rpx;
-    width: 100%;
+      }
 
 
-    .btn {
-      text-align: center;
-      height: 84rpx;
-      background: #FFE05C;
-      border-radius: 54rpx;
-      color: #333333;
-      line-height: 84rpx;
-      margin-top: 24rpx;
-      font-size: 24rpx;
     }
     }
   }
   }
-}
-
-.button-group {
-  display: flex;
-  align-items: center;
-}
-
-.button {
-  padding: 12rpx 24rpx;
-  font-size: 28rpx;
-  background-color: #e6e6e6;
-  border: none;
-  border-radius: 8rpx;
-  cursor: pointer;
-}
-
-.custom-input-ranks {
-  width: 60rpx;
-  font-size: 24rpx;
-  text-align: center;
-}
-
-.radio-item {
-  padding-right: 12rpx;
-}
 </style>
 </style>

+ 4 - 14
myPages/TermsOfService/index.vue

@@ -17,25 +17,15 @@ export default {
         auth: true,
         auth: true,
         type: 1
         type: 1
       },
       },
-      termOfService: {
-        aboutContent: "<p>会员协议会员协议会员协议会员协议会员协议会员协议</p>",
-        aboutType: "1",
-        createBy: "admin",
-        createTime: "2023-07-30 08:53:17",
-        id: "1685574269874098178",
-        status: "0",
-        updateBy: "admin",
-        updateTime: "2023-07-30 21:04:51"
-      }
     };
     };
   },
   },
   mounted() {
   mounted() {
   },
   },
   onLoad(option) {
   onLoad(option) {
-    // 判断Openid是否为空
-    if(!!option.data){
-      this.reqParm.type = option.data;
-    }
+    uni.setNavigationBarTitle({
+      title:option.name
+    })
+    this.reqParm.type = option.type;
     this.getTermOfServiceByType();
     this.getTermOfServiceByType();
   },
   },
   methods: {
   methods: {

+ 16 - 75
myPages/aboutOur/index.vue

@@ -1,73 +1,8 @@
 <template>
 <template>
 	<view class="user-info-wrap">
 	<view class="user-info-wrap">
-		<view class="nav-bar">
-			<view class="nav-content">
-				<view @click="gotoTermOfService(1)" class="nav-info">
-					<view class="nav-desc">
-						<view class="nav-name">
-							<view class="">会员协议</view>
-						</view>
-					</view>
-					<view class="arrow-right">
-						<u-icon name="arrow-right" color="#666" size="16"></u-icon>
-					</view>
-				</view>
-			</view>
-			<view class="custom-line"></view>
-			<view class="nav-content">
-				<view  @click="gotoTermOfService(2)" class="nav-info">
-
-					<view class="nav-desc">
-						<view class="nav-name">
-							<view class="">服务对象协议</view>
-						</view>
-					</view>
-					<view class="arrow-right">
-						<u-icon name="arrow-right" color="#666" size="16"></u-icon>
-					</view>
-				</view>
-			</view>
-			<view class="custom-line"></view>
-			<view class="nav-content">
-				<view  @click="gotoTermOfService(3)" class="nav-info">
-					<view class="nav-desc">
-						<view class="nav-name">
-							<view class="">隐私协议</view>
-						</view>
-					</view>
-					<view class="arrow-right">
-						<u-icon name="arrow-right" color="#666" size="16"></u-icon>
-					</view>
-				</view>
-			</view>
-			<view class="custom-line"></view>
-			<view class="nav-content">
-				<view @click="gotoTermOfService(4)" class="nav-info">
-					<view class="nav-desc">
-						<view class="nav-name">
-							<view class="">加盟合作</view>
-						</view>
-					</view>
-					<view class="arrow-right">
-						<u-icon name="arrow-right" color="#666" size="16"></u-icon>
-					</view>
-				</view>
-			<view class="custom-line"></view>
-			<view class="nav-content">
-				<view @click="gotoTermOfService(5)" class="nav-info">
-					<view class="nav-desc">
-						<view class="nav-name">
-							<view class="">常见问题</view>
-						</view>
-					</view>
-					<view class="arrow-right">
-						<u-icon name="arrow-right" color="#666" size="16"></u-icon>
-					</view>
-				</view>
-			</view>
-			</view>
-		</view>
-
+		<uni-list>
+			<uni-list-item :to="item.to" :title="item.title" showArrow  thumb-size="sm"  v-for="(item,index) in list" :key="index" />
+		</uni-list>
 	</view>
 	</view>
 </template>
 </template>
 
 
@@ -76,21 +11,25 @@
 export default {
 export default {
 	data() {
 	data() {
 		return {
 		return {
-			reqParm: {
-				auth: true,
-				type: 1  // 类型  1=会员协议 2=服务对象协议 3=隐私条款 4=加盟合作  5=常见问题
-			}
+			list:[
+				{title:'关于我们',to:'/myPages/TermsOfService/index?name='+'关于我们'+'&type=' + 0},
+				{title:'服务对象协议',to:'/myPages/TermsOfService/index?name='+'服务对象协议'+'&type=' + 1},
+				{title:'隐私条款',to:'/myPages/TermsOfService/index?name='+'隐私条款'+'&type=' + 2},
+				{title:'加盟合作',to:'/myPages/TermsOfService/index?name='+'加盟合作'+'&type=' + 3},
+				{title:'常见问题',to:'/myPages/TermsOfService/index?name='+'常见问题'+'&type=' + 4}
+			],
 		};
 		};
 	},
 	},
 	mounted() {
 	mounted() {
 	},
 	},
-	onLoad() {
+	onLoad(e) {
+
 	},
 	},
 	methods: {
 	methods: {
 		// 获取服务条款信息
 		// 获取服务条款信息
-		gotoTermOfService(type){
+		gotoTermOfService(name){
 			uni.navigateTo({
 			uni.navigateTo({
-				url: '/myPages/TermsOfService/index',
+				url: '/myPages/TermsOfService/index?name='+name,
 			})
 			})
 		},
 		},
 	}
 	}
@@ -106,10 +45,12 @@ export default {
 		background: #fff;
 		background: #fff;
 		border-radius: 10px;
 		border-radius: 10px;
 		margin-top: 12px;
 		margin-top: 12px;
+
 		/* 商店信息 */
 		/* 商店信息 */
 		.nav-content{
 		.nav-content{
 			padding-top: 10px;
 			padding-top: 10px;
 			padding-bottom: 6px;
 			padding-bottom: 6px;
+			border-bottom: 1px solid #f7f7f7;
 			.nav-info{
 			.nav-info{
 				display: flex;
 				display: flex;
 				padding-left: 10px;
 				padding-left: 10px;

+ 3 - 3
myPages/promotionCenter/index.vue

@@ -31,9 +31,9 @@
         </view>
         </view>
 
 
 
 
-        <view class="btn" @click="goStatisticalPanel">
-            <text>去提现</text>
-        </view>
+<!--        <view class="btn" @click="goStatisticalPanel">-->
+<!--            <text>去提现</text>-->
+<!--        </view>-->
 
 
     </view>
     </view>
 </template>
 </template>

+ 488 - 0
myPages/serviceObjectAllInfo/index.vue

@@ -0,0 +1,488 @@
+<template>
+    <view class="user-info-wrap">
+        <view class="nav-bar">
+            <view class="nav-content">
+                <view class="nav-info">
+                    <view class="nav-desc">
+                        <view class="nav-name">
+                            <view class="">宝贝头像</view>
+                        </view>
+                    </view>
+                    <view @click="uploadImg1(1)" class="arrow-right">
+                        <view class="head-img">
+                            <image v-if="userInfo.facePhotoUrl" :src="userInfo.facePhotoUrl" mode=""></image>
+                            <image v-else src="../../static/me/u1796.png" mode=""></image>
+                        </view>
+                        <!-- <u-icon name="arrow-right" color="#666" size="26"></u-icon> -->
+                    </view>
+                </view>
+            </view>
+            <view class="custom-line"></view>
+            <view class="nav-content">
+                <view class="nav-info">
+                    <view class="nav-desc">
+                        <view class="nav-name">
+                            <view class="">宝贝昵称</view>
+                        </view>
+                        <input class="custom-input" v-model="userInfo.nickName" type="text" placeholder="">
+                    </view>
+                    <view class="arrow-right">
+                        <!-- <u-icon name="arrow-right" color="#666" size="16"></u-icon> -->
+                    </view>
+                </view>
+            </view>
+            <view class="custom-line"></view>
+            <view class="nav-content">
+                <view class="nav-info">
+                    <view class="nav-desc">
+                        <view class="nav-name">
+                            <view class="">宝贝性别</view>
+                        </view>
+                    </view>
+                    <view @click="chooseGender()" class="arrow-right">
+                        <view class="change-store">
+                            <text v-if="userInfo.sex == 0">男</text>
+                            <text v-else-if="userInfo.sex == 1">女</text>
+                            <text v-else-if="userInfo.sex == 2">未知</text>
+                            <text v-else>请选择性别</text>
+                        </view>
+                        <u-icon name="arrow-right" color="#666" size="16"></u-icon>
+                    </view>
+                </view>
+            </view>
+            <view class="custom-line"></view>
+            <view class="nav-content">
+                <view class="nav-info">
+                    <view class="nav-desc">
+                        <view class="nav-name">
+                            <view class="">宝贝生日</view>
+                        </view>
+                    </view>
+                    <view @click="chooseServiceDate()" class="arrow-right">
+                        <view class="change-store">
+                            <text v-if="userInfo.birthday">{{userInfo.birthday}}</text>
+                            <text v-else>请选择生日</text>
+                        </view>
+                        <u-icon name="arrow-right" color="#666" size="16"></u-icon>
+                    </view>
+                </view>
+            </view>
+            <view class="custom-line"></view>
+            <view class="nav-content">
+                <view class="nav-info">
+                    <view class="nav-desc">
+                        <view class="nav-name">
+                            <view class="">是否双胞胎</view>
+                        </view>
+                    </view>
+                    <view class="arrow-right">
+                        <view class="change-store">
+                            <u-radio-group
+                                    v-model="userInfo.ranksState"
+                                    size="14"
+                                    @change="handleRankChange"
+                                    placement="row">
+                                <u-radio activeColor="#eac00f" name="0" label="否"></u-radio>
+                                <u-radio activeColor="#eac00f" name="1" label="是"></u-radio>
+                            </u-radio-group>
+                        </view>
+                    </view>
+                </view>
+            </view>
+            <view v-if="userInfo.ranksState == '1'" class="custom-line"></view>
+            <view v-if="userInfo.ranksState == '1'" class="nav-content">
+                <view class="nav-info">
+                    <view class="nav-desc">
+                        <view class="nav-name">
+                            <view class="">宝贝排行</view>
+                        </view>
+                    </view>
+                    <view class="arrow-right button-group">
+                        <text class="button" @click="decrement">-</text>
+                        <input class="custom-input-ranks" v-model="userInfo.ranks" type="number" >
+                        <text class="button" @click="increment">+</text>
+                    </view>
+                    <!-- <view @click="gotoRealNameAuth()" class="arrow-right">
+                        <view class="change-store">
+                            <u-radio-group
+                                v-model="userInfo.ranks"
+                                 size="14"
+                                placement="row">
+                                <u-radio activeColor="#eac00f" name="1" label="老大"></u-radio>
+                                <u-radio activeColor="#eac00f" name="2" label="老二"></u-radio>
+                                <u-radio activeColor="#eac00f" name="3" label="老三"></u-radio>
+                                <u-radio activeColor="#eac00f" name="4" label="老四"></u-radio>
+                            </u-radio-group>
+                        </view>
+                    </view> -->
+                </view>
+            </view>
+            <view class="custom-line"></view>
+            <!-- <view class="nav-content">
+                <view class="nav-info">
+                    <view class="nav-desc">
+                        <view class="nav-name">
+                            <view class="">服务对象编号</view>
+                        </view>
+                    </view>
+                    <view @click="gotoRealNameAuth()" class="arrow-right">
+                        <view class="change-store">
+                            <text>NTML0801</text>
+                        </view>
+                    </view>
+                </view>
+            </view>
+            <view class="custom-line"></view> -->
+            <view class="nav-content">
+                <view class="nav-info">
+                    <view class="nav-desc">
+                        <view class="nav-name">
+                            <view class="">关系</view>
+                        </view>
+                        <input class="custom-input" v-model="userInfo.blood" type="text" placeholder="">
+                    </view>
+                    <view class="arrow-right">
+                    </view>
+                </view>
+            </view>
+            <view class="custom-line"></view>
+            <view class="nav-content">
+                <view class="nav-info">
+                    <view class="nav-desc">
+                        <view class="nav-name">
+                            <view class="">是否监护人</view>
+                        </view>
+                    </view>
+                    <view  class="arrow-right">
+                        <view  class="change-store">
+                            <u-radio-group
+                                    size="14"
+                                    v-model="userInfo.wardship"
+                                    placement="row">
+                                <u-radio class="radio-item" activeColor="#eac00f" name="1" label="否"></u-radio>
+                                <u-radio class="radio-item" activeColor="#eac00f" name="2" label="是"></u-radio>
+                            </u-radio-group>
+                        </view>
+                    </view>
+                </view>
+            </view>
+            <view class="custom-line"></view>
+            <view class="nav-content">
+                <view class="nav-info">
+                    <view class="nav-desc">
+                        <view class="nav-name">
+                            <view class="">备注</view>
+                        </view>
+                        <input class="custom-input" v-model="userInfo.remark" type="text" placeholder="">
+                    </view>
+                    <view class="arrow-right">
+                    </view>
+                </view>
+            </view>
+        </view>
+
+        <view @click="saveUserInfo()" class="sure-btn">
+            <view class="btn">保存</view>
+        </view>
+
+
+        <!-- 日期时间选择 -->
+        <u-datetime-picker
+                :show="dateShow"
+                v-model="value1"
+                mode="date"
+                @confirm="sureChooseDate()"
+        ></u-datetime-picker>
+
+        <!-- 性别选择 -->
+        <u-picker :show="genderShow" keyName="gender"  @confirm="sureChooseGender" :columns="genderList"></u-picker>
+
+    </view>
+</template>
+
+<script>
+
+    export default {
+        data() {
+            return {
+                userInfo: {
+                    auth: true,
+                    nickName: '',
+                    sex: '1',
+                    birthday: '',
+                    selfPhoto: '',
+                    memberType: '',
+                    facePhotos: '',
+                    facePhoto: '',
+                    ranks: 0,
+                    wardship: '2',
+                    blood: '',
+                    ranksState: '0',
+                    facePhotoUrl: '',
+                    name: '',
+                    authBook: '',
+                    signPhoto: ''
+                },
+                genderShow: false,
+                dateShow: false,
+                value1: '2023-12-12',
+                // 服务时间
+                genderList: [
+                    [{gender:'男',id:'0'},
+                        {gender:'女',id:'1'},
+                        {gender:'未知',id:'2'}
+                    ],
+                ],
+                imgUrl1: ''
+            };
+        },
+        mounted() {
+        },
+        onLoad(option) {
+            if(!this.$isDataEmpty(option.data)){
+                const data = JSON.parse(option.data);
+                this.userInfo.facePhotoUrl = data.facePhotoUrl;
+                this.userInfo.facePhoto = data.facePhoto;
+                this.userInfo.selfPhoto = data.facePhoto;
+                this.userInfo.facePhotos = data.facePhotos;
+            }
+        },
+        methods: {
+            increment() {
+                this.userInfo.ranks++;
+            },
+            decrement() {
+                if (this.userInfo.ranks > 1) {
+                    this.userInfo.ranks--;
+                }
+            },
+            handleRankChange(value) {
+                console.log('Rank changed:', value);
+                this.userInfo.ranks = value;
+                // 在这里处理值改变事件的逻辑
+            },
+            // 选择性别
+            chooseGender(){
+                this.genderShow = true;
+            },
+            // 选择值
+            sureChooseGender(e){
+                this.genderShow = false;
+                this.userInfo.sex = e.value[0].id;
+            },
+            // 确定选择的服务日期
+            sureChooseDate(){
+                this.dateShow = false;
+                this.userInfo.birthday = this.$formatDate(this.value1)
+            },
+            // 选择服务日期
+            chooseServiceDate(){
+                this.value1 = Date.now();
+                this.dateShow = true;
+            },
+            // 去会员信息页
+            gotoMemberInfo(){
+                uni.$u.route({
+                    url: '/pages/member/member-info',
+                    params: {
+                        name: 'lisa'
+                    }
+                })
+            },
+            // 保存用户信息
+            saveUserInfo(){
+
+                if(this.$isDataEmpty(this.userInfo.nickName)){
+                    uni.showToast({
+                        title: "请认真填写宝贝昵称"
+                    })
+                    return;
+                }
+                if(this.$isDataEmpty(this.userInfo.blood)){
+                    uni.showToast({
+                        title: "请认真填写关系"
+                    })
+                    return;
+                }
+                if(this.$isDataEmpty(this.userInfo.birthday)){
+                    uni.showToast({
+                        title: "请认真填写宝贝生日"
+                    })
+                    return;
+                }
+
+                this.userInfo.auth = true;
+
+                // 保存数据
+                saveServiceObject(null,{data:this.userInfo}).then((res)=>{
+                    console.log(res)
+                    // 去服务对象列表页
+                    // 关闭当前页面并跳转到目标页面
+                    uni.reLaunch({
+                        url: '/pages/me/service-object-mgt'  // 目标页面的路径
+                    });
+                    /* uni.$u.route({
+                        url: '/pages/me/service-object-mgt',
+                        params: {}
+                    }) */
+                }).catch(() =>{
+                    uni.showToast({
+                        title: "操作失败"
+                    })
+                });
+            },
+            //头像上传
+            uploadImg1(imgIndex) {
+                let that = this;
+                uni.chooseImage({
+                    count: 1,
+                    success: (chooseImageRes) => {
+                        const tempFilePaths = chooseImageRes.tempFilePaths;
+
+                        uni.uploadFile({
+                            url: that.$host + '/resource/oss/upload', //仅为示例,非真实的接口地址
+                            filePath: tempFilePaths[0],
+                            name: 'file',
+                            header: {
+                                // "Content-Type": "multipart/form-data",
+                                // 'X-Access-Token': uni.getStorageSync('token'),
+                                'Authorization': 'Bearer ' + that.$store.state.loginState.accessToken,
+                            },
+                            success: (uploadFileRes) => {
+                                let res = JSON.parse(uploadFileRes.data)
+                                console.log(res.data)
+                                that.imgUrl1 = res.data.url;
+                                that.userInfo.selfPhoto = res.data.ossId
+                            }
+                        });
+                    }
+                });
+            }
+        }
+    };
+</script>
+
+<style lang="scss">
+    .user-info-wrap{
+        margin-left: 12px;
+        margin-right: 12px;
+        /* 导航菜单 */
+        .nav-bar{
+            background: #fff;
+            border-radius: 10px;
+            margin-top: 12px;
+            /* 商店信息 */
+            .nav-content{
+                padding-right: 6px;
+                padding-top: 10px;
+                padding-bottom: 6px;
+                .nav-info{
+                    display: flex;
+                    padding-left: 10px;
+                    align-items: center;
+                    .logo {
+                        width: 12%;
+                        text-align: center;
+                        image{
+                            width: 24px;
+                            height: 24px;
+                        }
+                    }
+                    .nav-desc{
+                        width: 46%;
+                        display: flex;
+                        line-height: 30px;
+                        font-family: PingFangSC-Regular, PingFang SC;
+                        font-weight: 400;
+                        align-items: center;
+                        .custom-input{
+                            font-size: 12px;
+                        }
+                        .nav-name{
+                            width: 60%;
+                            font-size: 14px;
+
+                            color: #333333;
+                            line-height: 22px;
+                        }
+                        .change-store{
+                            text-align: right;
+                            width: 40%;
+                            font-size: 12px;
+                            color: #333333;
+                            line-height: 22px;
+                        }
+                    }
+
+                    .arrow-right{
+                        width:64%;
+                        text-align: right;
+                        margin: 0 auto;
+                        cursor: pointer;
+                        padding-top: 3px;
+                        display: flex;
+                        justify-content: flex-end;
+                        align-items: center;
+                        image{
+                            width: 18px;
+                            height: 18px;
+                        }
+                        .head-img {
+                            text-align: center;
+                            padding-right: 20px;
+                            image{
+                                width: 24px;
+                                height: 24px;
+                            }
+                        }
+                        .change-store{
+                            font-size: 14px;
+                            color: #999;
+                            line-height: 22px;
+                        }
+                    }
+                }
+            }
+        }
+
+        .sure-btn{
+            margin-top: 20px;
+            width: 100%;
+            .btn{
+                text-align: center;
+                height: 42px;
+                background: #FFE05C;
+                border-radius: 27px;
+                color: #333333;
+                line-height: 42px;
+                margin-top: 12px;
+                font-size: 14px;
+            }
+        }
+    }
+
+    .button-group {
+        display: flex;
+        align-items: center;
+    }
+
+    .button {
+        padding: 6px 12px;
+        font-size: 14px;
+        background-color: #e6e6e6;
+        border: none;
+        border-radius: 4px;
+        cursor: pointer;
+    }
+
+    .custom-input-ranks{
+        width: 30px;
+        font-size: 12px;
+        text-align: center;
+    }
+
+
+    .radio-item{
+        padding-right: 6px;
+    }
+</style>

+ 423 - 0
myPages/serviceObjectFaceAuth/index.vue

@@ -0,0 +1,423 @@
+<template>
+  <view class="container" :style="{'height':height}">
+    <!-- 提示内容 -->
+
+    <view class="h-title">
+      <text>*请输入1张服务对象人脸影像</text>
+    </view>
+
+    <view class="h-upload-wrap">
+      <view class="h-item-row">
+        <view @click="uploadImg1(1)" class="h-item">
+          <view v-if="!imgUrl1" class="h-content">
+            <image src="../../static/me/u01.png" mode=""></image>
+            <view class="h-text">
+              <text>添加人脸影像</text>
+            </view>
+          </view>
+          <view v-else class="h-upload-img">
+            <image mode="aspectFit" class="imgBox" :src="imgUrl1"></image>
+          </view>
+        </view>
+      </view>
+    </view>
+
+    <!-- 保存备案信息 -->
+    <view class="uploadBox" @click="verifyFace()">
+      <text>下一步</text>
+    </view>
+
+    <u-popup :show="errShow" :round="10"  mode="center">
+      <view class="h-popo-content">
+        <view class="h-img">
+          <u-icon name="close" color="red" size="40"></u-icon>
+        </view>
+        <view class="h-text">
+          <text>你未实名认证</text>
+        </view>
+        <view class="h-btn-wrap">
+          <view @click="errShow = false" class="h-left-btn">
+            <text>取消</text>
+          </view>
+          <view @click="getoRealNameAuth()" class="h-right-btn">
+            <text>去实名认证</text>
+          </view>
+        </view>
+      </view>
+    </u-popup>
+
+    <!-- 填写姓名 -->
+    <u-popup :show="okShow" :round="10"  mode="center">
+      <view class="h-popo-content">
+
+        <view class="h-text">
+          <u--form
+                  labelPosition="left"
+                  :model="parms"
+                  ref="form1"
+          >
+            <u-form-item
+                    label="宝贝昵称"
+                    prop="userInfo"
+                    labelWidth="auto"
+                    labelAlign="right"
+            >
+              <u--input
+                      v-model="parms.userName"
+                      placeholder="请输入宝贝昵称"
+                      border="bottom"
+                      type="text"
+                      maxlength="12"
+              ></u--input>
+            </u-form-item>
+
+          </u--form>
+        </view>
+        <view class="h-btn-wrap">
+          <view @click="okShow = false" class="h-left-btn">
+            <text>取消</text>
+          </view>
+          <view @click="gotoAutoLetter()" class="h-right-btn">
+            <text>确定</text>
+          </view>
+        </view>
+      </view>
+    </u-popup>
+  </view>
+</template>
+
+<script>
+  export default {
+    components: {
+    },
+    data() {
+      return {
+        height:'',
+        errShow: false,
+        okShow: false,
+        imgUrl1: '',
+        imgUrl2: '',
+        imgUrl3: '',
+        imgUrl4: '',
+        imgUrl5: '',
+        show: false,
+        reqParm: {
+          auth: true,
+          facePath: '',
+          businessId: ''
+        },
+        userInfo: {
+
+        },
+        parms: {
+          userName: '',
+          facePhoto: '',
+          facePhotos: '',
+          facePhotoUrl: ''
+        },
+        imgPaths: "",
+        ossImg: {
+          ossId1: "",
+          ossId2: "",
+          ossId3: "",
+          ossId4: "",
+          ossId5: ""
+        },
+      }
+    },
+    onReady() {
+    },
+    onLoad(option) {
+      // 用户信息
+      // let user = this.$store.state.loginUserInfo;
+      // this.userInfo = user;
+
+      let sysInfo= uni.getSystemInfoSync()
+      this.height = sysInfo.screenHeight + 'px'
+
+    },
+    methods: {
+      // 去签订协议
+      gotoAutoLetter(){
+        if(!this.$isDataEmpty(this.parms.userName)){
+          this.okShow = false;
+          uni.$u.route({
+            url: '/pages/me/service-object-all-info',
+            params: {
+              data: JSON.stringify(this.userInfo)
+            }
+          })
+          // uni.$u.route({
+          // 	url: '/pages/me/service-object-auth-letter',
+          // 	params: {
+          // 		data: JSON.stringify(this.parms)
+          // 	}
+          // })
+        } else{
+          uni.$u.toast('请认真填写宝贝昵称')
+        }
+      },
+      // 实名认证
+      getoRealNameAuth(){
+        this.errShow = false;
+        // 已认证
+        uni.$u.route({
+          url: '/pages/me/real-name-auth',
+          params: {
+          }
+        })
+      },
+      // 连接已上传的图片地址
+      verifyImgUpload(){
+        let img1 = this.ossImg.ossId1;
+        let img2 = this.ossImg.ossId2;
+        let img3 = this.ossImg.ossId3;
+        let img4 = this.ossImg.ossId4;
+        let img5 = this.ossImg.ossId5;
+        if(!img1){
+          uni.showToast({
+            title: "请上传第1张图片"
+          })
+          return false;
+        }
+        /* if(this.$isDataEmpty(img2)){
+            uni.showToast({
+                title: "请上传第2张图片"
+            })
+            return false;
+        }
+        if(this.$isDataEmpty(img3)){
+            uni.showToast({
+                title: "请上传第3张图片"
+            })
+            return false;
+        }
+        if(this.$isDataEmpty(img4)){
+            uni.showToast({
+                title: "请上传第4张图片"
+            })
+            return false;
+        }
+        if(this.$isDataEmpty(img5)){
+            uni.showToast({
+                title: "请上传第5张图片"
+            })
+            return false;
+        } */
+        // this.parms.facePhotos = img1+","+img2+","+img3+","+img4+","+img5;
+        this.parms.facePhotos = img1;
+        return true;
+      },
+
+      // 验证人象
+      verifyFace(){
+        let that  = this;
+
+        // 验证图片是否全上传
+        if(!that.verifyImgUpload()){
+          return;
+        }
+
+        uni.showLoading({
+          title: '人脸识别中'
+        })
+
+        this.$api.verifyFace(that.reqParm).then((res)=>{
+          uni.hideLoading();
+          if(res.data.code == '500'){ //
+            res.facePhotoUrl = that.imgUrl1;
+            res.facePhoto = that.ossImg.ossId1;
+            res.facePhotos = that.parms.facePhotos;
+            uni.navigateTo({
+              url: '/myPages/serviceObjectAllInfo/index?data'+ JSON.stringify(res),
+
+            })
+          } else { // 人脸存在
+            res.opType = "1";
+            res.facePhotoUrl = res.facePhoto;
+            res.facePhotos = that.parms.facePhotos;
+            uni.navigateTo({
+              url: '/myPages/serviceObjectInfo/index?data=' + JSON.stringify(res),
+            })
+          }
+        }).catch(() =>{
+          uni.showToast({
+            title: "操作失败"
+          })
+        });
+
+      },
+      //头像上传
+      uploadImg1(imgIndex) {
+        let that = this;
+        uni.chooseImage({
+          count: 1,
+          success: (chooseImageRes) => {
+            const tempFilePaths = chooseImageRes.tempFilePaths;
+            uni.uploadFile({
+              url: that.$baseUrl + '/resource/oss/upload', //仅为示例,非真实的接口地址
+              filePath: tempFilePaths[0],
+              name: 'file',
+              header: {
+                'Authorization': 'Bearer ' + uni.getStorageInfo('accessToken'),
+              },
+              success: (uploadFileRes) => {
+                console.log("uploadFileRes:"+uploadFileRes)
+                let res = JSON.parse(uploadFileRes.data)
+                let ossId = res.data.ossId;
+                let url = res.data.url;
+                let imgUrl =  url.startsWith("https")? res.data.url : url.replace("http", "https");
+                console.log("imgUrl:"+imgUrl)
+                if(imgIndex == 1){
+                  that.ossImg.ossId1 = ossId;
+                  that.parms.facePhotoUrl = imgUrl;
+                  that.imgUrl1 = imgUrl;
+                }
+                if(imgIndex == 2){
+                  that.ossImg.ossId2 = ossId;
+                  that.imgUrl2 = imgUrl;
+                }
+                if(imgIndex == 3){
+                  that.ossImg.ossId3 = ossId;
+                  that.imgUrl3 = imgUrl;
+                }
+                if(imgIndex == 4){
+                  that.ossImg.ossId4 = ossId;
+                  that.imgUrl4 = imgUrl;
+                }
+                if(imgIndex == 5){
+                  that.ossImg.ossId5 = ossId;
+                  that.imgUrl5 = imgUrl;
+                }
+                this.reqParm.facePath = ossId;
+                this.parms.facePhoto = ossId;
+              }
+            });
+          }
+        });
+      }
+    }
+  }
+</script>
+
+<style scoped lang="scss">
+
+  .container{
+    padding: 12px;
+    background: #F6F6F6;
+  }
+  .h-title{
+    height: 22px;
+    font-size: 14px;
+    font-family: PingFangSC-Regular, PingFang SC;
+    font-weight: 400;
+    color: #333333;
+    line-height: 22px;
+  }
+
+  // 弹窗
+  .h-popo-content{
+    height: 170px;
+    padding: 12px;
+    width: 300px;
+    text-align: center;
+    font-size: 14px;
+    font-family: PingFangSC-Semibold, PingFang SC;
+    .h-img{
+      display: flex;
+      justify-content: center;
+    }
+    .h-text{
+      margin-top: 12px;
+      font-weight: 400;
+      color: #666666;
+    }
+    .text{
+      margin-top: 6px;
+      font-weight: 400;
+      color: #666666;
+    }
+    .h-btn-wrap{
+      display: flex;
+      justify-content: space-between;
+      color: #333333;
+      text-align: center;
+      margin-top: 20px;
+      .h-left-btn{
+        height: 32px;
+        line-height: 30px;
+        background: #EEEEEE;
+        width: 100px;
+        text-align: center;
+        border-radius: 16px;
+        margin: 0 auto;
+      }
+      .h-right-btn{
+        height: 32px;
+        line-height: 30px;
+        background: #FFE05C;
+        width: 100px;
+        border-radius: 16px;
+        margin: 0 auto;
+
+      }
+    }
+  }
+
+  .h-upload-wrap{
+
+    .h-item-row{
+      width: 100%;
+      display: flex;
+      align-items: center;
+      justify-content: center;
+      margin-top: 12px;
+      font-family: PingFangSC-Regular, PingFang SC;
+      .h-item{
+        background: #fff;
+        width: 48%;
+        text-align: center;
+        height: 164px;
+        display: flex;
+        align-items: center;
+        justify-content: center;
+        border-radius: 6px;
+        .h-content{
+          image{
+            height: 48px;
+            width: 48px;
+          }
+          .h-text{
+            margin-top: 10px;
+            font-size: 12px;
+            font-weight: 400;
+            color: #999999;
+            line-height: 20px;
+          }
+        }
+        .h-upload-img{
+          width: 100%;
+          height: 164px;
+          padding: 4px;
+          .imgBox{
+            width: 164px;
+            height: 164px;
+          }
+        }
+
+      }
+
+    }
+  }
+
+  .uploadBox {
+    width: 100%;
+    margin-top: 30px;
+      height: 42px;
+      background: #FFE05C;
+      border-radius: 27px;
+      color: #333333;
+      line-height: 42px;
+      text-align: center;
+  }
+</style>

+ 293 - 0
myPages/serviceObjectInfo/index.vue

@@ -0,0 +1,293 @@
+<template>
+    <view class="user-info-wrap">
+        <view class="nav-bar">
+            <view class="nav-content">
+                <view class="nav-info">
+                    <view class="nav-desc">
+                        <view class="nav-name">
+                            <view class="">头像</view>
+                        </view>
+                    </view>
+                    <view @click="uploadImg1(1)" class="arrow-right">
+                        <view class="head-img">
+                            <image v-if="userInfo.facePhotoUrl" :src="userInfo.facePhotoUrl" mode=""></image>
+                            <image v-else src="/static/me/u1796.png" mode=""></image>
+                        </view>
+                        <!-- <u-icon name="arrow-right" color="#666" size="26"></u-icon> -->
+                    </view>
+                </view>
+            </view>
+            <view class="custom-line"></view>
+            <view class="cotent-from">
+                <u--form
+                        labelPosition="left"
+                        :model="userInfo"
+                        :rules="rules"
+                        ref="form1"
+                >
+                    <u-form-item
+                            label="昵称"
+                            prop="nickName"
+                            labelWidth="auto"
+                            labelAlign="right"
+                    >
+                        <u--input
+                                v-model="userInfo.nickName"
+                                placeholder=""
+                                border="bottom"
+                                maxlength="20"
+                                type="text"
+                        ></u--input>
+                    </u-form-item>
+                    <u-form-item
+                            labelWidth="auto"
+                            labelAlign="right"
+                            label="关系"
+                            prop="blood"
+                            width="120"
+                    >
+                        <u--input
+                                maxlength="20"
+                                v-model="userInfo.blood"
+                                placeholder=""
+                                border="bottom"
+                                type="text"
+                        ></u--input>
+                    </u-form-item>
+                    <u-form-item
+                            labelWidth="auto"
+                            labelAlign="right"
+                            label="备注"
+                            prop="remark"
+                            width="120"
+                    >
+                        <u--input
+                                maxlength="20"
+                                v-model="userInfo.remark"
+                                placeholder=""
+                                border="bottom"
+                                type="text"
+                        ></u--input>
+                    </u-form-item>
+                </u--form>
+            </view>
+        </view>
+
+        <view @click="saveUserInfo()" class="sure-btn">
+            <view class="btn">确认</view>
+        </view>
+
+    </view>
+</template>
+
+<script>
+
+    export default {
+        data() {
+            return {
+                userInfo: {
+                    auth: true,
+                    nickName: '',
+                    facePhoto: '',
+                    blood: '',
+                    remark: '',
+                    id: ''
+                },
+                genderShow: false,
+                value1: '2023-12-12',
+                imgUrl1: ''
+            };
+        },
+        mounted() {
+        },
+        onLoad(option) {
+
+            console.log('++++++++++++++++option+++++++++++++++',option)
+
+            if(option.data){
+                const data = JSON.parse(option.data);
+                let url = data.facePhoto;
+                this.userInfo.facePhoto = url.startsWith("https") ? url :url.replace("http", "https");
+                this.userInfo = data;
+            }
+
+            // 用户信息
+            let user = uni.getStorageInfo('userInfo');
+
+        },
+        methods: {
+
+            // 保存用户信息
+            saveUserInfo(){
+                if(!this.userInfo.blood){
+                    uni.showToast({
+                        title: "请填写关系"
+                    })
+                    return;
+                }
+                if(!this.userInfo.remark){
+                    uni.showToast({
+                        title: "请填写备注"
+                    })
+                    return;
+                }
+                this.userInfo.auth = true;
+
+                if(this.userInfo.opType == '1'){ // 绑定
+                    // 保存数据
+                    this.$api.bindServiceObject(this.userInfo).then((res)=>{
+                        // 去服务对象列表页
+                        uni.navigateTo({
+                            url: '/myPages/ServiceObjectManagement/index',
+                        })
+                    }).catch(() =>{
+                        uni.showToast({
+                            title: "操作失败"
+                        })
+                    });
+                }else if(this.userInfo.opType == '2'){ // 修改
+                    // 修改数据
+                    this.$api.updateServiceObject(this.userInfo).then((res)=>{
+                        // 去服务对象列表页
+                        uni.navigateTo({
+                            url: '/myPages/ServiceObjectManagement/index',
+                        })
+                    }).catch(() =>{
+                        uni.showToast({
+                            title: "操作失败"
+                        })
+                    });
+                }
+            },
+            //头像上传
+            uploadImg1(imgIndex) {
+                let that = this;
+                uni.chooseImage({
+                    count: 1,
+                    success: (chooseImageRes) => {
+                        const tempFilePaths = chooseImageRes.tempFilePaths;
+
+                        uni.uploadFile({
+                            url: that.$baseUrl  + '/resource/oss/upload', //仅为示例,非真实的接口地址
+                            filePath: tempFilePaths[0],
+                            name: 'file',
+                            header: {
+                                'Authorization': 'Bearer ' + uni.getStorageInfo('accessToken'),
+                            },
+                            success: (uploadFileRes) => {
+                                let res = JSON.parse(uploadFileRes.data)
+                                that.imgUrl1 = res.data.url;
+                                that.userInfo.facePhoto = res.data.ossId
+                            }
+                        });
+                    }
+                });
+            }
+        }
+    };
+</script>
+
+<style lang="scss">
+    .user-info-wrap{
+        margin-left: 12px;
+        margin-right: 12px;
+        /* 导航菜单 */
+        .nav-bar{
+            background: #fff;
+            border-radius: 10px;
+            margin-top: 12px;
+            .cotent-from{
+                padding-right: 12px;
+                padding-left: 12px;
+            }
+            /* 商店信息 */
+            .nav-content{
+                padding-right: 6px;
+                padding-top: 10px;
+                padding-bottom: 6px;
+                .nav-info{
+                    display: flex;
+                    padding-left: 10px;
+                    align-items: center;
+                    .logo {
+                        width: 12%;
+                        text-align: center;
+                        image{
+                            width: 24px;
+                            height: 24px;
+                        }
+                    }
+                    .nav-desc{
+                        width: 46%;
+                        display: flex;
+                        line-height: 30px;
+                        font-family: PingFangSC-Regular, PingFang SC;
+                        font-weight: 400;
+                        align-items: center;
+                        .custom-input{
+                            font-size: 12px;
+                        }
+                        .nav-name{
+                            width: 60%;
+                            font-size: 14px;
+
+                            color: #333333;
+                            line-height: 22px;
+                        }
+                        .change-store{
+                            text-align: right;
+                            width: 40%;
+                            font-size: 12px;
+                            color: #333333;
+                            line-height: 22px;
+                        }
+                    }
+
+                    .arrow-right{
+                        width:64%;
+                        text-align: right;
+                        margin: 0 auto;
+                        cursor: pointer;
+                        padding-top: 3px;
+                        display: flex;
+                        justify-content: flex-end;
+                        align-items: center;
+                        image{
+                            width: 18px;
+                            height: 18px;
+                        }
+                        .head-img {
+                            text-align: center;
+                            padding-right: 20px;
+                            image{
+                                width: 24px;
+                                height: 24px;
+                            }
+                        }
+                        .change-store{
+                            font-size: 14px;
+                            color: #999;
+                            line-height: 22px;
+                        }
+                    }
+                }
+            }
+        }
+
+        .sure-btn{
+            margin-top: 20px;
+            width: 100%;
+            .btn{
+                text-align: center;
+                height: 42px;
+                background: #FFE05C;
+                border-radius: 27px;
+                color: #333333;
+                line-height: 42px;
+                margin-top: 12px;
+                font-size: 14px;
+            }
+        }
+    }
+
+</style>

+ 21 - 0
pages.json

@@ -229,6 +229,27 @@
 						"enablePullDownRefresh": false
 						"enablePullDownRefresh": false
 					}
 					}
 				},
 				},
+				{
+					"path": "serviceObjectFaceAuth/index",
+					"style": {
+						"navigationBarTitleText": "人脸影象录入",
+						"enablePullDownRefresh": false
+					}
+				},
+				{
+					"path": "serviceObjectAllInfo/index",
+					"style": {
+						"navigationBarTitleText": "服务对象信息",
+						"enablePullDownRefresh": false
+					}
+				},
+				{
+					"path": "serviceObjectInfo/index",
+					"style": {
+						"navigationBarTitleText": "服务对象信息",
+						"enablePullDownRefresh": false
+					}
+				},
 				{
 				{
 					"path": "systemSwitch/index",
 					"path": "systemSwitch/index",
 					"style": {
 					"style": {

+ 2 - 10
pages/index/index.vue

@@ -451,20 +451,12 @@
 					}
 					}
 				})
 				})
 			},
 			},
-			// 去会员页面
-			gotoMember(){
-				uni.$u.route({
-					url: '/pages/index/tabbar',
-					params: {
-						PageCur: 'qrcode'
-					}
-				})
-			},
+
 			// 用户绑定门店
 			// 用户绑定门店
 			userBindStore(){
 			userBindStore(){
 				let that = this;
 				let that = this;
 				// 用户绑定门店
 				// 用户绑定门店
-				userBindStore(null,{data:this.reqParm}).then((res)=>{
+				this.$api.userBindStore(this.reqParm).then((res)=>{
 					console.log(this.reqParm)
 					console.log(this.reqParm)
 				}).catch(() =>{
 				}).catch(() =>{
 					uni.showToast({
 					uni.showToast({

+ 14 - 15
pages/my/index.vue

@@ -102,24 +102,21 @@ export default {
 	data() {
 	data() {
 		return {
 		return {
 			group1:[
 			group1:[
-				{thumb:'/static/me/u1796.png',title:'贡献奖励记录',url:'',rightText:'',to:''},
-				{thumb:'/static/me/u1803.png',title:'实名认证',url:'',rightText:'',to:'/myPages/realNameAuth/index'},
-				{thumb:'/static/me/u1812.png',title:'服务对象管理',url:'',rightText:'',to:'/myPages/ServiceObjectManagement/index'},
-        {thumb:'/static/me/编组_18@2x.png',title:'推广中心',url:'',rightText:'',to:''},
-				{thumb:'/static/me/u1833.png',title:'新老系统切换',url:'',rightText:'',to:'/myPages/systemSwitch/index'},
-				{thumb:'/static/me/u826.png',title:'储值服务',url:'',rightText:'',to:'/myPages/recharge/index'}
+				// {thumb:'/static/me/u1796.png',title:'贡献奖励记录',rightText:'',to:''},
+				{thumb:'/static/me/u1803.png',title:'实名认证',rightText:'',to:'/myPages/realNameAuth/index'},
+				// {thumb:'/static/me/u1812.png',title:'服务对象管理',rightText:'',to:'/myPages/ServiceObjectManagement/index'},
+        		{thumb:'/static/me/u3.png',title:'推广中心',rightText:'',to:'/myPages/promotionCenter/index'},
+				// {thumb:'/static/me/u1833.png',title:'新老系统切换',rightText:'',to:'/myPages/systemSwitch/index'},
+				{thumb:'/static/me/u826.png',title:'储值服务',rightText:'',to:'/myPages/recharge/index'}
 			],
 			],
 			group2:[
 			group2:[
-				{thumb:'/static/me/u1829.png',title:'关于我们',url:'',rightText:'',to:'/myPages/aboutOur/index'},
-				{thumb:'/static/me/u10.png',title:'个人信息',url:'',rightText:'',to:'/myPages/userInfo/index'},
-				{thumb:'/static/me/u101.png',title:'设置',url:'',rightText:'',to:'/myPages/setting/index'}
+				{thumb:'/static/me/u1829.png',title:'关于我们',rightText:'',to:'/myPages/aboutOur/index'},
+				{thumb:'/static/me/u10.png',title:'个人信息',rightText:'',to:'/myPages/userInfo/index'},
+				{thumb:'/static/me/u101.png',title:'设置',rightText:'',to:'/myPages/setting/index'}
 			],
 			],
 			height:'',
 			height:'',
 			title: 'Hello',
 			title: 'Hello',
 			tabIndex: 4,
 			tabIndex: 4,
-			bannerList: [
-				'/static/me/u655.png',
-			],
 			userInfo: {}
 			userInfo: {}
 		}
 		}
 	},
 	},
@@ -134,15 +131,17 @@ export default {
 		})
 		})
 		let sysInfo = uni.getSystemInfoSync()
 		let sysInfo = uni.getSystemInfoSync()
 		this.height = sysInfo.screenHeight +'px'
 		this.height = sysInfo.screenHeight +'px'
+	},
 
 
+	onShow(){
 		this.userInfo = uni.getStorageSync('userInfo')
 		this.userInfo = uni.getStorageSync('userInfo')
-
 		if (this.userInfo.isAttestation){
 		if (this.userInfo.isAttestation){
-			this.group1[1].rightText = '已认证'
+			this.group1[0].rightText = '已认证'
 		}else {
 		}else {
-			this.group1[1].rightText = '未实名认证,去认证'
+			this.group1[0].rightText = '未实名认证,去认证'
 		}
 		}
 	},
 	},
+
 	methods: {
 	methods: {
 
 
 		goRecharge(){
 		goRecharge(){

+ 2 - 1
pages/order/index.vue

@@ -73,7 +73,7 @@
 
 
 		<view class="tabBarLineHeight"></view>
 		<view class="tabBarLineHeight"></view>
 		<view class="tabBarView">
 		<view class="tabBarView">
-			<tab-bar :tabIndex="tabIndex"></tab-bar>
+			<tab-bar :tabIndex="tabBarIndex"></tab-bar>
 		</view>
 		</view>
 	</view>
 	</view>
 </template>
 </template>
@@ -91,6 +91,7 @@
 				num: 0,
 				num: 0,
 				title: 'Hello',
 				title: 'Hello',
 				tabIndex: 0,
 				tabIndex: 0,
+				tabBarIndex:3,
 				currentTab: 0,
 				currentTab: 0,
 				currentServiceTab: 'orderTab1',
 				currentServiceTab: 'orderTab1',
 
 

+ 11 - 3
pages/order/module/mescrollUni-item.vue

@@ -216,11 +216,19 @@
 
 
 		methods: {
 		methods: {
       scanCodeOrder(){
       scanCodeOrder(){
+      	let that = this
         uni.scanCode({
         uni.scanCode({
-          onlyFromCamera: true,
+			scanType: ['qrCode'],
           success: function (res) {
           success: function (res) {
-            console.log('条码类型:' + res.scanType);
-            console.log('条码内容:' + res.result);
+			  console.log('++++++++scanCode+++++++++++',res)
+			  that.$api.getStationById({
+				  stationId:res.result
+			  }).then(res1=>{
+				  console.log('++++++++getStationById+++++++++++',res1)
+
+
+
+			  })
           }
           }
         })
         })
       },
       },

BIN
static/me/u3.png