Переглянути джерело

feat:我的页面bug修改

xyh8905170 2 роки тому
батько
коміт
1ddd043d03

+ 0 - 0
myPages/ServiceObjectManagement/index.rpx.scss


+ 455 - 0
myPages/ServiceObjectManagement/index.vue

@@ -0,0 +1,455 @@
+<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="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>
+      <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: ''
+      },
+      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 (!this.$isDataEmpty(option.data)) {
+      const data = JSON.parse(option.data);
+      this.userInfo = data;
+      if (this.userInfo.ranks != '0') {
+        this.userInfo.ranksState = '1';
+      }
+    }
+    console.log("333333333333333333333333333”")
+    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;
+    },
+    // 选择值
+    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.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)
+        // 去服务对象列表页
+        uni.navigateTo({
+          url: '/pages/me/service-object-mgt',
+        })
+      }).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: {
+              '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 scoped lang="scss">
+@import './index.rpx.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>

+ 67 - 0
myPages/TermsOfService/index.vue

@@ -0,0 +1,67 @@
+<template>
+  <view class="container">
+
+    <view class="h-content">
+      <view class="" v-html="termOfService.aboutContent"></view>
+    </view>
+
+  </view>
+</template>
+
+<script>
+// import {getTermOfServiceByType} from '/src/api/me/me.js';
+export default {
+  data() {
+    return {
+      reqParm: {
+        auth: true,
+        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() {
+  },
+  onLoad(option) {
+    // 判断Openid是否为空
+    if(!!option.data){
+      this.reqParm.type = option.data;
+    }
+    this.getTermOfServiceByType();
+  },
+  methods: {
+    // 获取服务条款信息
+    getTermOfServiceByType(){
+      // 获取数据
+     this.$api.getTermOfServiceByType(this.reqParm).then((res)=>{
+        if(res.aboutContent){
+          this.termOfService.aboutContent = res.aboutContent
+        }else{
+          this.termOfService.aboutContent = "暂无信息!!!"
+        }
+      }).catch(() =>{
+        uni.showToast({
+          title: "操作失败"
+        })
+      });
+    },
+
+  }
+};
+</script>
+
+<style lang="scss">
+.container{
+  padding: 12px;
+}
+
+</style>

+ 180 - 0
myPages/aboutOur/index.vue

@@ -0,0 +1,180 @@
+<template>
+	<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>
+
+	</view>
+</template>
+
+<script>
+
+export default {
+	data() {
+		return {
+			reqParm: {
+				auth: true,
+				type: 1  // 类型  1=会员协议 2=服务对象协议 3=隐私条款 4=加盟合作  5=常见问题
+			}
+		};
+	},
+	mounted() {
+	},
+	onLoad() {
+	},
+	methods: {
+		// 获取服务条款信息
+		gotoTermOfService(type){
+			uni.navigateTo({
+				url: '/myPages/TermsOfService/index',
+			})
+		},
+	}
+};
+</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-top: 10px;
+			padding-bottom: 6px;
+			.nav-info{
+				display: flex;
+				padding-left: 10px;
+				.logo {
+					width: 12%;
+					text-align: center;
+					image{
+						width: 24px;
+						height: 24px;
+					}
+				}
+				.nav-desc{
+					width: 60%;
+					display: flex;
+					line-height: 30px;
+					.nav-name{
+						font-size: 16px;
+						width: 60%;
+					}
+					.change-store{
+						text-align: right;
+						width: 40%;
+						font-size: 12px;
+						color: #666;
+					}
+				}
+
+				.arrow-right{
+					width:40%;
+					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;
+						image{
+							width: 24px;
+							height: 24px;
+						}
+					}
+				}
+			}
+		}
+	}
+
+	.sure-btn{
+		margin-top: 20px;
+		width: 100%;
+		.btn{
+			background: #FF6C7B;
+			text-align: center;
+			border-radius: 14px;
+			height: 36px;
+			line-height: 36px;
+			color: #fff;
+			font-size: 16px;
+		}
+	}
+}
+
+</style>

+ 360 - 0
myPages/components/sign/sign.vue

@@ -0,0 +1,360 @@
+<template>
+	<view class="signature-box">
+        <view class="sign-wrap" v-show="showCanvas">
+			
+			<!-- 签名 -->
+			<view class="signature" >
+				<view class="signature-title">
+					<text>请输入签名信息</text>
+				</view>
+				<canvas class="mycanvas" canvas-id="mycanvas" @touchstart="touchstart" @touchmove="touchmove" @touchend="touchend"></canvas>
+				<view class="footer">
+					<u-button @click="saveCanvasImg" type="primary" :plain="true" :ripple="true" ripple-bg-color="#909399">保存</u-button>
+					<u-button @click="clear" type="warning" :plain="true" :ripple="true" ripple-bg-color="#909399">清除</u-button>
+					<u-button @click="close" type="error" :plain="true" :ripple="true" ripple-bg-color="#909399">关闭</u-button>
+				</view>
+			</view>
+			        
+			 <!-- 签完名后生成的图片 -->
+			<view v-show="SignatureImg" class="SignatureImg">
+				<image :src="SignatureImg" mode=""></image>
+			</view>
+			        
+			<!-- 清除签完名后生成的图片 -->
+			<u-button v-show="SignatureImg" @click="obliterate" type="error" :plain="true" :ripple="true" ripple-bg-color="#909399" size="medium">清除签名</u-button>
+		</view>
+		
+	</view>
+</template>
+
+
+<script>
+	var x = 20;
+	var y = 20;
+	export default {
+		data() {
+			return {
+				//绘图图像
+				ctx: '', 
+				//路径点集合
+				points: [], 
+				//签名图片
+				SignatureImg: ''
+			};
+		},
+		props: ['showCanvas'],
+		methods: {
+			//清除签名的图片
+			obliterate() {
+				if (this.SignatureImg) {
+					this.SignatureImg = '';
+				}
+				this.close();
+			},
+			//关闭并清空画布
+			close() {
+				this.$emit('closeCanvas');
+				this.clear();
+			},
+			//创建并显示画布
+			createCanvas() {
+				this.ctx = uni.createCanvasContext('mycanvas', this); //创建绘图对象
+				//设置画笔样式
+				this.ctx.lineWidth = 4;
+				this.ctx.lineCap = 'round';
+				this.ctx.lineJoin = 'round';
+			},
+			//触摸开始,获取到起点
+			touchstart(e) {
+				let startX = e.changedTouches[0].x;
+				let startY = e.changedTouches[0].y;
+				let startPoint = { X: startX, Y: startY };
+				this.points.push(startPoint);
+				//每次触摸开始,开启新的路径
+				this.ctx.beginPath();
+			},
+			//触摸移动,获取到路径点
+			touchmove(e) {
+				let moveX = e.changedTouches[0].x;
+				let moveY = e.changedTouches[0].y;
+				let movePoint = { X: moveX, Y: moveY };
+				this.points.push(movePoint); //存点
+				let len = this.points.length;
+				if (len >= 2) {
+					this.draw(); //绘制路径
+				}
+			},
+			// 触摸结束,将未绘制的点清空防止对后续路径产生干扰
+			touchend() {
+				this.points = [];
+			},
+			//绘制笔迹
+			draw() {
+				let point1 = this.points[0];
+				let point2 = this.points[1];
+				this.points.shift();
+				this.ctx.moveTo(point1.X, point1.Y);
+				this.ctx.lineTo(point2.X, point2.Y);
+				this.ctx.stroke();
+				this.ctx.draw(true);
+			},
+			//清空画布
+			clear() {
+				let that = this;
+				uni.getSystemInfo({
+					success: function(res) {
+						let canvasw = res.windowWidth;
+						let canvash = res.windowHeight;
+						that.ctx.clearRect(0, 0, canvasw, canvash);
+						that.ctx.draw(true);
+					}
+				});
+			},
+			//完成绘画并保存到本地
+			saveCanvasImg() {
+				let that = this;
+				//#ifdef MP-WEIXIN
+				wx.canvasToTempFilePath({
+					canvasId: 'mycanvas',
+					fileType: 'png',
+					quality: 1, //图片质量
+					success(res) {
+						console.log(res.tempFilePath, 'canvas生成图片地址');
+						that.$emit('saveCanvasImg',res.tempFilePath);
+						that.$emit('closeCanvas');
+						that.close();
+					},
+					fail(e) {
+						console.log(e)
+					},
+					complete(e) {
+						console.log(e)
+					}
+				},this);
+				//#endif
+				
+				uni.canvasToTempFilePath({
+					canvasId: 'mycanvas',
+					success: function(res) {
+						console.log(res);
+						// that.SignatureImg = res.tempFilePath;
+						that.$emit('saveCanvasImg',res.tempFilePath);
+						that.$emit('closeCanvas');
+						that.close();
+					}
+				}); 
+				/* uni.canvasToTempFilePath(
+					{
+						canvasId: 'mycanvas',
+						success: function(res) {
+							console.log(res);
+							that.SignatureImg = res.tempFilePath;
+							
+							that.$emit('saveCanvasImg','aaa');
+							
+						}
+					},
+				); */
+			}
+		},
+		mounted() {
+			this.createCanvas();
+		}
+	};
+
+</script>
+
+<style  scoped>
+.signature-box {
+	/* display: flex;
+	flex-direction: column;
+	align-items: center;
+	background: #fff; */
+	/* 签名模块 */
+}
+.sign-wrap{
+	margin: 0 auto;
+	height: 100%;
+	background: #F0F0F0;
+	/* position: fixed; */
+	/* top: 0px; */
+	z-index: 10080;
+	width: 100%;
+	
+}
+.signature {
+}
+.signature-title{
+	background: #fff;
+	border-bottom: 1px solid #19BE6B;
+	line-height: 36px;
+	text-align: center;
+	font-size: 16px;
+}
+.mycanvas {
+	
+	width: 100%;
+	/* height: calc(100vh - 200upx); */
+	height: 140px;
+	background-color: #fff;
+}
+/* 底部按钮 */
+.footer {
+	font-size: 14px;
+	height: 150upx;
+	display: flex;
+	justify-content: space-around;
+	align-items: center;
+}
+/* 生成的图片 */
+.SignatureImg {
+	background: #fff;
+}
+.SignatureImg image{
+	width: 750rpx;
+	height: 750rpx;
+}
+
+</style>
+
+<style>
+	page {
+		background: #fbfbfb;
+		/* height: auto; */
+		/* overflow: hidden; */
+	}
+
+	.wrapper {
+		width: 100%;
+		height: 95vh;
+		margin: 30rpx 0;
+		overflow: hidden;
+		display: flex;
+		align-content: center;
+		flex-direction: row;
+		justify-content: center;
+		font-size: 28rpx;
+	}
+
+	.handWriting {
+		background: #fff;
+		width: 100%;
+		height: 95vh;
+	}
+
+	.handRight {
+		display: inline-flex;
+		align-items: center;
+	}
+
+	.handCenter {
+		border: 4rpx dashed #e9e9e9;
+		flex: 5;
+		overflow: hidden;
+		box-sizing: border-box;
+	}
+
+	.handTitle {
+		transform: rotate(90deg);
+		flex: 1;
+		color: #666;
+	}
+
+	.handBtn button {
+		font-size: 28rpx;
+	}
+
+	.handBtn {
+		height: 95vh;
+		display: inline-flex;
+		flex-direction: column;
+		justify-content: space-between;
+		align-content: space-between;
+		flex: 1;
+	}
+
+	.delBtn {
+		position: absolute;
+		top: 250rpx;
+		left: 0rpx;
+		transform: rotate(90deg);
+		color: #666;
+	}
+
+	.delBtn image {
+		position: absolute;
+		top: 13rpx;
+		left: 25rpx;
+	}
+
+	.subBtn {
+		position: absolute;
+		bottom: 52rpx;
+		left: -3rpx;
+		display: inline-flex;
+		transform: rotate(90deg);
+		background: #008ef6;
+		color: #fff;
+		margin-bottom: 30rpx;
+		text-align: center;
+		justify-content: center;
+	}
+
+	/*Peach - 新增 - 保存*/
+
+	.saveBtn {
+		position: absolute;
+		top: 375rpx;
+		left: 0rpx;
+		transform: rotate(90deg);
+		color: #666;
+	}
+
+	.previewBtn {
+		position: absolute;
+		top: 500rpx;
+		left: 0rpx;
+		transform: rotate(90deg);
+		color: #666;
+	}
+
+	.uploadBtn {
+		position: absolute;
+		top: 625rpx;
+		left: 0rpx;
+		transform: rotate(90deg);
+		color: #666;
+	}
+
+	/*Peach - 新增 - 保存*/
+
+	.black-select {
+		width: 60rpx;
+		height: 60rpx;
+		position: absolute;
+		top: 30rpx;
+		left: 25rpx;
+	}
+
+	.black-select.color_select {
+		width: 90rpx;
+		height: 90rpx;
+		top: 100rpx;
+		left: 10rpx;
+	}
+
+	.red-select {
+		width: 60rpx;
+		height: 60rpx;
+		position: absolute;
+		top: 140rpx;
+		left: 25rpx;
+	}
+
+	.red-select.color_select {
+		width: 90rpx;
+		height: 90rpx;
+		top: 120rpx;
+		left: 10rpx;
+	}
+</style>

+ 112 - 0
myPages/realNameAuth/index.rpx.scss

@@ -0,0 +1,112 @@
+page,body{
+	background: #fff;
+}
+.login-wrap {
+	display: flex;
+	justify-content: center;
+	.login-form{
+		width: 90%;
+	}
+	.account{
+		display: flex;
+	}
+	.identifying-code{
+	}
+}
+
+.h-input-wrap{
+	padding-left: 12px;
+	padding-right: 12px;
+	display: flex;
+	align-items: center;
+	height: 40px;
+	font-family: PingFangSC-Regular, PingFang SC;
+	font-size: 14px;
+	.h-name{
+		font-weight: 400;
+		color: #333333;
+		line-height: 22px;
+		margin-right: 6px;
+	}
+	.input-style{
+		border-radius: 4px;
+		font-weight: 400;
+		color: #999999;
+		line-height: 22px;
+		font-size: 14px;
+	}
+}
+
+page{
+	background: #F8F8F8;
+}
+
+.keep-on-record-wrap{
+	width: 96%;
+	margin: 0 auto;
+	color: #676767;
+}
+.keep-on-record-content{
+	margin-top: 12px;
+}
+
+.container {
+	height: 100%;
+}
+
+// 图片上传
+.uploadBox {
+	margin: 0 auto;
+	width: 100%;
+	padding-left: 12px;
+	padding-right: 12px;
+	margin-top: 12px;
+	.leftBtn {
+		height: 42px;
+		background: #FFE05C;
+		border-radius: 27px;
+		color: #333333;
+		line-height: 42px;
+		margin-top: 12px;
+	}
+
+	.uploadItem {
+		width: 100%;
+		height: 198px;
+		border-width: 1px;
+		border-style: dashed;
+		border-color: #999;
+		.imgUrl {
+			width: 100%;
+			height: 100%;
+		}
+	}
+	.h-desc{
+		font-size: 12px;
+		font-family: PingFangSC-Regular, PingFang SC;
+		font-weight: 400;
+		color: #666666;
+		line-height: 50px;
+		text-align: center;
+	}
+
+	.bg-img1{
+		background-image: url('https://jje.admin.xinyuekj.com.cn/static/me/u11.png');
+		background-size: cover;
+		background-repeat: repeat;
+	}
+	.bg-img2{
+		background-image: url("https://jje.admin.xinyuekj.com.cn/static/me/u12.png");
+		background-size: cover;
+		background-repeat: repeat;
+	}
+}
+
+/* 底部 */
+.footer{
+	margin-top: 30px;
+	height: 160px;
+	font-size: 12px;
+	text-align: center;
+	color: #666;
+}

+ 340 - 0
myPages/realNameAuth/index.vue

@@ -0,0 +1,340 @@
+<template>
+  <view class="keep-on-record-wrap">
+    <!-- 提示内容 -->
+    <u-toast ref="uToast" />
+
+    <view class="keep-on-record-content">
+      <view class="container">
+        <view class="login-wrap">
+          <view class="login-form">
+            <u--form
+                labelPosition="left"
+                :model="userRealNameAuth"
+                :rules="rules"
+                ref="form1"
+            >
+              <u-form-item
+                  label="真实姓名"
+                  prop="name"
+                  labelWidth="auto"
+                  labelAlign="right"
+              >
+                <u--input
+                    v-model="userRealNameAuth.name"
+                    placeholder="请输入真实姓名"
+                    border="bottom"
+                    type="text"
+                    maxlength="11"
+                ></u--input>
+              </u-form-item>
+              <u-form-item
+                  labelWidth="auto"
+                  labelAlign="right"
+                  label="身份证号"
+                  prop="idCard"
+                  width="120"
+              >
+                <u--input
+                    v-model="userRealNameAuth.idCard"
+                    disabledColor="#ffffff"
+                    placeholder="请输入身份证号"
+                    border="bottom"
+                    maxlength="20"
+                ></u--input>
+              </u-form-item>
+            </u--form>
+          </view>
+        </view>
+
+        <!-- 保存备案信息 -->
+        <view class="uploadBox">
+          <view  v-if="userRealNameAuth.isAudit != 1" @click="saveUserRealNameAuth" class="leftBtn text-white text-lg text-center">下一步</view>
+          <view  v-else  class="leftBtn text-white text-lg text-center">审核中不允许修改</view>
+        </view>
+
+      </view>
+    </view>
+
+    <view class="footer"></view>
+
+  </view>
+</template>
+
+<script>
+export default {
+  components: {
+  },
+  data() {
+    return {
+      reqParm: {
+        auth: true,
+        ossId: null,
+      },
+      userRealNameAuth: {
+        auth: true,
+        idCard: '',
+        idCardBack: '',
+        idCardFront: '',
+        idCardBackUrl: '',
+        idCardFrontUrl: '',
+        name: ''
+      },
+      userInfo: {
+
+      },
+      list1: [
+        '隐私说明:请按要求上传真实的证件照片,您所上传的行驶证仅用于平台账户绑定,请放心上传'
+      ],
+      imgUrl1: '',
+      imgUrl2: '',
+      show: false,
+      list: [
+      ],
+      rules: {
+        name:  [
+          {
+            required: true,
+            min: 1,
+            max: 12,
+            message: '请输入姓名',
+            trigger: ['blur', 'change'],
+          },
+          {
+            // 此为同步验证,可以直接返回true或者false,如果是异步验证,稍微不同,见下方说明
+            validator: (rule, value, callback) => {
+              // 调用uView自带的js验证规则,详见:https://www.uviewui.com/js/test.html
+              return !this.$isDataEmpty(value);
+            },
+            message: "请认真填写姓名",
+            trigger: ['blur', 'change'],
+          }
+        ],
+        idCard: {
+          required: true,
+          min: 16,
+          max: 20,
+          message: '请输入身份证号',
+          trigger: ['blur', 'change'],
+        },
+      },
+    }
+  },
+  onReady() {
+    // 初始化静音验证
+    this.$refs.form1.setRules(this.rules)
+
+    // 用户信息
+    let user = uni.getStorageSync('userInfo');
+    console.log(user,'22222222222222')
+    this.userRealNameAuth.name = user.name;
+    this.userRealNameAuth.idCard = user.idCard;
+  },
+  onLoad(option) {
+
+  },
+  methods: {
+    async getImgUrlByOssId(ossId,type){
+      let url = await this.$getImgUrlByOssId(ossId);
+      if(type == 1){
+        this.$api.userRealNameAuth.idCardFrontUrl = url;
+      } else if(type == 2){
+        this.$api.userRealNameAuth.idCardBackUrl = url;
+      }
+      return url;
+    },
+    // 获取文件信息
+    getCommonFile(){
+      this.$api.getCommonFile({data:this.reqParm}).then((res)=>{
+        console.log(res)
+      }).catch(() =>{
+        uni.showToast({
+          title: "操作失败"
+        })
+      });
+    },
+    // 保存实名信息
+    saveUserRealNameAuth(){
+      let that = this;
+      that.$refs.form1.validate().then(res => {
+        // 保存数据
+        this.$api.userRealNameAuth(null,{data:this.userRealNameAuth}).then((res)=>{
+          console.log(res)
+          // 刷新用户信息
+          this.$refreshUserLoginInfo();
+
+          uni.$u.route({
+            url: '/pages/index/tabbar',
+            params: {
+              PageCur: 'me'
+            }
+          })
+
+        }).catch(() =>{
+          uni.showToast({
+            title: "操作失败"
+          })
+        });
+      }).catch(errors => {
+        uni.$u.toast('校验失败,请认真填写')
+      })
+    },
+    //头像上传
+    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)
+              if(imgIndex == 1){ // 身份证正面
+                that.imgUrl1 = res.data.url;
+                that.userRealNameAuth.idCardFront = res.data.ossId
+                that.reqParm.ossId = res.data.ossId
+                console.log(that.reqParm)
+                that.userRealNameAuth.idCardFrontUrl = res.data.url;
+              }
+
+              if(imgIndex == 2){ // 微信证背面
+                that.imgUrl2 = res.url;
+                that.userRealNameAuth.idCardBack = res.data.ossId
+                that.userRealNameAuth.idCardBackUrl = res.data.url;
+              }
+
+            }
+          });
+        }
+      });
+    }
+  }
+}
+</script>
+
+<style scoped lang="scss">
+page,body{
+  background: #fff;
+}
+.login-wrap {
+  display: flex;
+  justify-content: center;
+  .login-form{
+    width: 90%;
+  }
+  .account{
+    display: flex;
+  }
+  .identifying-code{
+  }
+}
+
+.h-input-wrap{
+  padding-left: 12px;
+  padding-right: 12px;
+  display: flex;
+  align-items: center;
+  height: 40px;
+  font-family: PingFangSC-Regular, PingFang SC;
+  font-size: 14px;
+  .h-name{
+    font-weight: 400;
+    color: #333333;
+    line-height: 22px;
+    margin-right: 6px;
+  }
+  .input-style{
+    border-radius: 4px;
+    font-weight: 400;
+    color: #999999;
+    line-height: 22px;
+    font-size: 14px;
+  }
+}
+
+page{
+  background: #F8F8F8;
+}
+
+.keep-on-record-wrap{
+  width: 96%;
+  margin: 0 auto;
+  color: #676767;
+}
+.keep-on-record-content{
+  margin-top: 12px;
+}
+
+.container {
+  height: 100%;
+}
+
+// 图片上传
+.uploadBox {
+  margin: 0 auto;
+  width: 100%;
+  text-align: center;
+  padding-left: 12px;
+  padding-right: 12px;
+  margin-top: 12px;
+  .leftBtn {
+    height: 42px;
+    background: #FFE05C;
+    border-radius: 27px;
+    color: #333333;
+    line-height: 42px;
+    margin-top: 12px;
+  }
+
+  .uploadItem {
+    width: 100%;
+    height: 198px;
+    border-width: 1px;
+    border-style: dashed;
+    border-color: #999;
+    .imgUrl {
+      width: 100%;
+      height: 100%;
+    }
+  }
+  .h-desc{
+    font-size: 12px;
+    font-family: PingFangSC-Regular, PingFang SC;
+    font-weight: 400;
+    color: #666666;
+    line-height: 50px;
+    text-align: center;
+  }
+
+  .bg-img1{
+    background-image: url('https://jje.admin.xinyuekj.com.cn/static/me/u11.png');
+    background-size: cover;
+    background-repeat: repeat;
+  }
+  .bg-img2{
+    background-image: url("https://jje.admin.xinyuekj.com.cn/static/me/u12.png");
+    background-size: cover;
+    background-repeat: repeat;
+  }
+}
+
+/* 底部 */
+.footer{
+  margin-top: 30px;
+  height: 160px;
+  font-size: 12px;
+  text-align: center;
+  color: #666;
+}
+</style>

+ 169 - 0
myPages/setting/index.vue

@@ -0,0 +1,169 @@
+<template>
+	<view class="user-info-wrap">
+		<view class="nav-bar">
+			<view class="nav-content">
+				<view @click="gotoSettingtelphone(0)" 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="18"></u-icon>
+					</view>
+				</view>
+			</view>
+			<view class="custom-line"></view>
+			<view class="nav-content">
+				<view @click="gotoSettingWechat()" 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="18"></u-icon>
+					</view>
+				</view>
+			</view>
+			<view class="custom-line"></view>
+			<view class="nav-content">
+				<view @click="gotoSettingAccountPassword()" 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="18"></u-icon>
+					</view>
+				</view>
+			</view>
+		</view>
+
+	</view>
+</template>
+
+<script>
+export default {
+	data() {
+		return {
+			userInfo: {
+				telphone: '',
+				code: '',
+			},
+		}
+	},
+	onReady() {
+	},
+	methods: {
+		// 去设置手机号
+		gotoSettingtelphone(){
+			uni.navigateTo({
+				url: '/loginPages/login/retrieve-account-phone"',
+			})
+		},
+		// 去设置微信号
+		gotoSettingWechat(){
+			uni.navigateTo({
+				url: '/pages/setting/setting-wechat"',
+			})
+		},
+		// 去设置账号密码
+		gotoSettingAccountPassword(){
+			uni.navigateTo({
+				url: '/pages/setting/setting-account-password"',
+			})
+		},
+		// 去设置交易密码页面
+		gotoSettingTransactionPassword(){
+			uni.navigateTo({
+				url: '/pages/setting/setting-transaction-password"',
+			})
+		}
+	}
+}
+</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-top: 10px;
+			padding-bottom: 6px;
+			.nav-info{
+				display: flex;
+				padding-left: 10px;
+				.logo {
+					width: 12%;
+					text-align: center;
+					image{
+						width: 24px;
+						height: 24px;
+					}
+				}
+				.nav-desc{
+					width: 68%;
+					display: flex;
+					line-height: 30px;
+					.nav-name{
+						font-size: 14px;
+						width: 60%;
+					}
+					.change-store{
+						text-align: right;
+						width: 40%;
+						font-size: 12px;
+						color: #666;
+					}
+				}
+
+				.arrow-right{
+					width:32%;
+					text-align: right;
+					margin: 0 auto;
+					cursor: pointer;
+					padding-top: 3px;
+					padding-right: 6px;
+					display: flex;
+					justify-content: flex-end;
+					align-items: center;
+					image{
+						width: 18px;
+						height: 18px;
+					}
+					.head-img {
+						text-align: center;
+						image{
+							width: 24px;
+							height: 24px;
+						}
+					}
+				}
+			}
+		}
+	}
+
+	.sure-btn{
+		margin-top: 20px;
+		width: 100%;
+		.btn{
+			background: #FF6C7B;
+			text-align: center;
+			border-radius: 14px;
+			height: 36px;
+			line-height: 36px;
+			color: #fff;
+			font-size: 16px;
+		}
+	}
+}
+
+</style>

+ 0 - 0
myPages/systemSwitch/index.rpx.scss


+ 804 - 0
myPages/systemSwitch/index.vue

@@ -0,0 +1,804 @@
+<template>
+    <view class="container">
+        <view class="step-bar">
+            <view v-for="(step, index) in steps" :key="index">
+                <view >
+                    <view class="h-num">
+                        <text>{{ index + 1 }}</text>
+                    </view>
+                    <view v-if="index !== steps.length - 1" class="separator"></view>
+                </view>
+                <view class="">{{ step }}</view>
+            </view>
+        </view>
+        <view class="form">
+            <view v-if="currentStep === 0" class="h-content-wrap">
+                <u--form labelPosition="top" :model="userInfo" :rules="rules" ref="form1">
+                    <u-form-item labelWidth="auto" labelAlign="right" label="老系统手机号" prop="phone">
+                        <u--input v-model="userInfo.phone" disabledColor="#ffffff" placeholder="填写老系统电话" border="bottom"
+                            maxlength="11"></u--input>
+                    </u-form-item>
+                    <u-form-item label="老系统会员姓名" prop="memberName" labelPosition="top" labelWidth="auto" labelAlign="right">
+                        <u--input v-model="userInfo.memberName" disabledColor="#ffffff" placeholder="填写姓名" border="bottom"
+                            maxlength="16"></u--input>
+                    </u-form-item>
+
+                    <u-form-item label="当前手机号" prop="phonenumber" labelWidth="auto" labelAlign="right">
+                        <u--input v-model="userInfo.phonenumber" disabledColor="#ffffff" placeholder="填写当前手机号"
+                            border="bottom" maxlength="11"></u--input>
+                    </u-form-item>
+                    <u-form-item labelWidth="auto" labelAlign="right" label="验证码" prop="smsCode" width="120">
+                        <u--input v-model="userInfo.smsCode" disabledColor="#ffffff" placeholder="请输入验证码" border="bottom"
+                            maxlength="6"></u--input>
+                        <template #right>
+                            <view class="identifying-code">
+                                <u-code ref="uCode2" @change="codeChange2" keep-running start-text="获取验证码"></u-code>
+                                <text @tap="getCode2" :text="tips2" class="u-page__code-text">{{ tips2 }}</text>
+                            </view>
+                        </template>
+
+                    </u-form-item>
+                </u--form>
+            </view>
+            <view v-if="currentStep === 1">
+                <view class="h-content">
+                    <view class="h-basic-info">
+                        <view class="h-value">
+                            <view class="h-name">会员编号</view>
+                            <view class="h-text">{{ userMemberInfo.memberNo }}</view>
+                        </view>
+                        <view class="h-value">
+                            <view class="h-name">会员卡号</view>
+                            <view class="h-text">{{ userMemberInfo.memberCard }}</view>
+                        </view>
+                        <view class="h-value">
+                            <view class="h-name">会员姓名</view>
+                            <view class="h-text">{{ userMemberInfo.memberName }}</view>
+                        </view>
+                        <view class="h-value">
+                            <view class="h-name">手机号码</view>
+                            <view class="h-text">{{ userMemberInfo.phone }}</view>
+                        </view>
+
+                        <view class="h-value">
+                            <view class="h-name">积分</view>
+                            <view class="h-text">{{ userMemberInfo.integral }}</view>
+                        </view>
+                        <view class="h-value">
+                            <view class="h-name">账户余额</view>
+                            <view class="h-text">¥{{ userMemberInfo.nowBalance }}</view>
+                        </view>
+                        <!-- <view class="h-value">
+                          <view class="h-name">赠送余额</view>
+                          <view class="h-text">¥{{userMemberInfo.nowBalance}}</view>
+                      </view> -->
+                    </view>
+                    <view class="h-record">
+                        <!-- 导航-->
+                        <view class="service-order-tab-bar">
+                            <view class="service-order-tab-item" :class="{ active: currentServiceTab === 'orderTab1' }"
+                                @click="changeServiceTab('orderTab1')">
+                                <text :class="{ underline: currentServiceTab === 'orderTab1' }">充值记录</text>
+                            </view>
+                            <view class="service-order-tab-item" :class="{ active: currentServiceTab === 'orderTab2' }"
+                                @click="changeServiceTab('orderTab2')">
+                                <text :class="{ underline: currentServiceTab === 'orderTab2' }">消费记录</text>
+                            </view>
+                        </view>
+                        <view class="custom-line"></view>
+                        <!-- order -->
+                        <view v-if="currentServiceTab == 'orderTab1'" class="store-order-wrap">
+                            <view v-for="(item, index) in memberInfoRecords" class="store-order">
+                                <view class="h-content">
+                                    <view class="h-row">
+                                        <view class="h-value">
+                                            <text>储值记录</text>
+                                        </view>
+                                        <view class="h-value">
+                                            <text>+ ¥{{ item.rechargeAmount }}</text>
+                                        </view>
+                                    </view>
+                                    <view class="h-row">
+                                        <view class="h-value">
+                                            <text class="h-text">{{ item.rechargeTime }}</text>
+                                        </view>
+                                        <view class="h-value h-name">
+                                            <text class="h-text">账户余额:¥{{ item.nowBalance }}</text>
+                                        </view>
+                                    </view>
+                                </view>
+                                <view class="custom-line"></view>
+                            </view>
+                        </view>
+                        <view v-if="currentServiceTab == 'orderTab2'" class="store-order-wrap">
+                            <view v-for="(item, index) in memberInfoRecords" class="store-order">
+                                <view class="h-content">
+                                    <view class="h-row">
+                                        <view class="h-value">
+                                            <text>消费记录</text>
+                                        </view>
+                                        <view class="h-value">
+                                            <text>- ¥{{ item.consumeAmount }}</text>
+                                        </view>
+                                    </view>
+                                    <view class="h-row">
+                                        <view class="h-value">
+                                            <text class="h-text">{{ item.consumeTime }}</text>
+                                        </view>
+                                        <view class="h-value h-name">
+                                            <text class="h-text">账户余额:¥{{ item.nowBalance }}</text>
+                                        </view>
+                                    </view>
+                                </view>
+                                <view class="custom-line"></view>
+                            </view>
+                        </view>
+                    </view>
+                </view>
+            </view>
+            <view v-if="currentStep === 2" class="">
+                <view class="letter-commitment">
+                    <view class="h-title">
+                        <text>个人信息真实承诺书</text>
+                    </view>
+                    <view class="">
+                        <text>会员姓名:{{ userInfo.memberName }}</text>
+                    </view>
+                    <view class="">
+                        <text>老系统手机号: {{ userInfo.phone }}</text>
+                    </view>
+                    <view class="">
+                        <text>当前手机号: {{ userInfo.phonenumber }}</text>
+                    </view>
+                    <view class="">
+                        <text>为系统迁移: 本人郑重承诺</text>
+                    </view>
+                    <view class="h-content">
+                        <view class="" v-html="termOfService.aboutContent"></view>
+                    </view>
+
+                </view>
+
+            </view>
+        </view>
+
+        <view v-if="currentStep === 3" class="">
+            <view class="h-content-step-end">
+                <view class="h-success">
+                    <u-icon name="edit-pen-fill" color="#333" size="30"></u-icon>
+                </view>
+                <view class="h-name">
+                    <text>账户迁移成功</text>!
+                </view>
+                <view @click="nextStep(3)" class="h-btn">
+                    <text>确认</text>
+                </view>
+            </view>
+        </view>
+
+        <view v-if="currentStep == 0" class="button-group">
+            <!-- <button @click="prevStep" :disabled="currentStep === 0">上一步</button> -->
+            <button class="h-btn" @click="nextStep(0)" :disabled="currentStep === steps.length - 1">开始查询</button>
+        </view>
+
+        <view v-if="currentStep == 1" class="button-group">
+            <button @click="prevStep" :disabled="currentStep === 0">上一步</button>
+            <view class="h-btn" @click="nextStep(1)" :disabled="currentStep === steps.length - 1">
+                <text>下一步</text>
+            </view>
+        </view>
+
+        <view v-if="currentStep == 2" class="button-group">
+            <button @click="prevStep" :disabled="currentStep === 0">上一步</button>
+            <view class="h-btn" @click="nextStep(2)" :disabled="currentStep === steps.length - 1">
+                <text>确认并迁移</text>
+            </view>
+        </view>
+    </view>
+</template>
+
+<script>
+import signature from '../components/sign/sign';
+export default {
+    components: {
+        signature
+    },
+    data() {
+        return {
+            showCanvas: false,
+            currentStep: 0,
+            steps: ['账户查询', '信息确认', '用户承诺', '账户迁移'], // 步骤条的文字内容
+            step1Value: '',
+            step2Value: '',
+            step3Value: '',
+            userInfo: {
+                auth: true,
+                phone: '',
+                memberName: '',
+                phonenumber: '',
+                smsCode: '',
+                memberNo: null,
+                type: 7,
+                requstForm: true
+            },
+            // 服务条款对象信息
+            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"
+            },
+            userMemberInfo: {
+                memberNo: "string",
+                pingYinCode: "string",
+                memberName: "string",
+                integral: 0,
+                sex: 0,
+                birthday: "string",
+                phone: "string",
+                memberPassword: "string",
+                height: "string",
+                weight: "string",
+                memberCard: "string",
+                address: "string",
+                nowBalance: 0,
+                totalConsumeAmount: 0,
+                debt: 0,
+                remarks: "string",
+                joinTime: "string",
+                memberStatus: 0,
+                referencesNo: "string",
+                consumeCycle: "string",
+                otherInfo: "string",
+                photoUrl: "string"
+            },
+            memberInfoRecords: [{
+                orderNo: "string",
+                memberNo: "string",
+                memberName: "string",
+                phone: "string",
+                consumeAmount: 0,
+                realPayAmount: 0,
+                profit: 0,
+                integral: 0,
+                remainDebt: 0,
+                consumeTime: "string",
+                remarks: "string",
+                consumeStore: "string",
+                consumeType: "string",
+                discountAmount: 0,
+                bedName: "string",
+                payInfo: "string",
+                memberStore: "string",
+                payType: "string"
+            }],
+            show: false,
+            currentTab: 'tab1', // 当前选中的 Tab
+            currentServiceTab: 'orderTab1', // 当前选中的 Tab
+            defaultColor: '#CCCCCC',
+            currentColor: '#FF0000',
+            completedColor: '#00FF00',
+            content: '一、本人所提供的个人信息 证明材料、证件',
+            signType: '',
+            signImg1: '',
+            tips2: '',
+            rules: {
+                phone: [
+                    {
+                        required: true,
+                        min: 10,
+                        max: 12,
+                        message: '请输入11位电话号码',
+                        trigger: ['blur', 'change'],
+                    },
+                    {
+                        // 此为同步验证,可以直接返回true或者false,如果是异步验证,稍微不同,见下方说明
+                        validator: (rule, value, callback) => {
+                            // 调用uView自带的js验证规则,详见:https://www.uviewui.com/js/test.html
+                            return !this.$isDataEmpty(value);
+                        },
+                        message: "请认真填写电话号码",
+                        trigger: ['blur', 'change'],
+                    }
+                ],
+                memberName: [
+                    {
+                        required: true,
+                        message: '请输入名字',
+                        trigger: ['blur', 'change'],
+                    },
+                ],
+                phonenumber: [
+                    {
+                        required: true,
+                        min: 10,
+                        max: 12,
+                        message: '请输入11位电话号码',
+                        trigger: ['blur', 'change'],
+                    },
+                    {
+                        // 此为同步验证,可以直接返回true或者false,如果是异步验证,稍微不同,见下方说明
+                        validator: (rule, value, callback) => {
+                            // 调用uView自带的js验证规则,详见:https://www.uviewui.com/js/test.html
+                            return !this.$isDataEmpty(value);
+                        },
+                        message: "请认真填写电话号码",
+                        trigger: ['blur', 'change'],
+                    }
+                ],
+                smsCode: {
+                    required: true,
+                    min: 4,
+                    max: 6,
+                    message: '请认真填写验证码',
+                    trigger: ['blur', 'change'],
+                },
+
+            },
+        };
+    },
+    onLoad() {
+        // 获取服务条款数据
+        this.getTermOfServiceByType();
+    },
+    onReady() {
+        this.$refs.form1.setRules(this.rules)
+    },
+    methods: {
+        // 关闭签名框
+        closeCanvas() {
+            this.showCanvas = false;
+        },
+        // 选择签名类型
+        personSing(type) {
+            this.showCanvas = true;
+            this.signType = type;
+        },
+        // 保存签名信息
+        saveCanvasImg(path) {
+            console.log(path)
+            let that = this;
+            uni.uploadFile({
+                url: this.$host + '/resource/oss/upload', //仅为示例,非真实的接口地址
+                filePath: path,
+                name: 'file',
+                header: {
+                    'Authorization': 'Bearer ' + that.$store.state.loginState.accessToken,
+                },
+                success: (uploadFileRes) => {
+                    let res = JSON.parse(uploadFileRes.data)
+                    console.log(res)
+                    that.showCanvas = false;
+                }
+            });
+        },
+        codeChange2(text) {
+            this.tips2 = text;
+        },
+        getCode2() {
+            if (this.$refs.uCode2.canGetCode) {
+                this.$api.getSmsCode();
+            } else {
+                uni.$u.toast('倒计时结束后再发送');
+            }
+        },
+        // 获取手机验证码
+        getSmsCode() {
+            let that = this;
+            // 模拟向后端请求验证码
+            uni.showLoading({
+                title: '正在获取验证码'
+            })
+            this.$api.getSmsCode({ data: { phonenumber: this.userInfo.phonenumber, auth: true } }).then((res) => {
+                uni.hideLoading();
+                // 这里此提示会被this.start()方法中的提示覆盖
+                uni.$u.toast('验证码已发送');
+                // 通知验证码组件内部开始倒计时
+                that.$refs.uCode2.start();
+            }).catch(() => {
+                uni.showToast({
+                    title: "操作失败"
+                })
+            });
+        },
+        getStepClass(index) {
+            if (index < this.currentStep) {
+                return 'step';
+            } else if (index === this.currentStep) {
+                return ['step', 'active'];
+            } else {
+                return ['step', 'default'];
+            }
+        },
+        // 查询老会员系统数据
+        getOldMember() {
+            let that = this;
+            this.$api.getOldMember({ data: that.userInfo }).then((res) => {
+                if (!that.$isDataEmpty(res)) {
+                    that.userMemberInfo = res;
+                    that.userInfo.memberNo = res.memberNo;
+                    if (that.currentStep < that.steps.length - 1) {
+                        that.currentStep++;
+                    }
+                    // 查询充值记录
+                    that.$api.getOrderRechargeOldList();
+                } else {
+                    uni.$u.toast('未查询到数据');
+                }
+            }).catch(() => {
+                uni.showToast({
+                    title: "操作失败"
+                })
+            });
+        },
+        // 查询会员消费记录
+        getOrderConsumeLogOld() {
+            let that = this;
+            this.$api.getOrderConsumeLogOld({ data: this.userInfo }).then((res) => {
+                console.log(res)
+                that.memberInfoRecords = res;
+            }).catch(() => {
+                uni.showToast({
+                    title: "操作失败"
+                })
+            });
+        },
+        // 查询叶会员充值记录
+        getOrderRechargeOldList() {
+            this.$api.getOrderRechargeOldList({ data: this.userInfo }).then((res) => {
+                console.log(res)
+                this.memberInfoRecords = res;
+            }).catch(() => {
+                uni.showToast({
+                    title: "操作失败"
+                })
+            });
+        },
+        // 提交保存
+        submitOldData() {
+            let that = this;
+            this.$api.submitOldData(null, { data: that.userInfo }).then((res) => {
+                console.log(res)
+                if (this.currentStep < this.steps.length - 1) {
+                    this.currentStep++;
+                }
+            }).catch(() => {
+                uni.showToast({
+                    title: "操作失败"
+                })
+            });
+        },
+        nextStep(idx) {
+            if (idx == 0) { // 查询数据
+                this.$refs.form1.validate().then(res => {
+                    this.$api.getOldMember();
+                }).catch(errors => {
+                    uni.$u.toast('校验失败,请认真填写')
+                })
+            }
+
+            if (idx == 1) { // 显示查询数据
+                if (this.currentStep < this.steps.length - 1) {
+                    this.currentStep++;
+                }
+            }
+
+            if (idx == 2) { // 用户签名确认
+                this.$api.submitOldData();
+            }
+
+            if (idx == 3) { // 迁移成功,重新设置用户数据
+                // 刷新用户信息
+                this.$refreshUserLoginInfo();
+                uni.navigateTo({
+                    url: '/pages/index/index',
+
+                })
+            }
+        },
+        prevStep() {
+            if (this.currentStep > 0) {
+                this.currentStep--;
+            }
+        },
+        changeTab(tab) {
+            this.currentTab = tab;
+        },
+        // 服务订单
+        changeServiceTab(tab) {
+            if (tab == 'orderTab1') {
+                this.$api.getOrderRechargeOldList();
+            } else if (tab == 'orderTab2') {
+                this.$api.getOrderConsumeLogOld();
+            }
+            this.currentServiceTab = tab;
+        },
+        // 获取服务条款信息
+        getTermOfServiceByType() {
+            // 获取数据
+            this.$api.getTermOfServiceByType({ data: this.userInfo }).then((res) => {
+                if (res.aboutContent) {
+                    this.termOfService.aboutContent = res.aboutContent
+                } else {
+                    this.termOfService.aboutContent = "暂无信息!!!"
+                }
+            }).catch(() => {
+                uni.showToast({
+                    title: "操作失败"
+                })
+            });
+        },
+    }
+};
+</script>
+
+<style scoped lang="scss">
+.h-content-step-end {
+    height: 300px;
+    background: #fff;
+    text-align: center;
+    padding-top: 60px;
+    font-family: PingFangSC-Regular, PingFang SC;
+
+    .h-success {
+        margin: 0 auto;
+        display: flex;
+        justify-content: center;
+        height: 80px;
+        width: 80px;
+        background: #f7fbf3;
+        border-radius: 40px;
+    }
+
+    .h-name {
+        margin-top: 20px;
+        height: 22px;
+        font-size: 14px;
+        font-weight: 400;
+        color: #666666;
+        line-height: 22px;
+    }
+
+    .h-btn {
+        margin: 0 auto;
+        margin-top: 40px;
+        width: 319px;
+        height: 42px;
+        background: #FFE05C;
+        border-radius: 27px;
+        display: flex;
+        justify-content: center;
+        align-items: center;
+        font-size: 14px;
+    }
+}
+
+.letter-commitment {
+    padding: 12px;
+    background: #fff;
+
+    .h-title {
+        text-align: center;
+        font-size: 14px;
+    }
+}
+
+.col-border-2 {
+    margin-top: 12px;
+
+    .sign-wrap {
+        display: flex;
+        justify-content: center;
+        align-items: center;
+        height: 120px;
+        background: #FFFFFF;
+    }
+}
+
+.sign-agree {
+    font-size: 14px;
+    font-weight: 400;
+    color: #666666;
+    line-height: 50px;
+    text-align: center;
+}
+
+.h-content-wrap {
+    background: #fff;
+    padding-left: 12px;
+    padding-right: 12px;
+}
+
+.h-content {
+    margin-bottom: 12px;
+    background-color: #fff;
+
+    .h-basic-info {
+        padding: 12px;
+        background: #fff;
+        border-radius: 6px;
+
+        .h-value {
+            display: flex;
+            font-family: PingFangSC-Regular, PingFang SC;
+            font-size: 14px;
+            font-weight: 400;
+
+            .h-name {
+                width: 56px;
+                height: 22px;
+                color: #999999;
+                line-height: 22px;
+                margin-right: 12px;
+            }
+
+            .h-text {
+                height: 22px;
+                color: #333333;
+                line-height: 22px;
+            }
+        }
+    }
+
+    .h-record {
+        margin-top: 12px;
+
+        /* 服务订单内容*/
+        .service-order-tab-bar {
+            background: #fff;
+            display: flex;
+            justify-content: space-around;
+            height: 50px;
+            background-color: #f5f5f5;
+
+            .service-order-tab-item {
+                flex: 1;
+                display: flex;
+                align-items: center;
+                justify-content: center;
+                font-size: 16px;
+                color: #333;
+                line-height: 26px;
+            }
+
+            .service-order-tab-item.active {
+                color: #ff0000;
+            }
+
+            .underline {
+                border-bottom: 2px solid #ff0000;
+            }
+        }
+    }
+}
+
+.store-order-wrap {
+    padding: 12px;
+
+    .store-order {
+        background: #fff;
+        padding: 10px;
+        border-radius: 3px;
+        font-family: PingFangSC-Regular, PingFang SC;
+
+        .h-content {
+            .h-row {
+                display: flex;
+                justify-content: space-between;
+            }
+
+            .h-text {
+                font-size: 12px;
+                font-weight: 400;
+                color: #999999;
+                line-height: 20px;
+            }
+        }
+    }
+}
+
+.h-footer {
+    text-align: right;
+}
+
+
+
+.signature-wrap {
+    height: 120px;
+    width: 300px;
+}
+
+.step-bar {
+    padding: 12px;
+    display: flex;
+    justify-content: space-between;
+    margin-bottom: 20px;
+}
+
+.step {
+    position: relative;
+    /* width: 100%; */
+    // height: 40px;
+    /* background-color: #ccc; */
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    color: #fff;
+
+    height: 30px;
+    width: 30px;
+    background: green;
+    border-radius: 15px;
+    margin: 0 auto;
+}
+
+//.h-num {
+//    // height: 30px;
+//    // width: 30px;
+//    // background: #fff;
+//    // border-radius: 15px;
+//    // display: flex;
+//    // align-items: center;
+//    // justify-content: center;
+//}
+
+.step.default {
+    color: #333;
+    background: #fff;
+}
+
+.step.active {
+    color: #333;
+    background: #FFE05C;
+}
+
+.separator {
+    position: absolute;
+    top: 50%;
+    left: 130%;
+    transform: translateY(-50%);
+    width: 50px;
+    height: 2px;
+    border: 1px dashed #000;
+}
+
+.form {
+    margin-bottom: 20px;
+    border-radius: 6px;
+}
+
+.button-group {
+    height: 60px;
+    position: fixed;
+    bottom: 0px;
+    left: 0px;
+    right: 0px;
+    display: flex;
+    justify-content: space-between;
+    background: #fff;
+
+    .h-btn {
+        margin: 0 auto;
+        margin-top: 8px;
+        width: 200px;
+        height: 42px;
+        background: #FFE05C;
+        border-radius: 27px;
+        display: flex;
+        justify-content: center;
+        align-items: center;
+        font-size: 14px;
+    }
+}
+
+.identifying-code {
+    image {
+        width: 80px;
+        height: 30px;
+    }
+}
+</style>

+ 332 - 0
myPages/userInfo/index.vue

@@ -0,0 +1,332 @@
+<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.selfPhotoUrl" :src="userInfo.selfPhotoUrl" 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.ncikName" 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 @click="gotoRealNameAuth()" class="arrow-right">
+						<view class="change-store">
+							<text v-if="userInfo.isAttestation">已认证</text>
+							<text v-else>未实名认证,去认证</text>
+						</view>
+						<u-icon name="arrow-right" color="#666" size="16"></u-icon>
+					</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,
+				ncikName: '',
+				sex: '',
+				birthday: '',
+				selfPhoto: '',
+				selfPhotoUrl: '',
+				memberType: '',
+				isAttestation: ''
+			},
+			genderShow: false,
+			dateShow: false,
+			value1: '2023-12-12',
+			// 服务时间
+			genderList: [
+			  [{gender:'男',id:'0'},
+				{gender:'女',id:'1'},
+				{gender:'未知',id:'2'}
+			  ],
+			],
+			imgUrl1: ''
+		};
+	},
+	mounted() {
+	},
+	onLoad() {
+
+		// 用户信息
+		let user = uni.getStorageSync('userInfo')
+		this.userInfo.birthday = user.birthday;
+		this.userInfo.sex = user.sex;
+		this.userInfo.ncikName = user.ncikName;
+		this.userInfo.selfPhoto = user.selfPhoto;
+		this.getImgUrlByOssId(user.selfPhoto)
+		this.userInfo.memberType = user.memberType;
+		this.userInfo.isAttestation = user.isAttestation;
+
+	},
+	methods: {
+
+		// 选择性别
+		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.navigateTo({
+				url: '/pages/member/member-info',
+			})
+		},
+		// 去实名认证
+		gotoRealNameAuth(){
+			uni.navigateTo({
+				url: '/pages/me/real-name-auth',
+			})
+		},
+		// 保存用户信息
+		saveUserInfo(){
+			// 保存数据
+			this.$api.saveUserInfo(null,{data:this.userInfo}).then((res)=>{
+				console.log(res)
+				// 刷新用户信息
+				this.$refreshUserLoginInfo();
+				uni.showToast({
+					title: "操作成功"
+				})
+				uni.navigateTo({
+					url: '/pages/index/tabbar',
+				})
+			}).catch(() =>{
+				uni.showToast({
+					title: "操作失败"
+				})
+			});
+		},
+		async getImgUrlByOssId(Id){
+			let url = await this.$api.getImgUrlByOssId(Id);
+			this.userInfo.selfPhotoUrl = url;
+			return url;
+		},
+		//头像上传
+		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.userInfo.selfPhoto = res.data.ossId
+							that.getImgUrlByOssId(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-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: 32%;
+					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:68%;
+					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;
+						}
+					}
+				}
+			}
+		}
+	}
+
+	.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>

+ 2 - 2
orderPages/serviceObject/index.vue

@@ -27,7 +27,7 @@
 </template>
 
 <script>
-    import {listServiceObject} from '/src/api/object/service-object.js';
+    // import {listServiceObject} from '/src/api/object/service-object.js';
     export default {
         data() {
             return {
@@ -44,7 +44,7 @@
         methods: {
             // 查询服务对接信息列表
             listServiceObject(){
-                listServiceObject(null,{data:this.reqParm}).then((res)=>{
+                this.$api.listServiceObject(null,{data:this.reqParm}).then((res)=>{
                     this.getImgUrlByOssId(res);
                 }).catch(() =>{
                     uni.showToast({

+ 2 - 2
orderPages/serviceTeacher/index.vue

@@ -31,7 +31,7 @@
 </template>
 
 <script>
-    import {serviceWorkPersonList} from '/src/api/goods/goods.js';
+    // import {serviceWorkPersonList} from '/src/api/goods/goods.js';
     export default {
         data() {
             return {
@@ -56,7 +56,7 @@
         methods: {
             // 查询服务工作人员列表
             serviceWorkPersonList(){
-                serviceWorkPersonList({data:this.reqParm}).then((res)=>{
+                this.$api.serviceWorkPersonList({data:this.reqParm}).then((res)=>{
                     this.workPersonList = res.rows;
                 }).catch(() =>{
                     uni.showToast({

+ 50 - 1
pages.json

@@ -2,7 +2,7 @@
 	"easycom": {
 		"^u-(.*)": "uview-ui/components/u-$1/u-$1.vue"
 	},
-	"pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
+	"pages": [
 		{
 			"path": "pages/login/login",
 			"style": {
@@ -200,6 +200,55 @@
 						"navigationBarTitleText": "优惠券",
 						"enablePullDownRefresh": false
 					}
+				},
+				{
+					"path": "realNameAuth/index",
+					"style": {
+						"navigationBarTitleText": "实名认证",
+						"enablePullDownRefresh": false
+					}
+				},
+				{
+					"path": "ServiceObjectManagement/index",
+					"style": {
+						"navigationBarTitleText": "服务对象管理",
+						"enablePullDownRefresh": false
+					}
+				},
+				{
+					"path": "systemSwitch/index",
+					"style": {
+						"navigationBarTitleText": "新老系统切换",
+						"enablePullDownRefresh": false
+					}
+				},
+				{
+					"path": "aboutOur/index",
+					"style": {
+						"navigationBarTitleText": "关于我们",
+						"enablePullDownRefresh": false
+					}
+				},
+				{
+					"path": "TermsOfService/index",
+					"style": {
+						"navigationBarTitleText": ""
+					}
+				},
+				{
+					"path": "userInfo/index",
+					"style": {
+						"navigationBarTitleText": "个人信息",
+						"enablePullDownRefresh": false
+					}
+				},
+				{
+					"path": "setting/index",
+					"style": {
+						"navigationBarTitleText": "设置",
+						"enablePullDownRefresh": false
+					}
+
 				}
 			]
 		},

+ 7 - 9
pages/my/index.vue

@@ -11,7 +11,7 @@
 						<image class="userPhoto" src="/static/logo.png"></image>
 					</view>
 					<view class="userTitle flex-col justify-center">
-						<text class="nickName">用户昵称</text>
+						<text class="nickName">HI,亲爱的{{ userInfo.ncikName }}</text>
 						<view class="flex-row">
 							<text class="xinxTitle">啊擦黄寺大街快乐崇拜哈少得可怜</text>
 							<u-icon name="arrow-right" color="#333333" size="16"></u-icon>
@@ -103,17 +103,15 @@ export default {
 		return {
 			group1:[
 				{thumb:'/static/me/u1796.png',title:'贡献奖励记录',url:'',rightText:'',to:''},
-				{thumb:'/static/me/u1803.png',title:'实名认证',url:'',rightText:'',to:''},
-				{thumb:'/static/me/u1812.png',title:'服务对象管理',url:'',rightText:'',to:''},
-				{thumb:'/static/me/u1833.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/u1833.png',title:'新老系统切换',url:'',rightText:'',to:'/myPages/systemSwitch/index'},
 				{thumb:'/static/me/u826.png',title:'储值服务',url:'',rightText:'',to:'/myPages/recharge/index'}
-
-
 			],
 			group2:[
-				{thumb:'/static/me/u1829.png',title:'关于我们',url:'',rightText:'',to:''},
-				{thumb:'/static/me/u10.png',title:'个人信息',url:'',rightText:'',to:''},
-				{thumb:'/static/me/u101.png',title:'设置',url:'',rightText:'',to:''}
+				{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'}
 			],
 			height:'',
 			title: 'Hello',