This commit is contained in:
Your Name
2026-05-05 13:28:45 +08:00
parent 81b2808eaf
commit d6e105f912
19 changed files with 3730 additions and 267 deletions
+9
View File
@@ -42,3 +42,12 @@ export function yejiStatsLeaderboard(params: {
}) {
return request.get({ url: '/stats.yejiStats/leaderboard', params })
}
/** 医生统计(start/end、channel_code;含数据范围;不按展示部门 dept_ids 筛选) */
export function doctorDailyStatsOverview(params: {
start_date?: string
end_date?: string
channel_code?: string
}) {
return request.get({ url: '/stats.doctorDailyStats/overview', params })
}
+2
View File
@@ -3,6 +3,7 @@
//引入柱状图图表,图表后缀都为 Chart
import {
BarChart,
FunnelChart,
LineChart,
MapChart,
PictorialBarChart,
@@ -43,6 +44,7 @@ echarts.use([
AriaComponent,
ParallelComponent,
BarChart,
FunnelChart,
LineChart,
PieChart,
MapChart,
@@ -2258,6 +2258,7 @@
<script lang="ts" setup name="prescriptionOrderList">
import { computed, onMounted, reactive, ref, nextTick, watch, defineAsyncComponent } from 'vue'
import { useRoute } from 'vue-router'
import { Refresh, Loading, ArrowDown, InfoFilled, Search, Calendar, Document, Link as LinkIcon, Wallet } from '@element-plus/icons-vue'
import DaterangePicker from '@/components/daterange-picker/index.vue'
import {
@@ -2296,6 +2297,7 @@ import useUserStore from '@/stores/modules/user'
const TcmDiagnosisEditView = defineAsyncComponent(() => import('@/views/tcm/diagnosis/edit.vue'))
const userStore = useUserStore()
const route = useRoute()
const diagnosisViewRef = ref<{
openViewOnly: (id: number) => Promise<void>
@@ -2662,6 +2664,34 @@ const { pager, getLists, resetPage, resetParams } = usePaging({
params: queryParams
})
/** 业绩看板等入口:URL 携带创建区间、诊单医助部门 / 医助 id */
function applyRouteQueryToPrescriptionOrderList() {
const q = route.query
const normDate = (v: unknown) => {
const s = v != null ? String(v).trim() : ''
if (!s) return ''
return s.length >= 10 ? s.slice(0, 10) : s
}
const st = normDate(q.start_time)
const et = normDate(q.end_time)
if (st) queryParams.start_time = st
if (et) queryParams.end_time = et
const ad = q.assistant_dept_id
if (ad !== undefined && ad !== null && String(ad) !== '') {
const n = Number(ad)
if (Number.isFinite(n) && n > 0) {
queryParams.assistant_dept_id = n
}
}
const ai = q.assistant_id
if (ai !== undefined && ai !== null && String(ai) !== '') {
const n = Number(ai)
if (Number.isFinite(n) && n > 0) {
queryParams.assistant_id = n
}
}
}
/** 选医助部门后,医助下拉仅显示该部门及子部门成员(与后台含子级一致) */
const filteredAssistantOptions = computed(() => {
const deptRaw = queryParams.assistant_dept_id
@@ -2732,6 +2762,9 @@ const listStats = computed(() => {
'统计口径:支付单审核白名单角色,按全量订单;与下方筛选项(医生/医助/医助部门/患者等,不含「创建时间」)一致'
} else if (scope === 'assistant') {
scopeHint = '统计口径:仅计诊单医助为本人且满足下方其它筛选项的订单'
} else if (scope === 'own_rx') {
scopeHint =
'统计口径:本人创建的订单 + 关联处方开方人为本人的订单(含医助代建);与下方筛选项(不含「创建时间」)一致'
}
const hasCustomTime =
String(queryParams.start_time || '').trim() !== '' && String(queryParams.end_time || '').trim() !== ''
@@ -3998,6 +4031,8 @@ onMounted(async () => {
await loadRegionData()
await loadServicePackageOptions()
await loadDoctorAssistantOptions()
applyRouteQueryToPrescriptionOrderList()
await nextTick()
getLists()
})
@@ -2789,6 +2789,9 @@ const listStats = computed(() => {
'统计口径:支付单审核白名单角色,按全量订单;与下方筛选项(医生/医助/医助部门/患者等,不含「创建时间」)一致'
} else if (scope === 'assistant') {
scopeHint = '统计口径:仅计诊单医助为本人且满足下方其它筛选项的订单'
} else if (scope === 'own_rx') {
scopeHint =
'统计口径:本人创建的订单 + 关联处方开方人为本人的订单(含医助代建);与下方筛选项(不含「创建时间」)一致'
}
const hasCustomTime =
String(queryParams.start_time || '').trim() !== '' && String(queryParams.end_time || '').trim() !== ''
File diff suppressed because it is too large Load Diff
+1
View File
@@ -65,6 +65,7 @@ const formData = reactive({
name: '',
desc: '',
sort: 0,
data_scope: 1,
menu_id: [] as any[]
})
File diff suppressed because one or more lines are too long