Преглед изворни кода

新老系统切换页面重写

zhanghui пре 2 година
родитељ
комит
8e8e424e39

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

@@ -0,0 +1,144 @@
+.page{
+  background: #F7F7F7;
+}
+.content{
+  width: 750rpx;
+  position: relative;
+}
+.stepImg{
+  width: 592rpx;
+  height: 112rpx;
+  margin-top: 32rpx;
+}
+.formView{
+  width: 638rpx;
+  height: 672rpx;
+  background: #FFFFFF;
+  border-radius: 20rpx;
+  margin-top: 40rpx;
+  padding: 0 24rpx;
+}
+
+.selectButton{
+  width: 686rpx;
+  height: 84rpx;
+  background: #FFE05C;
+  border-radius: 54rpx;
+  text-align: center;
+  font-size: 28rpx;
+  font-weight: 400;
+  color: #333333;
+  line-height: 84rpx;
+  margin-top: 60rpx;
+}
+.userMsg{
+  width: 686rpx;
+  height: 404rpx;
+  background: #FFFFFF;
+  border-radius: 20rpx;
+  margin-top: 40rpx;
+}
+.key{
+  width: 112rpx;
+  font-size: 28rpx;
+  font-weight: 400;
+  color: #999999;
+  margin-left: 24rpx;
+  display: block;
+}
+.value{
+  font-size: 28rpx;
+  font-weight: 400;
+  color: #333333;
+  margin-left: 32rpx;
+}
+.list{
+  margin-top: 24rpx;
+}
+.step2Button{
+  width: 750rpx;
+  background: #FFFFFF;
+}
+.last{
+  width: 240rpx;
+  height: 84rpx;
+  background: #EEEEEE;
+  border-radius: 54rpx;
+  text-align: center;
+  line-height: 84rpx;
+  font-size: 28rpx;
+  font-weight: 400;
+  color: #333333;
+  margin: 24rpx 22rpx 24rpx 32rpx;
+}
+.next{
+  width: 424rpx;
+  height: 84rpx;
+  background: #FFE05C;
+  border-radius: 54rpx;
+  text-align: center;
+  line-height: 84rpx;
+  font-size: 28rpx;
+  font-weight: 400;
+  color: #333333;
+  margin: 24rpx 0;
+}
+.recordView{
+  width: 686rpx;
+  height: 80rpx;
+  background: #FFFFFF;
+  border-radius: 10rpx;
+}
+.selectRecord{
+  width: 335rpx;
+  height: 64rpx;
+  background: #FFE05C;
+  border-radius: 6rpx;
+  text-align: center;
+  font-size: 28rpx;
+  font-weight: 500;
+  color: #333333;
+  line-height: 64rpx;
+  margin-top: 8rpx;
+
+}
+.record{
+  width: 335rpx;
+  height: 64rpx;
+  background: #FFFFFF;
+  border-radius: 6rpx;
+  text-align: center;
+  font-size: 28rpx;
+  font-weight: 500;
+  color: #757A85;
+  line-height: 64rpx;
+  margin-top: 8rpx;
+}
+.successImg{
+  width: 160rpx;
+  height: 160rpx;
+  border-radius: 80rpx;
+  margin-top: 248rpx;
+}
+.successText{
+
+  height: 44rpx;
+  font-size: 28rpx;
+  font-weight: 400;
+  color: #666666;
+  line-height: 44rpx;
+  margin-top: 40rpx;
+
+}
+.endButton{
+  width: 638rpx;
+  height: 84rpx;
+  background: #FFE05C;
+  border-radius: 54rpx;
+  text-align: center;
+  font-size: 28rpx;
+  font-weight: 400;
+  color: #333333;
+  line-height: 84rpx;
+  margin-top: 160rpx;
+}

+ 218 - 826
myPages/systemSwitch/index.vue

@@ -1,834 +1,226 @@
 <template>
-  <view class="container">
-    <view class="step-bar">
-      <view >
-        <view class="h-num">
-          <view class="head-ball" :style="currentStep == 0 ? 'background-color: #fbe362;':'background-color: #91d224;color:#FFFFFF' " >
-            <text>1</text>
-          </view>
-        </view>
-        <view class="">账号查询</view>
-      </view>
-      <view>
-        <u-icon name="more-dot-fill" color="#cccccc" size="28"></u-icon>
-      </view>
-      <view >
-        <view class="h-num">
-          <view class="head-ball" :style="currentStep == 1 ? 'background-color: #fbe362;':(currentStep == 0? 'background-color: #FFFFFF' :'background-color: #91d224;color:#FFFFFF' )  " >
-            <text>2</text>
-          </view>
-        </view>
-        <view class="">信息确认</view>
-      </view>
-      <view>
-        <u-icon name="more-dot-fill" color="#cccccc" size="28"></u-icon>
-      </view>
-      <view >
-        <view class="h-num">
-          <view class="head-ball" :style="currentStep == 2 ? 'background-color: #fbe362;':'background-color: #FFFFFF' " >
-            <text>3</text>
-          </view>
-        </view>
-        <view class="">账号迁移</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>
-          <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 === 2" class="">
-      <view class="h-content-step-end">
-        <view class="h-success">
-          <u-icon name="checkmark" color="#5dac17" size="70"></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(2)" :disabled="currentStep === steps.length - 1">
-        <text>确认并迁移</text>
-      </view>
-    </view>
-  </view>
+	<view class="page flex-row justify-center" :style="{'width':sysWidth,'height':sysHeight}">
+		<view class="content">
+			<swiper :style="{'height':sysHeight}" :duration="0" :current="pageIndex">
+				<swiper-item @touchmove.stop>
+					<view class="flex-row justify-center">
+						<image class="stepImg" src="/static/me/step1.png"></image>
+					</view>
+					<u--form labelPosition="top" :model="userInfo" :rules="rules" ref="uForm" :labelStyle="labelStyle">
+						<view class="flex-row justify-center">
+							<view class="formView flex-col justify-around">
+								<view>
+									<u-form-item labelWidth="auto" label="老系统手机号" prop="phone" borderBottom>
+										<u--input v-model="userInfo.phone" border="none" placeholder="填写老系统电话"></u--input>
+									</u-form-item>
+								</view>
+								<view>
+									<u-form-item labelWidth="auto" label="老系统会员姓名" prop="memberName" borderBottom>
+										<u--input v-model="userInfo.memberName" border="none" placeholder="填写姓名"></u--input>
+									</u-form-item>
+								</view>
+								<view>
+									<u-form-item labelWidth="auto" label="当前手机号" prop="phonenumber" borderBottom>
+										<u--input v-model="userInfo.phonenumber" border="none" placeholder="填写当前手机号"></u--input>
+									</u-form-item>
+								</view>
+								<view>
+									<u-form-item labelWidth="auto" label="验证码" prop="smsCode">
+										<view class="flex-row">
+											<u--input v-model="userInfo.smsCode" border="none" placeholder="请输入验证码"></u--input>
+											<view class="flex-col justify-center" @click="getCode">{{tips}}</view>
+										</view>
+									</u-form-item>
+								</view>
+							</view>
+						</view>
+					</u--form>
+					<view class="flex-row justify-center">
+						<view class="selectButton" @click="selectUserMsg">
+							<text>查询</text>
+						</view>
+					</view>
+					<u-code ref="uCode" @change="codeChange" seconds="60" @start="disabled1 = true" @end="disabled1 = false"></u-code>
+				</swiper-item>
+				<swiper-item @touchmove.stop>
+
+					<scroll-view scroll-y="true" class="scroll-Y" :style="{'height':scrollHeight}">
+						<view class="flex-row justify-center">
+							<image class="stepImg" src="/static/me/step2.png"></image>
+						</view>
+						<view class="flex-row justify-center">
+							<view class="userMsg flex-col justify-around">
+								<view class="flex-row"><text class="key">会员姓名</text><text class="value">张三</text></view>
+								<view class="flex-row"><text class="key">手机号码</text><text class="value">17365224542</text></view>
+								<view class="flex-row"><text class="key">会员卡号</text><text class="value">SSS000001</text></view>
+								<view class="flex-row"><text class="key">会员编号</text><text class="value">SSS000001</text></view>
+								<view class="flex-row"><text class="key">积分</text><text class="value">366666</text></view>
+								<view class="flex-row"><text class="key">账户余额</text><text class="value">¥22222</text></view>
+								<view class="flex-row"><text class="key">赠送余额</text><text class="value">¥22222</text></view>
+							</view>
+						</view>
+						<view class="list" :style="{'height':scrollHeight}">
+							<view class="flex-row justify-center">
+								<view class="flex-row justify-center  recordView">
+									<view :class="recordIndex === 0? 'selectRecord':'record'" @click="clickRecord(0)">
+										<text>充值记录</text>
+									</view>
+									<view :class="recordIndex === 1? 'selectRecord':'record'" @click="clickRecord(1)">
+										<text>消费记录</text>
+									</view>
+								</view>
+							</view>
+							<swiper :style="{'height':swiperHeight}" :current="recordIndex"
+								@change="recordSwiperChange">
+								<swiper-item v-for="(item,index) in 2" :key="index">
+									<mescroll-item ref="MescrollItem" :i="index" :index="recordIndex"
+										:height="swiperHeight">
+									</mescroll-item>
+								</swiper-item>
+							</swiper>
+						</view>
+					</scroll-view>
+					<view class="step2Button flex-row">
+						<view class="last" @click="lastStep"><text>上一步</text></view>
+						<view class="next" @click="migration"><text>下一步</text></view>
+					</view>
+				</swiper-item>
+				<swiper-item @touchmove.stop>
+					<view class="flex-row justify-center">
+						<image class="stepImg" src="/static/me/step3.png"></image>
+					</view>
+					<view class="flex-row justify-center">
+						<image class="successImg" src="/static/me/success.png"></image>
+					</view>
+					<view class="flex-row justify-center successText">
+						<text>账户迁移成功</text>
+					</view>
+					<view class="flex-row justify-center ">
+						<view class="endButton" @click="migrationEnd">
+							<text>确认</text>
+						</view>
+					</view>
+				</swiper-item>
+			</swiper>
+
+
+		</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: '18231041846',
-        memberName: '赵梓熠-测试',
-        phonenumber: '18231041846',
-        smsCode: '',
-        memberNo: "18902",
-        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'],
-        // },
-      },
-
-    };
-  },
-  computed: {
-    itemObject(num) {
-      return (num) => ({
-        backgroundColor: item.background,
-        gridColumnStart: item.columnStart,
-        gridColumnEnd: item.columnEnd,
-        gridRowStart: item.rowStart,
-        gridRowEnd: item.rowEnd
-      })
-    }
-  },
-
-  onLoad() {
-    // 获取服务条款数据
-    // this.getTermOfServiceByType();
-  },
-
-  onUnload() {
-    if (this.timer) {
-      clearTimeout(this.timer);
-      this.timer = null;
-    }
-  },
-
-  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.getSmsCode();
-      } else {
-        uni.$u.toast('倒计时结束后再发送');
-      }
-    },
-    // 获取手机验证码
-    getSmsCode() {
-      // 模拟向后端请求验证码
-      uni.showLoading({
-        title: '正在获取验证码'
-      })
-      this.$api.getSmsCode({phonenumber: this.userInfo.phone, auth: true}).then((res) => {
-        uni.hideLoading();
-        // 这里此提示会被this.start()方法中的提示覆盖
-        uni.$u.toast('验证码已发送');
-        // 通知验证码组件内部开始倒计时
-        this.$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() {
-      // this.$api.getOldMember(this.userInfo).then((res) => {
-      //   if (!!res) {
-      //     this.userMemberInfo = res.data.data;
-      //     this.userInfo.memberNo = res.data.data.memberNo;
-      //   } else {
-      //     uni.$u.toast('未查询到数据');
-      //   }
-        // 查询充值记录
-        this.getOrderRechargeOldList();
-
-        this.timer = setTimeout(() => {
-          if (this.currentStep < this.steps.length - 1) {
-            this.currentStep++;
-          }
-        }, 0)
-      // }).catch((res) => {
-      //   uni.showToast({
-      //     title: "操作失败"
-      //   })
-      // });
-    },
-    // 查询会员消费记录
-    getOrderConsumeLogOld() {
-      this.$api.getOrderConsumeLogOld(this.userInfo).then((res) => {
-        this.memberInfoRecords = res.data.data;
-      }).catch(() => {
-        uni.showToast({
-          title: "操作失败"
-        })
-      });
-    },
-    // 查询叶会员充值记录
-    getOrderRechargeOldList() {
-      this.$api.getOrderRechargeOldList(this.userInfo).then((res) => {
-        this.memberInfoRecords = res.data.data;
-      }).catch(() => {
-        uni.showToast({
-          title: "操作失败"
-        })
-      });
-    },
-    // 提交保存
-    submitOldData() {
-      console.log(this.userInfo.memberNo)
-      this.userInfo.memberNo = '18902'
-      this.$api.submitOldData(this.userInfo).then((res) => {
-        console.log(res)
-        if (this.currentStep < this.steps.length - 1) {
-          this.currentStep++;
-        }
-      }).catch(() => {
-        uni.showToast({
-          title: "操作失败"
-        })
-      });
-    },
-    nextStep(idx) {
-      if (idx == 0) { // 查询数据
-        console.log(this.$refs.form1.validate(), '2222222222')
-        this.$refs.form1.validate().then(res => {
-          this.getOldMember();
-        }).catch(errors => {
-          uni.$u.toast('校验失败,请认真填写')
-        })
-      }
-
-      if (idx == 1) { // 显示查询数据
-        if (this.currentStep < this.steps.length - 1) {
-          this.currentStep++;
-        }
-      }
-
-      if (idx == 2) { // 用户签名确认
-        this.submitOldData();
-      }
-
-      if (idx == 3) { // 迁移成功,重新设置用户数据
-        uni.switchTab({
-          url: '/pages/index/index',
-        })
-      }
-    },
-    prevStep() {
-      if (this.currentStep > 0) {
-        this.currentStep--;
-      }
-    },
-    changeTab(tab) {
-      this.currentTab = tab;
-    },
-    // 服务订单
-    changeServiceTab(tab) {
-      if (tab == 'orderTab1') {
-        this.getOrderRechargeOldList();
-      } else if (tab == 'orderTab2') {
-        this.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: "操作失败"
-        })
-      });
-    },
-  }
-};
+	import MescrollItem from "./module/mescrollUni-item.vue";
+	export default {
+		components: {
+			MescrollItem
+		},
+		data() {
+			return {
+				pageIndex: 0,
+				sysWidth: '',
+				sysHeight: '',
+				scrollHeight: '',
+				swiperHeight: '',
+				recordIndex: 0,
+				userInfo: {},
+				labelStyle: {
+					fontSize: '28rpx',
+					color: '#333333',
+					fontWeight: 'bold'
+				},
+
+				tips: '',
+				rules: {
+					phone: {
+						type: 'string',
+						required: true,
+						message: '请输入11位电话号码',
+						trigger: ['blur', 'change']
+					},
+					memberName: {
+						type: 'string',
+						min: 1,
+						required: true,
+						message: '请输入名字',
+						trigger: ['blur', 'change']
+					},
+					phonenumber: {
+						type: 'string',
+						min: 11,
+						max: 11,
+						required: true,
+						message: '请输入11位电话号码',
+						trigger: ['blur', 'change']
+					},
+					smsCode: {
+						type: 'string',
+						min: 4,
+						max: 6,
+						required: true,
+						message: '请输入验证码',
+						trigger: ['blur', 'change']
+					},
+				},
+			};
+		},
+		onLoad() {
+			let sysInfo = uni.getSystemInfoSync()
+			this.sysWidth = sysInfo.windowWidth + 'px'
+			this.sysHeight = sysInfo.windowHeight + 'px'
+			this.scrollHeight = sysInfo.windowHeight - (sysInfo.windowWidth / 750) * 132 + 'px'
+			this.swiperHeight = (750 / sysInfo.windowWidth) * sysInfo.windowHeight - 80 - 132 + 'rpx'
+		},
+
+		methods: {
+
+
+			selectUserMsg() {
+				//查询个人信息 todo
+				this.pageIndex = 1
+			},
+			lastStep() {
+				this.pageIndex = 0
+			},
+			migration() {
+				//数据迁移 todo
+				this.pageIndex = 2
+			},
+			migrationEnd() {
+				uni.switchTab({
+					url: '/pages/my/index'
+				})
+			},
+			recordSwiperChange(e) {
+				this.recordIndex = e.detail.current
+			},
+			clickRecord(num) {
+				this.recordIndex = num
+			},
+			codeChange(text) {
+				this.tips = text;
+			},
+			getCode() {
+				if (this.$refs.uCode.canGetCode) {
+					// 模拟向后端请求验证码
+					uni.showLoading({
+						title: '正在获取验证码'
+					})
+					setTimeout(() => {
+						uni.hideLoading();
+						// 这里此提示会被this.start()方法中的提示覆盖
+						uni.$u.toast('验证码已发送');
+						// 通知验证码组件内部开始倒计时
+						this.$refs.uCode.start();
+					}, 2000);
+				} else {
+					uni.$u.toast('倒计时结束后再发送');
+				}
+			},
+		}
+
+	};
 </script>
 
 <style scoped lang="scss">
-.h-content-step-end {
-  height: 300px;
-  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;
-  border-radius: 20rpx;
-  padding-left: 12px;
-  padding-right: 12px;
-}
-
-.h-content {
-  margin-bottom: 12px;
-  background-color: #fff;
-
-  .h-basic-info {
-    padding: 12px;
-    background: whitesmoke;
-    border-radius: 6px;
-    margin: 20rpx;
-    .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: 24rpx;
-
-    /* 服务订单内容*/
-    .service-order-tab-bar {
-      background: #FAFAFA;
-      display: flex;
-      justify-content: space-around;
-      height: 50px;
-
-
-      .service-order-tab-item {
-        flex: 1;
-        display: flex;
-        align-items: center;
-        justify-content: center;
-        font-size: 16px;
-        color: #333;
-        line-height: 26px;
-        margin: 10rpx;
-        border-radius: 10rpx;
-      }
-
-      .service-order-tab-item.active {
-        background-color: #fbe262;
-
-      }
-
-
-    }
-  }
-}
-
-.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 {
-  margin: 0 auto;
-}
-
-.head-ball {
-  transform: translateX(50%);
-  width: 60rpx;
-  height: 60rpx;
-  line-height: 60rpx;
-  border-radius: 30rpx;
-  background-color: #fbe362;
-  text-align: 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;
-  }
-}
+	@import './index.rpx.scss';
 </style>

+ 25 - 0
myPages/systemSwitch/module/index.rpx.css

@@ -0,0 +1,25 @@
+.layOut1{
+    width: 686rpx;
+    height: 190rpx;
+    margin-left: 32rpx;
+    border-bottom: 2px solid #EEEEEE;
+}
+.layOut2{
+    width: 686rpx;
+    height: 156rpx;
+    margin-left: 32rpx;
+    border-bottom: 2px solid #EEEEEE;
+}
+.boldText{
+    font-size: 28rpx;
+    font-weight: 400;
+    color: #333333;
+    margin-top: 32rpx;
+}
+.noBoldText{
+    font-size: 24rpx;
+    font-weight: 400;
+    color: #999999;
+    margin-top: 18rpx;
+}
+

+ 166 - 0
myPages/systemSwitch/module/mescrollUni-item.vue

@@ -0,0 +1,166 @@
+<template>
+	<!--
+    swiper中的transfrom会使fixed失效,此时用height固定高度;
+    swiper中无法触发mescroll-mixins.js的onPageScroll和onReachBottom方法,只能用mescroll-uni,不能用mescroll-body
+    -->
+	<!-- ref动态生成: 字节跳动小程序编辑器不支持一个页面存在相同的ref (如不考虑字节跳动小程序可固定值为 ref="mescrollRef") -->
+	<!-- top的高度等于悬浮菜单tabs的高度 -->
+	<mescroll-uni :ref="'mescrollRef' + i" @init="mescrollInit" :height="height" :down="downOption" @down="downCallback"
+		:up="upOption" @up="upCallback" @emptyclick="emptyClick">
+			<view v-if="index === 0">
+				<view class="flex-col layOut1" v-for="i in 10">
+					<view class="flex-row justify-between">
+						<text class="boldText">储值记录</text>
+						<text class="boldText">+&nbsp;&nbsp;&nbsp;¥2014.12</text>
+					</view>
+					<view class="flex-row justify-between">
+						<text class="noBoldText">2023-12-05 15:30:20</text>
+					</view>
+					<view class="flex-row justify-between">
+						<text class="noBoldText">赠送金额:¥200.22</text>
+						<text class="noBoldText">账户余额:¥200.22</text>
+					</view>
+				</view>
+			</view>
+
+			<view  v-if="index === 1">
+				<view class="flex-col layOut2" v-for="i in 10">
+					<view class="flex-row justify-between">
+						<text class="boldText">消费记录</text>
+						<text class="boldText">-&nbsp;&nbsp;&nbsp;¥2014.12</text>
+					</view>
+					<view class="flex-row justify-between">
+						<text class="noBoldText">2023-12-05 15:30:20</text>
+						<text class="noBoldText">账户余额:¥200.22</text>
+					</view>
+				</view>
+			</view>
+
+	</mescroll-uni>
+</template>
+
+<script>
+	import MescrollMixin from "@/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js";
+	import MescrollMoreItemMixin from "@/uni_modules/mescroll-uni/components/mescroll-uni/mixins/mescroll-more-item.js"
+	export default {
+		mixins: [MescrollMixin, MescrollMoreItemMixin], // 注意此处还需使用MescrollMoreItemMixin (必须写在MescrollMixin后面)
+		components: {},
+
+		data() {
+			return {
+				downOption: {
+					auto: false // 不自动加载 (mixin已处理第一个tab触发downCallback)
+				},
+				upOption: {
+					auto: false, // 不自动加载
+					// page: {
+					// 	num: 0, // 当前页码,默认0,回调之前会加1,即callback(page)会从1开始
+					// 	size: 10 // 每页数据的数量
+					// },
+					noMoreSize: 4, //如果列表已无数据,可设置列表的总数量要大于半页才显示无更多数据;避免列表数据过少(比如只有一条数据),显示无更多数据会不好看; 默认5
+					empty: {
+						icon: '/static/imageIcon/empty.png',
+						tip: '暂无内容', // 提示
+						// btnText: '去看看'
+					},
+					textNoMore: '没有更多了'
+				},
+				list: [],
+
+			}
+		},
+		props: {
+			i: Number, // 每个tab页的专属下标 (除了支付宝小程序必须在这里定义, 其他平台都可不用写, 因为已在MescrollMoreItemMixin定义)
+			index: { // 当前tab的下标 (除了支付宝小程序必须在这里定义, 其他平台都可不用写, 因为已在MescrollMoreItemMixin定义)
+				type: Number,
+				default () {
+					return 0
+				}
+			},
+			dataTime: {
+				type: String,
+				default () {
+					return ''
+				}
+			},
+
+			tabs: { // 为了请求数据,演示用,可根据自己的项目判断是否要传
+				type: Array,
+				default () {
+					return []
+				}
+			},
+			height: [Number, String], // mescroll的高度
+
+		},
+		watch: {
+
+		},
+
+		created() {
+
+		},
+
+
+		methods: {
+
+			/*下拉刷新的回调 */
+			downCallback() {
+				// 这里加载你想下拉刷新的数据, 比如刷新轮播数据
+				// loadSwiper();
+				// 下拉刷新的回调,默认重置上拉加载列表为第一页 (自动执行 page.num=1, 再触发upCallback方法 )
+				this.mescroll.resetUpScroll()
+			},
+			/*上拉加载的回调: 其中page.num:当前页 从1开始, page.size:每页数据条数,默认10 */
+			upCallback(page) {
+
+				let status = this.index
+				if (this.index === 3){
+					status = 4
+				}
+
+				//联网加载数据
+				let httpData = {
+					pageNum: page.num,
+					pageSize: 10,
+					orderType:'SERVICE',
+					status:status
+				}
+
+				this.$api.getOrderList(httpData).then((res) => {
+					//联网成功的回调,隐藏下拉刷新和上拉加载的状态;
+					this.mescroll.endSuccess(res.data.rows.length, res.data.rows.length === 10);
+					//设置列表数据
+					if (page.num === 1) this.list = []; //如果是第一页需手动制空列表
+					this.list = this.list.concat(res.data.rows); //追加新数据
+					console.log(this.list)
+				}).catch((err) => {
+					//联网失败, 结束加载
+					this.mescroll.endErr();
+				})
+
+
+			},
+
+
+
+			//点击空布局按钮的回调
+			emptyClick() {
+				uni.showToast({
+					title: '点击了按钮,具体逻辑自行实现'
+				})
+			},
+			// 搜索
+			doSearch() {
+				this.list = []; // 先清空列表,显示加载进度
+				this.mescroll.resetUpScroll();
+			},
+
+
+
+		}
+	}
+</script>
+<style>
+	@import './index.rpx.css';
+</style>

BIN
static/me/step1.png


BIN
static/me/step2.png


BIN
static/me/step3.png


BIN
static/me/success.png