更新
This commit is contained in:
@@ -7,12 +7,20 @@
|
|||||||
<span
|
<span
|
||||||
v-for="tab in dateTabs"
|
v-for="tab in dateTabs"
|
||||||
:key="tab.value"
|
:key="tab.value"
|
||||||
:class="['chip', { active: formData.appointment_date === tab.value }]"
|
:class="['chip', { active: formData.pending_assign !== '1' && formData.appointment_date === tab.value }]"
|
||||||
@click="handleDateTabClick(tab.value)"
|
@click="handleDateTabClick(tab.value)"
|
||||||
>
|
>
|
||||||
{{ tab.label }}
|
{{ tab.label }}
|
||||||
<em v-if="tab.value && dateCounts[tab.value] !== undefined">{{ dateCounts[tab.value] }}</em>
|
<em v-if="tab.value && dateCounts[tab.value] !== undefined">{{ dateCounts[tab.value] }}</em>
|
||||||
</span>
|
</span>
|
||||||
|
<span
|
||||||
|
:class="['chip', 'chip-pending', { active: formData.pending_assign === '1' }]"
|
||||||
|
@click="handlePendingAssignTabClick"
|
||||||
|
v-perms="['tcm.diagnosis/assign']"
|
||||||
|
>
|
||||||
|
待分配医助
|
||||||
|
<em v-if="pendingAssignCount !== undefined">{{ pendingAssignCount }}</em>
|
||||||
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="search-row">
|
<div class="search-row">
|
||||||
<el-input v-model="formData.keyword" placeholder="患者姓名 / 手机号" clearable class="search-input" @keyup.enter="doSearch" />
|
<el-input v-model="formData.keyword" placeholder="患者姓名 / 手机号" clearable class="search-input" @keyup.enter="doSearch" />
|
||||||
@@ -575,7 +583,8 @@ const formData = reactive({
|
|||||||
end_time: '',
|
end_time: '',
|
||||||
diagnosis_confirmed: '' as '' | '0' | '1',
|
diagnosis_confirmed: '' as '' | '0' | '1',
|
||||||
appointment_date: '' as string,
|
appointment_date: '' as string,
|
||||||
has_appointment: '' as '' | '0' | '1'
|
has_appointment: '' as '' | '0' | '1',
|
||||||
|
pending_assign: '' as '' | '1'
|
||||||
})
|
})
|
||||||
|
|
||||||
const activeTab = ref('all')
|
const activeTab = ref('all')
|
||||||
@@ -621,27 +630,39 @@ const dateTabs = computed(() => [
|
|||||||
])
|
])
|
||||||
|
|
||||||
const dateCounts = ref<Record<string, number>>({})
|
const dateCounts = ref<Record<string, number>>({})
|
||||||
|
const pendingAssignCount = ref<number | undefined>(undefined)
|
||||||
|
|
||||||
const handleDateTabClick = async (value: string) => {
|
const handleDateTabClick = async (value: string) => {
|
||||||
|
formData.pending_assign = ''
|
||||||
formData.appointment_date = value
|
formData.appointment_date = value
|
||||||
pager.page = 1
|
pager.page = 1
|
||||||
await getLists()
|
await getLists()
|
||||||
fetchDateCounts()
|
fetchDateCounts()
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取各日期挂号数量
|
const handlePendingAssignTabClick = async () => {
|
||||||
|
formData.pending_assign = '1'
|
||||||
|
formData.appointment_date = ''
|
||||||
|
pager.page = 1
|
||||||
|
await getLists()
|
||||||
|
fetchDateCounts()
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取各日期挂号数量 + 待分配医助数量
|
||||||
const fetchDateCounts = async () => {
|
const fetchDateCounts = async () => {
|
||||||
try {
|
try {
|
||||||
const [today, tomorrow, dayAfter] = await Promise.all([
|
const [today, tomorrow, dayAfter, pending] = await Promise.all([
|
||||||
tcmDiagnosisLists({ appointment_date: todayStr.value, page_no: 1, page_size: 1 }),
|
tcmDiagnosisLists({ appointment_date: todayStr.value, page_no: 1, page_size: 1 }),
|
||||||
tcmDiagnosisLists({ appointment_date: tomorrowStr.value, page_no: 1, page_size: 1 }),
|
tcmDiagnosisLists({ appointment_date: tomorrowStr.value, page_no: 1, page_size: 1 }),
|
||||||
tcmDiagnosisLists({ appointment_date: dayAfterStr.value, page_no: 1, page_size: 1 })
|
tcmDiagnosisLists({ appointment_date: dayAfterStr.value, page_no: 1, page_size: 1 }),
|
||||||
|
tcmDiagnosisLists({ pending_assign: 1, page_no: 1, page_size: 1 })
|
||||||
])
|
])
|
||||||
dateCounts.value = {
|
dateCounts.value = {
|
||||||
[todayStr.value]: today?.count ?? 0,
|
[todayStr.value]: today?.count ?? 0,
|
||||||
[tomorrowStr.value]: tomorrow?.count ?? 0,
|
[tomorrowStr.value]: tomorrow?.count ?? 0,
|
||||||
[dayAfterStr.value]: dayAfter?.count ?? 0
|
[dayAfterStr.value]: dayAfter?.count ?? 0
|
||||||
}
|
}
|
||||||
|
pendingAssignCount.value = pending?.count ?? 0
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error('获取日期数量失败', e)
|
console.error('获取日期数量失败', e)
|
||||||
}
|
}
|
||||||
@@ -768,6 +789,7 @@ const handleReset = () => {
|
|||||||
formData.diagnosis_confirmed = ''
|
formData.diagnosis_confirmed = ''
|
||||||
formData.appointment_date = ''
|
formData.appointment_date = ''
|
||||||
formData.has_appointment = ''
|
formData.has_appointment = ''
|
||||||
|
formData.pending_assign = ''
|
||||||
pager.page = 1
|
pager.page = 1
|
||||||
getLists()
|
getLists()
|
||||||
fetchDateCounts()
|
fetchDateCounts()
|
||||||
@@ -1494,6 +1516,21 @@ onUnmounted(() => {
|
|||||||
background: var(--el-color-primary);
|
background: var(--el-color-primary);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.chip-pending {
|
||||||
|
margin-left: 8px;
|
||||||
|
color: var(--el-color-warning);
|
||||||
|
background: var(--el-color-warning-light-9);
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background: var(--el-color-warning-light-8);
|
||||||
|
}
|
||||||
|
|
||||||
|
&.active {
|
||||||
|
color: #fff;
|
||||||
|
background: var(--el-color-warning);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.search-row {
|
.search-row {
|
||||||
|
|||||||
@@ -56,12 +56,16 @@ class DiagnosisLists extends BaseAdminDataLists implements ListsSearchInterface
|
|||||||
{
|
{
|
||||||
// 获取当前管理员的角色ID
|
// 获取当前管理员的角色ID
|
||||||
$roleIds = AdminRole::where('admin_id', $this->adminId)->column('role_id');
|
$roleIds = AdminRole::where('admin_id', $this->adminId)->column('role_id');
|
||||||
|
|
||||||
|
// 待分配医助筛选:assistant_id 为空或 0(放在最前面判断,便于跳过医助角色的自我过滤)
|
||||||
|
$pendingAssign = isset($this->params['pending_assign']) && (string) $this->params['pending_assign'] === '1';
|
||||||
|
|
||||||
// 构建查询
|
// 构建查询
|
||||||
$query = Diagnosis::where($this->searchWhere);
|
$query = Diagnosis::where($this->searchWhere);
|
||||||
|
|
||||||
// 如果是医助角色(role_id=2),只显示自己添加的患者
|
// 如果是医助角色(role_id=2),只显示自己添加的患者;
|
||||||
if (in_array(2, $roleIds)) {
|
// 但当前在查"待分配医助"时应放开,否则 NULL 记录永远不会匹配 assistant_id=adminId
|
||||||
|
if (in_array(2, $roleIds) && !$pendingAssign) {
|
||||||
$query->where('assistant_id', $this->adminId);
|
$query->where('assistant_id', $this->adminId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -74,6 +78,11 @@ class DiagnosisLists extends BaseAdminDataLists implements ListsSearchInterface
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 待分配医助:assistant_id 为 NULL 或 0(使用 whereRaw 避免闭包 whereOr 歧义)
|
||||||
|
if ($pendingAssign) {
|
||||||
|
$query->whereRaw('(assistant_id IS NULL OR assistant_id = 0)');
|
||||||
|
}
|
||||||
|
|
||||||
// 是否确认诊单:1=已确认 0=未确认
|
// 是否确认诊单:1=已确认 0=未确认
|
||||||
if (isset($this->params['diagnosis_confirmed']) && $this->params['diagnosis_confirmed'] !== '') {
|
if (isset($this->params['diagnosis_confirmed']) && $this->params['diagnosis_confirmed'] !== '') {
|
||||||
$confirmed = (int)$this->params['diagnosis_confirmed'];
|
$confirmed = (int)$this->params['diagnosis_confirmed'];
|
||||||
@@ -409,12 +418,14 @@ class DiagnosisLists extends BaseAdminDataLists implements ListsSearchInterface
|
|||||||
{
|
{
|
||||||
// 获取当前管理员的角色ID
|
// 获取当前管理员的角色ID
|
||||||
$roleIds = AdminRole::where('admin_id', $this->adminId)->column('role_id');
|
$roleIds = AdminRole::where('admin_id', $this->adminId)->column('role_id');
|
||||||
|
|
||||||
|
$pendingAssign = isset($this->params['pending_assign']) && (string) $this->params['pending_assign'] === '1';
|
||||||
|
|
||||||
// 构建查询
|
// 构建查询
|
||||||
$query = Diagnosis::where($this->searchWhere);
|
$query = Diagnosis::where($this->searchWhere);
|
||||||
|
|
||||||
// 如果是医助角色(role_id=2),只显示自己添加的患者
|
// 如果是医助角色(role_id=2),只显示自己添加的患者;查"待分配医助"时放开
|
||||||
if (in_array(2, $roleIds)) {
|
if (in_array(2, $roleIds) && !$pendingAssign) {
|
||||||
$query->where('assistant_id', $this->adminId);
|
$query->where('assistant_id', $this->adminId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -427,6 +438,11 @@ class DiagnosisLists extends BaseAdminDataLists implements ListsSearchInterface
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 待分配医助:assistant_id 为 NULL 或 0
|
||||||
|
if ($pendingAssign) {
|
||||||
|
$query->whereRaw('(assistant_id IS NULL OR assistant_id = 0)');
|
||||||
|
}
|
||||||
|
|
||||||
// 是否确认诊单
|
// 是否确认诊单
|
||||||
if (isset($this->params['diagnosis_confirmed']) && $this->params['diagnosis_confirmed'] !== '') {
|
if (isset($this->params['diagnosis_confirmed']) && $this->params['diagnosis_confirmed'] !== '') {
|
||||||
$confirmed = (int)$this->params['diagnosis_confirmed'];
|
$confirmed = (int)$this->params['diagnosis_confirmed'];
|
||||||
|
|||||||
Reference in New Issue
Block a user