feat: 完善公账锁店流程,静态图改走 OSS

强化公账锁店页与首页横幅入口,支持声明已支付与催办;
代付二维码与 base64 工具抽到公共组件;本地 static 大图改为 OSS 引用。
This commit is contained in:
李琦
2026-08-21 12:52:09 +08:00
parent 22e93c5dba
commit 158ffd9e6e
127 changed files with 910 additions and 134 deletions

View File

@@ -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({

View File

@@ -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>

View File

@@ -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'
}
}
}

View File

@@ -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"

View File

@@ -53,12 +53,13 @@
* 用途本次挂号处方存在待支付订单时医生出示小程序码给患者扫码代付
* 复用 PC 接诊台同款后端 proxy-pay-qrcodescene=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/wxsslazyCodeLoading 按页注入不常驻主包
* 读值xk-api 形态拦截器已返回 body code / result / messageunwrapXkApi
*/
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',

View File

@@ -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>

View File

@@ -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

View File

@@ -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",

View File

@@ -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

View File

@@ -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>

View File

@@ -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,

View File

@@ -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>

View File

@@ -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>

View File

@@ -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&&'抱歉您的申请已被驳回'}}

View File

@@ -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(),

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 594 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 351 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 405 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 679 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 721 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 692 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 931 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 837 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 811 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 650 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 812 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1008 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1013 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

View File

@@ -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>

View File

@@ -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) {

View File

@@ -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>

View File

@@ -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" />

View File

@@ -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>

View File

@@ -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 ">

View File

@@ -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

View File

@@ -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>
<!-- 状态 -->

View File

@@ -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

Some files were not shown because too many files have changed in this diff Show More