feat: 完善公账锁店流程,静态图改走 OSS
强化公账锁店页与首页横幅入口,支持声明已支付与催办; 代付二维码与 base64 工具抽到公共组件;本地 static 大图改为 OSS 引用。
@@ -37,6 +37,16 @@ export function getPublicAccountDailyBillInfoApi(id) {
|
||||
})
|
||||
}
|
||||
|
||||
/** 锁店只读:日账单 + 商品订单 xk-api GET .../daily-lock-orders */
|
||||
export function getPublicAccountDailyLockOrdersApi(data = {}) {
|
||||
return req.request({
|
||||
url: dailyPrefix() + 'daily-lock-orders',
|
||||
method: 'GET',
|
||||
data,
|
||||
header: dailyHeader(),
|
||||
})
|
||||
}
|
||||
|
||||
/** 补出日汇总 xk-api POST .../daily-generate */
|
||||
export function generatePublicAccountDailyBillApi(data) {
|
||||
return req.request({
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<view class="flex-col flex-ali-center state">
|
||||
<image src="../../static/image/sf.png"></image>
|
||||
<image src="https://xiaokang88.oss-cn-hangzhou.aliyuncs.com/xk-doctor-wx/static/image/sf.png"></image>
|
||||
<d-text text="您的认证信息已提交!" className="tips-c m-t-10 m-t-3"></d-text>
|
||||
<d-text text="我们会尽快审核,请耐心等待" className="tips-c m-t-1"></d-text>
|
||||
</view>
|
||||
|
||||
@@ -33,8 +33,8 @@
|
||||
type: [Object,Array],
|
||||
default: () => {
|
||||
return {
|
||||
'list': '../../static/image/list.png',
|
||||
'search': '../../static/image/search.png'
|
||||
'list': 'https://xiaokang88.oss-cn-hangzhou.aliyuncs.com/xk-doctor-wx/static/image/list.png',
|
||||
'search': 'https://xiaokang88.oss-cn-hangzhou.aliyuncs.com/xk-doctor-wx/static/image/search.png'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
:maxlength="11"
|
||||
height="96"
|
||||
v-model="form.mobile"
|
||||
:prefixIcon="require('../../static/image/act.png')"
|
||||
:prefixIcon="'https://xiaokang88.oss-cn-hangzhou.aliyuncs.com/xk-doctor-wx/static/image/act.png'"
|
||||
borderRadius="96rpx"
|
||||
prefixIconSize="40rpx"
|
||||
placeholder="请输入手机号"
|
||||
@@ -22,7 +22,7 @@
|
||||
height="96"
|
||||
v-model="form.password"
|
||||
type="password"
|
||||
:prefixIcon="require('../../static/image/pwd.png')"
|
||||
:prefixIcon="'https://xiaokang88.oss-cn-hangzhou.aliyuncs.com/xk-doctor-wx/static/image/pwd.png'"
|
||||
password
|
||||
borderRadius="96rpx"
|
||||
prefixIconSize="40rpx"
|
||||
@@ -37,12 +37,12 @@
|
||||
type="number"
|
||||
:maxlength="6"
|
||||
placeholder="请填写验证码"
|
||||
:prefixIcon="require('../../static/image/pwd.png')"
|
||||
:prefixIcon="'https://xiaokang88.oss-cn-hangzhou.aliyuncs.com/xk-doctor-wx/static/image/pwd.png'"
|
||||
:placeholder-style="{ fontSize: '32rpx', paddingLeft: '60rpx' }"
|
||||
:custom-style="{ fontSize: '32rpx', paddingLeft: '60rpx' }"
|
||||
>
|
||||
<template slot="icon">
|
||||
<!-- <image src="../../../../static/image/pwd.png"></image>-->
|
||||
<!-- <image src="https://xiaokang88.oss-cn-hangzhou.aliyuncs.com/xk-doctor-wx/static/image/pwd.png"></image>-->
|
||||
<u-icon
|
||||
size="40"
|
||||
name="chat"
|
||||
|
||||
@@ -53,12 +53,13 @@
|
||||
* 用途:本次挂号处方存在待支付订单时,医生出示小程序码给患者扫码代付
|
||||
* (复用 PC 接诊台同款后端 proxy-pay-qrcode,scene=ppay={orderId},患者端解析链路零改动)。
|
||||
* 展示:接口返回 data URI,写入 USER_DATA_PATH 再绑 <image>,不上传 OSS。
|
||||
* 本组件与 base64ToLocalPath 都在 sub_workbench 分包,避免打进主包。
|
||||
* 必须放主包 components/:easycom 会把 <proxy-pay-qrcode-modal> 解析成 /components/proxy-pay-qrcode-modal,
|
||||
* 源码若只在分包,发行产物对不上会报 ENOENT(找不到 wxml/wxss)。lazyCodeLoading 按页注入,不常驻主包。
|
||||
* 读值:xk-api 形态,拦截器已返回 body → code / result / message(unwrapXkApi)
|
||||
*/
|
||||
import { getProxyPayQrcodeApi } from '@/api/reception.js'
|
||||
import { unwrapXkApi } from '@/utils/api-response.js'
|
||||
import { base64ToLocalPath, unlinkLocalFile } from '../../utils/base64ToLocalPath.js'
|
||||
import { base64ToLocalPath, unlinkLocalFile } from '@/utils/base64ToLocalPath.js'
|
||||
|
||||
export default {
|
||||
name: 'ProxyPayQrcodeModal',
|
||||
@@ -0,0 +1,150 @@
|
||||
<template>
|
||||
<!-- 公账逾期条幅:门店逾期即可展示,点击进锁店页(硬锁 reLaunch / 软进 soft) -->
|
||||
<view v-if="visible" class="pap-banner" :class="toneClass" @click="onTap">
|
||||
<view class="pap-banner-main">
|
||||
<text class="pap-banner-title">公账日账单已逾期</text>
|
||||
<text class="pap-banner-desc">{{ descTxt }}</text>
|
||||
</view>
|
||||
<text class="pap-banner-action">去处理</text>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
/**
|
||||
* 工作台顶部公账逾期条幅
|
||||
* 用 lock-status 现算;store_locked 即显示,不要求当前身份硬锁
|
||||
*/
|
||||
import { getPublicAccountLockStatusApi } from '@/api/publicAccountPay.js'
|
||||
import { unwrapXkApi } from '@/utils/api-response.js'
|
||||
import {
|
||||
isPublicAccountStoreLocked,
|
||||
openPublicAccountLockFromBanner,
|
||||
} from '@/utils/publicAccountLock.js'
|
||||
|
||||
export default {
|
||||
name: 'PublicAccountLockBanner',
|
||||
data() {
|
||||
return {
|
||||
payload: null,
|
||||
loading: false,
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
visible() {
|
||||
return isPublicAccountStoreLocked(this.payload)
|
||||
},
|
||||
amountTxt() {
|
||||
const p = this.payload || {}
|
||||
return p.platform_amount_total || p.platform_amount || '0.00'
|
||||
},
|
||||
billCount() {
|
||||
const n = Number((this.payload && this.payload.bill_count) || 0)
|
||||
return n > 0 ? Math.floor(n) : 0
|
||||
},
|
||||
descTxt() {
|
||||
const range = String((this.payload && this.payload.bill_date_range_txt) || '').trim()
|
||||
if (this.billCount > 1) {
|
||||
return '合并 ' + this.billCount + ' 张(' + (range || '多日') + '),合计 ¥' + this.amountTxt + ',点此处理'
|
||||
}
|
||||
return '应付款 ¥' + this.amountTxt + ',点此处理'
|
||||
},
|
||||
toneClass() {
|
||||
const color = (this.payload && this.payload.alert_color) || 'yellow'
|
||||
if (color === 'blue' || color === 'red') {
|
||||
return 'is-' + color
|
||||
}
|
||||
return 'is-yellow'
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
/**
|
||||
* 工作台 onShow 调用:拉现算锁态,决定是否展示条幅
|
||||
*/
|
||||
async refresh() {
|
||||
if (this.loading) {
|
||||
return
|
||||
}
|
||||
this.loading = true
|
||||
try {
|
||||
const res = await getPublicAccountLockStatusApi()
|
||||
const wrap = unwrapXkApi(res)
|
||||
if (!wrap.ok) {
|
||||
this.payload = null
|
||||
return
|
||||
}
|
||||
this.payload = wrap.payload || null
|
||||
} catch (e) {
|
||||
this.payload = null
|
||||
} finally {
|
||||
this.loading = false
|
||||
}
|
||||
},
|
||||
onTap() {
|
||||
if (!this.payload) {
|
||||
return
|
||||
}
|
||||
openPublicAccountLockFromBanner(this.payload)
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.pap-banner {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
gap: 16rpx;
|
||||
margin: 16rpx 24rpx 0;
|
||||
padding: 20rpx 24rpx;
|
||||
border-radius: 12rpx;
|
||||
border: 1px solid rgba(217, 119, 6, 0.35);
|
||||
box-shadow: 0 0 12rpx rgba(217, 119, 6, 0.16);
|
||||
background: rgba(217, 119, 6, 0.12);
|
||||
}
|
||||
.pap-banner.is-blue {
|
||||
border-color: rgba(37, 99, 235, 0.35);
|
||||
box-shadow: 0 0 12rpx rgba(37, 99, 235, 0.16);
|
||||
background: rgba(37, 99, 235, 0.12);
|
||||
}
|
||||
.pap-banner.is-red {
|
||||
border-color: rgba(220, 38, 38, 0.35);
|
||||
box-shadow: 0 0 12rpx rgba(220, 38, 38, 0.16);
|
||||
background: rgba(220, 38, 38, 0.12);
|
||||
}
|
||||
.pap-banner-main {
|
||||
flex: 1;
|
||||
min-width: 0;
|
||||
}
|
||||
.pap-banner-title {
|
||||
display: block;
|
||||
margin-bottom: 6rpx;
|
||||
font-size: 28rpx;
|
||||
font-weight: 600;
|
||||
color: #d97706;
|
||||
}
|
||||
.pap-banner.is-blue .pap-banner-title {
|
||||
color: #2563eb;
|
||||
}
|
||||
.pap-banner.is-red .pap-banner-title {
|
||||
color: #dc2626;
|
||||
}
|
||||
.pap-banner-desc {
|
||||
display: block;
|
||||
font-size: 24rpx;
|
||||
line-height: 1.4;
|
||||
color: #64748b;
|
||||
}
|
||||
.pap-banner-action {
|
||||
flex-shrink: 0;
|
||||
font-size: 26rpx;
|
||||
font-weight: 600;
|
||||
color: #d97706;
|
||||
}
|
||||
.pap-banner.is-blue .pap-banner-action {
|
||||
color: #2563eb;
|
||||
}
|
||||
.pap-banner.is-red .pap-banner-action {
|
||||
color: #dc2626;
|
||||
}
|
||||
</style>
|
||||
6
main.js
@@ -10,6 +10,7 @@ import uView from "uview-ui";
|
||||
import timeFormatIOSFix from '@/common/js/timeFormat.js'
|
||||
import store from './store';
|
||||
import share from '@/common/share.js'
|
||||
import { staticOss } from '@/utils/staticOss.js'
|
||||
Vue.mixin(share)
|
||||
Vue.use(uView);
|
||||
// 覆盖 uView 的 timeFormat / date:修复 iOS 下 `yyyy-MM-dd HH:mm:ss` 无法解析
|
||||
@@ -71,8 +72,9 @@ Vue.prototype.$navbarHeight = uni.$d.navbarHeight()
|
||||
Vue.prototype.$windowHeight = systemInfo.windowHeight
|
||||
Vue.prototype.$screenHeight = systemInfo.screenHeight
|
||||
Vue.prototype.$checkID = m_by_checkID
|
||||
Vue.prototype.$male = require('@/static/image/nan.png')
|
||||
Vue.prototype.$girl = require('@/static/image/nv.png')
|
||||
Vue.prototype.$staticOss = staticOss
|
||||
Vue.prototype.$male = staticOss('image/nan.png')
|
||||
Vue.prototype.$girl = staticOss('image/nv.png')
|
||||
// #ifndef VUE3
|
||||
import Vue from 'vue'
|
||||
Vue.config.productionTip = false
|
||||
|
||||
@@ -3,7 +3,8 @@
|
||||
"autoscan": true,
|
||||
"^u-(.*)": "uview-ui/components/u-$1/u-$1.vue",
|
||||
"^d-(.*)": "@/components/d-$1/d-$1.vue",
|
||||
"^ai-generation-loading$": "@/components/ai-generation-loading/ai-generation-loading.vue"
|
||||
"^ai-generation-loading$": "@/components/ai-generation-loading/ai-generation-loading.vue",
|
||||
"^proxy-pay-qrcode-modal$": "@/components/proxy-pay-qrcode-modal/proxy-pay-qrcode-modal.vue"
|
||||
},
|
||||
"pages": [{
|
||||
"path": "pages/login/index",
|
||||
|
||||
@@ -105,29 +105,29 @@
|
||||
userInfo: uni.getStorageSync('userInfo') || {},
|
||||
functions: [{
|
||||
name: '我的处方',
|
||||
icon: '../../static/image/wd-cf.png',
|
||||
icon: 'https://xiaokang88.oss-cn-hangzhou.aliyuncs.com/xk-doctor-wx/static/image/wd-cf.png',
|
||||
url: '/subPackages/sub_my/prescriptionList'
|
||||
},
|
||||
{
|
||||
name: '我的常用方',
|
||||
icon: '../../static/image/wd-cyf.png',
|
||||
icon: 'https://xiaokang88.oss-cn-hangzhou.aliyuncs.com/xk-doctor-wx/static/image/wd-cyf.png',
|
||||
url: '../../subPackages/sub_workbench/workbench_recipe/common?type=0'
|
||||
},
|
||||
// {
|
||||
// name: '挂号费用',
|
||||
// icon: '../../static/image/wd-ghfy.png',
|
||||
// icon: 'https://xiaokang88.oss-cn-hangzhou.aliyuncs.com/xk-doctor-wx/static/image/wd-ghfy.png',
|
||||
// url: '../../subPackages/sub_my/my_revenue/index'
|
||||
// },
|
||||
{
|
||||
name: '服务设置',
|
||||
icon: '../../static/image/fwsz.png',
|
||||
icon: 'https://xiaokang88.oss-cn-hangzhou.aliyuncs.com/xk-doctor-wx/static/image/fwsz.png',
|
||||
url: '../../subPackages/sub_my/my_service'
|
||||
}
|
||||
],
|
||||
items: [
|
||||
{
|
||||
name: '常用医嘱管理',
|
||||
icon: '../../static/image/i1.png',
|
||||
icon: 'https://xiaokang88.oss-cn-hangzhou.aliyuncs.com/xk-doctor-wx/static/image/i1.png',
|
||||
url: '../../subPackages/sub_my/my_diagnose_common'
|
||||
}
|
||||
],
|
||||
@@ -141,7 +141,7 @@
|
||||
computed: {
|
||||
// getAvatar() {
|
||||
// let doctorInfo = uni.getStorageSync('doctorInfo')
|
||||
// let url = require(`@/static/image/${doctorInfo.DoctorInfo.user.role%2==0?'nv':'nan'}.png`);
|
||||
// let url = staticOss('image/' + (doctorInfo.DoctorInfo.user.role%2==0?'nv':'nan') + '.png');
|
||||
// // console.log(info, 'ddd')
|
||||
// return doctorInfo.DoctorInfo['avatar'] ? doctorInfo.DoctorInfo['avatar'] : doctorInfo
|
||||
// .DoctorInfo.user.role == 1 ? url : url
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
@click="$go('../../subPackages/sub_pharmacist/pharmacist_info?avatar='+avatar+'&info='+JSON.stringify(info))">
|
||||
<view class="flex-row flex-ali-center">
|
||||
<u-icon margin-left="20" label-size="32" label-color="#31353D"
|
||||
:name="require('../../static/image/grzl.png')" label="个人资料" size="30"></u-icon>
|
||||
:name="'https://xiaokang88.oss-cn-hangzhou.aliyuncs.com/xk-doctor-wx/static/image/grzl.png'" label="个人资料" size="30"></u-icon>
|
||||
</view>
|
||||
<u-icon name="arrow-right" size="32" color="#A7ABB0"></u-icon>
|
||||
</view>
|
||||
@@ -35,7 +35,7 @@
|
||||
@click="$go('../../subPackages/sub_pharmacist/pharmacist_setInfo')">
|
||||
<view class="flex-row flex-ali-center">
|
||||
<u-icon margin-left="20" label-size="32" label-color="#31353D"
|
||||
:name="require('../../static/image/set.png')" label="设置" size="30"></u-icon>
|
||||
:name="'https://xiaokang88.oss-cn-hangzhou.aliyuncs.com/xk-doctor-wx/static/image/set.png'" label="设置" size="30"></u-icon>
|
||||
</view>
|
||||
<u-icon name="arrow-right" size="32" color="#A7ABB0"></u-icon>
|
||||
</view>
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
<view class="flex-row flex-jus-sp">
|
||||
<view class="entry-card flex-1" hover-class="entry-card-hover"
|
||||
@click="$go('../../subPackages/sub_patient/to-store?id='+1)">
|
||||
<image class="entry-icon" src="../../static/image/hz_xsjz.png"></image>
|
||||
<image class="entry-icon" src="https://xiaokang88.oss-cn-hangzhou.aliyuncs.com/xk-doctor-wx/static/image/hz_xsjz.png"></image>
|
||||
<view class="entry-info">
|
||||
<text class="entry-name">到店接诊</text>
|
||||
<text class="entry-desc">处理到店患者</text>
|
||||
@@ -20,7 +20,7 @@
|
||||
</view>
|
||||
<view class="entry-card flex-1 m-l-2" hover-class="entry-card-hover"
|
||||
@click="$go('../../subPackages/sub_patient/to-store?id='+2)">
|
||||
<image class="entry-icon" src="../../static/image/hz_ddjz.png"></image>
|
||||
<image class="entry-icon" src="https://xiaokang88.oss-cn-hangzhou.aliyuncs.com/xk-doctor-wx/static/image/hz_ddjz.png"></image>
|
||||
<view class="entry-info">
|
||||
<text class="entry-name">线上接诊</text>
|
||||
<text class="entry-desc">线上问诊接待</text>
|
||||
@@ -30,7 +30,7 @@
|
||||
<!-- 群发消息入口行 -->
|
||||
<view class="list-new" hover-class="entry-card-hover" @click="$go('../../subPackages/sub_patient/patient_massInfo')">
|
||||
<view class="l-l-row">
|
||||
<image src="/static/image/hz-qfxx.png" mode=""></image>
|
||||
<image src='https://xiaokang88.oss-cn-hangzhou.aliyuncs.com/xk-doctor-wx/static/image/hz-qfxx.png' mode=""></image>
|
||||
<view class="entry-info">
|
||||
<text class="entry-name">群发消息</text>
|
||||
<text class="entry-desc">向患者批量发送通知</text>
|
||||
@@ -162,8 +162,8 @@
|
||||
const isFemale = item.sex % 2 == 0;
|
||||
const user = item.user || {};
|
||||
const fallback = isFemale
|
||||
? (this.girl || require('../../static/image/nv.png'))
|
||||
: (this.male || require('../../static/image/nan.png'));
|
||||
? (this.girl || 'https://xiaokang88.oss-cn-hangzhou.aliyuncs.com/xk-doctor-wx/static/image/nv.png')
|
||||
: (this.male || 'https://xiaokang88.oss-cn-hangzhou.aliyuncs.com/xk-doctor-wx/static/image/nan.png');
|
||||
return {
|
||||
...item,
|
||||
card_avatar: user.avatarurl || fallback,
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
|
||||
<!-- 未通过入驻审核:整页空态守卫,不渲染 swiper -->
|
||||
<view class="empty" v-if="status != 2">
|
||||
<image src="/static/image/none.png" mode="aspectFit"></image>
|
||||
<image src='https://xiaokang88.oss-cn-hangzhou.aliyuncs.com/xk-doctor-wx/static/image/none.png' mode="aspectFit"></image>
|
||||
<text>您还没有通过审核,请稍后再试~</text>
|
||||
</view>
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
|
||||
<!-- 各 tab 独立空态:首屏加载完成且无数据时展示 -->
|
||||
<view class="tab-empty" v-if="tab.loaded && tab.list.length === 0">
|
||||
<image src="/static/image/none.png" mode="aspectFit"></image>
|
||||
<image src='https://xiaokang88.oss-cn-hangzhou.aliyuncs.com/xk-doctor-wx/static/image/none.png' mode="aspectFit"></image>
|
||||
<text>暂无{{lists[tabIndex].name}}的处方</text>
|
||||
</view>
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
<view class="head">
|
||||
<view class="info">
|
||||
<image :src="list.avatar || '/static/image/nv.png'" mode=""></image>
|
||||
<image :src="list.avatar || 'https://xiaokang88.oss-cn-hangzhou.aliyuncs.com/xk-doctor-wx/static/image/nv.png'" mode=""></image>
|
||||
<view class="name">
|
||||
<text>{{list.name}}</text>
|
||||
<text>药师</text>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<view class="container safe-area-inset-bottom" :style="{ height: screenHeight }">
|
||||
<image class="image" src="/static/login/bg_shh.png" mode=""></image>
|
||||
<image class="image" src='https://xiaokang88.oss-cn-hangzhou.aliyuncs.com/xk-doctor-wx/static/login/bg_shh.png' mode=""></image>
|
||||
<view class="bg">
|
||||
<view class="img">
|
||||
<image :src="doctorInfo.DoctorInfo.avatar || doctorInfo.avatar" mode=""></image>
|
||||
@@ -14,7 +14,7 @@
|
||||
{{doctorInfo.store.store.name || doctorInfo.store.name}}
|
||||
{{doctorInfo.DoctorInfo.depart.name || doctorInfo.depart.name || ''}}
|
||||
</view>
|
||||
<image src="/static/login/bg_shhz.png" mode=""></image>
|
||||
<image src='https://xiaokang88.oss-cn-hangzhou.aliyuncs.com/xk-doctor-wx/static/login/bg_shhz.png' mode=""></image>
|
||||
<!-- doctorInfo.DoctorInfo.user.status<=1 -->
|
||||
<view class="state" v-if="role==1">
|
||||
{{ doctorInfo.DoctorInfo.user.status<=1&&'您的申请已提交,请耐心等待!感谢您的配合!' ||doctorInfo.DoctorInfo.user.status==3&&'抱歉您的申请已被驳回!'}}
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
</view>
|
||||
<view class="box_info_right flex-col flex-jus-sp flex-ali-center"
|
||||
@click="$go('../../subPackages/sub_workbench/workbench_code')">
|
||||
<image src="../../static/image/mp.png"></image>
|
||||
<image src="https://xiaokang88.oss-cn-hangzhou.aliyuncs.com/xk-doctor-wx/static/image/mp.png"></image>
|
||||
<d-text text="我的名片" className="w-c fs-2"></d-text>
|
||||
</view>
|
||||
</view>
|
||||
@@ -45,6 +45,8 @@
|
||||
|
||||
<view class="header-spacer" :style="{ height: headerSpacerHeight + 'px' }"></view>
|
||||
|
||||
<public-account-lock-banner ref="papLockBanner" />
|
||||
|
||||
<view class="content">
|
||||
<!-- 看板统计 -->
|
||||
<view class="dashboard-panel">
|
||||
@@ -179,7 +181,7 @@
|
||||
>
|
||||
<view class="wb-avatar-wrap">
|
||||
<u-image width="80rpx" height="80rpx" shape="circle"
|
||||
:src="item.user_patient && item.user_patient.avatar || require(`../../static/image/${item.user_patient && item.user_patient.sex%2==0?'nv':'nan'}.png`)">
|
||||
:src="item.user_patient && item.user_patient.avatar || ('https://xiaokang88.oss-cn-hangzhou.aliyuncs.com/xk-doctor-wx/static/image/' + (item.user_patient && item.user_patient.sex%2==0?'nv':'nan') + '.png')">
|
||||
<u-loading slot="loading"></u-loading>
|
||||
</u-image>
|
||||
<u-badge
|
||||
@@ -272,7 +274,7 @@
|
||||
<view class="news_item flat-card flex-row flex-ali-start"
|
||||
@click="$go('../../subPackages/sub_patient/patient_label?type=1')" v-if="systemList.num>0">
|
||||
<view class="wb-avatar-wrap">
|
||||
<u-image width="80rpx" height="80rpx" shape="circle" src="/static/image/home1.png">
|
||||
<u-image width="80rpx" height="80rpx" shape="circle" src='https://xiaokang88.oss-cn-hangzhou.aliyuncs.com/xk-doctor-wx/static/image/home1.png'>
|
||||
<u-loading slot="loading"></u-loading>
|
||||
</u-image>
|
||||
<u-badge :count="systemList.num" v-if="systemList.num>0" :offset="[-4,-4]"
|
||||
@@ -296,7 +298,7 @@
|
||||
<view class="news_item flat-card flex-row flex-ali-start"
|
||||
@click="$go('../../subPackages/sub_patient/patient_label?type=2')" v-if="infoList.num>0">
|
||||
<view class="wb-avatar-wrap">
|
||||
<u-image width="80rpx" height="80rpx" shape="circle" :src="'/static/image/home2.png'">
|
||||
<u-image width="80rpx" height="80rpx" shape="circle" :src="'https://xiaokang88.oss-cn-hangzhou.aliyuncs.com/xk-doctor-wx/static/image/home2.png'">
|
||||
<u-loading slot="loading"></u-loading>
|
||||
</u-image>
|
||||
<u-badge :count="infoList.num" v-if="infoList.num>0" :offset="[-4,-4]" bgColor="#F44336"
|
||||
@@ -321,7 +323,7 @@
|
||||
v-if="!loading&&systemList.length==0"
|
||||
@click="$go('../../subPackages/sub_patient/patient_label?type=1')">
|
||||
<view class="wb-avatar-wrap">
|
||||
<u-image width="80rpx" height="80rpx" shape="circle" src="/static/image/home1.png">
|
||||
<u-image width="80rpx" height="80rpx" shape="circle" src='https://xiaokang88.oss-cn-hangzhou.aliyuncs.com/xk-doctor-wx/static/image/home1.png'>
|
||||
<u-loading slot="loading"></u-loading>
|
||||
</u-image>
|
||||
</view>
|
||||
@@ -343,7 +345,7 @@
|
||||
<view class="news_item flat-card flex-row flex-ali-start" v-if="!loading&&infoList.length==0"
|
||||
@click="$go('../../subPackages/sub_patient/patient_label?type=2')">
|
||||
<view class="wb-avatar-wrap">
|
||||
<u-image width="80rpx" height="80rpx" shape="circle" :src="'/static/image/home2.png'">
|
||||
<u-image width="80rpx" height="80rpx" shape="circle" :src="'https://xiaokang88.oss-cn-hangzhou.aliyuncs.com/xk-doctor-wx/static/image/home2.png'">
|
||||
<u-loading slot="loading"></u-loading>
|
||||
</u-image>
|
||||
</view>
|
||||
@@ -365,7 +367,7 @@
|
||||
<view v-if="noticeList.length" class="news_item flat-card flex-row flex-ali-start"
|
||||
@click="$go('/subPackages/sub_workbench/prescriptionList')">
|
||||
<view class="wb-avatar-wrap">
|
||||
<u-image width="80rpx" height="80rpx" shape="circle" src="/static/image/home1.png">
|
||||
<u-image width="80rpx" height="80rpx" shape="circle" src='https://xiaokang88.oss-cn-hangzhou.aliyuncs.com/xk-doctor-wx/static/image/home1.png'>
|
||||
<u-loading slot="loading"></u-loading>
|
||||
</u-image>
|
||||
<u-badge :count="noticeList.length" :offset="[-4,-4]"
|
||||
@@ -448,6 +450,7 @@ import {
|
||||
getWorkbenchStats,
|
||||
} from '../../api/reception';
|
||||
import { checkOnlineConsultationConfigApi } from '../../api/storeConsultation.js';
|
||||
import PublicAccountLockBanner from '@/components/public-account-lock-banner/public-account-lock-banner.vue';
|
||||
|
||||
/** 房间 ID 归一化(避免引入 chatRoomManager 整模块) */
|
||||
function normalizeRoomId(id) {
|
||||
@@ -478,12 +481,12 @@ function formatSessionRelativeTime(item) {
|
||||
const WORKBENCH_STATS_RANGE_KEY = 'workbench_stats_range';
|
||||
const OFFLINE_RECEPTION_ENTRY = {
|
||||
name: '线下接诊',
|
||||
icon: '../../static/image/zxzx.png',
|
||||
icon: 'https://xiaokang88.oss-cn-hangzhou.aliyuncs.com/xk-doctor-wx/static/image/zxzx.png',
|
||||
url: '../../subPackages/sub_workbench/workbench_consult?type=1',
|
||||
};
|
||||
const ONLINE_RECEPTION_ENTRY = {
|
||||
name: '在线接诊',
|
||||
icon: '../../static/image/xsfz.png',
|
||||
icon: 'https://xiaokang88.oss-cn-hangzhou.aliyuncs.com/xk-doctor-wx/static/image/xsfz.png',
|
||||
url: '../../subPackages/sub_online_reception/pages/list',
|
||||
};
|
||||
const RECEPTION_GRID_ENTRIES = [OFFLINE_RECEPTION_ENTRY, ONLINE_RECEPTION_ENTRY];
|
||||
@@ -496,6 +499,9 @@ const EMPTY_WORKBENCH_STATS = {
|
||||
};
|
||||
|
||||
export default {
|
||||
components: {
|
||||
PublicAccountLockBanner,
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
noticeList: [],
|
||||
@@ -660,6 +666,11 @@ export default {
|
||||
},
|
||||
refreshWorkbenchData() {
|
||||
const silentStats = this.statsInitialized || this.hasStatsCache(this.statsRange);
|
||||
this.$nextTick(() => {
|
||||
if (this.$refs.papLockBanner && this.$refs.papLockBanner.refresh) {
|
||||
this.$refs.papLockBanner.refresh();
|
||||
}
|
||||
});
|
||||
return Promise.all([
|
||||
this.getNotice(),
|
||||
this.getInfo(),
|
||||
|
||||
|
Before Width: | Height: | Size: 3.7 KiB |
|
Before Width: | Height: | Size: 1.9 KiB |
|
Before Width: | Height: | Size: 5.2 KiB |
|
Before Width: | Height: | Size: 594 B |
|
Before Width: | Height: | Size: 6.9 KiB |
|
Before Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 351 B |
|
Before Width: | Height: | Size: 7.6 KiB |
|
Before Width: | Height: | Size: 8.3 KiB |
|
Before Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 8.4 KiB |
|
Before Width: | Height: | Size: 6.0 KiB |
|
Before Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 5.9 KiB |
|
Before Width: | Height: | Size: 405 B |
|
Before Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 2.9 KiB |
|
Before Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 3.9 KiB |
|
Before Width: | Height: | Size: 3.7 KiB |
|
Before Width: | Height: | Size: 2.0 KiB |
|
Before Width: | Height: | Size: 679 B |
|
Before Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 721 B |
|
Before Width: | Height: | Size: 692 B |
|
Before Width: | Height: | Size: 931 B |
|
Before Width: | Height: | Size: 9.1 KiB |
|
Before Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 4.6 KiB |
|
Before Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 1.9 KiB |
|
Before Width: | Height: | Size: 6.6 KiB |
|
Before Width: | Height: | Size: 9.1 KiB |
|
Before Width: | Height: | Size: 8.9 KiB |
|
Before Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 2.9 KiB |
|
Before Width: | Height: | Size: 2.9 KiB |
|
Before Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 837 B |
|
Before Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 811 B |
|
Before Width: | Height: | Size: 650 B |
|
Before Width: | Height: | Size: 4.3 KiB |
|
Before Width: | Height: | Size: 4.4 KiB |
|
Before Width: | Height: | Size: 4.9 KiB |
|
Before Width: | Height: | Size: 3.4 KiB |
|
Before Width: | Height: | Size: 3.4 KiB |
|
Before Width: | Height: | Size: 812 B |
|
Before Width: | Height: | Size: 4.7 KiB |
|
Before Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 8.9 KiB |
|
Before Width: | Height: | Size: 1.9 KiB |
|
Before Width: | Height: | Size: 5.7 KiB |
|
Before Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 1008 B |
|
Before Width: | Height: | Size: 1013 B |
|
Before Width: | Height: | Size: 96 KiB |
|
Before Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 8.6 KiB |
|
Before Width: | Height: | Size: 41 KiB |
|
Before Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 53 KiB |
|
Before Width: | Height: | Size: 27 KiB |
|
Before Width: | Height: | Size: 35 KiB |
|
Before Width: | Height: | Size: 30 KiB |
@@ -29,7 +29,7 @@
|
||||
</view>
|
||||
<!-- 动态医院与公章 -->
|
||||
<view class="head_record">
|
||||
<image :src="view.sealImage || '/static/group/xkyard.png'" mode="aspectFit"></image>
|
||||
<image :src="view.sealImage || 'https://xiaokang88.oss-cn-hangzhou.aliyuncs.com/xk-doctor-wx/static/group/xkyard.png'" mode="aspectFit"></image>
|
||||
<view class="record_yard">
|
||||
<view class="yard">
|
||||
{{ view.storeName }}
|
||||
@@ -161,7 +161,7 @@
|
||||
<view class="title">
|
||||
温馨提示:请遵医嘱服药!处方{{ view.validHours }}小时有效!
|
||||
</view>
|
||||
<image src="/static/group/img-yzf.png" mode="aspectFit" v-if="view.status == 2"></image>
|
||||
<image src='https://xiaokang88.oss-cn-hangzhou.aliyuncs.com/xk-doctor-wx/static/group/img-yzf.png' mode="aspectFit" v-if="view.status == 2"></image>
|
||||
</view>
|
||||
</view>
|
||||
</scroll-view>
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
<clinic-page-layout title="工作台" :show-tabbar="true" :tab-index="0">
|
||||
<view class="workspace-container">
|
||||
|
||||
<public-account-lock-banner ref="papLockBanner" />
|
||||
|
||||
<!-- 极简流线型顶部个人信息区(与推广员/平台管理风格一致) -->
|
||||
<view class="hero-section">
|
||||
<view class="brand-info-wrap">
|
||||
@@ -108,6 +110,7 @@
|
||||
|
||||
<script>
|
||||
import ClinicPageLayout from '@/subPackages/sub_clinic_admin/components/clinic-page-layout.vue'
|
||||
import PublicAccountLockBanner from '@/components/public-account-lock-banner/public-account-lock-banner.vue'
|
||||
import { getClinicAdminStoreQr, getClinicAdminDashboardStats, getClinicAdminWorkbenchEntries, getClinicAdminEntryUserData, batchSaveClinicAdminFavoriteEntry, reportClinicAdminEntryUsage } from '@/api/clinicAdmin.js'
|
||||
import { openQrCodePreview, buildClinicQrPayload } from '@/utils/qrCodePreview.js'
|
||||
import { normalizeEntry } from '@/utils/workbenchEntries.js'
|
||||
@@ -116,7 +119,7 @@ import pullRefreshMixin from '@/subPackages/sub_business_shared/common/pullRefre
|
||||
|
||||
export default {
|
||||
mixins: [pullRefreshMixin],
|
||||
components: { ClinicPageLayout },
|
||||
components: { ClinicPageLayout, PublicAccountLockBanner },
|
||||
data() {
|
||||
return {
|
||||
storeName: '',
|
||||
@@ -170,6 +173,11 @@ export default {
|
||||
this.cardLong = getCardStyle() === 'long'
|
||||
this.loadDashboard()
|
||||
this.loadUserEntries()
|
||||
this.$nextTick(() => {
|
||||
if (this.$refs.papLockBanner && this.$refs.papLockBanner.refresh) {
|
||||
this.$refs.papLockBanner.refresh()
|
||||
}
|
||||
})
|
||||
const user = uni.getStorageSync('clinic_admin_user') || {}
|
||||
this.storeName = user.store_name || (user.store && user.store.name) || user.nick_name || '门店管理'
|
||||
if (user.store && user.store.type != null) {
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
</view>
|
||||
</view>
|
||||
<view class="head_record">
|
||||
<image :src="view.sealImage || '/static/group/xkyard.png'" mode="aspectFit"></image>
|
||||
<image :src="view.sealImage || 'https://xiaokang88.oss-cn-hangzhou.aliyuncs.com/xk-doctor-wx/static/group/xkyard.png'" mode="aspectFit"></image>
|
||||
<view class="record_yard">
|
||||
<view class="yard">
|
||||
{{ view.storeName }}
|
||||
@@ -151,7 +151,7 @@
|
||||
<view class="title">
|
||||
温馨提示:请遵医嘱服药!处方{{ view.validHours }}小时有效!
|
||||
</view>
|
||||
<image src="/static/group/img-yzf.png" mode="aspectFit" v-if="view.status == 2"></image>
|
||||
<image src='https://xiaokang88.oss-cn-hangzhou.aliyuncs.com/xk-doctor-wx/static/group/img-yzf.png' mode="aspectFit" v-if="view.status == 2"></image>
|
||||
</view>
|
||||
</view>
|
||||
</scroll-view>
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
<view class="flex-row flex-jus-sp flex-ali-center m-t-2">
|
||||
<view class="flex-row flex-ali-center">
|
||||
<d-text :text="'订单编号:'+item.number" className="content-c m-r08"></d-text>
|
||||
<image src="../../../static/image/fz.png" style="width: 32rpx;height: 32rpx;"></image>
|
||||
<image src="https://xiaokang88.oss-cn-hangzhou.aliyuncs.com/xk-doctor-wx/static/image/fz.png" style="width: 32rpx;height: 32rpx;"></image>
|
||||
</view>
|
||||
<u-tag :text="status[item.status].text" :color="status[item.status].color"
|
||||
:bgColor="status[item.status].bg" mode="dark" />
|
||||
|
||||
@@ -29,14 +29,14 @@
|
||||
<!-- <view class="m-t-2 white b-r-8 p-row-32">
|
||||
<view class="bottom-border p-col-4 flex-row flex-jus-sp flex-ali-center" @click="$go('record')">
|
||||
<view class="flex-row flex-ali-center">
|
||||
<image src="../../../static/image/cf.png" style="width: 40rpx; height: 40rpx;"></image>
|
||||
<image src="https://xiaokang88.oss-cn-hangzhou.aliyuncs.com/xk-doctor-wx/static/image/cf.png" style="width: 40rpx; height: 40rpx;"></image>
|
||||
<d-text text="提现记录" className="m-l-16 content-c" align="center"></d-text>
|
||||
</view>
|
||||
<u-icon name="arrow-right" color="#A7ABB0" size="32"></u-icon>
|
||||
</view>
|
||||
<view class="bottom-border p-col-4 flex-row flex-jus-sp flex-ali-center" @click="$go('earnings')">
|
||||
<view class="flex-row flex-ali-center">
|
||||
<image src="../../../static/image/wj.png" style="width: 40rpx; height: 40rpx;"></image>
|
||||
<image src="https://xiaokang88.oss-cn-hangzhou.aliyuncs.com/xk-doctor-wx/static/image/wj.png" style="width: 40rpx; height: 40rpx;"></image>
|
||||
<d-text text="收益明细" className="m-l-16 content-c" align="center"></d-text>
|
||||
</view>
|
||||
<u-icon name="arrow-right" color="#A7ABB0" size="32"></u-icon>
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
</block>
|
||||
<view class="m-t-48 p-row-2" v-else>
|
||||
<view class="b-r-8 flex-col m-t-48 flex-ali-center">
|
||||
<image src="../../../static/image/sf.png" style="width: 248rpx;height: 180rpx;"></image>
|
||||
<image src="https://xiaokang88.oss-cn-hangzhou.aliyuncs.com/xk-doctor-wx/static/image/sf.png" style="width: 248rpx;height: 180rpx;"></image>
|
||||
<d-text text="提现申请已提交,等待人工审核" className="fs-32 content-c m-t-48"></d-text>
|
||||
</view>
|
||||
<view class="white b-r-8 flex-col m-t-48 ">
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
computed: {
|
||||
// getAvatar() {
|
||||
// let doctorInfo = uni.getStorageSync('doctorInfo')
|
||||
// let url = require(`@/static/image/${doctorInfo.DoctorInfo.user.role%2==0?'nv':'nan'}.png`);
|
||||
// let url = staticOss('image/' + (doctorInfo.DoctorInfo.user.role%2==0?'nv':'nan') + '.png');
|
||||
// // console.log(info, 'ddd')
|
||||
// return doctorInfo.DoctorInfo['avatar'] ? doctorInfo.DoctorInfo['avatar'] : doctorInfo
|
||||
// .DoctorInfo.user.role == 1 ? url : url
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
</view>
|
||||
<!-- 医院 -->
|
||||
<view class="head_record">
|
||||
<image :src="lists.store.offical_seal||'/static/group/xkyard.png'" mode=""></image>
|
||||
<image :src="lists.store.offical_seal||'https://xiaokang88.oss-cn-hangzhou.aliyuncs.com/xk-doctor-wx/static/group/xkyard.png'" mode=""></image>
|
||||
<view class="record_yard">
|
||||
<view class="yard">
|
||||
{{ storeDisplayName }}
|
||||
@@ -209,7 +209,7 @@
|
||||
<view class="title">
|
||||
温馨提示:请遵医嘱服药!处方{{lists.valid_hours}}小时有效!
|
||||
</view>
|
||||
<image src="/static/group/img-yzf.png" mode="" v-if="status==2"></image>
|
||||
<image src='https://xiaokang88.oss-cn-hangzhou.aliyuncs.com/xk-doctor-wx/static/group/img-yzf.png' mode="" v-if="status==2"></image>
|
||||
</view>
|
||||
<view v-if="notice_id" class="rotation" @click.stop="rotation">转 方</view>
|
||||
<!-- 状态 -->
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
@click="$go('/subPackages/sub_my/prescriptionDetail?id=' +item.id)">
|
||||
<view class="flex-row flex-ali-center flex-jus-sp m-t-2">
|
||||
<u-icon margin-left="8" label-size="32" label-color="#6C7380"
|
||||
:name="require('@/static/image/ys.png')" :label="item.prescription_no"
|
||||
:name="'https://xiaokang88.oss-cn-hangzhou.aliyuncs.com/xk-doctor-wx/static/image/ys.png'" :label="item.prescription_no"
|
||||
color="#6ACDBB" size="32"></u-icon>
|
||||
<view class="flex-row flex-ali-center">
|
||||
<text
|
||||
|
||||