作者 韩昌

gaibug

... ... @@ -4,7 +4,12 @@
<view class="imtopinfo">
<view class="flexJ">
<view class="flexA">
<image :src="proxy.$h.downFile(detailData?.doctor?.avatar)" @click="proxy.$h.previewImage(proxy.$h.downFile(detailData?.doctor?.avatar))" class="imtopinfo-avatar" mode="aspectFill" />
<image
:src="![null, undefined, ''].includes(detailData?.doctor?.avatar) ? proxy.$h.downFile(detailData?.doctor?.avatar) : '/static/images/mAvatar.png'"
@click="proxy.$h.previewImage(proxy.$h.downFile(detailData?.doctor?.avatar))"
class="imtopinfo-avatar"
mode="aspectFill"
/>
<view class="imtopinfo-username">{{ detailData?.doctor?.nickname }}</view>
<template v-if="history === 'err'">
<u-count-down :time="countdownTime * 1000" format="HH:mm:ss" @finish="finishCountDownHandler"></u-count-down>
... ...
... ... @@ -286,7 +286,7 @@ const getMessageDataHandler = async () => {
showRedDotNumber.value = result.userCount + result.xufangCount + result.sysCount
if (messageNumber.value === 0 || ![20].includes(authState.value)) return
if ([null, undefined, 0, ''].includes(messageNumber.value) || ![20].includes(authState.value)) return
showMessageState.value = true
}
... ...
... ... @@ -18,7 +18,7 @@
<view class="flexA" style="margin-bottom: 10rpx">
<view class="flexA" style="font-size: 24rpx; color: #666">
{{ UserInfo?.introduction || '修改简历、特长等资料' }}
<u-icon name="edit-pen-fill"></u-icon>
<image src="/static/images/edit.png" mode="scaleToFill" style="width: 30rpx; height: 30rpx" />
</view>
</view>
<view class="flexW">
... ... @@ -42,12 +42,12 @@
</view>
<view class="mine-income">
<image src="/static/images/incomeBg.png" mode="aspectFill" />
<image class="bg" src="/static/images/incomeBg.png" mode="aspectFill" />
<view class="flexJ Zindex">
<view>
<view class="flexA" style="margin-bottom: 22rpx">
<view class="mine-ictitle">我的收入</view>
<u-icon :name="isShowMoney ? 'eye' : 'eye-off'" color="#fff" size="22" @click="isShowMoney = !isShowMoney"></u-icon>
<image :src="isShowMoney ? '/static/images/show.png' : '/static/images/hidden.png'" mode="scaleToFill" style="width: 44rpx; height: 44rpx" @click="isShowMoney = !isShowMoney" />
</view>
<u-count-to v-if="isShowMoney" :endVal="UserInfo?.income || 0" separator="," duration="1000" color="#fff" fontSize="22" decimals="2" bold></u-count-to>
<view v-else class="mine-hiddenMoney">*****</view>
... ... @@ -260,7 +260,7 @@ onPageScroll(({ scrollTop }) => {
box-sizing: border-box;
padding: 28rpx 32rpx;
margin-bottom: 22rpx;
image {
.bg {
width: 100%;
height: 100%;
position: absolute;
... ...
... ... @@ -427,7 +427,7 @@ onShow(() => {
position: relative;
position: absolute;
top: 8rpx;
right: 20rpx;
right: 30rpx;
width: 40rpx;
height: 40rpx;
border-radius: 50%;
... ...
... ... @@ -4,7 +4,7 @@
<u-icon name="close" size="22" color="#000"></u-icon>
</view>
<view class="phone-title">{{ Event?.type === 'editpassword' ? '修改密码' : '更换手机号' }}</view>
<view style="margin-bottom: 56rpx">
<view style="margin-bottom: 56rpx; font-weight: 700; font-size: 36rpx">
<up-input placeholder="请输入手机号" border="bottom" placeholderClass="placeholderClass" v-model="phone" :disabled="Event?.disabled === 'err' ? false : true" disabledColor="#fff">
<template #suffix>
<view class="phone-suffix" @click="sendCodeHandler">{{ countdown === 60 ? '获取验证码' : `${countdown}秒后可重新获取` }}</view>
... ...
... ... @@ -7,16 +7,18 @@
<u-cell :title="_.title" :isLink="![1, 5].includes(index)">
<template #value>
<template v-if="_.type === 'jump'">
<text class="info-text" @click="proxy.$h.jumpUrl(`${_.url}?flag=${_.flag}&title=${_.title}&isMyInfo=${_.isMyInfo}`)">{{ _.text }}</text>
<text class="info-text" @click="proxy.$h.jumpUrl(`${_.url}?flag=${_.flag}&title=${_.title}&isMyInfo=${_.isMyInfo}`)" :style="{ color: !['请选择', '暂无手机号'].includes(_.text) ? '#000' : '#999' }">{{ _.text }}</text>
</template>
<template v-if="_.type === 'selectData'">
<text class="info-text" @click="showSelectSex = true">{{ _.text !== '请选择' ? proxy.$h.optObjectValue('sexData', _.text) : _.text }}</text>
<text class="info-text" @click="showSelectSex = true" :style="{ color: _.text !== '请选择' ? '#000' : '#999' }">{{ _.text !== '请选择' ? proxy.$h.optObjectValue('sexData', _.text) : _.text }}</text>
</template>
<template v-if="_.type === 'upload'"><image @click="uploadAvatarHandler" class="info-avatar" :src="proxy.$h.downFile(_.imgUrl) || '/static/images/mAvatar.png'" mode="aspectFill" /></template>
<template v-if="_.type === 'input'"><up-input v-model="form[_.keyName]" :disabled="_.disabled" :placeholder="_.text" border="none" inputAlign="right" disabledColor="#fff"></up-input></template>
<template v-if="_.type === 'textarea'"><u-textarea v-model="form[_.keyName]" :placeholder="_.text" border="none" height="30"></u-textarea></template>
</template>
</u-cell>
<view class="grayLine" v-if="index === mineinfo.length - 2"></view>
</template>
</u-cell-group>
</view>
... ... @@ -48,9 +50,9 @@ const mineinfo = ref([
{ keyName: 'avatar', title: '头像', text: '', type: 'upload', imgUrl: '' },
{ keyName: 'nickName', title: '昵称', text: '请输入昵称', type: 'input', disabled: false },
{ keyName: 'sex', title: '性别', text: '请选择', type: 'selectData' },
{ keyName: 'phone', title: '手机号', text: '110', type: 'jump', url: '/pages2/mineinfo/phone' },
{ keyName: 'phone', title: '手机号', text: '暂无手机号', type: 'jump', url: '/pages2/mineinfo/phone' },
{ keyName: 'hospital', title: '坐诊医院', text: '请选择', type: 'jump', url: '/pages2/mineinfo/hospitalList', isMyInfo: 1, flag: 'ZUOZHENYIYUAN' },
{ keyName: 'introduction', title: '个人简介', text: '请输入个人介绍', type: 'textarea' },
{ keyName: 'introduction', title: '个人介绍', text: '介绍一下自己吧', type: 'textarea' },
// { keyName: '', title: '标签', text: '请选择', type: 'jump', url: '/pages2/mineinfo/tag', flag: '' }, // 个人标签暂不可编辑
{ keyName: 'department', title: '科室', text: '请选择', type: 'jump', url: '/pages2/mineinfo/hospitalList', flag: 'KESHI' }
])
... ... @@ -144,6 +146,9 @@ page {
</style>
<style lang="scss" scoped>
:deep(.u-line) {
display: none !important;
}
.main {
box-sizing: border-box;
padding: 0 24rpx;
... ...
... ... @@ -5,7 +5,7 @@
<view class="flexC ti">你可以用该手机号直接登录****短信通知</view>
<view class="flexC bl">已绑定手机号</view>
<view class="flexC nu">{{ UserInfo.phone.replace(/(\d{3})\d{4}(\d{4})/, '$1****$2') }}</view>
<up-button color="#E4F8F9" shape="circle" icon="更换手机号" iconColor="#05B8D2" throttleTime="1500" @click="proxy.$h.jumpUrl(`/pages2/mineinfo/editphone`)"></up-button>
<up-button color="#E4F8F9" shape="circle" icon="更换手机号" iconColor="#05B8D2" throttleTime="1500" @click="proxy.$h.jumpUrl(`/pages2/mineinfo/editphone?type=editphone`)"></up-button>
</view>
</template>
... ...
... ... @@ -52,7 +52,10 @@
</view>
</view>
</view>
<view style="margin-top: 42rpx">
<up-button color="#05B8D2" shape="circle" text="提交" throttleTime="1500" @click="submitMineStateHandler(params.state)"></up-button>
</view>
</template>
<view style="margin-top: 160rpx" v-if="params.state === 0">
<up-button color="#05B8D2" shape="circle" text="提交" throttleTime="1500" @click="submitMineStateHandler(params.state)"></up-button>
... ...
... ... @@ -19,17 +19,17 @@
</u-form-item>
</u-form>
</view>
<up-button color="#05B8D2" shape="circle" text="添加" throttleTime="1500" :customStyle="{ width: '90%', height: '94rpx', marginTop: '32rpx' }" @click="bindAccountHandler"></up-button>
<up-button color="#05B8D2" shape="circle" text="修改绑定" throttleTime="1500" :customStyle="{ width: '90%', height: '94rpx', marginTop: '32rpx' }" @click="bindAccountHandler"></up-button>
</view>
</template>
<script setup lang="ts">
import { ref, getCurrentInstance, ComponentPublicInstance, nextTick } from 'vue'
import { onLoad } from '@dcloudio/uni-app'
import { onLoad,onShow } from '@dcloudio/uni-app'
import useTimeHandler from '@/hooks/useTimeChange'
import { DebounceBy } from '@/utils/debounceBy'
import { updateBindUserCard, getChangePhonePwdCode } from '../../api'
import { BindUserCardType, AddAccountEventType } from '../../types'
import { updateBindUserCard, getChangePhonePwdCode,getUserCard } from '../../api'
import { BindUserCardType, AddAccountEventType,GetUserCardType } from '../../types'
import { AddAccountFormRules } from '@/static/json/rules'
const { proxy } = getCurrentInstance() as { proxy: ComponentPublicInstance }
... ... @@ -67,6 +67,18 @@ onLoad(async (e: AddAccountEventType) => {
})
})
onShow(() => {
getUserCardHandler()
})
const getUserCardHandler = async () => {
const { result }: { result: GetUserCardType } = await getUserCard()
form.value[Event.value.flag] = result[Event.value.flag]
form.value[Event.value.nameFlag] = result[Event.value.nameFlag]
}
const clickGetCodeHandler = async () => await getChangePhonePwdCode({ type: 3 })
const sendCodeHandler = DebounceBy(() => startCountdown(clickGetCodeHandler), 2000)
... ...
... ... @@ -78,10 +78,13 @@ onShow(async () => {
})
</script>
<style lang="scss" scoped>
<style>
page {
background: #f7f8fa;
}
</style>
<style lang="scss" scoped>
.Zindex {
position: relative;
z-index: 9999999999 !important;
... ...
... ... @@ -11,7 +11,7 @@
<view class="graytext">{{ props.item?.time || '' }}</view>
</view>
</view>
<view class="blueSText" v-if="!props.isPrescriptionDrug">{{ proxy.$h.optObjectValue('orderState', props.item?.orderState) || '未知' }}</view>
<view class="blueSText" v-if="!props.isPrescriptionDrug" :style="{ color: [40, '40'].includes(props.item?.orderState) ? '#999' : '#05b8d2' }">{{ proxy.$h.optObjectValue('orderState', props.item?.orderState) || '未知' }}</view>
<view class="blueSText" v-else>{{ proxy.$h.optObjectValue('state', props.item?.orderState) || '未知' }}</view>
</view>
... ... @@ -40,7 +40,7 @@
<view class="moneytext flexD" v-if="!props.isPrescriptionDrug && !props.isRecord">¥{{ props.item?.award || 0 }}/预计收入</view>
<view class="flexD">
<view class="flexW" v-if="!props.isPrescriptionDrug">
<up-button type="info" v-if="props.item?.orderId !== null" shape="circle" text="处方单" throttleTime="1500" :customStyle="{ width: '170rpx', marginRight: '20rpx' }" @click="showPrescriptionDetailState = true"></up-button>
<up-button type="info" v-if="props.item?.orderId !== null" shape="circle" text="处方单" throttleTime="1500" :customStyle="{ width: '170rpx', marginRight: '20rpx' }" @click="showPrHandler"></up-button>
<up-button type="info" @click="clickOrderItemHandler" shape="circle" text="查看症状" throttleTime="1500" :customStyle="{ width: '170rpx', marginRight: '20rpx' }"></up-button>
<up-button type="info" v-if="props.isRecords === 'success'" @click="AcceptHandler('success')" shape="circle" text="问诊记录" throttleTime="1500" :customStyle="{ width: '170rpx', marginRight: '20rpx' }"></up-button>
<up-button color="#05B8D2" v-if="[20, '20'].includes(props.item?.orderState)" @click="AcceptHandler('err')" shape="circle" text="接诊" throttleTime="1500" :customStyle="{ width: '170rpx', marginRight: '20rpx' }"></up-button>
... ... @@ -99,6 +99,7 @@
:title="`${PrescriptionDetail?.user?.nickname}的处方单`"
:isRenew="props.item.isAgain == 1 ? 'success' : 'err'"
:showStep="`err`"
:isAgainInformation="props.item?.isAgainInformation"
/>
</u-popup>
</template>
... ... @@ -160,6 +161,14 @@ const showPrescriptionDetailHandler = async () => {
showPrescriptionState.value = true
}
const showPrHandler = async () => {
const { result } = await getPrescription_detail_information({ id: props.item?.id })
PrescriptionDetail.value = result
showPrescriptionState.value = true
}
const closeSendPrescriptionHandler = () => {
sendPrescriptionState.value = false
... ...
... ... @@ -7,15 +7,15 @@
<view class="Prescription-title flexC" v-if="props.title">{{ props.title }}</view>
<template v-if="!props.showX">
<view class="text mb24">问诊病情</view>
<view class="text mb24">问诊病情</view>
<view class="text mb24">{{ PrescriptionDetail?.prescriptionForm || '病情描述' }}</view>
</template>
<template v-if="!['success'].includes(props.isRenew) && ![null, undefined, ''].includes(PrescriptionDetail?.supplement) && props.showX">
<view class="text mb24">{{ props.showX ? '续方原因' : '问诊病情' }}</view>
<view class="text mb24">{{ props.showX ? '续方原因' : '问诊病情' }}</view>
<view class="text mb24">{{ props.showX ? PrescriptionDetail?.renewRemark : PrescriptionDetail?.supplement }}</view>
</template>
<template v-if="![null, undefined, ''].includes(PrescriptionDetail?.renewRemark) && ['success'].includes(props.isRenew)">
<view class="text mb24">续方原因</view>
<view class="text mb24">续方原因</view>
<view class="text mb24">{{ PrescriptionDetail?.renewRemark }}</view>
</template>
<view class="text mb24">处方药:</view>
... ... @@ -50,7 +50,7 @@
<view class="text">运费</view>
<view class="blacktext">¥0</view>
</view> -->
<view class="flexJ mb24" v-if="![null, undefined, '0', ''].includes(PrescriptionDetail?.pid)">
<view class="flexJ mb24" v-if="![null, undefined, '0', ''].includes(PrescriptionDetail?.pid) && ![null, undefined, '', 0, '0'].includes(props.isAgainInformation)">
<view class="text">复诊时间</view>
<view class="graytext">{{ PrescriptionDetail?.createTime }}</view>
</view>
... ... @@ -88,6 +88,7 @@ interface IProps {
showStep?: string
order?: string
showX?: boolean
isAgainInformation?: string | number
}
const props = withDefaults(defineProps<IProps>(), {
bg: '#fff',
... ... @@ -95,7 +96,8 @@ const props = withDefaults(defineProps<IProps>(), {
showTopState: true,
showStep: 'success',
order: 'xf',
showX: false
showX: false,
isAgainInformation: 0
})
const amount = computed(() => {
... ...
... ... @@ -6,7 +6,12 @@
<view class="symptom Zindex11">
<view class="flexJ" style="margin-bottom: 54rpx">
<view class="flexA flex1">
<image :src="proxy.$h.downFile(detailData?.user?.avatar)" class="symptom-avatar" mode="aspectFill" @click="proxy.$h.previewImage(proxy.$h.downFile(detailData?.user?.avatar))" />
<image
:src="[null, undefined, ''].includes(detailData?.user?.avatar) ? '/static/images/mAvatar.png' : proxy.$h.downFile(detailData?.user?.avatar)"
class="symptom-avatar"
mode="aspectFill"
@click="proxy.$h.previewImage(proxy.$h.downFile(detailData?.user?.avatar))"
/>
<view>
<view class="flexA" style="margin-bottom: 4rpx">
<view class="symptom-username">{{ detailData?.user?.nickname || '暂无' }}</view>
... ...