import { Button, Cell, Icon, Image, Popup, showConfirmDialog, Toast } from 'vant'
import { defineComponent } from 'vue'
import styles from './index.module.less'
import request from '@/helpers/request'
import { setLogin, state } from '@/state'
import iconStudent from '@common/images/icon_student.png'
import iconTeacher from '@common/images/icon_teacher.png'
import iconDiscount from './images/icon_discount.png'
import iconMemberLogo from './images/member_logo.png'
// import { orderStatus } from '@/views/order-detail/orderStatus'
import dayjs from 'dayjs'
import { memberType } from '@/constant'
import { moneyFormat } from '@/helpers/utils'
import OHeader from '@/components/o-header'
import member1 from './images/member-1.png'
import member2 from './images/member-2.png'
import member3 from './images/member-3.png'
import iconQuestion from './images/icon-question.png'
import ODialog from '@/components/o-dialog'

export const getAssetsHomeFile = (fileName: string) => {
  const path = `./images/${fileName}`
  const modules = import.meta.globEager('./images/*')
  return modules[path].default
}

export default defineComponent({
  name: 'MemberCenter',
  data() {
    const query = this.$route.query
    return {
      functionList: [] as any,
      selectMember: {} as any,
      users: {} as any,
      memberStatus: false,
      paymentType: ''
    }
  },
  computed: {
    userInfo() {
      const users: any = this.users

      return {
        username: users?.nickname || '',
        phone: users?.phone || '',
        avatar: users?.avatar,
        id: users?.id,
        isVip: users?.vipMember,
        membershipDays: users?.membershipDays,
        membershipEndTime: users?.membershipEndTime
      }
    }
  },
  async mounted() {
    try {
      const userInfo = await request.get('/api-student/student/member')
      this.users = userInfo.data || {}

      const { data } = await request.post(`/api-student/cityFeeSetting/member`)
      this.selectMember = data

      this.sysParamConfig()
      this.paymentOrderUnpaid()
    } catch {
      //
    }
    //
  },
  methods: {
    // 获取支付渠道
    async sysParamConfig() {
      try {
        const { data } = await request.get('/api-student/sysParamConfig/queryByParamName', {
          params: {
            paramName: 'vip_payment_service_provider'
          }
        })
        this.paymentType = data.paramValue || ''
      } catch {
        //
      }
    },
    // 查询未支付订单
    async paymentOrderUnpaid() {
      try {
        const { data } = await request.get('/api-student/userPaymentOrder/unpaid', {
          requestType: 'form',
          params: {
            paymentType: 'VIP'
          }
        })
        // 判断是否有待支付订单
        if (data.id) {
          showConfirmDialog({
            message: '您有待支付的订单,是否继续支付',
            cancelButtonText: '取消订单',
            confirmButtonText: '继续支付'
          })
            .then(() => {
              const paymentConfig = data.paymentConfig
              this.$router.push({
                path: '/orderDetail',
                query: {
                  // config: JSON.stringify(paymentConfig.paymentConfig),
                  config: JSON.stringify({
                    ...paymentConfig.paymentConfig,
                    paymentType: paymentConfig.paymentType
                  }),
                  orderNo: paymentConfig.orderNo
                }
              })
            })
            .catch(async () => {
              try {
                await request.post('/api-student/userPaymentOrder/cancelPayment/' + data.orderNo)
              } catch {
                //
              }
            })
        }
      } catch {
        //
      }
    },
    calcSalePrice(item: any) {
      // discount
      if (item.discount === 1) {
        const tempPrice = Number((item.salePrice - item.discountPrice).toFixed(2))
        return tempPrice >= 0 ? tempPrice : 0
      }
      return item.salePrice
    },
    // 购买
    async onSubmit() {
      try {
        const selectMember = this.selectMember
        const params: any = [
          {
            goodsId: selectMember.id,
            goodsNum: 1,
            goodsType: 'VIP',
            paymentCashAmount: selectMember.salePrice, // 现金支付金额
            paymentCouponAmount: 0 // 优惠券金额
          }
        ] // 支付参数

        // 创建订单
        const { data } = await request.post('/api-student/userPaymentOrder/executeOrder', {
          data: {
            paymentType: this.paymentType,
            orderType: 'VIP',
            paymentCashAmount: this.selectMember.salePrice || 0,
            paymentCouponAmount: 0,
            goodsInfos: params,
            orderName: '团练宝购买',
            orderDesc: '团练宝购买'
          }
        })

        console.log(data)
        const res = await request.get('/api-student/userPaymentOrder/detail/' + data.orderNo)
        if (res.data.status !== 'WAIT_PAY' && res.data.status !== 'PAYING') {
          this.$router.push({
            path: '/payment-result',
            query: {
              orderNo: data.orderNo
            }
          })
        } else {
          this.$router.push({
            path: '/orderDetail',
            query: {
              // config: JSON.stringify(data.paymentConfig),
              config: JSON.stringify({
                ...data.paymentConfig,
                paymentType: data.paymentType
              }),
              orderNo: data.orderNo
            }
          })
        }
      } catch (e: any) {
        //
        console.log(e)
      }
    }
  },
  render() {
    return (
      <div class={styles['member-center']}>
        <OHeader background="#ffe5cc" border={false} />
        <div class={styles.member_container}>
          <Cell
            class={[
              styles.userMember,
              this.users.purchaseMemberRecord ? styles.purchaseMember : ''
            ]}
            labelClass={styles.timeRemaining}
            center
            v-slots={{
              icon: () => (
                <div class={styles.userImgSection}>
                  <Image
                    class={styles.userImg}
                    src={this.userInfo.avatar || iconStudent}
                    fit="cover"
                  />
                </div>
              ),
              title: () => (
                <div class={styles.userInfo}>
                  <span class={styles.name}>{this.userInfo.username}</span>
                  {!!this.userInfo.isVip && (
                    <Image
                      class={styles.level}
                      src="https://oss.dayaedu.com/daya/202107/ScSTL1D.png"
                    />
                  )}
                  {this.userInfo.phone && (
                    <span class={styles.phone} v-html={`（${this.userInfo.phone}）`}></span>
                  )}
                </div>
              ),
              label: () => (
                <div class={styles.member_time}>
                  {this.userInfo.membershipDays > 0 ? (
                    <div>
                      乐团Ai学练工具有效期剩余
                      <span class={styles.remaining}>{this.userInfo.membershipDays}</span>天
                    </div>
                  ) : this.users.purchaseMemberRecord ? (
                    <div class={styles.beforeQuestion}>
                      <Icon
                        name={iconQuestion}
                        class={styles.iconQeustion}
                        onClick={() => (this.memberStatus = true)}
                      />
                      您有<span>待激活</span>乐团Ai学练工具
                    </div>
                  ) : (
                    <div>亲，您还不是会员哟</div>
                  )}
                </div>
              )
            }}
          ></Cell>
        </div>

        <div
          class={[
            styles.memberContainer,
            this.users.purchaseMemberRecord ? styles.beforMemberContainer : ''
          ]}
        >
          <div class={styles.memberItem}>
            {/* <div class={styles.title}>
              会员<span>VIP</span>
            </div> */}

            {!this.users.purchaseMemberRecord ? (
              <div class={styles['system-list']}>
                <div class={[styles['system-item'], styles.active]}>
                  <p class={[styles.title, 'van-hairline--bottom']}>
                    乐团Ai学练工具
                    <span>（6个月）</span>
                  </p>
                  <div class={styles.priceGroup}>
                    <p class={styles.price}>
                      <span>￥</span>
                      {moneyFormat(this.selectMember.salePrice)}
                    </p>
                    <del class={styles.originalPrice}>
                      ￥{moneyFormat(this.selectMember.originalPrice)}
                    </del>
                  </div>
                </div>
              </div>
            ) : (
              ''
            )}
          </div>
          <div class={styles.memberImgs}>
            <img src={member1} />
            <img src={member2} />
            {/* <img src={member3} /> */}
          </div>

          {/* <div class={[styles.intro]}>
            <p>
              团练宝会员使用包括平台提供教材的所有训练乐谱，并专享“乐器练习云教练”八大核心功能，孩子在家就能轻松完成乐器自主规范练习。
            </p>
          </div>

          <div class={styles.memberItem}>
            <div class={styles.title}>会员功能</div>

            <div class={styles.member_function}>
              {this.functionList.map((item: any) => (
                <div class={styles.function_item}>
                  <Icon name={item.icon} size={34} />
                  <div class={styles.function_text} v-html={item.title}></div>
                </div>
              ))}
            </div>
          </div> */}
        </div>
        {!this.users.purchaseMemberRecord ? (
          <div class={styles.btnGroup}>
            <div class={styles.priceSection}>
              支付金额：
              <div class={styles.price}>
                <span class={styles.priceUnit}>￥</span>
                <span class={styles.priceNum}>
                  {moneyFormat(this.calcSalePrice(this.selectMember) || 0)}
                </span>
              </div>
              {this.selectMember?.discount == 1 && (
                <div class={[styles.discountItem, styles.discountBuy]}>
                  <img src={iconDiscount} />
                </div>
              )}
            </div>
            {this.userInfo.id ? (
              <Button
                color="linear-gradient(220deg, #DFA164 0%, #FAC87E 100%)"
                round
                class={styles.btn}
                onClick={this.onSubmit}
              >
                {this.userInfo.isVip ? '立即续费' : '立即开通'}
              </Button>
            ) : (
              ''
            )}
          </div>
        ) : (
          ''
        )}
        {/*  */}

        <ODialog
          v-model:show={this.memberStatus}
          title="待激活团练宝"
          message="为让团员有效使用乐团学习工具，首次加入乐团且购买团练宝的团员，团练宝的生效时间为乐团首次训练之日，具体训练时间可查看课表。"
          messageAlign="left"
          dialogMarginTop="env(safe-area-inset-top)"
          confirmButtonText="我知道了"
        />
      </div>
    )
  }
})
