完善H5,报到机,报表等

main
yanzai 3 months ago
parent 0eba7d6cb9
commit cd9d537441

2
.gitignore vendored

@ -1 +1,3 @@
/Laravel/public/admin
/h5/unpackage
/h5/unpackage

@ -11,26 +11,43 @@ class AppointmentTypeController extends Controller
//各种预约方式数量统计
public function countAppointmentType(){
$searchInfo = request('searchInfo');
$where=[ 's_list.is_del' => 0, 's_list.is_nullify' => 0];
$YuYueAllCount=DB::table('s_list')->where($where)->whereIn('s_list.list_status',[1,2,3,4]);
$ShuangYueCount=DB::table('s_list')->where($where)
->where(['s_list.list_status'=>1])
->where('s_list.reservation_date','<',date('Y-m-d'))
;
$list = DB::table('s_list');
if(isset($searchInfo['dateRange'])){
$list=$list->whereBetween('s_list.reservation_date', $searchInfo['dateRange']);
$AllCount=$YuYueAllCount->whereBetween('s_list.reservation_date', $searchInfo['dateRange']);
$ShuangYueCount=$ShuangYueCount->whereBetween('s_list.reservation_date', $searchInfo['dateRange']);
}
$list=$list
->where(['s_list.list_status' => 2, 's_list.is_del' => 0, 's_list.is_nullify' => 0])
->where($where)->whereIn('s_list.list_status',[1,2,3,4])
->select('appointment_type_id', 's_appointment_type.name', DB::raw('count(*) as count'))
->leftJoin('s_appointment_type', 's_list.appointment_type_id', '=', 's_appointment_type.id')
->groupBy('appointment_type_id', 's_appointment_type.name') // 添加 s_appointment_type.name 到 groupBy
->get();
$YuYueAllCount=$YuYueAllCount->count();
$ShuangYueCount=$ShuangYueCount->count();
//按月统计
$monthList = DB::table('s_list');
if(isset($searchInfo['dateRange'])){
$monthList=$monthList->whereBetween('s_list.reservation_date', $searchInfo['dateRange']);
}
$monthList=$monthList
->where(['s_list.list_status' => 2,'s_list.is_del' => 0,'s_list.is_nullify' => 0])
->where($where)->whereIn('s_list.list_status',[1,2,3,4])
->select(DB::raw('DATE_FORMAT(s_list.reservation_date, "%Y-%m") as month'), DB::raw('count(*) as count'))
->groupBy('month')->get();
return \Yz::Return(true, '操作成功', ['list'=>$list,'monthList'=>$monthList]);
return \Yz::Return(true, '操作成功', [
'list'=>$list,
'monthList'=>$monthList,
'yuYueAllCount'=>$YuYueAllCount,
'shuangYueCount'=>$ShuangYueCount,
'shuangYueLv' =>$YuYueAllCount>0? number_format(($ShuangYueCount / $YuYueAllCount) * 100, 2) . '%':0
]);
}
}

@ -487,4 +487,48 @@ class PlanListController extends Controller
}
return \Yz::Return(true, '查询完成', $list);
}
public function TongJi()
{
$SearchInfo = request('SearchInfo');
$canshu=[];
$sql=' ';
if(!empty($SearchInfo['dateRange'])){
$canshu[] = $SearchInfo['dateRange'][0]; // 开始日期
$canshu[] = $SearchInfo['dateRange'][1]; // 结束日期
$sql.=" and a.date >= ? and a.date <= ?";
}
$planCount = DB::select("SELECT
aa.department_name,
sum(bb.count) as count,
sum(bb.used_count) as used_count
FROM
(
SELECT
b.department_name,
a.*
FROM
s_source_roster_detail AS a
LEFT JOIN s_department AS b ON a.department_id = b.id
WHERE
a.is_del = 0 ".$sql."
) AS aa
LEFT JOIN (
select roster_detail_id, sum(count) as count,sum(used_count) as used_count from s_source_roster_detail_count group by roster_detail_id
) AS bb ON aa.id = bb.roster_detail_id group by aa.department_name",$canshu);
$allCount=0;
$allUsedCount=0;
foreach ($planCount as $key => $item) {
$allCount+=$item->count;
$allUsedCount+=$item->used_count;
$item->used_rate=number_format(($item->used_count/$item->count)*100,2).'%';
}
$planInfo=[
'list'=>$planCount,
'allCount'=>$allCount,
'allUsedCount'=>$allUsedCount,
];
return \Yz::Return(true, '查询完成', $planInfo);
}
}

@ -115,7 +115,8 @@ class WorkMainController extends Controller
->select('s_list.*','s_period.period_begin_time','s_period.period_end_time','s_department_resources.department_resources_name');
if($userInfo[0]->group==2){
$list=$list->whereIn('warddesc', explode(",", $userInfo[0]->ward));
// $list=$list->whereIn('warddesc', explode(",", $userInfo[0]->ward));
$list=$list->where(['wardcode'=> $department->department_number]);
}else{
$list=$list->where(['RISRAcceptDeptCode'=>$department->department_number]);
}

@ -37,5 +37,18 @@ class EntrustController extends Controller
return \Yz::Return(true,'查询完成',['list'=>$list,'count'=>$count]);
}
public function GetDetail(Request $request)
{
$id = request('id');
$userid = $request->get('userid');//中间件产生的参数
$info = DB::table('s_list as a')->where(['a.id'=>$id,'a.reg_num' => $userid])
->select('a.*','c.period_begin_time','c.period_end_time')
->leftJoin('s_period as c','a.reservation_time','=','c.id')
->first();
if($info){
return \Yz::Return(true,'查询完成',['info'=>$info]);
}
return \Yz::Return(false,'查询失败');
}
}

@ -10,10 +10,14 @@ class LoginController extends Controller
{
public function Login()
{
$regnum = request('regnum');
if(empty($regnum)){
return \Yz::echoError1('患者id不能为空');
}
$jwt= new JWT();
$accessTimeout = $jwt -> GetGetSecretTimeOut();
$refreshTimeout = $jwt -> GetRefreshTokenTimeOut();
$access_token = $jwt->BuildJWT('yz','access','0006944759',666,$accessTimeout);
$access_token = $jwt->BuildJWT('yz','access',$regnum,666,$accessTimeout);
$refresh_token = $jwt->BuildJWT('yz','refresh',9999,'',$refreshTimeout);
$result['token']=$access_token;
$result['refresh_token']=$refresh_token;

@ -147,7 +147,7 @@ class CSharpController extends Controller
self::$request->save();
$res = json_decode($res_string, true);
if (isset($res['Response']['Head']['TradeStatus']) and $res['Response']['Head']['TradeStatus'] == 'AA') {
return ['status'=>true,'msg'=>'推送成功','data'=>['entrust_id' => $entrust->entrust_id]];
return ['status'=>true,'msg'=>'推送成功','data'=>['entrust_id' => $entrust->entrust_id,'res'=>$res]];
} else {
return ['status'=>false,'msg'=>'推送失败','data'=>[]];
}

@ -132,9 +132,27 @@ class PacsController extends Controller
];
$u = DB::table('s_list')->where(['entrust_id' => $orderNo])->update($data);
if($u){
$i_log = DB::table('s_list_log')->insert([
'list_id' =>$entrust->id,
'reg_num' => $entrust->reg_num,
'old_status' => $entrust->list_status,
'new_status' => 2,
'create_user' => '报到机接口',
'note' => '报到成功',
'data' => json_encode(['checkNo'=>$checkNo],JSON_UNESCAPED_UNICODE)
]);
//通知pacs
$pacs=new CSharpController();
$pacs_res=$pacs->SaveApply($entrust->entrust_id);
$i_log = DB::table('s_list_log')->insert([
'list_id' =>$entrust->id,
'reg_num' => $entrust->reg_num,
'old_status' => $entrust->list_status,
'new_status' => 2,
'create_user' => 'Pacs接口',
'note' => '通知PacS',
'data' => json_encode($pacs_res,JSON_UNESCAPED_UNICODE)
]);
return \Yz::JsonReturn(true,'报道成功',['orderNo'=>$orderNo,'pacs_info'=>$pacs_res]);
}else{
return \Yz::JsonError('报道失败');

@ -96,7 +96,19 @@ class YiJiController extends Controller
'diagnosisName' => $data_v["diagnosisName"], //临床诊断(诊断名称)
'idCardNumber' => $data_v["idCardNumber"], //身份证号
];
DB::table('s_list')->insert($params);
$list_id= DB::table('s_list')->insertGetId($params);
if($list_id){
$i_log = DB::table('s_list_log')->insert([
'list_id' =>$list_id,
'reg_num' => $data_v['cardNo'],
'old_status' => 0,
'new_status' => 0,
'create_user' => 'his',
'note' => '创建记录',
'data' => json_encode($params)
]);
}
}
}
}

@ -85,6 +85,7 @@ Route::group(['middleware'=>['checktoken','log'],'prefix'=>'v1'],function () {
Route::post('admin/PlanListGetList','App\Http\Controllers\API\Admin\YeWu\PlanListController@GetList');//生成计划明细
Route::post('admin/PlanListGetDetail','App\Http\Controllers\API\Admin\YeWu\PlanListController@GetDetail');//计划详情
Route::post('admin/GetPlanUsedList','App\Http\Controllers\API\Admin\YeWu\PlanListController@GetUsedList');//计划占用详情列表
Route::post('admin/PlanTongJi','App\Http\Controllers\API\Admin\YeWu\PlanListController@TongJi');//计划统计
Route::post('admin/PlanDetailChangeInfo','App\Http\Controllers\API\Admin\YeWu\PlanListController@ChangeInfo');//修改计划详情信息
Route::post('admin/PlanListDel','App\Http\Controllers\API\Admin\YeWu\PlanListController@Del');//删除计划详情
Route::post('admin/GetMainList','App\Http\Controllers\API\Admin\YeWu\WorkMainController@GetList');//获取主表列表
@ -140,6 +141,7 @@ Route::group(['middleware'=>['checktoken','log'],'prefix'=>'v1'],function () {
Route::post('H5/GetEnablePlan','App\Http\Controllers\API\H5\PlanController@GetEnablePlan');//获取可预约计划
Route::post('H5/H5_YuYue','App\Http\Controllers\API\H5\PlanController@H5_YuYue');//H5_预约
Route::post('H5/H5_CancelYuYue','App\Http\Controllers\API\H5\PlanController@H5_CancelYuYue');//H5_取消预约
Route::post('H5/GetEntrustDetail','App\Http\Controllers\API\H5\EntrustController@GetDetail');//H5_获取医嘱详情
});

@ -4,3 +4,7 @@ VITE_APP_FILE = 'http://192.168.80.76/'
VITE_APP_API_66666666 = 'http://yiji-qhdzhongyiyuan/api/'
VITE_APP_FILE_66666666 = 'http://yiji-qhdzhongyiyuan/'
VITE_APP_API_5555 = 'https://yiji.yuluo.online/api/'
VITE_APP_FILE_555555 = 'https://yiji.yuluo.online/'

@ -382,4 +382,8 @@ export const HisAutoLogin = (data = {}) => {
//生成检查申请单pdf文件
export const CreateJianChaShenQingDanPdf = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'CreateJianChaShenQingDanPdf', data: data })
}
//号源统计
export const adminPlanTongJi = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/PlanTongJi', data: data })
}

@ -222,6 +222,13 @@ const router = createRouter({
meta: {
title: '开单统计'
}
},{
path: '/info/PlanTj',
name: 'infoPlanTj',
component: () => import('../views/Info/PlanTj.vue'),
meta: {
title: '号源统计'
}
}]
},

@ -2,57 +2,85 @@
<div class="head">
<el-row>
<el-form-item>
<el-date-picker style="margin-left: 8px; width: 300px" v-model="searchInfo.dateRange"
type="daterange" range-separator="至" start-placeholder="开始时间" end-placeholder="结束时间"
value-format="YYYY-MM-DD" />
<el-date-picker style="margin-left: 8px; width: 300px" v-model="searchInfo.dateRange" type="daterange"
range-separator="至" start-placeholder="开始时间" end-placeholder="结束时间" value-format="YYYY-MM-DD" />
</el-form-item>
<el-button @click="countAppointmentTypeFunc()" style="margin-left: 10px;">搜索</el-button>
<el-button @click="countAppointmentTypeFunc()" style="margin-left: 10px;">搜索</el-button>
</el-row>
</div>
<div v-if="monthNameList.length>0" id="MonthCount" class="MonthCount"></div>
<el-table :data="tableData" style="width: 100%;" row-key="id" v-loading="loading">
<div style="display: flex;">
<div style="margin-right: 10px;" v-if="monthNameList.length>0">
<div style="font-size: 18px;font-weight: 900;color: #666;">爽约率时间范围内</div>
<table class="shuangyue_table" style="width: 200px;">
<tr>
<td>预约人数</td><td>{{YuYueCount}}</td>
</tr>
<tr>
<td>爽约人数</td><td>{{ShuangYueCount}}</td>
</tr>
<tr>
<td>爽约率</td><td>{{ShuangYueLv}}</td>
</tr>
</table>
</div>
<div v-if="monthNameList.length>0" id="MonthCount" class="MonthCount"></div>
</div>
<el-table :data="tableData" style="width: 100%;" row-key="id" v-loading="loading">
<el-table-column prop="name" label="方式" />
<el-table-column prop="count" label="数量" />
</el-table>
</template>
<script setup>
import {
ref,
onMounted,computed, nextTick
onMounted,
computed,
nextTick
} from 'vue'
import * as echarts from 'echarts';
import {
countAppointmentType,GetServiceDateTime,
countAppointmentType,
GetServiceDateTime,
} from '@/api/api.js'
import { ElMessage, ElMessageBox } from 'element-plus'
import {
ElMessage,
ElMessageBox
} from 'element-plus'
const groupList_new = computed(() => {
return groupList.value.filter(item => (item.id ==2));
});
let loading=ref(false);
let searchInfo=ref({
name:''
return groupList.value.filter(item => (item.id == 2));
});
let loading = ref(false);
let searchInfo = ref({
name: ''
})
let Info=ref({
id:null,
name:'',
status:1
let Info = ref({
id: null,
name: '',
status: 1
})
let dialogVisible=ref(false);
let dialogVisible = ref(false);
//list
let tableData = ref([])
let monthData=ref();
let monthData = ref();
let currentPage = ref(1) //
let pageSize = ref(15) //
let total = 0 //
let YuYueCount=ref(0)//
let ShuangYueCount=ref(0)//
let ShuangYueLv=ref('')//
//
const GetServiceDate = () => {
GetServiceDateTime().then(res => {
@ -63,70 +91,84 @@
}
})
}
let monthNameList=ref([]);
let monthCountList=ref([]);
const countAppointmentTypeFunc=()=>{
let monthNameList = ref([]);
let monthCountList = ref([]);
const countAppointmentTypeFunc = () => {
loading.value = true
countAppointmentType({searchInfo:searchInfo.value}).then(res => {
countAppointmentType({
searchInfo: searchInfo.value
}).then(res => {
loading.value = false
if (res.status) {
tableData.value=res.data.list
monthData.value=res.data.monthList
monthNameList.value=[];
monthCountList.value=[];
monthData.value.forEach((v,i)=>{
monthNameList.value.push(v.month)
monthCountList.value.push(v.count)
tableData.value = res.data.list
monthData.value = res.data.monthList
YuYueCount.value=res.data.yuYueAllCount
ShuangYueCount.value=res.data.shuangYueCount
ShuangYueLv.value=res.data.shuangYueLv
monthNameList.value = [];
monthCountList.value = [];
monthData.value.forEach((v, i) => {
monthNameList.value.push(v.month)
monthCountList.value.push(v.count)
})
if(monthNameList.value.length>0){
nextTick(()=>{
DrawMonth()
})
}
if (monthNameList.value.length > 0) {
nextTick(() => {
DrawMonth()
})
}
} else {
ElMessage.error(res.msg)
}
})
}
const DrawMonth=()=>{
const DrawMonth = () => {
var ChartMonthCount = echarts.init(document.getElementById('MonthCount'));
//
ChartMonthCount.setOption({
title: {
text: searchInfo.value.dateRange[0]+'~'+searchInfo.value.dateRange[1]+'预约量统计(月)'
},
tooltip: {},
xAxis: {
data: monthNameList.value
},
yAxis: {},
series: [
{
name: '数量',
type: 'bar',
data:monthCountList.value
}
]
title: {
text: searchInfo.value.dateRange[0] + '~' + searchInfo.value.dateRange[1] + '预约量统计(月)'
},
tooltip: {},
xAxis: {
data: monthNameList.value
},
yAxis: {},
series: [{
name: '数量',
type: 'bar',
data: monthCountList.value
}]
});
}
onMounted(()=>{
GetServiceDate()
onMounted(() => {
GetServiceDate()
})
</script>
<style scoped>
<style scoped lang="scss">
.page {
display: flex;
justify-content: flex-end;
margin-top: 10px;
}
.MonthCount{
.MonthCount {
height: 400px;
width: 100%;
}
.shuangyue_table{
border-collapse: collapse; /* 关键:合并边框 */
border: 1px solid #ccc; /* 表格整体边框 */
th, td {
border: 1px solid #ccc; /* 单元格边框 */
padding: 10px;
text-align: left;
}
}
</style>

@ -0,0 +1,124 @@
<template>
<div>
<div class="head">
<el-row>
<el-form-item>
<el-date-picker style="margin-left: 8px; width: 300px" v-model="SearchInfo.dateRange"
type="daterange" range-separator="至" start-placeholder="开始时间" end-placeholder="结束时间"
value-format="YYYY-MM-DD" />
</el-form-item>
<el-button @click="GetInfo()" style="margin-left: 10px;">搜索</el-button>
</el-row>
</div>
<div v-if="AllUsedCount>0" id="Bing" class="Bing"></div>
<el-table :data="tableData" style="width: 100%;" row-key="id" v-loading="loading">
<el-table-column prop="department_name" label="科室" />
<el-table-column prop="count" label="号源总数" />
<el-table-column prop="used_count" label="使用量" />
<el-table-column prop="used_rate" label="使用量占比" />
</el-table>
</div>
</template>
<script setup>
import {
ref,
onMounted,nextTick
} from 'vue'
import * as echarts from 'echarts';
import {
adminPlanTongJi,GetServiceDateTime
} from '@/api/api.js'
import {
ElMessage,
ElMessageBox
} from 'element-plus'
let loading = ref(false)
let tableData = ref([])
let SearchInfo=ref({})
let PlanAllCount=ref(0)
let AllUsedCount=ref(0)
//
const GetServiceDate = () => {
GetServiceDateTime().then(res => {
if (res.status) {
let datetime = res.data.datetime.substr(0, 10)
SearchInfo.value.dateRange = [datetime, datetime]
GetInfo()
}
})
}
const GetInfo = () => {
loading.value=true
adminPlanTongJi({
SearchInfo: SearchInfo.value
}).then(res => {
loading.value = false
if (res.status) {
tableData.value=res.data.list
PlanAllCount.value=res.data.allCount
AllUsedCount.value=res.data.allUsedCount
if(AllUsedCount.value>0){
nextTick(()=>{
DrawBing()
})
}
}else{
ElMessage.error(res.msg)
}
})
}
const DrawBing=()=>{
var ChartBingCount = echarts.init(document.getElementById('Bing'));
//
ChartBingCount.setOption({
title: {
text: SearchInfo.value.dateRange[0]+'~'+SearchInfo.value.dateRange[1]+'全院号源使用量占比',
subtext: '号源总量 '+ PlanAllCount.value,
left: 'center'
},
tooltip: {
trigger: 'item'
},
legend: {
orient: 'vertical',
left: 'left'
},
series: [
{
name: 'Access From',
type: 'pie',
radius: '50%',
data: [
{ value: PlanAllCount.value-AllUsedCount.value, name: '未占用' },
{ value: AllUsedCount.value, name: '已预约' },
],
emphasis: {
itemStyle: {
shadowBlur: 10,
shadowOffsetX: 0,
shadowColor: 'rgba(0, 0, 0, 0.5)'
}
}
}
]
});
}
onMounted(() => {
GetServiceDate()
})
</script>
<style scoped>
.Bing{
height: 400px;
width: 100%;
}
</style>

@ -1,3 +1,3 @@
ENV = 'development'
VITE_APP_API = '/api/'
VITE_APP_FILE = 'http://YiJiYuYue-Common'
VITE_APP_FILE = 'http://yiji-qhdzhongyiyuan'

@ -1,4 +1,4 @@
ENV = 'production'
VITE_APP_API = 'https://yiji.yuluo.online/Laravel/public/api/'
VITE_APP_FILE = 'https://yiji.yuluo.online/Laravel/public/'
VITE_APP_API = 'http://192.168.80.76/api/'
VITE_APP_FILE = 'http://192.168.80.76/'

@ -11,4 +11,12 @@ export const GetEnablePlan = (data) => {
}
export const GetServiceDateTime = (data) => {
return axios({ url: import.meta.env.VITE_APP_API + 'GetServiceDateTime', data: data })
}
//预约
export const H5_YuYue = (data) => {
return axios({url: import.meta.env.VITE_APP_API+"v1/H5/H5_YuYue",method: 'POST',data:data});
}
//取消预约
export const H5_CancelYuYue = (data) => {
return axios({url: import.meta.env.VITE_APP_API+"v1/H5/H5_CancelYuYue",method: 'POST',data:data});
}

@ -31,7 +31,12 @@ const router = createRouter({
path: '/checkitemmainlist',
name: 'CheckItemMainList',
component: () => import('../views/CheckItemMainList.vue')
}
},
{
path: '/planList',
name: 'PlanList',
component: () => import('../views/PlanList.vue')
}
]
})

@ -1,13 +1,17 @@
<template>
<div class="CheckItemMain">
<div class="userInfo">
<div style="font-size: 20px; font-weight: 700; color: #fff;"><el-icon><Avatar /></el-icon> </div>
<div class="userInfo1">
<div>姓名<span>张XX</span></div>
<div>性别<span></span></div>
<div>电话<span>19999999999</span></div>
<div>登记号<span>002000022</span></div>
</div>
<div v-if="list!=null && list.length>0">
<div style="font-size: 20px; font-weight: 700; color: #fff;"><el-icon><Avatar /></el-icon> </div>
<div class="userInfo1">
<div>姓名<span>张XX</span></div>
<div>性别<span></span></div>
<div>电话<span>19999999999</span></div>
<div>登记号<span>002000022</span></div>
</div>
</div>
<div class="date">
<el-date-picker size="large" @change="DateChange()" style="width: 100%; border-radius: 20px;height: 60px;" v-model="searchInfo.dateRange"
type="daterange" range-separator="至" start-placeholder="开始时间" end-placeholder="结束时间"
@ -27,24 +31,31 @@
</div>
<div class="iteminfo">
<div style="height: 60px;line-height: 60px;font-size: 20px;" >医嘱时间{{item.entrust_date}} 申请科室{{item.reservation_department}} </div>
<el-button v-if="item.list_status==0" type="success" size="large" class="button dian" >开始预约</el-button>
<div v-if="item.reservation_date && item.list_status>0">
<div class="label">预约时段</div>
<div class="value">{{item.reservation_date}} {{item.period_begin_time.substring(0,5)}}~{{item.period_end_time.substring(0,5)}}</div>
</div>
<el-button v-if="item.list_status==0" type="success" size="large" class="button dian" @click="ToPlanList(1,item)"></el-button>
<div v-if="item.list_status==1">
<el-button type="success" size="large" class="button red" >取消</el-button>
<el-button type="success" size="large" class="button blue" >改约</el-button>
<el-button type="success" size="large" class="button red" @click="Cancel(item)" >取消</el-button>
<el-button type="success" size="large" class="button blue" @click="ToPlanList(2,item)"></el-button>
</div>
</div>
</div>
<div v-if="list==null || list.length==0">
<el-empty description="暂无记录" />
</div>
</div>
</div>
</template>
<script setup>
import {
EntrustGetList,GetServiceDateTime
EntrustGetList,GetServiceDateTime,H5_CancelYuYue
} from "@/api/api.js";
import {
ElMessage
ElMessage,ElMessageBox
} from 'element-plus'
import {
ref,nextTick,onMounted
@ -70,9 +81,42 @@
})
}
const DateChange=()=>{
searchInfo.value.dateRange = ['2024-01-01','2025-01-01']
Getlist()
}
const ToPlanList=(do_type,item)=>{
let data={
do_type:do_type,
appointment_type:2,
regnum:item.reg_num,
entrustid:[item.entrust_id],
episodeid:item.episodeid
}
window.location.href ='./#/planList?data=' + encodeURIComponent(JSON.stringify(data))
}
const Cancel=(item)=>{
ElMessageBox.confirm(
'确定取消吗?',
'Warning',
{
confirmButtonText: '确定',
cancelButtonText: '关闭',
type: 'warning',
}
)
.then(() => {
H5_CancelYuYue({MainListId:item.id}).then(res => {
console.log(res)
if(res.status){
Getlist()
}
})
})
.catch(() => {
})
}
onMounted(()=>{
GetServiceDate();

@ -1,38 +1,51 @@
<template>
<div>
登录
<div style="display: flex;flex-direction: column;height: 100vh; justify-content: center;align-items: center;">
<div style="font-size: 16px;margin-left: -80px;margin-top: -68px;"> </div>
<div>
<el-input v-model="regnum" style="width: 240px" placeholder="" />
<el-button type="primary" style="margin-left: 20px;" @click="login()"> </el-button>
</div>
</div>
</template>
<script setup>
import {
Login
} from "@/api/api.js";
import {
ElMessage
} from 'element-plus'
import {
ref,nextTick,onMounted
} from 'vue'
const login=()=>{
Login().then(res=>{
console.log(res)
if(res.status){
sessionStorage.setItem('token', res.data.token);
sessionStorage.setItem('refreshToken', res.data.refresh_token);
var token = sessionStorage.getItem('token');
if (token == res.data.token) {
window.location.href="./#/index"
}
import {
Login
} from "@/api/api.js";
import {
ElMessage
} from 'element-plus'
import {
ref,
nextTick,
onMounted
} from 'vue'
let regnum = ref('');
const login = () => {
if (regnum.value == '') {
alert('请输入患者id');
return false
}
}else{
ElMessage.error(res.data.msg)
}
})
}
onMounted(() => {
login()
})
Login({regnum:regnum.value}).then(res => {
console.log(res)
if (res.status) {
sessionStorage.setItem('token', res.data.token);
sessionStorage.setItem('refreshToken', res.data.refresh_token);
var token = sessionStorage.getItem('token');
if (token == res.data.token) {
window.location.href = "./#/index"
}
} else {
ElMessage.error(res.data.msg)
}
})
}
onMounted(() => {
// login()
})
</script>
<style scoped>

@ -1,8 +1,251 @@
<template>
<div>
<div class="userInfo">
<div v-if="MianInfo">
<div class="title">选择预约日期及时段</div>
<div class="row" style="justify-content: space-around; font-size: 18px;color: #fff;">
<div class="row">
<div class="label">登记号</div>
<div class="value">{{MianInfo.reg_num}}</div>
</div>
<div class="row">
<div class="label">医嘱</div>
<div class="value">{{MianInfo.entrust}}</div>
</div>
</div>
</div>
<div class="date">
<el-date-picker size="large" @change="dateSelecteFunc()"
style="width: 100%; border-radius: 20px;height: 60px;" v-model="SearchInfo.date" range-separator="至"
start-placeholder="开始时间" end-placeholder="结束时间" value-format="YYYY-MM-DD" />
</div>
</div>
<div class="list" v-loading="loading">
<div class="info" v-for="(item,index) in List">
<div>
<div class="row">
<div class="label">执行科室</div>
<div class="value">{{MianInfo.implement_department}}</div>
</div>
<div class="row">
<div class="label">资源</div>
<div class="value">{{item.department_resources_name}}</div>
</div>
<div class="row">
<div class="label">时间段</div>
<div class="value" v-if="item.begin_time">{{item.begin_time.substring(0,5)}}~{{item.end_time.substring(0,5)}}</div>
</div>
</div>
<div class="right">
<div class="right_top">
<div class="button" @click="StartYuYue(item)"></div>
</div>
<div class="right_bottom">已约/总数<span style="color: darkturquoise;">{{item.used_count}}</span>/{{item.count}}</div>
</div>
</div>
<div v-if="List==null || List.length==0">
<el-empty description="当前日期无号源" />
</div>
</div>
</div>
</template>
<script>
<script setup>
import {
GetEnablePlan,
GetServiceDateTime,H5_YuYue
} from "@/api/api.js";
import {
ElMessage,ElMessageBox
} from 'element-plus'
import {
ref,
nextTick,
onMounted
} from 'vue'
import {
useRoute,
useRouter
} from "vue-router"
const route = useRoute()
const router = useRouter()
let SearchInfo = ref({
date: '',
})
let loading=ref(false)
let List = ref([])
let MianInfo = ref(null); //
const GetList = () => {
loading.value=true
GetEnablePlan({
...SearchInfo.value
}).then(res => {
loading.value=false
if (res.status) {
List.value = res.data.plan_list
MianInfo.value = res.data.mainInfo
SearchInfo.value.mainlistid = [MianInfo.value.id]
}
})
}
const dateSelecteFunc = (e) => {
GetList()
}
const StartYuYue=(item)=>{
ElMessageBox.confirm(
'确定预约 '+SearchInfo.value.date+' '+item.begin_time.substring(0,5)+'~'+item.end_time.substring(0,5)+' 时段吗?',
'Warning',
{
confirmButtonText: 'OK',
cancelButtonText: 'Cancel',
type: 'warning',
}
)
.then(() => {
console.log(66666)
SearchInfo.value.planid=item.id
H5_YuYue({...SearchInfo.value}).then(res => {
if(res.status){
setTimeout(function(){
window.location.href ='./#/checkitemmainlist';
},1000)
} else{
ElMessage.error(res.msg)
}
})
})
.catch(() => {
})
}
onMounted(() => {
SearchInfo.value = JSON.parse(decodeURIComponent(route.query.data))
var today = new Date();
// YYYY-MM-DD
function formatDate(date) {
var year = date.getFullYear();
var month = ("0" + (date.getMonth() + 1)).slice(-2); // 0+1
var day = ("0" + date.getDate()).slice(-2);
return year + "-" + month + "-" + day;
}
SearchInfo.value.date = formatDate(today);
GetList()
})
</script>
<style>
<style scoped>
.CheckItemMain {
height: calc(100vh);
background-color: #eef7fa;
padding-top: 30px;
}
.row {
display: flex;
align-items: center;
}
.title {
font-size: 23px;
font-weight: bolder;
color: #1b706d;
margin-bottom: 20px;
}
.userInfo {
border: 1px solid #ccc;
border-radius: 4px;
padding:20px 20px;
background-color: #33cdc9;
margin-bottom: 50px;
}
.date {
padding: 8px;
text-align: center;
width: 50%;
margin-top: 16px;
transform: translate(50%, 55px);
}
.label {
font-size: 18px;
color: #fff;
}
.value {
font-size: 22px;
font-weight: 900;
}
.list{
margin-top: 60px;
padding-bottom: 10px;
background-color: #ebebeb;
display:flex;
flex-direction: column;
justify-content: center;
}
.info{
background-color: #fff;
padding: 40px 40px 20px 40px;
display: flex;
justify-content: space-between;
border-radius: 20px;
color: #333;
margin-left: 10px;
margin-right: 10px;
margin-top: 10px;
}
.info .row{
margin-bottom: 20px;
}
.info .row .label{
font-size: 14px;
color:#333;
}
.info .row .value{
font-weight: 700;
font-size: 14px;
}
.info .right{
}
.info .right .right_top{
display: flex;
justify-content: center;
}
.info .right .right_bottom{
display: flex;
justify-content: flex-end;
margin-top: 20px;
}
.button{
width: 80px;
height: 80px;
text-align: center;
line-height: 80px;
background-color: #33cdc9;
border-radius: 10px;
color: #fff;
}
</style>

@ -5,6 +5,7 @@ import vue from '@vitejs/plugin-vue'
// https://vitejs.dev/config/
export default defineConfig({
base: "./",
plugins: [
vue(),
],
@ -18,7 +19,7 @@ export default defineConfig({
port: 5174,
proxy: {
'/api': {
target: 'http://YiJiYuYue-Common/api', // 实际的API服务器地址
target: 'http://yiji-qhdzhongyiyuan/api', // 实际的API服务器地址
changeOrigin: true,
rewrite: (path) => path.replace(/^\/api/, '') // 如果API地址有前缀可以进行转写
}

@ -5,8 +5,8 @@ import {
isLoading,
sendRequest
} = useHttp();
let Url='https://yiji.yuluo.online/Laravel/public'
//let Url='http://YiJiYuYue-Common'
let Url='http://192.168.80.76'
//let Url='http://yiji-qhdzhongyiyuan'
let BaseUrl=Url+'/api/'
export const BaseFileUrl=()=>{
@ -32,6 +32,10 @@ import {
export const H5_CancelYuYue = (data) => {
return sendRequest({url: BaseUrl+"v1/H5/H5_CancelYuYue",method: 'POST',data:data});
}
//获取医嘱详情
export const GetEntrustDetail = (data) => {
return sendRequest({url: BaseUrl+"v1/H5/GetEntrustDetail",method: 'POST',data:data});
}
export const UpFileUrl= () => {
return BaseUrl+'v1/UpFile'

@ -1,24 +1,27 @@
<template>
<view class="CheckItemMain">
<view class="head"></view>
<view class="userInfo" v-if="List.length>0">
<view class="title">患者信息</view>
<view class="row">
<view class="label" >姓名</view>
<view class="value" >{{List[0].user_name}}</view>
</view>
<view class="row">
<view class="label">性别</view>
<view class="value"><span v-if="List[0].user_sex==1"></span><span v-if="List[0].user_sex==2"></span></view>
</view>
<view class="row">
<view class="label">手机号</view>
<view class="value">{{List[0].user_phone}}</view>
</view>
<view class="row">
<view class="label">注册号</view>
<view class="value">{{List[0].reg_num}}</view>
<view class="userInfo" >
<view v-if="List.length>0">
<view class="title">患者信息</view>
<view class="row">
<view class="label" >姓名</view>
<view class="value" >{{List[0].user_name}}</view>
</view>
<view class="row">
<view class="label">性别</view>
<view class="value"><span v-if="List[0].user_sex==1"></span><span v-if="List[0].user_sex==2"></span></view>
</view>
<view class="row">
<view class="label">手机号</view>
<view class="value">{{List[0].user_phone}}</view>
</view>
<view class="row">
<view class="label">注册号</view>
<view class="value">{{List[0].reg_num}}</view>
</view>
</view>
<view class="date">
<view class="datetime">
@ -28,7 +31,11 @@
</view>
<view v-if="List.length>0" class="list">
<view class="info" v-for="(item,index) in List">
<view class="item_title">检查项目{{item.entrust}}</view>
<view class="row title_row">
<view class="item_title">检查项目{{item.entrust}}</view>
<view class="detail_button" @click="openDetail(item.id)"></view>
</view>
<view class="item_info">
<view>医嘱时间<span class="item_value">{{item.entrust_date}}</span></view>
<view>申请科室<span class="item_value">{{item.reservation_department}}</span></view>
@ -53,18 +60,60 @@
<view class="nodata" v-else>
暂无记录
</view>
<uni-popup ref="popupDetail">
<view class="detail_main" v-if="entrustInfo!=null">
<view class="row">
<view>检查项目</view>
<view>{{entrustInfo.entrust}}</view>
</view>
<view class="row">
<view>状态</view>
<view>
<span v-if="entrustInfo.list_status==0" class="item_value"></span>
<span v-if="entrustInfo.list_status==1" class="item_value"></span>
<span v-if="entrustInfo.list_status==2" class="item_value"></span>
<span v-if="entrustInfo.list_status==3" class="item_value"></span>
</view>
</view>
<view class="row">
<view>医嘱时间</view>
<view>{{entrustInfo.entrust_date}}</view>
</view>
<view class="row">
<view>申请科室</view>
<view>{{entrustInfo.reservation_department}}</view>
</view>
<view class="row">
<view>开单医生</view>
<view>{{entrustInfo.docotr}}</view>
</view>
<view class="row">
<view>支付</view>
<view>
<uni-tag v-if="entrustInfo.is_pay==1" :inverted="true" text="否" type="warning" />
<uni-tag v-if="entrustInfo.is_pay==0" :inverted="true" text="是" type="success" />
</view>
</view>
<view class="row" v-if="entrustInfo.list_status==1">
<view>预约时段</view>
<view>{{entrustInfo.reservation_date}} {{entrustInfo.period_begin_time.substring(0,5)}}~{{entrustInfo.period_end_time.substring(0,5)}}</view>
</view>
</view>
</uni-popup>
</view>
</template>
<script setup>
import{ref,onMounted} from "vue"
import {EntrustGetList,H5_CancelYuYue} from "@/api"
import {EntrustGetList,H5_CancelYuYue,GetEntrustDetail} from "@/api"
import {onLoad,onShow} from "@dcloudio/uni-app"
let SearchInfo=ref({
dateRange:['2021-05-01','2049-01-01'],
})
let List=ref([])
let entrustInfo=ref(null);
let popupDetail=ref('')
const GetList=()=> {
EntrustGetList({searchInfo:SearchInfo.value}).then(res => {
console.log(res)
@ -73,6 +122,17 @@
}
})
}
const openDetail=(id)=>{
popupDetail.value.open()
GetEntrustDetailFunc(id)
}
const GetEntrustDetailFunc=(id)=>{
GetEntrustDetail({id:id}).then(res => {
if(res.status){
entrustInfo.value=res.data.info
}
})
}
const dateSelecteFunc=(e)=>{
SearchInfo.value.dateRange=e
GetList()
@ -187,6 +247,24 @@
}
.junfen{
}
.title_row{
border-bottom: 1rpx solid #ccc;
padding: 20rpx;
display: flex;
justify-content: space-between;
}
.detail_button{
font-size: 26rpx;
color: #666;
border: 1px solid #ccc;
border-radius: 8rpx;
padding: 0rpx 10rpx;
margin-left: 10rpx;
width: 56rpx;
height: 40rpx;
color: #33cdc9;
}
.title{
font-weight: 700;
@ -221,8 +299,7 @@
}
.item_title{
color:#999;
border-bottom: 1rpx solid #ccc;
padding: 20rpx;
}
.item_info{
padding: 30rpx 50rpx;
@ -261,4 +338,10 @@
margin-top: 100rpx;
color: #ccc;
}
.detail_main{
background-color: #fff;
padding: 40rpx 30rpx 20rpx 30rpx;
width:600rpx;
border-radius: 40rpx;
}
</style>

@ -1,6 +1,9 @@
<template>
<view>
<view class="LoginMain">
<view style="padding-top: 30%;">
<uni-easyinput type="text" v-model="regnum" placeholder="请输入患者id" />
<button style="margin-top: 20rpx;background-color: #33cdc9;color: #fff;" @click="LoginFunc()"> </button>
</view>
</view>
</template>
@ -8,9 +11,12 @@
import{ref,onMounted} from "vue"
import {Login} from "@/api"
import {onLoad} from "@dcloudio/uni-app"
let regnum=ref('');
const LoginFunc=()=> {
Login().then(res => {
if(regnum.value==''){
return false;
}
Login({regnum:regnum.value}).then(res => {
console.log(res)
if(res.status){
sessionStorage.setItem("access_token",res.data.token)
@ -22,10 +28,13 @@
})
}
onMounted(()=>{
LoginFunc()
//LoginFunc()
})
</script>
<style>
<style scoped>
.LoginMain{
padding: 20rpx;
}
</style>

@ -1 +0,0 @@
.CheckItemMain[data-v-765acc77]{height:calc(100vh - 3.75rem);background:radial-gradient(circle at top center,#dcdcdc 30%,#e3e3e3,transparent 2%);padding-top:.9375rem}.userInfo[data-v-765acc77]{background-color:#33cdc9;margin-left:.625rem;margin-right:.625rem;border-radius:.9375rem;padding:1.25rem 1.25rem 0;border:.03125rem solid #fff}.userInfo .row[data-v-765acc77]{margin-top:.625rem;font-size:1rem;color:#fff}.userInfo .value[data-v-765acc77]{margin-left:.625rem}.userInfo .label[data-v-765acc77]{text-align:right;width:30%}.row[data-v-765acc77]{display:flex}.title[data-v-765acc77]{font-weight:700;color:#fff}.date[data-v-765acc77]{text-align:center;font-size:.9375rem;background-color:#fff;padding:.625rem 1.875rem;border-radius:.9375rem;box-shadow:0 .3125rem .3125rem #add2d1;color:#333;position:relative;top:1.5625rem;white-space:nowrap}.list[data-v-765acc77]{padding:.625rem}.info[data-v-765acc77]{margin-top:1.875rem;padding:.625rem;background-color:#fff;border-radius:.625rem;margin-bottom:-.625rem}.item_title[data-v-765acc77]{color:#999;border-bottom:.03125rem solid #ccc;padding:.625rem}.item_info[data-v-765acc77]{padding:.9375rem 1.5625rem;color:#333}.item_info uni-view[data-v-765acc77]{margin-top:.625rem}.item_value[data-v-765acc77]{font-weight:700}.button[data-v-765acc77]{width:100%;height:1.875rem;line-height:1.875rem;border-radius:.625rem;background-color:#33cdc9;text-align:center;color:#fff;margin-top:.625rem;margin-left:10px;margin-right:10px}.red[data-v-765acc77]{background-color:coral}.blue[data-v-765acc77]{background-color:#39a6cd}.button_row[data-v-765acc77]{display:flex;justify-content:space-between}.nodata[data-v-765acc77]{text-align:center;margin-top:3.125rem;color:#ccc}

File diff suppressed because one or more lines are too long

@ -1 +0,0 @@
import{h as t,N as e,Q as a,R as s,x as n}from"./index-efa985d2.js";const{isLoading:o,sendRequest:i}=function(){const o=t(!1);return{isLoading:o,sendRequest:function(t){o.value=!0,e({title:"加载中"});let i=function(t){return t.header={Authorization:"Bearer "+sessionStorage.getItem("access_token"),"Content-Type":"application/json"},t}(t);return new Promise(((t,e)=>{a({...i,success:e=>{let a=200===(i=e).statusCode?(0==i.data.status&&n({title:i.data.msg,icon:"none"}),i.data):(n({title:"请求失败,请稍后重试",icon:"none"}),Promise.reject(i.data));var i;o.value=!1,s(),t(a)},fail:t=>{o.value=!1,s(),e(t)}})}))}}}();let u="https://yiji.yuluo.online/Laravel/public/api/";const r=t=>i({url:u+"H5/Login",method:"POST",data:t}),l=t=>i({url:u+"v1/H5/EntrustGetList",method:"POST",data:t}),d=t=>i({url:u+"v1/H5/GetEnablePlan",method:"POST",data:t}),c=t=>i({url:u+"v1/H5/H5_YuYue",method:"POST",data:t}),m=t=>i({url:u+"v1/H5/H5_CancelYuYue",method:"POST",data:t});export{l as E,d as G,m as H,r as L,c as a};

@ -1 +0,0 @@
import{h as e,o as a,d as t,w as s,e as l,f as n,u,a as i,t as o,c as d,j as _,k as c,F as r,g as f,l as m,p,s as g}from"./index-efa985d2.js";import{_ as k}from"./uni-datetime-picker.aa655e0f.js";import{_ as v,o as h,r as y}from"./uni-app.es.b82cb7d4.js";import{E as b,H as w}from"./index.61e14a97.js";const C=v({__name:"CheckItemMainList",setup(v){let C=e({dateRange:["2021-05-01","2049-01-01"]}),M=e([]);const x=()=>{b({searchInfo:C.value}).then((e=>{console.log(e),e.status&&(M.value=e.data.list)}))},D=e=>{C.value.dateRange=e,x()},I=(e,a)=>{let t={do_type:e,appointment_type:2,regnum:a.reg_num,entrustid:[a.entrust_id],episodeid:a.episodeid};p({url:"/pages/PlanList?data="+encodeURIComponent(JSON.stringify(t))})};return h((()=>{var e=function(){var e=new Date;function a(e){return e.getFullYear()+"-"+("0"+(e.getMonth()+1)).slice(-2)+"-"+("0"+e.getDate()).slice(-2)}var t,s=a(e),l=a((t=e,new Date(t.getFullYear(),t.getMonth()-1,t.getDate()))),n=a(function(e){return new Date(e.getFullYear(),e.getMonth()+1,e.getDate())}(e));return{currentDate:s,previousMonth:l,nextMonth:n}}();C.value.dateRange=[e.previousMonth,e.nextMonth],x()})),(e,p)=>{const v=l,h=y(f("uni-datetime-picker"),k);return a(),t(v,{class:"CheckItemMain"},{default:s((()=>[n(v,{class:"head"}),u(M).length>0?(a(),t(v,{key:0,class:"userInfo"},{default:s((()=>[n(v,{class:"title"},{default:s((()=>[i("患者信息")])),_:1}),n(v,{class:"row"},{default:s((()=>[n(v,{class:"label"},{default:s((()=>[i("姓名:")])),_:1}),n(v,{class:"value"},{default:s((()=>[i(o(u(M)[0].user_name),1)])),_:1})])),_:1}),n(v,{class:"row"},{default:s((()=>[n(v,{class:"label"},{default:s((()=>[i("性别:")])),_:1}),n(v,{class:"value"},{default:s((()=>[1==u(M)[0].user_sex?(a(),d("span",{key:0},"男")):_("",!0),2==u(M)[0].user_sex?(a(),d("span",{key:1},"女")):_("",!0)])),_:1})])),_:1}),n(v,{class:"row"},{default:s((()=>[n(v,{class:"label"},{default:s((()=>[i("手机号:")])),_:1}),n(v,{class:"value"},{default:s((()=>[i(o(u(M)[0].user_phone),1)])),_:1})])),_:1}),n(v,{class:"row"},{default:s((()=>[n(v,{class:"label"},{default:s((()=>[i("注册号:")])),_:1}),n(v,{class:"value"},{default:s((()=>[i(o(u(M)[0].reg_num),1)])),_:1})])),_:1}),n(v,{class:"date"},{default:s((()=>[n(v,{class:"datetime"},{default:s((()=>[n(h,{modelValue:u(C).dateRange,"onUpdate:modelValue":p[0]||(p[0]=e=>u(C).dateRange=e),type:"daterange",onChange:D},null,8,["modelValue"])])),_:1})])),_:1})])),_:1})):_("",!0),u(M).length>0?(a(),t(v,{key:1,class:"list"},{default:s((()=>[(a(!0),d(r,null,c(u(M),((e,l)=>(a(),t(v,{class:"info"},{default:s((()=>[n(v,{class:"item_title"},{default:s((()=>[i("检查项目:"+o(e.entrust),1)])),_:2},1024),n(v,{class:"item_info"},{default:s((()=>[n(v,null,{default:s((()=>[i("医嘱时间:"),m("span",{class:"item_value"},o(e.entrust_date),1)])),_:2},1024),n(v,null,{default:s((()=>[i("申请科室:"),m("span",{class:"item_value"},o(e.reservation_department),1)])),_:2},1024),n(v,null,{default:s((()=>[i("状态: "),0==e.list_status?(a(),d("span",{key:0,class:"item_value"},"待申请")):_("",!0),1==e.list_status?(a(),d("span",{key:1,class:"item_value"},"已预约")):_("",!0),2==e.list_status?(a(),d("span",{key:2,class:"item_value"},"已登记")):_("",!0),3==e.list_status?(a(),d("span",{key:3,class:"item_value"},"已完成")):_("",!0)])),_:2},1024),1==e.list_status?(a(),t(v,{key:0},{default:s((()=>[i("预约时段:"),m("span",{class:"item_value"},o(e.reservation_date)+" "+o(e.period_begin_time.substring(0,5))+"~"+o(e.period_end_time.substring(0,5)),1)])),_:2},1024)):_("",!0),0==e.list_status?(a(),t(v,{key:1,class:"button_row"},{default:s((()=>[n(v,{class:"button",onClick:a=>I(1,e)},{default:s((()=>[i("预 约")])),_:2},1032,["onClick"])])),_:2},1024)):_("",!0),1==e.list_status?(a(),t(v,{key:2,class:"button_row"},{default:s((()=>[n(v,{class:"button red",onClick:a=>(e=>{g({cancelText:"取消",confirmText:"确定",title:"提示",content:"确定取消预约吗?",success:function(a){a.confirm&&w({MainListId:e.id}).then((e=>{console.log(e),e.status&&x()}))}})})(e)},{default:s((()=>[i("取 消")])),_:2},1032,["onClick"]),n(v,{class:"button blue",onClick:a=>I(2,e)},{default:s((()=>[i("改 约")])),_:2},1032,["onClick"])])),_:2},1024)):_("",!0)])),_:2},1024)])),_:2},1024)))),256))])),_:1})):(a(),t(v,{key:2,class:"nodata"},{default:s((()=>[i(" 暂无记录 ")])),_:1}))])),_:1})}}},[["__scopeId","data-v-765acc77"]]);export{C as default};

@ -1 +0,0 @@
import{q as e,o as s,d as t,v as o,e as a}from"./index-efa985d2.js";import{L as n}from"./index.61e14a97.js";const r={__name:"Login",setup:r=>(e((()=>{n().then((e=>{console.log(e),e.status&&(sessionStorage.setItem("access_token",e.data.token),sessionStorage.setItem("refresh_token",e.data.refresh_token),o({url:"/pages/CheckItemMainList"}))}))})),(e,o)=>{const n=a;return s(),t(n)})};export{r as default};

@ -1 +0,0 @@
import{h as a,o as e,d as s,w as t,e as l,f as u,u as n,a as d,t as i,j as c,c as o,k as _,F as r,g as f,l as m,s as p,x as v,y as g}from"./index-efa985d2.js";import{_ as b}from"./uni-datetime-picker.aa655e0f.js";import{_ as h,o as k,r as w}from"./uni-app.es.b82cb7d4.js";import{G as x,a as j}from"./index.61e14a97.js";const y=h({__name:"PlanList",setup(h){let y=a({date:""}),C=a([]),I=a(null);const L=()=>{x({...y.value}).then((a=>{a.status&&(C.value=a.data.plan_list,I.value=a.data.mainInfo,y.value.mainlistid=[I.value.id])}))},M=a=>{y.value.date=a,L()};return k((a=>{y.value=JSON.parse(decodeURIComponent(a.data));var e,s=new Date;y.value.date=(e=s).getFullYear()+"-"+("0"+(e.getMonth()+1)).slice(-2)+"-"+("0"+e.getDate()).slice(-2),L()})),(a,h)=>{const k=l,x=w(f("uni-datetime-picker"),b);return e(),s(k,{class:"PlanListMain"},{default:t((()=>[u(k,{class:"head"}),n(I)?(e(),s(k,{key:0,class:"userInfo"},{default:t((()=>[u(k,{class:"title"},{default:t((()=>[d("选择预约日期及时段")])),_:1}),u(k,{class:"row"},{default:t((()=>[u(k,{class:"label"},{default:t((()=>[d("登记号:")])),_:1}),u(k,{class:"value"},{default:t((()=>[d(i(n(I).reg_num),1)])),_:1})])),_:1}),u(k,{class:"row"},{default:t((()=>[u(k,{class:"label"},{default:t((()=>[d("医嘱:")])),_:1}),u(k,{class:"value"},{default:t((()=>[d(i(n(I).entrust),1)])),_:1})])),_:1}),u(k,{class:"date"},{default:t((()=>[u(k,{class:"datetime"},{default:t((()=>[u(x,{modelValue:n(y).date,"onUpdate:modelValue":h[0]||(h[0]=a=>n(y).date=a),"clear-icon":!1,type:"date",onChange:M},null,8,["modelValue"])])),_:1})])),_:1})])),_:1})):c("",!0),u(k,{class:"list"},{default:t((()=>[(e(!0),o(r,null,_(n(C),((a,l)=>(e(),s(k,{class:"info"},{default:t((()=>[u(k,null,{default:t((()=>[u(k,{class:"row"},{default:t((()=>[u(k,{class:"label"},{default:t((()=>[d("执行科室:")])),_:1}),u(k,{class:"value"},{default:t((()=>[d(i(n(I).implement_department),1)])),_:1})])),_:1}),u(k,{class:"row"},{default:t((()=>[u(k,{class:"label"},{default:t((()=>[d("资源:")])),_:1}),u(k,{class:"value"},{default:t((()=>[d(i(a.department_resources_name),1)])),_:2},1024)])),_:2},1024),u(k,{class:"row"},{default:t((()=>[u(k,{class:"label"},{default:t((()=>[d("时间段:")])),_:1}),a.begin_time?(e(),s(k,{key:0,class:"value"},{default:t((()=>[d(i(a.begin_time.substring(0,5))+"~"+i(a.end_time.substring(0,5)),1)])),_:2},1024)):c("",!0)])),_:2},1024)])),_:2},1024),u(k,{class:"right"},{default:t((()=>[u(k,{class:"right_top"},{default:t((()=>[u(k,{class:"button",onClick:e=>(a=>{p({cancelText:"取消",confirmText:"确定",title:"提示",content:"确定预约 "+y.value.date+" "+a.begin_time.substring(0,5)+"~"+a.end_time.substring(0,5)+" 时段吗?",success:function(e){e.confirm&&(y.value.planid=a.id,j({...y.value}).then((a=>{a.status&&(v({title:"预约成功"}),setTimeout((function(){g({url:"/pages/CheckItemMainList"})}),1e3))})))}})})(a)},{default:t((()=>[d("确认")])),_:2},1032,["onClick"])])),_:2},1024),u(k,{class:"right_bottom"},{default:t((()=>[d("已约/总数:"),m("span",{style:{color:"darkturquoise"}},i(a.used_count),1),d("/"+i(a.count),1)])),_:2},1024)])),_:2},1024)])),_:2},1024)))),256))])),_:1})])),_:1})}}},[["__scopeId","data-v-e1ec9a04"]]);export{y as default};

@ -1 +0,0 @@
import{m as e,o as t,c as n,r as i,a as s,t as o,n as a,b as r,d as l,w as d,i as u,e as f,f as h,g as c}from"./index-efa985d2.js";import{_ as p,r as w}from"./uni-app.es.b82cb7d4.js";const m=p({name:"uniLink",props:{href:{type:String,default:""},text:{type:String,default:""},download:{type:String,default:""},showUnderLine:{type:[Boolean,String],default:!0},copyTips:{type:String,default:"已自动复制网址,请在手机浏览器里粘贴该网址"},color:{type:String,default:"#999999"},fontSize:{type:[Number,String],default:14}},computed:{isShowA(){return this._isH5=!0,!(!this.isMail()&&!this.isTel()||!0!==this._isH5)}},created(){this._isH5=null},methods:{isMail(){return this.href.startsWith("mailto:")},isTel(){return this.href.startsWith("tel:")},openURL(){window.open(this.href)},makePhoneCall(t){e({phoneNumber:t})}}},[["render",function(e,f,h,c,p,w){const m=u;return w.isShowA?(t(),n("a",{key:0,class:a(["uni-link",{"uni-link--withline":!0===h.showUnderLine||"true"===h.showUnderLine}]),href:h.href,style:r({color:h.color,fontSize:h.fontSize+"px"}),download:h.download},[i(e.$slots,"default",{},(()=>[s(o(h.text),1)]),!0)],14,["href","download"])):(t(),l(m,{key:1,class:a(["uni-link",{"uni-link--withline":!0===h.showUnderLine||"true"===h.showUnderLine}]),style:r({color:h.color,fontSize:h.fontSize+"px"}),onClick:w.openURL},{default:d((()=>[i(e.$slots,"default",{},(()=>[s(o(h.text),1)]),!0)])),_:3},8,["class","style","onClick"]))}],["__scopeId","data-v-45d57582"]]);const S=p({data:()=>({href:"https://uniapp.dcloud.io/component/README?id=uniui"}),methods:{}},[["render",function(e,n,i,o,a,r){const p=f,S=u,y=w(c("uni-link"),m);return t(),l(p,{class:"container"},{default:d((()=>[h(p,{class:"intro"},{default:d((()=>[s("本项目已包含uni ui组件无需import和注册可直接使用。在代码区键入字母u即可通过代码助手列出所有可用组件。光标置于组件名称处按F1即可查看组件文档。")])),_:1}),h(S,{class:"intro"},{default:d((()=>[s("详见:")])),_:1}),h(y,{href:a.href,text:a.href},null,8,["href","text"])])),_:1})}],["__scopeId","data-v-a60c8e9c"]]);export{S as default};

@ -1 +0,0 @@
import{K as s,L as o,O as t,M as n}from"./index-efa985d2.js";const r=(s,o)=>{const t=s.__vccOpts||s;for(const[n,r]of o)t[n]=r;return t};function a(s,o){return"string"==typeof s?o:s}const c=(t=>(r,a=o())=>{!n&&s(t,r,a)})(t);export{r as _,c as o,a as r};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -1,7 +1,7 @@
<!DOCTYPE html>
<html lang="en">
<head>
<link rel="stylesheet" href="/h5/assets/uni.5555c8ac.css">
<link rel="stylesheet" href="/h5/assets/uni.c5106025.css">
<meta charset="UTF-8" />
<script>
@ -14,7 +14,7 @@
<title>h5</title>
<!--preload-links-->
<!--app-context-->
<script type="module" crossorigin src="/h5/assets/index-efa985d2.js"></script>
<script type="module" crossorigin src="/h5/assets/index-42e4185d.js"></script>
<link rel="stylesheet" href="/h5/assets/index-d16efac4.css">
</head>
<body>

Loading…
Cancel
Save