index.vue 4.77 KB
<!--
 * @Date: 2023-12-13 11:13:13
 * @LastEditors: hookehuyr hookehuyr@gmail.com
 * @LastEditTime: 2023-12-19 16:57:41
 * @FilePath: /meihuaApp/src/pages/my/index.vue
 * @Description: 文件描述
-->
<template>
  <view>
    <view id="avator" style="position: relative; display: flex; align-items: center; background-color: #3A2013; color: #FFF; padding: 40rpx 0 40rpx 25rpx;">
      <view style="flex: 6; display: flex; align-items: center;">
        <nut-avatar size="60" style="border: 1px solid #fff;">
          <img style="border-radius: 50%;" src="https://img.yzcdn.cn/vant/cat.jpeg" />
        </nut-avatar>
        <text style="margin-left: 30rpx;">阿忆妞妞</text>
      </view>
      <view style="flex: 1;">
        <IconFont name="edit"></IconFont>
      </view>
      <view style="position: absolute; left: 0%; right: 0%; bottom: 0%; height: 20rpx; width: 100%; background-color: #FFF; border-top-left-radius: 20rpx;border-top-right-radius: 20rpx;"></view>
    </view>
    <view>
      <view id="title" style="padding-left: 1.5rem; font-size: 35rpx; font-weight: bold;">我的订单</view>
      <view>
        <nut-tabs v-model="value" title-scroll title-gutter="0" name="tabName" background="#FFF" color="#6A4925" animated-time="0">
          <nut-tab-pane v-for="item in tabList" :title="item.title" :pane-key="item.key">
            <view v-if="showContent" class="book-list">
              <scroll-view ref="refScrollView" :style="scrollStyle" :scroll-y="true" :scroll-with-animation="true" @scrolltolower="onScrollToLower">
                <view v-for="(item, index) in 5" :key="index">
                  <order-card :key="index" @onPay="onPay"></order-card>
                  <view v-if="index === 4" style="height: 2rem;"></view>
                </view>
              </scroll-view>
            </view>
          </nut-tab-pane>
        </nut-tabs>
      </view>
    </view>
    <nut-action-sheet v-model:visible="visible" title="">
      <view style="padding: 2rem 1rem; text-align: center;">
        <view style="font-size: 32rpx;">实付金额</view>
        <view style="color: red; margin: 10rpx 0;"><text style="font-size: 50rpx;">¥</text><text style="font-size: 80rpx;">980</text></view>
        <view style="font-size: 28rpx; margin-bottom: 20rpx;">支付剩余时间 <text style="color: red;">29:59</text></view>
        <nut-button block color="#6A4925" @tap="goToPay">立即支付</nut-button>
      </view>
    </nut-action-sheet>
    <nav-bar activated="my" />
  </view>
</template>

<script setup>
import Taro from '@tarojs/taro'
import { ref } from "vue";
import { IconFont } from '@nutui/icons-vue-taro';
import navBar from '@/components/navBar.vue'
import orderCard from '@/components/orderCard.vue'

const refScrollView = ref(null);

const value = ref('0');
const tabList = ref([{
  title: '全部订单',
  key: '0',
}, {
  title: '待入住',
  key: '1',
}, {
  title: '待支付',
  key: '2',
}, {
  title: '已取消',
  key: '3',
}]);

const visible = ref(false);
const onPay = (id) => {
  visible.value = !visible.value;
  console.warn(id);
  // Taro.showToast({
  //   title: '支付已超时',
  //   icon: 'error',
  //   duration: 2000
  // });
}
const goToPay = () => {
  visible.value = false;
  Taro.navigateTo({
    url: '/pages/payInfo/index?id=123',
  });
}
</script>

<script>
import "./index.less";
import { $ } from '@tarojs/extend'

export default {
  name: "myPage",
  computed: {
    scrollStyle() {
      return {
        height: this.indexCoverHeight + 'px',
        // paddingBottom: 50 + 'px',
      };
    },
  },
  mounted () {
    Taro.showLoading({
      title: '加载中',
    });
    // 设置首页封面高度
    const windowHeight = wx.getSystemInfoSync().windowHeight;
    // 处理切换显示白屏问题
    setTimeout(() => {
      this.showContent = true;
    }, 100);
    // setTimeout(async () => {
    //   const navHeight = await $('#navbar-page').height();
    //   const avatorHeight = await $('#avator').height();
    //   const titleHeight = await $('#title').height();
    //   this.indexCoverHeight = windowHeight - navHeight - avatorHeight - titleHeight - 50;
    // }, 500);
    this.$nextTick(async () => {
      const navHeight = await $('#navbar-page').height();
      const avatorHeight = await $('#avator').height();
      const titleHeight = await $('#title').height();
      this.indexCoverHeight = windowHeight - navHeight - avatorHeight - titleHeight - 50;
      if (this.$refs.refScrollView) {
        Taro.hideLoading();
        console.warn('加载完成');
      }
    });
  },
  data() {
    return {
      showContent: false,
      indexCoverHeight: 0,
    };
  },
  methods: {
    onScrollToLower () {
      // if(!this.flag){
      //   return
      // }
      // this.flag = false;
      // this.getList();
      console.warn('onScrollToLower');
    },
  }
};
</script>