account.vue 3.1 KB
<template>
  <u-navbar title="账户设置" :autoBack="true" bgColor="#fff" placeholder safeAreaInsetTop :titleStyle="{ color: '#000' }" leftIconColor="#000"></u-navbar>
  <u-cell-group>
    <template v-for="_ in accountList">
      <!-- <u-cell
        :title="_.title + _.account"
        :isLink="true"
        @click="
          () => {
            bindAccountModalState = true
            bindAccountModalTitle = _.title
            flag = _.flag
            nameFlag = _.nameFlag
          }
        "
      ></u-cell> -->
      <u-cell :title="_.title + _.account" :isLink="true" @click="proxy.$h.jumpUrl(proxy.$h.setObjToUrlParams(_.url, _))"></u-cell>
    </template>
  </u-cell-group>
  <u-modal :show="bindAccountModalState" :title="''" @confirm="bindAccountHandler" @cancel="bindAccountModalState = false" showCancelButton confirmText="确认绑定">
    <view>
      <u-input :placeholder="`请输入${bindAccountModalTitle}`" border="surround" v-model="params[flag]" style="margin-bottom: 16rpx"></u-input>
      <u-input :placeholder="`请输入真实姓名`" border="surround" v-model="params[nameFlag]"></u-input>
    </view>
  </u-modal>
</template>

<script lang="ts" setup>
import { ref, getCurrentInstance, ComponentPublicInstance } from 'vue'
import { onShow } from '@dcloudio/uni-app'
import { updateBindUserCard, getUserCard } from '../../api'
import { BindUserCardType, GetUserCardType } from '../../types'

const { proxy } = getCurrentInstance() as { proxy: ComponentPublicInstance }

const params = ref<BindUserCardType>({
  wxUserName: '',
  aliUserName: '',
  doctorRealName: '',
  doctorWXRealName: ''
})

const userCard = ref<GetUserCardType>()

const flag = ref<string>('')

const nameFlag = ref<string>('')

const bindAccountModalState = ref<boolean>(false)

const bindAccountModalTitle = ref<string>('')

const accountList = ref([
  { account: '', title: '微信账户', nameFlag: 'doctorWXRealName', url: '/pages2/money/addAccount', flag: 'wxUserName' },
  { account: '', title: '支付宝账户', nameFlag: 'doctorRealName', url: '/pages2/money/addAccount', flag: 'aliUserName' }
])

onShow(() => {
  getUserCardHandler()
})

const getUserCardHandler = async () => {
  const { result }: { result: GetUserCardType } = await getUserCard()

  userCard.value = result

  if (![null, undefined, ''].includes(result.wxUserName)) {
    accountList.value[0].account = `:${result.wxUserName as string}`
  }

  if (![null, undefined, ''].includes(result.aliUserName)) {
    accountList.value[1].account = `:${result.aliUserName as string}`
  }
}

const bindAccountHandler = async () => {
  if ((flag.value === 'wxUserName' && params.value.wxUserName === '') || (flag.value === 'aliUserName' && params.value.aliUserName === '')) return uni.$u.toast('请输入账户信息')

  if ((flag.value === 'wxUserName' && params.value.doctorWXRealName === '') || (flag.value === 'aliUserName' && params.value.doctorRealName === '')) return uni.$u.toast('请输入真实姓名')

  await updateBindUserCard({ [flag.value]: params.value[flag.value].replace(/\s/g, ''), [nameFlag.value]: params.value[nameFlag.value] })

  bindAccountModalState.value = false

  proxy.$h.timeCallBack('绑定成功')
}
</script>