增加预约登记统计

main
yanzai 2 years ago
parent e7a9a69744
commit 0925d05696

@ -98,4 +98,38 @@ class AppointmentController extends Controller
return \Yz::echoError1('操作失败');
}
}
//统计各个体检机构预约登记记录
public function AppointmentCount(Request $request)
{
$userid = $request->get('userid');//中间件产生的参数
$group = $request->get('role');//中间件产生的参数
$searchInfo=request('searchInfo');
if($group<>1){
$cha=DB::table('medical_institution')->where(['link_user_id'=>$userid])->first();
$searchInfo['sn']=$cha->sn;
}
$list=DB::table('appointment_record as a')
->select('a.org_code','b.org_name',DB::raw('count(*) as count'))
->leftJoin('medical_institution as b','a.org_code','=','b.sn');
if(empty($searchInfo['dateRange'])){
$searchInfo['start']=date('Y-m-d')." 00:00:00";
$searchInfo['end']= date('Y-m-d')." 23:59:59";
}else{
$searchInfo['start']=$searchInfo['dateRange'][0]." 00:00:00";
$searchInfo['end']=$searchInfo['dateRange'][1]." 23:59:59";
}
if(isset($searchInfo['sn'])){
$list=$list->where('a.org_code',$searchInfo['sn']);
}
if(isset($searchInfo['checkType'])){
$list=$list->where('a.type',$searchInfo['checkType']);
}
$list=$list
->where([['a.is_del','=',0],['a.created_at','>=',$searchInfo['start']],['a.created_at','<=',$searchInfo['end']]])
->groupBy('a.org_code','b.org_name')
->get();
return \Yz::Return(true,'查询成功',$list);
}
}

@ -52,6 +52,7 @@ Route::group(['middleware'=>['checktoken','log'],'prefix'=>'v1'],function () {
Route::post('admin/DelAppointment','App\Http\Controllers\API\Admin\YeWu\AppointmentController@Del'); //admin后台删除预约记录
Route::post('admin/XTSignBindUser','App\Http\Controllers\API\XTSignController@bindUser');//admin后台用户绑定协同签名useid
Route::post('admin/UkeyBindUser','App\Http\Controllers\API\UkeyController@Bind');//admin后台用户绑定协同签名useid
Route::post('admin/AppointmentCount','App\Http\Controllers\API\Admin\YeWu\AppointmentController@AppointmentCount'); //admin后台预约统计
});

@ -133,3 +133,7 @@ export const SystemLogGetList = (data={}) => {
export const GetLogTableName = (data={}) => {
return axios({url:import.meta.env.VITE_APP_API+'v1/admin/GetLogTableName',data:data})
}
//预约登记统计
export const AppointmentCount = (data={}) => {
return axios({url:import.meta.env.VITE_APP_API+'v1/admin/AppointmentCount',data:data})
}

@ -12,7 +12,7 @@ import HealthCalendar from '../views/AppointmentMngr/HealthCalendar.vue'
import AppointmentList from '../views/AppointmentMngr/AppointmentList.vue'
import healthCheckList from '../views/MedicalCenter/HealthCheckList.vue'
import Dashboard from '../views/MedicalCenter/Dashboard.vue'
import AppointmentCount from '../views/Report/AppointmentCount.vue'
const router = createRouter({
history: createWebHashHistory(import.meta.env.BASE_URL),
@ -79,6 +79,11 @@ const router = createRouter({
name: 'AppointmentList',
component: AppointmentList,
meta: { title: '预约记录列表' }
} ,{
path: '/report/appointmentList',
name: 'ReportAppointmentList',
component: AppointmentCount,
meta: { title: '预约登记统计' }
}]
},

@ -0,0 +1,87 @@
<template>
<div>
<div class="head">
<el-row>
<el-form-item >
<el-select filterable clearable v-model="searchInfo.checkType" placeholder="登记类型">
<el-option label="健康证" value="1" />
<el-option label="老年人" value="2" />
</el-select>
</el-form-item>
<el-form-item style="margin-left: 8px;">
<el-select filterable clearable v-model="searchInfo.sn" placeholder="请选择体检机构">
<el-option v-for="(item, index) in org_list" :key="index" :label="item.org_name" :value="item.sn" />
</el-select>
</el-form-item>
<el-form-item style="margin-left: 8px;">
<el-date-picker v-model="searchInfo.dateRange" value-format="YYYY-MM-DD" type="daterange"
range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" />
</el-form-item>
<el-form-item>
<el-button type="primary" style="margin-left: 20px;" @click="GetInfo"></el-button>
</el-form-item>
</el-row>
</div>
<el-table :data="tableData" style="width: 100%;" row-key="id" v-loading="loading">
<el-table-column prop="org_name" label="体检机构" />
<el-table-column prop="org_code" label="Code" />
<el-table-column prop="count" label="数量" />
</el-table>
</div>
</template>
<script setup>
import {
ref,
onMounted
} from 'vue'
import {
ElMessage
} from 'element-plus'
import {
AppointmentCount,GetHealthOrganizationEnableList
} from '@/api/api.js'
let searchInfo = ref({
checkType:"2",
dateRange: [],
sn: '',
})
let tableData = ref([])
const GetInfo=()=>{
AppointmentCount({searchInfo:searchInfo.value}).then(res => {
if (res.status) {
tableData.value = res.data
} else {
ElMessage.error(res.msg)
}
})
}
let org_list = ref([]) //
const getHealthOrganizationEnableList = () => {
GetHealthOrganizationEnableList().then(res => {
if (res.status) {
org_list.value = res.data
if (res.data.length == 1) {
searchInfo.value.sn = res.data[0].sn
}
} else {
ElMessage.error(res.msg)
}
})
}
onMounted(() => {
getHealthOrganizationEnableList()
GetInfo()
})
</script>
<style>
</style>
Loading…
Cancel
Save