鹿和sa0ChunLuyu 12 months ago
commit 96f93b8025

@ -204,6 +204,7 @@ class ComboController extends Controller
'sub_intro' => $Info['sub_intro'], 'sub_intro' => $Info['sub_intro'],
'desc' => $Info['desc'], 'desc' => $Info['desc'],
'order' => $Info['order'], 'order' => $Info['order'],
'sale_count' => $Info['sale_count'],
]); ]);
if ($u) { if ($u) {
return \Yz::Return(true, "更新完成", []); return \Yz::Return(true, "更新完成", []);

@ -14,65 +14,70 @@ class QuestionController extends Controller
if (!isset($searchInfo['hospital_id'])) return \Yz::echoError1("医院id不能为空"); if (!isset($searchInfo['hospital_id'])) return \Yz::echoError1("医院id不能为空");
if (!isset($searchInfo['q_type'])) return \Yz::echoError1("问卷类型不能为空"); if (!isset($searchInfo['q_type'])) return \Yz::echoError1("问卷类型不能为空");
$list = DB::table('questions') $list = DB::table('questions')
->where(['hospital_id'=>$searchInfo['hospital_id'], ->where(['hospital_id' => $searchInfo['hospital_id'],
'q_type'=>$searchInfo['q_type'], 'q_type' => $searchInfo['q_type'],
'is_del'=>0, 'is_del' => 0,
])->orderBy('order','asc')->get(); ])->orderBy('order', 'asc')->get();
return \Yz::Return(true,"查询成功",['list'=>$list]); return \Yz::Return(true, "查询成功", ['list' => $list]);
} }
public function Save() public function Save()
{ {
$QuestionInfo = request('QuestionInfo'); $QuestionInfo = request('QuestionInfo');
$params = [ $params = [
'hospital_id'=>isset($QuestionInfo['hospital_id'])?$QuestionInfo['hospital_id']:null, 'hospital_id' => isset($QuestionInfo['hospital_id']) ? $QuestionInfo['hospital_id'] : null,
'question'=>isset($QuestionInfo['question'])?$QuestionInfo['question']:null, 'question' => isset($QuestionInfo['question']) ? $QuestionInfo['question'] : null,
'content'=>(isset($QuestionInfo['content']) and !empty($QuestionInfo['content']))?json_encode($QuestionInfo['content'],JSON_UNESCAPED_UNICODE):null, 'content' => (isset($QuestionInfo['content']) and !empty($QuestionInfo['content'])) ? json_encode($QuestionInfo['content'], JSON_UNESCAPED_UNICODE) : null,
'type'=>isset($QuestionInfo['type'])?$QuestionInfo['type']:null, 'type' => isset($QuestionInfo['type']) ? $QuestionInfo['type'] : null,
'status'=>isset($QuestionInfo['status'])?$QuestionInfo['status']:null, 'status' => isset($QuestionInfo['status']) ? $QuestionInfo['status'] : null,
'order'=>isset($QuestionInfo['order'])?$QuestionInfo['order']:null, 'order' => isset($QuestionInfo['order']) ? $QuestionInfo['order'] : null,
'q_type'=>isset($QuestionInfo['q_type'])?$QuestionInfo['q_type']:null, 'q_type' => isset($QuestionInfo['q_type']) ? $QuestionInfo['q_type'] : null,
]; ];
$requiredFields = [ $requiredFields = [
'hospital_id','question','content','type','status','order','q_type' 'hospital_id', 'question', 'content', 'type', 'status', 'order', 'q_type'
]; ];
// 判断是否为空 // 判断是否为空
foreach ($requiredFields as $field) { foreach ($requiredFields as $field) {
if (!isset($params[$field]) || $params[$field] === null) { if (!isset($params[$field]) || $params[$field] === null) {
return \Yz::echoError1('参数' . $field . '不能为空'); return \Yz::echoError1('参数' . $field . '不能为空');
} }
} }
if(isset($QuestionInfo['id']) and $QuestionInfo['id']<>0){ if (isset($QuestionInfo['id']) and $QuestionInfo['id'] <> 0) {
$insert=DB::table('questions')->where(['id'=>$QuestionInfo['id'],'is_del'=>0])->update($params); $insert = DB::table('questions')->where(['id' => $QuestionInfo['id'], 'is_del' => 0])->update($params);
}else{ } else {
$insert=DB::table('questions')->insert($params); $insert = DB::table('questions')->insert($params);
} }
if($insert){ if ($insert) {
return \Yz::Return(true,'操作成功',[]); return \Yz::Return(true, '操作成功', []);
}else{ } else {
return \Yz::echoError1('操作失败'); return \Yz::echoError1('操作失败');
} }
} }
public function GetDetail() public function GetDetail()
{ {
$id = request('id'); $id = request('id');
$info=DB::table('questions')->where(['id'=>$id,'is_del'=>0])->first(); $info = DB::table('questions')->where(['id' => $id, 'is_del' => 0])->first();
if(!!$info){ if (!!$info) {
$info->content=json_decode($info->content,true); $info->content = json_decode($info->content, true);
} }
return \Yz::Return(true,'查询完成',$info); return \Yz::Return(true, '查询完成', $info);
} }
public function Del() public function Del()
{ {
$id = request('id'); $id = request('id');
$del=DB::table('questions')->where(['id'=>$id])->update([ $del = DB::table('questions')->where(['id' => $id])->update([
'is_del'=>1 'is_del' => 1
]); ]);
if($del){ if ($del) {
return \Yz::Return(true,'操作成功',[]); return \Yz::Return(true, '操作成功', []);
}else{ } else {
return \Yz::echoError1('操作失败'); return \Yz::echoError1('操作失败');
} }
} }
} }

@ -0,0 +1,120 @@
<?php
namespace App\Http\Controllers\API\Admin\YeWu;
use App\Http\Controllers\Controller;
use App\Lib\Tools;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Str;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
use PhpOffice\PhpSpreadsheet\IOFactory;
class QuestionLogController extends Controller
{
public function Export()
{
$q_type = request('q_type');
$dateRange = request('dateRange');
if(!isset($dateRange) or count($dateRange)<>2) return \Yz::echoError1("请选择日期");
$dateRange=[$dateRange[0].' 00:00:00',$dateRange[1].' 23:59:59'];
$q_list=DB::table('questions')->where(['q_type'=>2,'is_del'=>0,'status'=>1])->orderBy('order','asc')->get();
$log_list = DB::table('questions_log')->whereBetween('created_at',$dateRange)->where(['q_type' => $q_type])->get();
if(count($log_list)==0) return \Yz::echoError1("暂无数据可导出");
$cols_SN = $this->generateSequence(400);
$template_path = Storage::path('public/excel/manyidudiaocha.xlsx');
$spreadsheet = IOFactory::load($template_path);
$worksheet = $spreadsheet->getActiveSheet();
$styleArray = [
'borders' => [
'allBorders' => [
'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN,
'color' => ['argb' => 'FF000000'],
],
],
];
$row=3;
foreach ($log_list as $key=> $item) {
$personinfo=DB::table('web_user_person')->where(['id'=>$item->personid])->first();
$sex='未知';
if($personinfo->sex==1) $sex='男';
if($personinfo->sex==2) $sex='女';
$item->content=json_decode($item->content,true);
$worksheet->setCellValueExplicit($cols_SN[0] . $row, $key+1, \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->setCellValueExplicit($cols_SN[1] . $row, $personinfo->name, \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->setCellValueExplicit($cols_SN[2] . $row, $item->created_at, \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->setCellValueExplicit($cols_SN[3] . $row, $personinfo->name, \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->setCellValueExplicit($cols_SN[4] . $row, $personinfo->phone, \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->setCellValueExplicit($cols_SN[5] . $row, $sex, \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->setCellValueExplicit($cols_SN[6] . $row, $personinfo->birthday, \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->setCellValueExplicit($cols_SN[7] . $row, Tools::GetAge($personinfo->birthday), \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
foreach ( $item->content as $q_key=>$q_item){
foreach ($q_item['more'] as $morekey=>$moreitem){
if($moreitem<>null){
$q_item['answer'][0]=$q_item['answer'][0].','.$moreitem;
}
}
$worksheet->setCellValueExplicit($cols_SN[8+$q_key] . $row, $q_item['answer'][0], \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
}
$row++;
}
$worksheet->getStyle('A3:Z' . ($row - 1))->applyFromArray($styleArray);
$file_name = Str::orderedUuid();
$dir_path = "public/excel/" . date('Ym') . '/' . $file_name;
Storage::makeDirectory($dir_path);
//$name_date = date('n.j', strtotime($date . ' 00:00:00'));
$excel_path = $dir_path . "/满意度调查.xlsx";
$writer = new Xlsx($spreadsheet);
$writer->save(Storage::path($excel_path));
$url = Storage::url($excel_path);
return \Yz::Return(true,"获取成功",['url' => env('APP_URL').$url]);
}
function generateSequence($L) {
$sequence = [];
$current = '';
// Helper function to increment the sequence
function increment(&$str) {
$len = strlen($str);
$str = strrev($str); // Reverse string for easier manipulation
for ($i = 0; $i < $len; $i++) {
if ($str[$i] == 'Z') {
$str[$i] = 'A';
} else {
$str[$i] = chr(ord($str[$i]) + 1);
break;
}
}
// If we've gone through all characters and they were all 'Z'
if ($i == $len && $str[$len-1] == 'A') {
$str .= 'A'; // Append an 'A' at the end, equivalent to carrying over
}
$str = strrev($str); // Reverse back to original order
}
// Initialize the first value of the sequence
if ($L > 0) {
$current = 'A';
$sequence[] = $current;
}
// Generate the sequence up to length L
for ($i = 1; $i < $L; $i++) {
increment($current);
$sequence[] = $current;
}
return $sequence;
}
}

@ -96,6 +96,13 @@ class AspNetZhuanController extends Controller
return $res; return $res;
} }
//微信推送
public static function WeiXinSend($data)
{
$nonce=uniqid();
$res= self::Post(self::$BaseUrl . '/sendwx.aspx?str='.$nonce,$data,'微信推送');
return $res;
}
public static function Get($url,$mark) public static function Get($url,$mark)
{ {

@ -90,13 +90,15 @@ class ComboController extends Controller
$sql = $sql . " and a.name like ? "; $sql = $sql . " and a.name like ? ";
$canshu[] = '%'.$search.'%'; $canshu[] = '%'.$search.'%';
} }
if (!isset($combo_sort)) {
$sql = $sql . " order by a.order ";
}
if (isset($combo_sort)) { if (isset($combo_sort)) {
if ($combo_sort == 1) { if ($combo_sort == 1) {
$sql = $sql . " "; $sql = $sql . " ";
} }
if ($combo_sort == 2) { if ($combo_sort == 2) {
$sql = $sql . " "; $sql = $sql . " order by a.sale_count desc";
} }
if ($combo_sort == 3) { if ($combo_sort == 3) {
$sql = $sql . " order by a.price"; $sql = $sql . " order by a.price";
@ -104,6 +106,12 @@ class ComboController extends Controller
if ($combo_sort == 4) { if ($combo_sort == 4) {
$sql = $sql . " order by a.price desc"; $sql = $sql . " order by a.price desc";
} }
if ($combo_sort == 5) {
$sql = $sql . " order by b.count desc";
}
if ($combo_sort == 6) {
$sql = $sql . " order by b.count ";
}
} }
if(isset($keshi_name)){ if(isset($keshi_name)){
@ -139,8 +147,8 @@ class ComboController extends Controller
$combos = DB::select("select * from combos as a LEFT JOIN ( $combos = DB::select("select * from combos as a LEFT JOIN (
select combo_id as c_id,count(*) as count from orders where status in(2,4) group by combo_id select combo_id as c_id,count(*) as count from combo_items where status in(1) group by combo_id
) as b on a.combo_id=b.c_id where a.status=1 and a.sex in(?,0) " . $sql ." order by a.`order` ", $canshu); ) as b on a.combo_id=b.c_id where a.status=1 and a.sex in(?,0) " . $sql ." ", $canshu);
foreach ($combos as $key => $combo) { foreach ($combos as $key => $combo) {
$combo->count=$combo->count?$combo->count:0; $combo->count=$combo->count?$combo->count:0;
@ -214,9 +222,11 @@ select combo_id as c_id,count(*) as count from orders where status in(2,4) group
$crowd = DB::table('combo_crowd')->get(); $crowd = DB::table('combo_crowd')->get();
$sort_list = [ $sort_list = [
["id" => 1, 'name' => '综合排序'], ["id" => 1, 'name' => '综合排序'],
["id" => 2, 'name' => '预约最多'], ["id" => 2, 'name' => '销售最多'],
["id" => 3, 'name' => '低价优先'], ["id" => 3, 'name' => '低价优先'],
["id" => 4, 'name' => '高价优先'], ["id" => 4, 'name' => '高价优先'],
["id" => 5, 'name' => '项目最多'],
["id" => 6, 'name' => '项目最少'],
]; ];
$price_list = [ $price_list = [
['name' => '300以下', 'id' => 1], ['name' => '300以下', 'id' => 1],

@ -76,7 +76,7 @@ class HomeController extends Controller
'icon' => '/assets/h5/a_tijianyindao.png' 'icon' => '/assets/h5/a_tijianyindao.png'
]], [[ ]], [[
'message' => '', 'message' => '',
'name' => '解读报告', 'name' => '报告解读预约',
'jump' => 'XCX/pages/other/entry/index?path=/pages/outpatient/doctor-appointment/index&scene=1035&hospitalAreaId=6&departmentCode=A0030077&subDepartmentCode=4773794195699464904', 'jump' => 'XCX/pages/other/entry/index?path=/pages/outpatient/doctor-appointment/index&scene=1035&hospitalAreaId=6&departmentCode=A0030077&subDepartmentCode=4773794195699464904',
'icon' => '/assets/h5/a_jiedubaogao.png' 'icon' => '/assets/h5/a_jiedubaogao.png'
], [ ], [

@ -56,6 +56,7 @@ class OrderController extends Controller
if (!!$order_info) { if (!!$order_info) {
$order_info->buy_info = json_decode($order_info->buy_info, true); $order_info->buy_info = json_decode($order_info->buy_info, true);
$order_info->erxian_appointment_info = json_decode($order_info->erxian_appointment_info, true); $order_info->erxian_appointment_info = json_decode($order_info->erxian_appointment_info, true);
$order_info->appointment_back_info = json_decode($order_info->appointment_back_info, true);
} else { } else {
return \Yz::echoError1('未找到有效订单'); return \Yz::echoError1('未找到有效订单');
} }
@ -257,6 +258,7 @@ class OrderController extends Controller
'group_name' => $group_info['group_name'], 'group_name' => $group_info['group_name'],
'items' => $group_info['items'], 'items' => $group_info['items'],
'group_id' => $group_info['group_id'], 'group_id' => $group_info['group_id'],
'have_Nx1'=> !empty($Nx1_arrInfo)
]; ];
$TJ_Leixing_id = $group_info['checkup_type_id']; $TJ_Leixing_id = $group_info['checkup_type_id'];
$title = "单位团检" . $group_info['combo_name']; $title = "单位团检" . $group_info['combo_name'];
@ -850,7 +852,7 @@ class OrderController extends Controller
} }
$cad = array_merge($cad, $cad2); $cad = array_merge($cad, $cad2);
} else { } else {
if(isset($buy_info['group']['items'])){ if(isset($buy_info['group']['items']) and $buy_info['group']['have_Nx1']===true){
$item_temp=[]; $item_temp=[];
foreach ($buy_info['group']['items'] as $gitem) { foreach ($buy_info['group']['items'] as $gitem) {
$item_temp[]=[ $item_temp[]=[
@ -891,6 +893,16 @@ class OrderController extends Controller
"电话号码" => null, "电话号码" => null,
"预约Id" => $create_appointment['data'][0][0], "预约Id" => $create_appointment['data'][0][0],
]); ]);
$erxianinfo=false;
if(json_decode($order_info->erxian_appointment_info,true) != null){ //给体检发送二线信息
$erxianinfo = json_decode($order_info->erxian_appointment_info,true);
if(count($erxianinfo) != 0){
$haoyuan=str_replace(":", "", $erxianinfo[0]['time']).'|'.$erxianinfo[0]['date'];
$peis = new PEISApiController();
$data = "appointmentId=" . $create_appointment['data'][0][0] . "&appGroupId=".$haoyuan."&appPlanId=" . $order_info->plan_id . "&appPlanNumber=" . $order_info->plan_number . "&date=" . urlencode($order_info->appointment_date . ' ' . $order_info->appointment_time);
$ch = $peis::Post2('修改用户预约时间', $peis::Api('修改用户预约时间', $data), $order_info->hospital_id, []);
}
}
//如果是医生web端预约则调用预约时段修改接口传入医生名称 //如果是医生web端预约则调用预约时段修改接口传入医生名称
if ($order_info->source == 'web') { if ($order_info->source == 'web') {
@ -903,15 +915,44 @@ class OrderController extends Controller
]; ];
$info = $peis::Post('预约时段修改', $order_info->hospital_id, $dat); $info = $peis::Post('预约时段修改', $order_info->hospital_id, $dat);
} }
$wx_day1_sendmsg_status=1;
$wx_day1_sendmsg_time="";
//判断预约的日期是否大于今天如果是设置微信推送为0和 预计推送时间
if($order_info->appointment_date > date('Y-m-d')){
$wx_day1_sendmsg_status=0;
$specifiedDateTime = new DateTime($order_info->appointment_date . ' ' . $order_info->appointment_time);
$previousDay = $specifiedDateTime->modify('-1 day');
$wx_day1_sendmsg_time=$previousDay->format('Y-m-d H:i:s');
}
$u = DB::table('orders')->where(['order_number' => $order_number])->update([ $u = DB::table('orders')->where(['order_number' => $order_number])->update([
'appointment_number' => $create_appointment['data'][0][0], 'appointment_number' => $create_appointment['data'][0][0],
'appointment_back_info' => json_encode($appointment_info['data'][0], JSON_UNESCAPED_UNICODE) 'appointment_back_info' => json_encode($appointment_info['data'][0], JSON_UNESCAPED_UNICODE),
'wx_day1_sendmsg_status'=>$wx_day1_sendmsg_status,
'wx_day1_sendmsg_time'=>$wx_day1_sendmsg_time,
]); ]);
$is_sendMsg = DB::table('configs')->where(['label' => '预约完成短信通知'])->first(); $is_sendMsg = DB::table('configs')->where(['label' => '预约完成短信通知'])->first();
if (!!$is_sendMsg and $is_sendMsg->value == 1 and strlen($cha->phone)>0) { if (!!$is_sendMsg and $is_sendMsg->value == 1 and strlen($cha->phone)>0) {
$asp = new AspNetZhuanController(); $asp = new AspNetZhuanController();
$asp::SendMsg($cha->hospital_id, $cha->phone, $cha->name, $cha->appointment_date . ' ' . substr($cha->appointment_time, 0, 5),$cha->sex); $asp::SendMsg($cha->hospital_id, $cha->phone, $cha->name, $cha->appointment_date . ' ' . substr($cha->appointment_time, 0, 5),$cha->sex);
} }
//发送二线微信通知
if(!!$erxianinfo and isset($create_appointment['data'][0][0])) {
$data = [
"ghzid" => $person->ghzid,
"yyid" => $yyid,
"type" => "10",
"msg1" => $person->name,
"msg2" => $erxianinfo[0]['name'],
"msg3" => $person->phone,
"msg4" => $erxianinfo[0]['date'].' '.$erxianinfo[0]['time'],
"msg5" => "影像科",
"msg6" => "",
"url" => ""
];
$dnet = new AspNetZhuanController();
$dnet->WeiXinSend($data);
}
return ['status' => true, 'msg' => "完成"]; return ['status' => true, 'msg' => "完成"];
} }
@ -1062,4 +1103,58 @@ class OrderController extends Controller
return \Yz::echoError1("未支付" . $res['data']['trade_state']); return \Yz::echoError1("未支付" . $res['data']['trade_state']);
} }
} }
//提前1天微信通知
public function Day1WXSend(){
$id = request('id');
$order_info = DB::table('orders')->where(['id' => $id,'status'=>2,'wx_day1_sendmsg_status'=>0])->whereNotNull(['appointment_number'])->first();
if(!$order_info) return \Yz::echoError1("未找到有效订单");
$person= DB::table('web_user_person')->where(['id'=>$order_info->person_id])->first();
$appointment_datetime=$order_info->appointment_date.' '.$order_info->appointment_time; //预约的日期
if(!$this->isTodayTheDayBefore($appointment_datetime)) return \Yz::echoError1("已过推送时效,禁止推送");
$yyid=6;
if($order_info->hospital_id == 1){
$yyid=6;
}
if($order_info->hospital_id == 4){
$yyid=2;
}
$keshi="健康管理中心1区";
if($person->sex==1) $keshi="健康管理中心1区";
if($person->sex==2) $keshi="健康管理中心2区";
DB::table('orders')->where(['id' => $id])->update([
'wx_day1_sendmsg_status' => 1,
'wx_day1_sendmsg_time'=>date('Y-m-d H:i:s')
]);
//微信推送
$data = [
"ghzid" => $person->ghzid,
"yyid" => $yyid,
"type" => "7",
"msg1" => $person->name,
"msg2" => $appointment_datetime,
"msg3" => $keshi,
"msg4" => $order_info->doctor,
"msg5" => "请提前10分钟到(".$keshi.")签到",
"msg6" => "",
"url" => ""
];
$dnet = new AspNetZhuanController();
$res = $dnet->WeiXinSend($data);
}
//判断今天是否是给定日期的前一天
function isTodayTheDayBefore($targetDate) {
// 创建今天日期的 DateTime 对象
$today = new DateTime('today');
// 创建目标日期的 DateTime 对象
$target = new DateTime($targetDate);
// 修改目标日期为前一天
$target->modify('-1 day');
// 比较两个日期
return $today == $target;
}
} }

@ -6,6 +6,7 @@ use App\Http\Controllers\API\PEISApiController;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
class PersonController extends Controller class PersonController extends Controller
{ {
@ -35,6 +36,7 @@ class PersonController extends Controller
"单位Id"=>$group_info['单位Id'] "单位Id"=>$group_info['单位Id']
]; ];
$fenzu = $peis::Post('单位分组批次查询', 1, $data); $fenzu = $peis::Post('单位分组批次查询', 1, $data);
// Log::info(json_encode($fenzu,JSON_UNESCAPED_UNICODE));
if(empty($fenzu['data'])) break; if(empty($fenzu['data'])) break;
foreach ($fenzu['data'][0]['分组'] as $key => $value) { foreach ($fenzu['data'][0]['分组'] as $key => $value) {
if($value['Id']==$group_info['分组Id']){ if($value['Id']==$group_info['分组Id']){

@ -12,6 +12,8 @@ class QuestionController extends Controller
{ {
$hospital_id = request('hospital_id'); $hospital_id = request('hospital_id');
$q_type = request('q_type'); $q_type = request('q_type');
$person= request('person');
$count=0;
if (!isset($hospital_id)) return \Yz::echoError1("医院id不能为空"); if (!isset($hospital_id)) return \Yz::echoError1("医院id不能为空");
if (!isset($q_type)) return \Yz::echoError1("问卷类型不能为空"); if (!isset($q_type)) return \Yz::echoError1("问卷类型不能为空");
$list = DB::table('questions') $list = DB::table('questions')
@ -22,10 +24,15 @@ class QuestionController extends Controller
])->orderBy('order','asc')->get(); ])->orderBy('order','asc')->get();
foreach ($list as $key=>$item){ foreach ($list as $key=>$item){
$item->content=json_decode($item->content,true); $item->content=json_decode($item->content,true);
if($person['sex']==1 and strpos($item->question, '女性') !== false){
$item->show=false;
}else{
$item->show=true;
$count++;
}
} }
return \Yz::Return(true,"查询成功",['list'=>$list]); return \Yz::Return(true,"查询成功",['list'=>$list,'count'=>$count]);
} }
//提交调查 //提交调查
public function SubmitAnswer() public function SubmitAnswer()
@ -38,8 +45,13 @@ class QuestionController extends Controller
if (!$user) return \Yz::echoError1('用户不存在'); if (!$user) return \Yz::echoError1('用户不存在');
if(!isset($q_type)) return \Yz::echoError1('问卷类型不能为空'); if(!isset($q_type)) return \Yz::echoError1('问卷类型不能为空');
if(!isset($content) or empty($content)) return \Yz::echoError1('内容不能为空'); if(!isset($content) or empty($content)) return \Yz::echoError1('内容不能为空');
$person=DB::table('web_user_person')->where(['user_id' => $user->id, 'is_del' => 0])->orderBy('is_default')->get();
if(count($person)==0){
return \Yz::echoError1('请先绑定就诊人');
}
$data=[ $data=[
'userid'=>$user->id, 'userid'=>$user->id,
'personid'=>$person[0]->id,
'q_type'=>$q_type, 'q_type'=>$q_type,
'content'=>json_encode($content,JSON_UNESCAPED_UNICODE) 'content'=>json_encode($content,JSON_UNESCAPED_UNICODE)
]; ];

@ -98,7 +98,7 @@ class QuestionnaireController extends Controller
} }
$v = str_replace('${体重}', '', $v); $v = str_replace('${体重}', '', $v);
$v = str_replace('${身高}', '', $v); $v = str_replace('${身高}', '', $v);
$v = str_replace('${今日日期}', date('Y-m-d'), $v); $v = str_replace('${今日日期}',$person->birthday , $v);
if ($v == '${省市县}') { if ($v == '${省市县}') {
$v = [[ $v = [[
'value' => '11', 'value' => '11',

@ -38,7 +38,7 @@ class PEISApiController extends Controller
$api['修改用户预约时间'] = "{$url}/ExtAPI/SetAppointmentMoment?key=YmMxOGI2MDUxZmFh&{$code}"; $api['修改用户预约时间'] = "{$url}/ExtAPI/SetAppointmentMoment?key=YmMxOGI2MDUxZmFh&{$code}";
$api['分诊查询体检号'] = "{$url}/PEISCommon/QueryEventNo?key=YmMxOGI2MDUxZmFh"; $api['分诊查询体检号'] = "{$url}/PEISCommon/QueryEventNo?key=YmMxOGI2MDUxZmFh";
$api['单位分组批次查询'] = "{$url}/PEISCommon/QueryBatchAndGroup?key=YmMxOGI2MDUxZmFh"; $api['单位分组批次查询'] = "{$url}/PEISCommon/QueryBatchAndGroup?key=YmMxOGI2MDUxZmFh";
$api['报告时间计算'] = "{$url}/Home/CalcReportDays?eventNo={$code}"; $api['报告时间计算'] = "{$url}/Home/CalcReportDays?eventNos={$code}";
$api['弃检接口'] = "{$url}/Home/AbandonCheck"; $api['弃检接口'] = "{$url}/Home/AbandonCheck";
$api['检后签到'] = "{$url}/Home/PostExamSignIn?eventNo={$code}"; $api['检后签到'] = "{$url}/Home/PostExamSignIn?eventNo={$code}";
@ -61,7 +61,7 @@ class PEISApiController extends Controller
$api['修改用户预约时间'] = "http://220.174.210.111:8888/ExtAPI/SetAppointmentMoment?key=YmMxOGI2MDUxZmFh&{$code}"; $api['修改用户预约时间'] = "http://220.174.210.111:8888/ExtAPI/SetAppointmentMoment?key=YmMxOGI2MDUxZmFh&{$code}";
$api['分诊查询体检号'] = "{$url}/PEISCommon/QueryEventNo/{$code}"; $api['分诊查询体检号'] = "{$url}/PEISCommon/QueryEventNo/{$code}";
$api['单位分组批次查询'] = "{$url}/PEISCommon/QueryBatchAndGroup/{$code}"; $api['单位分组批次查询'] = "{$url}/PEISCommon/QueryBatchAndGroup/{$code}";
$api['报告时间计算'] = "{$url}/Home/CalcReportDays?eventNo={$code}"; $api['报告时间计算'] = "{$url}/Home/CalcReportDays?eventNos={$code}";
$api['弃检接口'] = "{$url}/Home/AbandonCheck/{$code}"; $api['弃检接口'] = "{$url}/Home/AbandonCheck/{$code}";
$api['检后签到'] = "{$url}/Home/PostExamSignIn?eventNo={$code}"; $api['检后签到'] = "{$url}/Home/PostExamSignIn?eventNo={$code}";

@ -2,9 +2,16 @@
namespace App\Http\Controllers\H5; namespace App\Http\Controllers\H5;
use App\Http\Controllers\API\PEISApiController;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use App\Http\Controllers\API\H5\FenzhenController as fzc; use App\Http\Controllers\API\H5\FenzhenController as fzc;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Str;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
use PhpOffice\PhpSpreadsheet\IOFactory;
class FenzhenController extends Controller class FenzhenController extends Controller
{ {
@ -64,4 +71,211 @@ class FenzhenController extends Controller
'queue' => $queue 'queue' => $queue
]); ]);
} }
public function export(){
$fzc = new fzc();
$date=request('date');
$res = $fzc->fz('export', [
'date' => $date
]);
$table_list=$res['data']['table1'];
$clinic_list=$res['data']['table2'];
$table_list3=$res['data']['table3'];
// dd(json_encode($res['data'],JSON_UNESCAPED_UNICODE));
$template_path = Storage::path('public/excel/check_time.xlsx');
$spreadsheet = IOFactory::load($template_path);
$worksheet = $spreadsheet->getActiveSheet();
$styleArray = [
'borders' => [
'allBorders' => [
'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN,
'color' => ['argb' => 'FF000000'],
],
],
];
$row = 3;
$col = [
'A' => 'date',
'B' => 'name',
'C' => 'number',
'D' => 'phone',
'E' => 'group_name',
'F' => 'clinic',
'G' => 'doctor',
'H' => 'queue',
'I' => 'calling',
'J' => 'done',
'K' => 'clinic_check_time',
'L' => 'true_check_time',
'M' => 'timeout_check_time',
'N' => 'clinic_wait_time',
'O' => 'true_wait_time',
'P' => 'timeout_wait_time',
'Q' => 'clinic_all_time',
'R' => 'true_all_time',
'S' => 'timeout_all_time',
];
foreach ($table_list as $table_item) {
foreach ($col as $index => $key) {
$worksheet->setCellValueExplicit($index . $row, $table_item[$key], \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
}
$row++;
}
$worksheet->getStyle('A3:S' . ($row - 1))->applyFromArray($styleArray);
$row = 3;
$col = [
'U' => 'group_name',
'V' => 'clinic',
'W' => 'doctor',
'X' => 'check',
'Y' => 'check_out',
'Z' => 'wait',
'AA' => 'wait_out',
];
foreach ($clinic_list as $clinic_item) {
foreach ($col as $index => $key) {
$worksheet->setCellValueExplicit($index . $row, $clinic_item[$key], \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
}
$row++;
}
$worksheet->getStyle('U3:AA' . ($row - 1))->applyFromArray($styleArray);
$row = 3;
$col = [
'AC' => 'date',
'AD' => 'name',
'AE' => 'number',
'AF' => 'phone',
'AG' => 'combo',
'AH' => 'clinic_time',
'AI' => 'used_time',
'AJ' => 'timeout',
];
//汇总信息
$usercount=count($table_list3);
$biaozhun_timecount=0;
$shiji_timecount=0;
$chaoshi_timecount=0;
$weichaoshi_count=0;
$tj_numbers=[];
foreach ($table_list3 as $table_list3_i) {
$tj_numbers[]=$table_list3_i['uuid'];
$biaozhun_timecount+=$table_list3_i['clinic_time'];
$shiji_timecount+=$table_list3_i['used_time'];
$chaoshi_timecount+=$table_list3_i['timeout'];
if($table_list3_i['timeout']<=0){
$weichaoshi_count++;
}
$peis = new PEISApiController();
$data = [
'电话号码' => "",
'证件号码' => "",
'体检号' => $table_list3_i['uuid'],
'包含内部信息' => true
];
$reports = $peis::Post('体检报告查询', 1, $data);
if(isset($reports['data'][0]['套餐名称'])){
$table_list3_i['combo']=$reports['data'][0]['套餐名称'];
}else{
$table_list3_i['combo']='';
}
foreach ($col as $index => $key) {
$worksheet->setCellValueExplicit($index . $row, $table_list3_i[$key], \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
}
$row++;
}
$zhushilv=0;
if($usercount>0){
$zhushilv=$weichaoshi_count/$usercount;
}
$worksheet->setCellValueExplicit('AC' . $row, '汇总', \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->setCellValueExplicit('AD' . $row, '客户总数', \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->setCellValueExplicit('AE' . $row, $usercount, \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->setCellValueExplicit('AG' . $row, '总用时:', \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->setCellValueExplicit('AH' . $row, $biaozhun_timecount, \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->setCellValueExplicit('AI' . $row, $shiji_timecount, \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->setCellValueExplicit('AJ' . $row, $chaoshi_timecount, \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->setCellValueExplicit('AD' . ($row+1), '未超时总数', \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->setCellValueExplicit('AE' . ($row+1), $weichaoshi_count, \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->setCellValueExplicit('AD' . ($row+2), "体检准时率", \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->setCellValueExplicit('AE' . ($row+2),$zhushilv , \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->getStyle('AC3:AJ' . ($row +2))->applyFromArray($styleArray);
//准时到检率
$tj_numbers=implode(",", $tj_numbers);
$peis = new PEISApiController();
$wait=$peis::Get($peis::Api('报告时间计算',$tj_numbers),'460107000001',"报告时间计算");
$jianhou_sign_count=0;
$zhunshi_count=0;
//dd($wait);
if(isset($wait['Data'])){
$jianhou_sign_count=count($wait['Data']);
}
foreach ($table_list3 as $key=> $fz_value) {
foreach ($wait['Data'] as $index => $sx_value) {
if($fz_value['uuid']==$sx_value['体检号']){
if($date.' '.$fz_value['end_time']>$sx_value['检后签到时间']){
$zhunshi_count++;
}
}
}
}
$daojianlv=0;
if($jianhou_sign_count>0){
$daojianlv=$zhunshi_count/$jianhou_sign_count;
}
$worksheet->setCellValueExplicit('AL' . 3,$date , \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->setCellValueExplicit('AM' . 3,$zhunshi_count , \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->setCellValueExplicit('AN' . 3,$jianhou_sign_count , \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->setCellValueExplicit('AO' . 3,round($daojianlv, 2) , \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->getStyle('AL3:AO' . 3)->applyFromArray($styleArray);
//预约率
$yyl_yuyue_count=0;//预约人数
$yyl_tj_count=0;//体检总人数
$yuyuelv=0;
$yuyueList=DB::table('orders')->where(['appointment_date'=>$date])->whereIn('status',[2,4])->whereNotNull(['appointment_number'])->get();
$yyl_yuyue_count=count($yuyueList);
$yyl_tj_count=$usercount;
if($yyl_tj_count>0){
$yuyuelv=$yyl_yuyue_count/$yyl_tj_count;
}
$worksheet->setCellValueExplicit('AL' . 7,$date , \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->setCellValueExplicit('AM' . 7,$yyl_yuyue_count , \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->setCellValueExplicit('AN' . 7,$yyl_tj_count , \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->setCellValueExplicit('AO' . 7,round($yuyuelv, 2) , \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->getStyle('AL7:AO' . 7)->applyFromArray($styleArray);
//预约准时率
$yyzsl_ren_count=0;//预约准时到达人数
$yyzsl_zong_count=0;//预约总人数
$yyzsl_zong_count=$yyl_yuyue_count;
foreach ($yuyueList as $key=> $yy_value) {
if($yy_value->appointment_date.' '.$yy_value->appointment_time > $yy_value->check_time){
$yyzsl_ren_count++;
}
}
$zhunshilv=0;
if($yyzsl_zong_count>0){
$zhunshilv=$yyzsl_ren_count/$yyzsl_zong_count;
}
$worksheet->setCellValueExplicit('AL' . 11,$date , \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->setCellValueExplicit('AM' . 11,$yyzsl_ren_count , \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->setCellValueExplicit('AN' . 11,$yyzsl_zong_count , \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->setCellValueExplicit('AO' . 11,round($zhunshilv, 2) , \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->getStyle('AL11:AO' . 11)->applyFromArray($styleArray);
$file_name = Str::orderedUuid();
$dir_path = "public/excel/" . date('Ym') . '/' . $file_name;
Storage::makeDirectory($dir_path);
$name_date = date('n.j', strtotime($date . ' 00:00:00'));
$excel_path = $dir_path . "/体检报表-时间监控$name_date.xlsx";
$writer = new Xlsx($spreadsheet);
$writer->save(Storage::path($excel_path));
$url = Storage::url($excel_path);
return \Yz::Return(true,"获取成功",['url' => env('APP_URL').$url]);
}
} }

@ -15,6 +15,23 @@ use Illuminate\Support\Facades\Http;
class TestController extends Controller class TestController extends Controller
{ {
public function DBtest(){ public function DBtest(){
//微信推送
// $data = [
// "ghzid" => "b3346cd4d63b49a58dbd9a41d69efde2",
// "yyid" => "6",
// "type" => "7",
// "msg1" => "张言",
// "msg2" => "2024-08-01 15:30",
// "msg3" => "影像科",
// "msg4" => "张医生",
// "msg5" => "请提前10分钟",
// "msg6" => "",
// "url" => ""
// ];
// $dnet = new AspNetZhuanController();
// $res = $dnet->WeiXinSend($data);
// dd($res);
// echo DB::table('users')->count(); // echo DB::table('users')->count();
// $dnet = new AspNetZhuanController(); // $dnet = new AspNetZhuanController();
// $res = $dnet->GetDoctorDateList([ // $res = $dnet->GetDoctorDateList([
@ -24,18 +41,18 @@ class TestController extends Controller
// ]); // ]);
// return \Yz::Return(true,"",['data'=>$res]); // return \Yz::Return(true,"",['data'=>$res]);
//退款------------------ //退款------------------
$data = [ // $data = [
'orderid' => '20241208201000310vDzqKi', // 'orderid' => '20241206135049910eRWC5N',
'refund_order_id' => 'T' . '20241208201000310vDzqKi', // 'refund_order_id' => 'T' . '20241206135049910eRWC5N',
'refund_amount' => 102300, // 'refund_amount' => 63610,
'refund_reason' => "体检H5订单退款", // 'refund_reason' => "体检H5订单退款",
]; // ];
$XCX = new XCXApiController(); // $XCX = new XCXApiController();
$res = $XCX::Post('订单退款', $data); // $res = $XCX::Post('订单退款', $data);
dd($res); // dd($res);
if ($res['data']['refund_state'] != 'SUCCESS') { // if ($res['data']['refund_state'] != 'SUCCESS') {
return \Yz::echoError1("退款失败" . $res['data']['refund_state']); // return \Yz::echoError1("退款失败" . $res['data']['refund_state']);
} // }
//-------------- //--------------
// $aspnet=new AspNetZhuanController(); // $aspnet=new AspNetZhuanController();

@ -28,6 +28,11 @@ class ComboItemGroupService
} }
$sixin_combo_item_ids=[];//思信套餐内项目ids $sixin_combo_item_ids=[];//思信套餐内项目ids
if($combo['变更类别']=='修改' || $combo['变更类别']=='新增'){ if($combo['变更类别']=='修改' || $combo['变更类别']=='新增'){
if($combo['可选']===false){//如果可选为false,则删除
DB::table('combos')->where(['combo_id' => $combo['Id']])->delete();
DB::table('combo_items')->where(['combo_id' => $combo['Id']])->delete();
return \Yz::echoError1('删除成功');
}
$item = []; $item = [];
foreach ($combo['包含项目'] as $key => $v) { foreach ($combo['包含项目'] as $key => $v) {
$sixin_combo_item_ids[]=$v['Id']; $sixin_combo_item_ids[]=$v['Id'];

@ -19,9 +19,10 @@ class OrderService
$is_checked_sign_in=false; $is_checked_sign_in=false;
if(isset($order->tj_number) and !empty($order->tj_number)){ if(isset($order->tj_number) and !empty($order->tj_number)){
$peis = new PEISApiController(); $peis = new PEISApiController();
$wait=$peis::Get($peis::Api('报告时间计算',$order->tj_number),$hospital->code,"报告时间计算"); $wait=$peis::Get($peis::Api('报告时间计算',$order->tj_number),$hospital->code,"报告时间计算");
if(isset($wait['Data']['预计所需天数'])){ if(isset($wait['Data'][0]['预计所需天数'])){
$wait_day=$wait['Data']['预计所需天数']; $wait_day=$wait['Data'][0]['预计所需天数'];
} else { } else {
$wait_day=-1; $wait_day=-1;
//查询体检报告 //查询体检报告

@ -14,6 +14,7 @@
"laravel/framework": "^8.75", "laravel/framework": "^8.75",
"laravel/sanctum": "^2.11", "laravel/sanctum": "^2.11",
"laravel/tinker": "^2.5", "laravel/tinker": "^2.5",
"phpoffice/phpspreadsheet": "^1.29",
"wechatpay/wechatpay": "^1.4", "wechatpay/wechatpay": "^1.4",
"zoujingli/ip2region": "^2.0" "zoujingli/ip2region": "^2.0"
}, },

11999
Laravel/composer.lock generated

File diff suppressed because it is too large Load Diff

@ -134,6 +134,9 @@ Route::group(['middleware' => ['checktoken', 'log'], 'prefix' => 'v1'], function
Route::post('admin/CouponsDel', 'App\Http\Controllers\API\Admin\YeWu\CouponsController@Del'); Route::post('admin/CouponsDel', 'App\Http\Controllers\API\Admin\YeWu\CouponsController@Del');
Route::post('admin/CouponsGetDetail', 'App\Http\Controllers\API\Admin\YeWu\CouponsController@GetDetail'); Route::post('admin/CouponsGetDetail', 'App\Http\Controllers\API\Admin\YeWu\CouponsController@GetDetail');
Route::post('admin/QuestionExport', 'App\Http\Controllers\API\Admin\YeWu\QuestionLogController@Export');//导出回答
}); });

@ -100,3 +100,7 @@ Route::any('/UsePlan', 'App\Http\Controllers\API\Internal\PlanController@UsePlan
Route::any('/CancelUsePlan', 'App\Http\Controllers\API\Internal\PlanController@CancelUsePlan')->middleware('log');//取消占用号源 Route::any('/CancelUsePlan', 'App\Http\Controllers\API\Internal\PlanController@CancelUsePlan')->middleware('log');//取消占用号源
Route::post('/RoundPayCheck', 'App\Http\Controllers\API\H5\OrderController@RoundPayCheck');//轮询支付检查 Route::post('/RoundPayCheck', 'App\Http\Controllers\API\H5\OrderController@RoundPayCheck');//轮询支付检查
Route::post('/Day1WXSend', 'App\Http\Controllers\API\H5\OrderController@Day1WXSend');//提前1天微信通知
Route::any('api/FenzhenInfoExport', 'App\Http\Controllers\H5\FenzhenController@export')->middleware('log');//导出报表

@ -426,3 +426,11 @@ export const ComboGetAllList = (data = {}) => {
export const PlanListGetList = (data = {}) => { export const PlanListGetList = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + `v1/admin/PlanListGetList`, data: data }) return axios({ url: import.meta.env.VITE_APP_API + `v1/admin/PlanListGetList`, data: data })
} }
//导出分诊数据
export const FenzhenInfoExport = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + `FenzhenInfoExport`, data: data })
}
//导出问卷
export const QuestionExport = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + `v1/admin/QuestionExport`, data: data })
}

@ -239,6 +239,13 @@ const router = createRouter({
meta: { meta: {
title: '代金券管理' title: '代金券管理'
} }
},{
path: '/reportforms/tijiantime',
name: 'ReportFormsTiJianTime',
component: () => import('../views/ReportForms/TiJianTime.vue'),
meta: {
title: '体检报表时间监控'
}
}] }]
}, },

@ -23,6 +23,7 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="order" label="排序" /> <el-table-column prop="order" label="排序" />
<el-table-column prop="sale_count" label="销量(手输)" />
<el-table-column prop="updated_at" label="更新时间" /> <el-table-column prop="updated_at" label="更新时间" />
<el-table-column label="操作" width="100"> <el-table-column label="操作" width="100">
<template #default="scope"> <template #default="scope">
@ -79,6 +80,9 @@
<el-form-item label="排序"> <el-form-item label="排序">
<el-input v-model="Info.order" type="number" /> <el-input v-model="Info.order" type="number" />
</el-form-item> </el-form-item>
<el-form-item label="销量">
<el-input v-model="Info.sale_count" type="number" />
</el-form-item>
<el-form-item label="简介"> <el-form-item label="简介">
<el-input v-model="Info.intro" type="textarea" /> <el-input v-model="Info.intro" type="textarea" />
</el-form-item> </el-form-item>

@ -22,6 +22,14 @@
<el-radio-button :label="1">健康问卷</el-radio-button> <el-radio-button :label="1">健康问卷</el-radio-button>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item>
<el-date-picker style="margin-left: 50px;" v-model="searchInfo.dateRange" type="daterange" value-format="YYYY-MM-DD"
range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期">
</el-date-picker>
<el-button type="warning" style="margin-left: 8px;" @click="Export()"></el-button>
</el-form-item>
</el-row> </el-row>
</div> </div>
<el-table :data="tableData" style="width: 100%;" row-key="id" v-loading="loading"> <el-table :data="tableData" style="width: 100%;" row-key="id" v-loading="loading">
@ -120,7 +128,7 @@
} from 'element-plus' } from 'element-plus'
import { import {
HospitalGetEnableList, HospitalGetEnableList,
QuestionGetList,QuestionSave,QuestionGetDetail,QuestionDel QuestionGetList,QuestionSave,QuestionGetDetail,QuestionDel,QuestionExport
} from '@/api/api.js' } from '@/api/api.js'
import { import {
Edit, Edit,
@ -285,6 +293,24 @@
} }
}) })
} }
const Export=()=>{
loading.value = true
QuestionExport({
q_type: searchInfo.value.q_type,
dateRange:searchInfo.value.dateRange
}).then(res => {
loading.value = false
if (res.status) {
const a = document.createElement('a');
a.style.display = 'none';
a.href = res.data.url;
document.body.appendChild(a);
a.click();
} else {
ElMessage.error(res.msg)
}
})
}
onMounted(() => { onMounted(() => {
searchInfo.value.q_type = 2 searchInfo.value.q_type = 2
GetEnableHospitalList_func() GetEnableHospitalList_func()

@ -1,29 +1,6 @@
<template> <template>
<div class="Dashboard"> <div class="Dashboard" v-loading="loading">
<el-alert show-icon title="因未对接体检数据接口,以下数据均为演示.报表内容和类型可根据需求调整" type="warning" :closable="false" style="margin-bottom: 20px;"/>
<el-row class="row1" :gutter="20">
<el-col :span="12">
<div id="MonthCount" class="MonthCount"></div>
</el-col>
<el-col :span="12">
<div id="TypeCount" class="TypeCount"></div>
</el-col>
</el-row>
<el-row class="row2">
<el-col :span="24">
<div class="title">各体检机构体检量统计</div>
<el-table :data="tableData" style="width: 100%;" row-key="id">
<!-- <el-table-column prop="id" label="Id" width="100" /> -->
<el-table-column prop="name" label="机构名称" />
<el-table-column prop="count" label="数量" />
</el-table>
<!-- <div class="page">
<el-pagination v-model:current-page="currentPage" v-model:page-size="pageSize"
:page-sizes="[15, 50, 100, 200]" layout="total,sizes, prev, pager, next" :total="total"
@size-change="PageSizeChange" @current-change="PageCurrentChange" />
</div> -->
</el-col>
</el-row>
</div> </div>
</template> </template>
@ -32,100 +9,18 @@
ref, ref,
onMounted onMounted
} from 'vue' } from 'vue'
import * as echarts from 'echarts'; import {
ElMessage,
ElMessageBox
} from 'element-plus'
import {
} from '@/api/api.js'
let loading = ref(false) let loading = ref(false)
let tableData = ref([{
name:'医管中心',
count:'500'
},{
name:'亦庄医院',
count:'636'
},{
name:'采育卫生院',
count:'425'
},{
name:'西红门医院',
count:'266'
}])
let currentPage = ref(1) //
let pageSize = ref(15) //
let total = 0 //
const PageSizeChange = (e) => { //
pageSize.value = e
GetUserList()
}
const PageCurrentChange = (e) => { //
currentPage.value = e
GetUserList()
}
const GetList=()=>{
}
onMounted(()=>{ onMounted(()=>{
var ChartMonthCount = echarts.init(document.getElementById('MonthCount'));
//
ChartMonthCount.setOption({
title: {
text: '2023-01-01~2023-06-30体检数量统计'
},
tooltip: {},
xAxis: {
data: ['1月', '2月', '3月', '4月', '5月', '6月']
},
yAxis: {},
series: [
{
name: '数量',
type: 'bar',
data: [5, 20, 36, 10, 10, 20]
}
]
});
var ChartTypeCount = echarts.init(document.getElementById('TypeCount'));
ChartTypeCount.setOption(
{
title: {
text: '2023-01-01~2023-06-30体检行业分类统计'
},
tooltip: {
trigger: 'item'
},
legend: {
top: '5%',
left: 'center'
},
series: [
{
name: '数量',
type: 'pie',
radius: ['40%', '70%'],
avoidLabelOverlap: false,
label: {
show: false,
position: 'center'
},
emphasis: {
label: {
show: true,
fontSize: 40,
fontWeight: 'bold'
}
},
labelLine: {
show: false
},
data: [
{ value: 1048, name: '食品类' },
{ value: 735, name: '化妆品类' },
{ value: 580, name: '公共场所类' },
{ value: 484, name: '生活饮用水类' },
{ value: 300, name: '消毒产品生产类' }
]
}
]
})
}) })
@ -134,7 +29,7 @@
<style scoped> <style scoped>
.Dashboard{ .Dashboard{
padding: 20px; padding: 20px;
display: none;
} }
.MonthCount{ .MonthCount{
height: 400px; height: 400px;

@ -0,0 +1,59 @@
<template>
<div v-loading="loading">
<el-row>
<el-form-item>
<el-date-picker v-model="date" value-format="YYYY-MM-DD" type="date" placeholder="选择日期" />
</el-form-item>
</el-row>
<el-button type="success" @click="ExportFenZhenInfo()" style="margin-left: 10px;">导出体检报表时间监控</el-button>
</div>
</template>
<script setup>
import {
ref,
onMounted
} from 'vue'
import {
ElMessage,
ElMessageBox
} from 'element-plus'
import {
FenzhenInfoExport
} from '@/api/api.js'
let loading = ref(false)
let date = ref('');
const ExportFenZhenInfo = () => {
loading.value = true
FenzhenInfoExport({date:date.value}).then(res => {
loading.value = false
if (res.status) {
const a = document.createElement('a');
a.style.display = 'none';
a.href = res.data.url;
document.body.appendChild(a);
a.click();
// window.URL.revokeObjectURL(url);
} else {
ElMessage.error(res.msg)
}
})
}
const GetToday = () =>{
const today = new Date();
const year = today.getFullYear();
const month = String(today.getMonth() + 1).padStart(2, '0'); // 0
const day = String(today.getDate()).padStart(2, '0')
date.value=(`${year}-${month}-${day}`)
}
onMounted(() => {
GetToday()
})
</script>
<style>
</style>

@ -1,5 +1,5 @@
const app_type = 'gzh' const app_type = 'gzh'
// const base_url = "https://api.hainan2024.sa0.online" //开发环境 //const base_url = "https://api.hainan2024.sa0.online" //开发环境
const base_url="https://tj-h5.hnxdfe.com" //正式环境 const base_url="https://tj-h5.hnxdfe.com" //正式环境
const config = { const config = {
api_map_url: base_url + '/api/ApiMap/h5', api_map_url: base_url + '/api/ApiMap/h5',

@ -496,7 +496,7 @@ const toRouter = () => {
>¥{{ i.original_price }}</view >¥{{ i.original_price }}</view
> >
</view> </view>
<view class="combo_count_wrapper">已售{{ i.count }}</view> <!-- <view class="combo_count_wrapper">已售{{ i.count }}</view> -->
</view> </view>
</view> </view>
</view> </view>

@ -86,15 +86,15 @@ onShow(() => {
v-for="(obj, f) in comboInfo" v-for="(obj, f) in comboInfo"
:key="f" :key="f"
> >
<view class="flex flex-items-center pl-10rpx pr-10rpx pt-10rpx"> <view class="flex flex-items-center pl-30rpx pr-10rpx pt-10rpx">
<uni-icons <!-- <uni-icons
@click="selectClick(obj.combo_id)" @click="selectClick(obj.combo_id)"
:type=" :type="
newComboIds.includes(obj.combo_id) ? 'checkbox-filled' : 'circle' newComboIds.includes(obj.combo_id) ? 'checkbox-filled' : 'circle'
" "
color="#239EA3" color="#239EA3"
size="30" size="30"
></uni-icons> ></uni-icons> -->
</view> </view>
<view <view
class="w-48rpx h-48rpx rounded-15rpx bg-#F9E7E7 absolute flex flex-items-center flex-justify-center right-50rpx top-30px" class="w-48rpx h-48rpx rounded-15rpx bg-#F9E7E7 absolute flex flex-items-center flex-justify-center right-50rpx top-30px"
@ -107,12 +107,12 @@ onShow(() => {
></uni-icons> ></uni-icons>
</view> </view>
<!-- 1个检套餐 显示套餐信息 --> <!-- 1个检套餐 显示套餐信息 -->
<image <!-- <image
v-if="obj.cover" v-if="obj.cover"
:src="$image(obj.cover)" :src="$image(obj.cover)"
class="w-190rpx h-190rpx mr-37rpx" class="w-190rpx h-190rpx mr-37rpx"
mode="widthFix" mode="widthFix"
/> /> -->
<view class="flex flex-col grow"> <view class="flex flex-col grow">
<text>{{ obj.name }}</text> <text>{{ obj.name }}</text>
<view class="mt-13rpx mb-18rpx"> <view class="mt-13rpx mb-18rpx">
@ -153,9 +153,8 @@ onShow(() => {
<text class="text-18rpx text-#878787 line-through">{{ <text class="text-18rpx text-#878787 line-through">{{
obj.original_price obj.original_price
}}</text> }}</text>
<text class="text-18rpx text-#878787 ml-auto mr-55rpx" <!-- <text class="text-18rpx text-#878787 ml-auto mr-55rpx"
>已售{{ obj.saleCount }}</text >已售{{ obj.saleCount }}</text> -->
>
</view> </view>
</view> </view>
</view> </view>

@ -120,12 +120,27 @@
url: '/pages/main/ctime/ctime?id=' + id url: '/pages/main/ctime/ctime?id=' + id
}) })
} }
let erweima_popup=ref(null); let erweima_popup = ref(null);
let show_erweima_text=ref(''); let show_erweima_text = ref('');
const erweima_click=(text)=>{ const erweima_click = (text) => {
show_erweima_text.value=text show_erweima_text.value = text
erweima_popup.value.open() erweima_popup.value.open()
} }
let detail_popup = ref(null);
let OrderInfoDetail = ref({});
const click_detail = async (order) => {
detail_popup.value.open()
uni.showLoading();
const response = await $api("GetOrderDetail", {
id: order.id,
});
uni.hideLoading();
$response(response, () => {
if (response.status) {
OrderInfoDetail.value = response.data.info
}
})
}
onMounted(() => { onMounted(() => {
deepInfo(); deepInfo();
}); });
@ -142,11 +157,72 @@
}"></w-qrcode> }"></w-qrcode>
</view> </view>
</uni-popup> </uni-popup>
<uni-popup ref="detail_popup" type="center" :animation="false">
<view style="background-color: #fff;padding: 20rpx;border-radius: 10rpx; width: 600rpx;" v-if="OrderInfoDetail.buy_info">
<view>{{OrderInfoDetail.title}}</view>
<view class="OrderInfoRow">
<view class="row_label">体检人:</view>
<view class="row_value">{{OrderInfoDetail.name}}</view>
</view>
<view class="OrderInfoRow">
<view class="row_label">订单号:</view>
<view class="row_value">{{OrderInfoDetail.order_number}}</view>
</view>
<view class="OrderInfoRow">
<view class="row_label">类型:</view>
<view class="row_value"><span v-if="OrderInfoDetail.type==1"></span><span
v-if="OrderInfoDetail.type==2">团检</span></view>
</view>
<view class="OrderInfoRow">
<view class="row_label">预约时间:</view>
<view class="row_value">{{OrderInfoDetail.appointment_date}} {{OrderInfoDetail.appointment_time}}
</view>
</view>
<view class="OrderInfoRow" v-if="OrderInfoDetail.erxian_appointment_info &&OrderInfoDetail.erxian_appointment_info.length>0">
<view class="row_label">核磁项目:</view>
<view class="row_value" v-for="(item,index) in OrderInfoDetail.erxian_appointment_info" :key="index">
<view>{{item.name}}</view>
<view style="margin-top: 10rpx;">预约时间{{OrderInfoDetail.erxian_appointment_info[0].date}} {{OrderInfoDetail.erxian_appointment_info[0].time}}</view>
</view>
</view>
<view class="OrderInfoRow" v-if="OrderInfoDetail.source==null && OrderInfoDetail.buy_info.items && OrderInfoDetail.buy_info.items.length>0">
<view class="row_label">自选项目:</view>
<view class="row_value">
<view v-for="(item,index) in OrderInfoDetail.buy_info.items" :key="index"> {{item.name}} </view>
</view>
</view>
<view class="OrderInfoRow">
<view class="row_label">订单状态:</view>
<view class="row_value">
<view v-if="[1].includes(OrderInfoDetail.status)"> </view>
<view
v-if="[2].includes(OrderInfoDetail.status) ">
已支付 </view>
<view v-if="[3, 5].includes(OrderInfoDetail.status)"> </view>
<view v-if="[4].includes(OrderInfoDetail.status)"> </view>
</view>
</view>
<view class="OrderInfoRow">
<view class="row_label">预约状态:</view>
<view class="row_value"><span v-if="OrderInfoDetail.appointment_number"></span><span
v-else>预约未成功</span></view>
</view>
<view class="OrderInfoRow">
<view class="row_label">下单时间:</view>
<view class="row_value">{{OrderInfoDetail.created_at}}
</view>
</view>
</view>
</uni-popup>
<view v-if="!!order_info" class="order_wrapper"> <view v-if="!!order_info" class="order_wrapper">
<view class="order_status_wrapper" :class="[`status${order_info.status}`]"> <view class="order_status_wrapper" :class="[`status${order_info.status}`]">
<view v-if="[1].includes(order_info.status)"> </view> <view v-if="[1].includes(order_info.status)"> </view>
<view v-if="[2].includes(order_info.status) && order_info.appointment_number!=null && order_info.appointment_number!=''"> </view> <view
<view v-if="[2].includes(order_info.status) && (order_info.appointment_number==null || order_info.appointment_number=='')"> </view> v-if="[2].includes(order_info.status) && order_info.appointment_number!=null && order_info.appointment_number!=''">
已预约 </view>
<view
v-if="[2].includes(order_info.status) && (order_info.appointment_number==null || order_info.appointment_number=='')">
预约失败 </view>
<view v-if="[3, 5].includes(order_info.status)"> </view> <view v-if="[3, 5].includes(order_info.status)"> </view>
<view v-if="[4].includes(order_info.status)"> </view> <view v-if="[4].includes(order_info.status)"> </view>
</view> </view>
@ -163,12 +239,13 @@
<view class="order_info_line_wrapper"> <view class="order_info_line_wrapper">
<view class="order_info_line_label_wrapper">预约时间</view> <view class="order_info_line_label_wrapper">预约时间</view>
<view class="order_info_line_value_wrapper"> <view class="order_info_line_value_wrapper">
{{order_info.date}} {{order_info.time.substring(',',5)}}</view> {{order_info.date}} {{order_info.time.substring(',',5)}}
</view>
</view> </view>
</view> </view>
<view v-if="order_info.status==2 || order_info.status==4" > <view v-if="(order_info.status==2 || order_info.status==4)">
<w-qrcode @click="erweima_click(order_info.appointment_number)" class="absolute top-80rpx right-15rpx b-1 b-dashed b-#000 p-8rpx" <w-qrcode @click="erweima_click(order_info.appointment_number)"
:options="{ class="absolute top-80rpx right-15rpx b-1 b-dashed b-#000 p-8rpx" :options="{
level: 4, level: 4,
size: 150, size: 150,
code: order_info.appointment_number, code: order_info.appointment_number,
@ -177,24 +254,28 @@
</view> </view>
<view class="order_info_line_wrapper"> <view class="order_info_line_wrapper">
<view class="order_info_line_label_wrapper">订单号</view> <view class="order_info_line_label_wrapper">订单号</view>
<view class="order_info_line_value_wrapper">{{ <view class="order_info_line_value_wrapper">
order_info.order {{order_info.order}}
}}</view> </view>
</view> </view>
<view class="order_info_line_wrapper"> <view class="order_info_line_wrapper">
<view class="order_info_line_label_wrapper">类型</view> <view class="order_info_line_label_wrapper">类型</view>
<view class="order_info_line_value_wrapper">{{ <view class="order_info_line_value_wrapper">
order_info.type {{order_info.type}}
}}</view> </view>
</view> </view>
<view v-if="[1, 2, 4, 5].includes(order_info.status)" class="order_price_wrapper"> <view style="display: flex;justify-content: space-between;">
<text v-if="[1].includes(order_info.status)"></text> <view @click="click_detail(order_info)" class="click_detail">查看详情>>></view>
<text v-if="[2, 4].includes(order_info.status)"></text> <view v-if="[1, 2, 4, 5].includes(order_info.status)" class="order_price_wrapper">
<text v-if="[5].includes(order_info.status)">退</text> <text v-if="[1].includes(order_info.status)"></text>
<text class="price_true" <text v-if="[2, 4].includes(order_info.status)"></text>
v-if="order_info.true_price !== order_info.price">(实付:{{ order_info.true_price }})</text> <text v-if="[5].includes(order_info.status)">退</text>
<text class="price_text">{{ order_info.price }}</text> <text class="price_true"
v-if="order_info.true_price !== order_info.price">(实付:{{ order_info.true_price }})</text>
<text class="price_text">{{ order_info.price }}</text>
</view>
</view> </view>
<view class="order_line_wrapper"></view> <view class="order_line_wrapper"></view>
<view v-if="![3].includes(order_info.status)" class="order_pay_wrapper"> <view v-if="![3].includes(order_info.status)" class="order_pay_wrapper">
<view class="order_pay_time_wrapper"> <view class="order_pay_time_wrapper">
@ -215,8 +296,9 @@
<view class="order_pay_button_wrapper"> <view class="order_pay_button_wrapper">
<view v-if="[1].includes(order_info.status)" @click="StartPay(order_info.id)" <view v-if="[1].includes(order_info.status)" @click="StartPay(order_info.id)"
class="button_item_wrapper pay_button_wrapper">继续付款</view> class="button_item_wrapper pay_button_wrapper">继续付款</view>
<view v-if="[2].includes(order_info.status) && order_info.appointment_number!=null && order_info.appointment_number!=''" @click="GaiYueClick(order_info.id)" <view
class="button_item_wrapper change_button_wrapper"> v-if="[2].includes(order_info.status) && order_info.appointment_number!=null && order_info.appointment_number!=''"
@click="GaiYueClick(order_info.id)" class="button_item_wrapper change_button_wrapper">
改约</view> 改约</view>
<view v-if="[2].includes(order_info.status)" @click="Refound(order_info.id)" <view v-if="[2].includes(order_info.status)" @click="Refound(order_info.id)"
class="button_item_wrapper refund_button_wrapper">退款</view> class="button_item_wrapper refund_button_wrapper">退款</view>
@ -314,7 +396,7 @@
font-weight: 400; font-weight: 400;
color: #111111; color: #111111;
line-height: 1; line-height: 1;
margin-top: 28rpx;
text-align: right; text-align: right;
margin-right: 30rpx; margin-right: 30rpx;
font-size: 26rpx; font-size: 26rpx;
@ -404,4 +486,28 @@
padding-top: 35rpx; padding-top: 35rpx;
margin-top: 16rpx; margin-top: 16rpx;
} }
.click_detail {
font-size: 24rpx;
color: #239ea3;
margin-left: 30rpx;
margin-top: 20rpx;
font-weight: 700;
}
.OrderInfoRow {
display: flex;
font-size: 26rpx;
margin-top: 16rpx;
color: #666;
}
.row_label {
width: 150rpx
}
.row_value {
margin-left: 20rpx;
}
</style> </style>

@ -659,7 +659,7 @@
.push_log_wrapper { .push_log_wrapper {
position: absolute; position: absolute;
z-index: 9; z-index: 9;
width: 210rpx; width: 250rpx;
height: 50rpx; height: 50rpx;
background: #38C6BC; background: #38C6BC;
right: 30rpx; right: 30rpx;
@ -667,7 +667,7 @@
border-radius: 6rpx; border-radius: 6rpx;
margin: 40rpx auto 0; margin: 40rpx auto 0;
font-weight: 500; font-weight: 500;
font-size: 16rpx; font-size: 22rpx;
color: #FFFFFF; color: #FFFFFF;
line-height: 50rpx; line-height: 50rpx;
text-align: center; text-align: center;

@ -17,6 +17,7 @@ const $store = useStore();
let topicList = ref([]); // let topicList = ref([]); //
let topicIndex = ref(0); // let topicIndex = ref(0); //
let question_count=ref(0);//
const tabPatients = () => { const tabPatients = () => {
uni.navigateTo({ uni.navigateTo({
@ -28,10 +29,12 @@ const getmyddcSelect = async () => {
uni.showLoading(); uni.showLoading();
const response = await $api("QuestionGetList", { const response = await $api("QuestionGetList", {
hospital_id: $store.save.hospital, hospital_id: $store.save.hospital,
person:$store.user,
q_type: 2, q_type: 2,
}); // }); //
$response(response, () => { $response(response, () => {
uni.hideLoading(); uni.hideLoading();
question_count.value=response.data.count
topicList.value = response.data.list.map((val) => { topicList.value = response.data.list.map((val) => {
let answer = val.type != 1 ? [] : "" let answer = val.type != 1 ? [] : ""
let content = val.content let content = val.content
@ -46,6 +49,18 @@ const getmyddcSelect = async () => {
content = '' content = ''
} }
} }
if(val.question=='请问您的性别'){
if($store.user.sex==1){
answer=['男性']
}
if($store.user.sex==2){
answer=['女性']
}
}
if(val.question.includes('女性') && $store.user.sex==1){
answer=['不涉及']
}
return { return {
...val, ...val,
content: content, content: content,
@ -297,11 +312,11 @@ onShow(() => {
</view> </view>
</view> </view>
<view class="text-#0E0E0E mt-10rpx text-26rpx px-80rpx box-border text-right"> <view class="text-#0E0E0E mt-10rpx text-26rpx px-80rpx box-border text-right">
<text class="text-#239ea3">{{ topicList.length }}</text> <text class="text-#239ea3">{{ question_count }}</text>
</view> </view>
<view class="px-30rpx box-border mt-40rpx" v-if="topicList.length"> <view class="px-30rpx box-border mt-40rpx" v-if="topicList.length">
<view <view
v-for="(i,topicIndex) in topicList" :key="topicIndex" v-for="(i,topicIndex) in topicList" :key="topicIndex" v-show="i.show"
class="bg-#fff mb-4 shadow-[0rpx_0rpx_10rpx_0rpx_rgba(0,0,0,0.04)] px-45rpx py40rpx box-border rounded-15rpx" class="bg-#fff mb-4 shadow-[0rpx_0rpx_10rpx_0rpx_rgba(0,0,0,0.04)] px-45rpx py40rpx box-border rounded-15rpx"
> >
<view class="text-#000000 text-30rpx" <view class="text-#000000 text-30rpx"

@ -173,6 +173,7 @@
}; };
const response = await $api("BuyInfo", obj); const response = await $api("BuyInfo", obj);
$response(response, () => { $response(response, () => {
uni.hideLoading();
if (groupId.value && response.data.group_info.length) { if (groupId.value && response.data.group_info.length) {
// //
groupInfo.value = response.data.group_info[0]; groupInfo.value = response.data.group_info[0];
@ -203,7 +204,7 @@
} }
totalPrice.value = response.data.true_price; totalPrice.value = response.data.true_price;
tabIndex.value = 0; tabIndex.value = 0;
uni.hideLoading();
}); });
}; };

@ -709,8 +709,8 @@
</view> </view>
</view> </view>
<view class="flex flex-wrap pt-30rpx pb-30rpx b-0 b-t-1 b-solid b-#E1ECEE" v-if="time_list.length"> <view class="flex flex-wrap pt-30rpx pb-30rpx b-0 b-t-1 b-solid b-#E1ECEE" v-if="time_list.length">
<view class="w-20% text-center box-border p-20rpx" v-for="(item, index) in time_list" :key="index" :class="{ <view class="w-16.6% text-center box-border p-20rpx text-lan" v-for="(item, index) in time_list" :key="index" :class="{
'text-red': item.status == 2, 'text-hui': item.status == 2,
}" @click="getCurrentTime(item, index)"> }" @click="getCurrentTime(item, index)">
<view class="text-24rpx rounded-12rpx h-54rpx flex flex-items-center flex-justify-center" <view class="text-24rpx rounded-12rpx h-54rpx flex flex-items-center flex-justify-center"
:class="timeIndex == index ? 'activeTime' : ''"> :class="timeIndex == index ? 'activeTime' : ''">
@ -762,6 +762,14 @@
</view> </view>
</template> </template>
<style scoped lang="scss"> <style scoped lang="scss">
.text-lan{
color:#42A89E;
font-weight: 700;
}
.text-hui{
color:#ccc;
font-weight: 500;
}
.activeTime { .activeTime {
background-color: #239ea3; background-color: #239ea3;
color: #fff; color: #fff;

@ -223,7 +223,8 @@
}) })
$response(response, () => { $response(response, () => {
uni.navigateTo({ uni.navigateTo({
url: '/pages/main/combo/combo' // url: '/pages/main/combo/combo',
url: '/pages/main/selectDoctor/selectDoctor?month=all'
}) })
}) })
} }

Loading…
Cancel
Save