增加 信息菜单功能

main
yanzai 1 year ago
parent 293c135bd3
commit db868e3e85

@ -23,8 +23,10 @@ class DepartmentController extends Controller
{
$userid = $request->get('userid');//中间件产生的参数
$group = $request->get('role');//中间件产生的参数
$is_all = $request->get('is_all');
$is_all=isset($is_all)?$is_all:false;
$service = new DepartmentService();
return $service->GetEnableList(['userid'=>$userid,'group'=>$group]);
return $service->GetEnableList(['userid'=>$userid,'group'=>$group],$is_all);
}
//保存科室信息

@ -27,11 +27,15 @@ class DepartmentResourceController extends Controller
public function GetEnableList(Request $request)
{
$userid = $request->get('userid');//中间件产生的参数
$res_department_id=$request->get('department_id');
$userInfo = DB::table('users')->where(['id' => $userid])->first();
if(!isset($userInfo->department_id)){
if(!isset($userInfo->department_id) and !isset($res_department_id)){
return \Yz::echoError1('科室信息不存在');
}
$resource=DB::table('s_department_resources')->where(['department_id'=>$userInfo->department_id,'department_resources_status'=>1,'is_del'=>0])->get();
if(isset($userInfo->department_id)) $department_id=$userInfo->department_id;
if(isset($res_department_id)) $department_id=$res_department_id;
$resource=DB::table('s_department_resources')->where(['department_id'=>$department_id,'department_resources_status'=>1,'is_del'=>0])->get();
if(count($resource)>0){
return \Yz::Return(true, '操作成功',$resource);
}else{

@ -0,0 +1,74 @@
<?php
namespace App\Http\Controllers\API\Admin\YeWu;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Tools;
class EntrustController extends Controller
{
public function GetList(){
$searchInfo = request('searchInfo');
$page = request('page');
$pageSize = request('pageSize');
$list=DB::table('s_list')
->leftJoin('s_period','s_list.reservation_time','=','s_period.id')
->leftJoin('s_department_resources','s_list.reservation_sources','=','s_department_resources.id')
->select('s_list.*','s_period.period_begin_time','s_period.period_end_time','s_department_resources.department_resources_name');
if ($searchInfo['dateRange']!=null and count($searchInfo['dateRange']) == 2) {
$list = $list->where(function ($q) use($searchInfo) {
$q->whereBetween('s_list.entrust_date', $searchInfo['dateRange'])
->orWhereBetween('s_list.reservation_date', $searchInfo['dateRange']);
});
}
if(isset($searchInfo['department_id'])){
$department = DB::table('s_department')->where(['id' => $searchInfo['department_id'],'is_del'=>0])->first();
$list=$list->where(['RISRAcceptDeptCode'=>$department->department_number]);
}
if (isset($searchInfo['list_status'])) {
$list = $list->where('s_list.list_status', $searchInfo['list_status']);
}
if (isset($searchInfo['patient_type'])) {
$list = $list->where('s_list.patient_type', $searchInfo['patient_type']);
}
if (!empty($searchInfo['resources'])) {
$list = $list->whereIn('s_list.reservation_sources', $searchInfo['resources']);
}
if (isset($searchInfo['services_group'])) {
$list = $list->whereRaw("FIND_IN_SET({$searchInfo['services_group']}, s_list.services_group)");
}
if (isset($searchInfo['reg_num'])) {
$list = $list->where('s_list.reg_num', $searchInfo['reg_num']);
}
if (isset($searchInfo['user_name'])) {
$list = $list->where('s_list.user_name', 'like','%'.$searchInfo['user_name'].'%');
}
if (isset($searchInfo['doctor'])) {
$list = $list->where('s_list.docotr', 'like','%'.$searchInfo['doctor'].'%');
}
if (isset($searchInfo['apply_department'])) {
$list = $list->where('s_list.reservation_department', 'like','%'.$searchInfo['apply_department'].'%');
}
$count = $list;
$count = $count->count();
$list=$list->where(['s_list.is_del'=>0,'s_list.is_nullify'=>0])->orderBy('id', 'desc')->limit($pageSize)->skip(($page - 1) * $pageSize) // 跳过前9999条记录
->take($pageSize)->get();
//匹配设备(服务组)
$devices = DB::table('s_devices')->get();
foreach ($list as $key => $value) {
$list[$key]->age = Tools::calculateAgeText($value->user_brithday);
$list[$key]->devices = [];
$array_device_id = explode(",", $value->services_group);
foreach ($devices as $k => $v) {
if (in_array($v->id, $array_device_id)) {
$list[$key]->devices[] = $v;
}
}
}
return \Yz::Return(true,'查询完成',['list'=>$list,'count'=>$count]);
}
}

@ -173,20 +173,23 @@ class PlanListController extends Controller
$page = request('page');
$pageSize = request('pageSize');
$department_id = 0;
$department_info=false;
$list = DB::table('s_source_roster_detail')
->leftJoin('s_department_resources', 's_source_roster_detail.resources_id', '=', 's_department_resources.id')
// ->leftJoin('s_devices', 's_source_roster_detail.device_id', '=', 's_devices.id')
->leftJoin('s_period', 's_source_roster_detail.period_id', '=', 's_period.id')
->select('s_source_roster_detail.*', 's_department_resources.department_resources_name', 's_period.period_name')
->where(['s_source_roster_detail.is_del' => 0]);
if ($group == 1) {//如果是管理员
if (!empty($searchInfo['department_id'])) {//以前判断的是管理员group==1 改为 (任何角色都能查看了)
if (!empty($searchInfo['department_id'])) {
$department_info=DB::table('s_department')->where(['id' => $searchInfo['department_id']])->first();
$list = $list->where('s_source_roster_detail.department_id', $searchInfo['department_id']);
}
} else {
$userInfo = DB::table('users')->where(['id' => $userid])->get();
$department_id = $userInfo[0]->department_id;
$department_info=DB::table('s_department')->where(['id' => $department_id])->first();
$list = $list->where(['s_source_roster_detail.department_id' => $department_id]);
}
if (!empty($searchInfo['resources_id'])) {
@ -212,6 +215,7 @@ class PlanListController extends Controller
->take($pageSize)->get();
$ids = [];
foreach ($list as $key => $value) {
$list[$key]->department_name = !!$department_info?$department_info->department_name:'' ;
$list[$key]->countsInfo = [];
$ids[] = $value->id;
}

@ -25,10 +25,10 @@ class DepartmentService
}
return \Yz::Return(true, '查询成功', ['list'=>$l,'count'=>$c]);
}
public function GetEnableList($arr)
public function GetEnableList($arr,$is_all=false)
{
$list=DB::table('s_department');
if($arr['group']!=1){
if(!in_array($arr['group'],[1,5]) and $is_all===false){
$userInfo = DB::table('users')->where(['id'=>$arr['userid']])->get();
$department_id=$userInfo[0]->department_id;
$list= $list->where(['id'=>$department_id]);

@ -114,6 +114,7 @@ Route::group(['middleware'=>['log']],function () {
Route::post('admin/NearestEnablePlanDate','App\Http\Controllers\API\Admin\YeWu\PlanListController@NearestEnablePlanDate');//获取最近可用日期
Route::post('testSendMsg','App\Http\Controllers\TestSendMsgController@SendMsg');//测试发送短信
Route::post('admin/GetPersonYuYueList','App\Http\Controllers\API\Admin\YeWu\WorkMainController@GetPersonYuYueList');//医生获取某人全部预约记录
Route::post('admin/EntrustGetList','App\Http\Controllers\API\Admin\YeWu\EntrustController@GetList');//获取医嘱列表,非主工作列表
});

@ -321,4 +321,8 @@ export const SignIn = (data = {}) => {
//取消签到
export const CancelSign = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/CancelSign', data: data })
}
//获取医嘱列表,非主工作列表
export const EntrustGetList = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'admin/EntrustGetList', data: data })
}

@ -164,12 +164,19 @@ const router = createRouter({
title: '病区管理'
}
},{
path: '/yewu/EntrustList',
path: '/info/EntrustList',
name: 'EntrustList',
component: () => import('../views/YeWu/EntrustList.vue'),
component: () => import('../views/Info/EntrustList.vue'),
meta: {
title: '医嘱信息列表'
}
},{
path: '/info/PlanList',
name: 'InfoPlanList',
component: () => import('../views/Info/PlanList.vue'),
meta: {
title: '资源信息列表'
}
}]
},

@ -703,13 +703,13 @@
}
}
if (columnIndex === 3) {
if(bb_countRowspan>1){
return {rowspan:bb_countRowspan,colspan:1}
}else{
return {rowspan:0,colspan:0}
}
}
// if (columnIndex === 3) {
// if(bb_countRowspan>1){
// return {rowspan:bb_countRowspan,colspan:1}
// }else{
// return {rowspan:0,colspan:0}
// }
// }
}
onMounted(() => {
GetList()

@ -16,32 +16,39 @@
<el-option label="已结束" value="3" />
</el-select>
</el-form-item>
<el-form-item v-if="loginUserinfo && loginUserinfo.group!=2">
<el-select :filterable="true" clearable v-model="searchInfo.patient_type" placeholder="患者类型"
style="margin-left: 8px;width: 150px;">
<el-option label="住院" value="0" />
<el-option label="门诊" value="1" />
<el-option label="急诊" value="2" />
<el-option label="体检" value="3" />
</el-select>
</el-form-item>
<el-form-item v-if="loginUserinfo && loginUserinfo.group!=2">
<el-select multiple :filterable="true" clearable v-model="searchInfo.resources" placeholder="资源"
style="margin-left: 8px;width: 250px;">
<el-option v-for="(item,index) in enableResourceList" :key="index"
:label="item.department_resources_name" :value="item.id" />
</el-select>
</el-form-item >
<el-form-item v-if="loginUserinfo && loginUserinfo.group!=2">
<el-select :filterable="true" clearable v-model="searchInfo.services_group" placeholder="服务组"
style="margin-left: 8px;width: 150px;">
<el-option v-for="(item,index) in EnableDeviceList" :key="index" :label="item.device_name"
:value="item.id" />
</el-select>
</el-form-item>
<el-form-item>
<el-select :filterable="true" clearable v-model="searchInfo.patient_type" placeholder="患者类型"
style="margin-left: 8px;width: 150px;">
<el-option label="住院" value="0" />
<el-option label="门诊" value="1" />
<el-option label="急诊" value="2" />
<el-option label="体检" value="3" />
</el-select>
</el-form-item>
<el-form-item>
<el-select :filterable="true" clearable v-model="searchInfo.department_id" placeholder="选择科室"
@change="DepartmentChange()" style="margin-left: 8px;width: 150px;">
<el-option v-for="(item,index) in EnableDepartmentList" :key="index"
:label="item.department_name" :value="item.id" />
</el-select>
</el-form-item>
<el-form-item>
<el-select multiple :filterable="true" clearable v-model="searchInfo.resources" placeholder="资源"
style="margin-left: 8px;width: 250px;">
<el-option v-for="(item,index) in enableResourceList" :key="index"
:label="item.department_resources_name" :value="item.id" />
</el-select>
</el-form-item>
<el-form-item>
<el-select :filterable="true" clearable v-model="searchInfo.services_group" placeholder="服务组"
style="margin-left: 8px;width: 150px;">
<el-option v-for="(item,index) in EnableDeviceList" :key="index" :label="item.device_name"
:value="item.id" />
</el-select>
</el-form-item>
<el-form-item>
<el-input v-model="searchInfo.reg_num" placeholder="登记号" style="width: 200px;margin-left: 8px;" />
</el-form-item>
@ -54,17 +61,16 @@
style="width: 200px;margin-left: 8px;" />
</el-form-item>
<el-form-item>
<el-input v-model="searchInfo.doctor" placeholder="医生"
style="width: 200px;margin-left: 8px;" />
<el-input v-model="searchInfo.doctor" placeholder="医生" style="width: 200px;margin-left: 8px;" />
</el-form-item>
<el-form-item>
<el-button type="primary" @click="GetList()" style="margin-left: 10px;">查询</el-button>
</el-form-item>
</el-row>
<el-row style="margin: 0px 0px 8px 8px; border-top: 1px solid #ccc;padding-top: 8px">
<!-- <el-row style="margin: 0px 0px 8px 8px; border-top: 1px solid #ccc;padding-top: 8px">
<el-button type="success" @click.prevent="openIframe(1)"> </el-button>
<el-button type="danger" @click="cancel()"></el-button>
<el-button type="warning" @click="openIframe(2)"></el-button>
@ -73,7 +79,7 @@
<el-button style="display: none;" ref="print_shenqingdan_button" v-print="'#shenqingdan'"></el-button>
<el-button @click="print_shenqingdan()" >打印申请单</el-button>
<el-button v-print="'#tablelist'" >打印表格</el-button>
</el-row>
</el-row> -->
</div>
<el-table :data="tableData" id="tablelist" style="width: 100%;" row-key="id" v-loading="loading" ref="tableref"
@select="handleSelect">
@ -109,6 +115,18 @@
v-if="scope.row.period_begin_time && scope.row.period_end_time ">{{scope.row.period_begin_time.substring(0, 5)}}~{{scope.row.period_end_time.substring(0, 5)}}</span>
</template>
</el-table-column>
<el-table-column prop="implement_department" label="预约科室" width="120" />
<el-table-column prop="department_resources_name" label="预约资源" width="120" />
<el-table-column prop="devices" label="服务组">
<template #default="scope">
<div style="white-space: nowrap;">
<span v-for="(item,index) in scope.row.devices" :key="index">
{{ item.device_name+ ' ' }}
</span>
</div>
</template>
</el-table-column>
<el-table-column prop="reservation_department" label="申请科室" width="120" />
<el-table-column prop="" label="医嘱时间" width="160">
<template #default="scope">
@ -124,19 +142,9 @@
<span v-if="scope.row.patient_type==3"></span>
</template>
</el-table-column>
<el-table-column prop="department_resources_name" label="预约资源" width="120" />
<el-table-column prop="user_phone" label="电话" width="120" />
<!-- <el-table-column prop="implement_department" label="执行科室" width="120" /> -->
<el-table-column prop="devices" label="服务组">
<template #default="scope">
<div style="white-space: nowrap;">
<span v-for="(item,index) in scope.row.devices" :key="index">
{{ item.device_name+ ' ' }}
</span>
</div>
</template>
</el-table-column>
<el-table-column prop="department_resources_name" label="操作" width="120">
<template #default="scope">
<el-button @click="showLog(scope.row)" size="small">查看日志</el-button>
@ -184,22 +192,26 @@
onMounted,
nextTick
} from 'vue'
import {
GetMainList,
EntrustGetList,
GetEnableDepartmentList,
CancelYuYue,
GetEnableDeviceList,
DepartmentResourceGetEnableList,
GetServiceDateTime,
GetLoglist,
CheckEntrstItemGroup,getMainDetail,SignIn,CancelSign
CheckEntrstItemGroup,
getMainDetail,
SignIn,
CancelSign
} from '@/api/api.js'
import {
ElMessage,
ElMessageBox
} from 'element-plus'
let AutoGroup=ref(true);//
let shenqingdan_show=ref(false);
let AutoGroup = ref(true); //
let shenqingdan_show = ref(false);
let do_type = ref(0) //12
let loading = ref(false)
let searchInfo = ref({})
@ -210,7 +222,7 @@
let total = 0 //
const GetList = () => {
loading.value = true
GetMainList({
EntrustGetList({
searchInfo: searchInfo.value,
page: currentPage.value,
pageSize: pageSize.value
@ -222,7 +234,7 @@
} else {
ElMessage.error(res.msg)
}
})
}
const PageSizeChange = (e) => { //
@ -233,6 +245,107 @@
currentPage.value = e
GetList()
}
let tableSelected = ref([])
const handleSelect = (e) => {
//console.log('', tableSelected.value)
let select_qian = tableSelected.value ? tableSelected.value.length : 0
SelectClear();
// console.log(e)
autoSeleted([e[e.length - 1]])
// console.log('', tableSelected.value)
if (select_qian > tableSelected.value.length) {
} else {
FindMatchItem()
}
}
const DepartmentChange = () => {
enableResourceList.value = []
if (searchInfo.value.department_id > 0)
getEnableResource()
}
//
let LogShow = ref(false);
let LogList = ref(null);
let LogDataShow = ref(false);
const showLog = (row) => {
LogShow.value = true
GetLoglist({
id: row.id
}).then(res => {
if (res.status) {
LogList.value = res.data
}
})
}
let LogDataJson = ref('');
const showLogJson = (data) => {
LogDataShow.value = true
LogDataJson.value = data
}
//
let EnableDeviceList = ref([])
const GetEnableDeviceListFunc = () => {
loading.value = true
GetEnableDeviceList().then(res => {
loading.value = false
if (res.status) {
EnableDeviceList.value = res.data
} else {
ElMessage.error(res.msg)
}
})
}
//
const GetServiceDate = () => {
GetServiceDateTime().then(res => {
if (res.status) {
let datetime = res.data.datetime.substr(0, 10)
searchInfo.value.dateRange = [datetime, datetime]
GetList()
}
})
}
//
let enableResourceList = ref([])
const getEnableResource = () => {
DepartmentResourceGetEnableList({
department_id: searchInfo.value.department_id
}).then(res => {
if (res.status) {
enableResourceList.value = res.data
} else {
ElMessage.error(res.msg)
}
})
}
//
let EnableDepartmentList = ref([])
const GetDepartmentEnableList = () => {
loading.value = true
GetEnableDepartmentList({
is_all: true
}).then(res => {
loading.value = false
if (res.status) {
EnableDepartmentList.value = res.data.list
} else {
ElMessage.error(res.msg)
}
})
}
onMounted(() => {
GetDepartmentEnableList()
GetEnableDeviceListFunc()
GetServiceDate()
})
</script>
<style>

@ -0,0 +1,521 @@
<template>
<div>
<div class="head">
<el-row>
<el-form-item>
<el-select :filterable="true" clearable v-model="searchInfo.department_id" placeholder="选择科室" @change="DepartmentChange()"
style="margin-left: 8px;width: 150px;">
<el-option v-for="(item,index) in EnableDepartmentList" :key="index"
:label="item.department_name" :value="item.id" />
</el-select>
</el-form-item>
<el-form-item>
<el-select :filterable="true" clearable v-model="searchInfo.resources_id" placeholder="选择资源"
style="margin-left: 8px;width: 150px;">
<el-option v-for="(item,index) in enableResourceList" :key="index"
:label="item.department_resources_name" :value="item.id" />
</el-select>
</el-form-item>
<el-form-item>
<el-select :filterable="true" clearable v-model="searchInfo.device_id" placeholder="选择服务组"
style="margin-left: 8px;width: 150px;">
<el-option v-for="(item,index) in EnableDeviceList" :key="index" :label="item.device_name"
:value="item.id" />
</el-select>
</el-form-item>
<el-form-item>
<el-select :filterable="true" clearable v-model="searchInfo.xingqi" placeholder="星期"
style="margin-left: 8px;width: 150px;">
<el-option v-for="(item,index) in xingqi" :key="index" :label="item.label"
:value="item.label" />
</el-select>
</el-form-item>
<el-form-item>
<el-select :filterable="true" clearable v-model="searchInfo.status" placeholder="状态"
style="margin-left: 8px;width: 150px;">
<el-option label="正常" value="1" />
<el-option label="关闭" value="0" />
</el-select>
</el-form-item>
<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="GetList()" style="margin-left: 10px;">搜索</el-button>
<!-- <el-button type="danger" @click="Del()" style="margin-left: 10px;">删除</el-button> -->
</el-row>
</div>
<el-table :data="tableData" style="width: 100%;" row-key="id" v-loading="loading"
@selection-change="handleSelectionChange">
<el-table-column type="selection" />
<el-table-column prop="id" label="Id" />
<el-table-column prop="date" label="日期" width="100">
<template #default="scope">
<span>{{ scope.row.date.substring(0, 10) }}</span>
</template>
</el-table-column>
<el-table-column prop="weekname" label="星期" />
<el-table-column prop="resources_id" label="" v-if="false" />
<el-table-column prop="department_name" label="科室" />
<el-table-column prop="department_resources_name" label="资源" />
<el-table-column prop="" label="服务组" show-overflow-tooltip>
<template #default="scope">
<div v-if="scope.row.devices.length>0">
<div v-for="(item,index) in scope.row.devices" :key="index"
:class="(item.status==1 && item.is_del==0) ? '':'hongzi'">{{ item.device_name }}
</div>
</div>
</template>
</el-table-column>
<el-table-column prop="period_name" label="时段" />
<el-table-column prop="begin_time" label="开始时间" />
<el-table-column prop="end_time" label="结束时间" />
<el-table-column prop="end_reservation_time" label="截止时间" />
<el-table-column prop="" label="类型数量" show-overflow-tooltip width="250">
<template #default="scope">
<div v-if="scope.row.countsInfo.length>0">
<div style="font-weight: 700;color:#999">最大数量:{{ scope.row.countsInfo[0].max_total }}</div>
<div v-for="(item,index) in scope.row.countsInfo" :key="index" style="display: flex;">
<div style="font-weight:700;width: 50px;text-align: right;margin-right: 8px">{{ item.name
}}
</div>
<div>:{{ item.count }} 已用: <span @click="GetMingXi(scope.row,item.appointment_type_id)"
class="yiyong">{{ item.used_count }}</span>
:{{ Number(item.count - item.used_count) }}
</div>
</div>
</div>
</template>
</el-table-column>
<!-- <el-table-column prop="time_unit" label="可用时长" width="80" />-->
<el-table-column prop="roster_status" label="状态">
<template #default="scope">
<el-tag v-if="scope.row.status === 1" class="ml-2" type="success"></el-tag>
<el-tag v-if="scope.row.status === 0" class="ml-2" type="danger"></el-tag>
</template>
</el-table-column>
<el-table-column prop="" label="操作">
<template #default="scope">
<el-button @click="getDetail(scope.row.id)" size="small" style="margin-left: 10px;">
详情
</el-button>
</template>
</el-table-column>
</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-dialog v-model="PlanDetailDialogVisible" title="详情" width="40%">
<div v-loading="loading">
<el-form v-if="PlanDetaiInfo" label-width="100px" style="padding-right: 40px;">
<el-form-item label="日期:">
{{ PlanDetaiInfo.date }}
</el-form-item>
<el-form-item label="星期:">
{{ PlanDetaiInfo.weekname }}
</el-form-item>
<el-form-item label="科室:">
{{ PlanDetaiInfo.department_name }}
</el-form-item>
<el-form-item label="资源:">
{{ PlanDetaiInfo.resources_name }}
</el-form-item>
<el-form-item label="服务组:">
<el-tag v-for="(item,index) in PlanDetaiInfo.devices" :key="index"
:type="(item.status===1 && item.is_del===0)?'':'danger'" style="margin-left: 8px">
{{ item.device_name }}
</el-tag>
</el-form-item>
<el-form-item label="病人类型:">
<el-checkbox-group disabled v-model="PlanDetaiInfo.patientType">
<el-checkbox label="0">住院</el-checkbox>
<el-checkbox label="1">门诊</el-checkbox>
<el-checkbox label="2">急诊</el-checkbox>
<el-checkbox label="3">体检</el-checkbox>
</el-checkbox-group>
</el-form-item>
<el-form-item label="时间段:">
开始时间<span style="font-weight: 700;display: inline-block;margin-right: 8px">{{ PlanDetaiInfo.begin_time
}} </span> 结束时间<span
style="font-weight: 700;display: inline-block;margin-right: 8px">{{ PlanDetaiInfo.end_time }}
</span>
停止预约时间<span style="font-weight: 700">{{ PlanDetaiInfo.end_reservation_time }}</span>
</el-form-item>
<el-form-item label="渠道名额:" v-if="PlanDetaiInfo.coutsInfo">
<div style="margin-right: 16px">
<div>当日总量</div>
<div class="qudao_k_input">
<el-input @input="MaxCountChange" disabled type="number" v-model="PlanDetaiInfo.max_total"
:min="1" placeholder="0" oninput="value=value.replace(/^0|[^0-9]/g, '')" />
</div>
<div style="font-size: 12px;color: #999">设置渠道比例可自动分配</div>
</div>
<div>
<div class="qudao_k" v-for="(item,index) in PlanDetaiInfo.coutsInfo" :key="index">
<div style="width: 50px">{{ item.name }}</div>
<div class="qudao_k_input">
<el-input disabled type="number" v-model="PlanDetaiInfo.coutsInfo[index].count" :min="1"
placeholder="0" oninput="value=value.replace(/^0|[^0-9]/g, '')" />
</div>
</div>
</div>
</el-form-item>
<el-form-item label="状态:">
<el-switch disabled v-model="PlanDetaiInfo.status" size="large" active-text="" inactive-text=""
:active-value="1" :inactive-value="0" />
</el-form-item>
<el-form-item label="添加时间:">
{{ PlanDetaiInfo.created_at }}
</el-form-item>
</el-form>
</div>
<template #footer>
<span class="dialog-footer">
<el-button @click="PlanDetailDialogVisible = false">取消</el-button>
<el-button type="primary" @click="SavePlanAction">
确定
</el-button>
</span>
</template>
</el-dialog>
<el-dialog v-model="MingXiDialogVisible" title="预约明细" width="60%">
<div>
<div style="text-align: center;font-size: 16px; margin-top: -30px;margin-bottom: 10px;">{{selectedPlanRow.department_resources_name}}
<span v-for="(item,index) in selectedPlanRow.devices" :key="index"
:class="(item.status==1 && item.is_del==0) ? '':'hongzi'">{{ item.device_name }}
</span>
</div>
<el-form-item label="渠道">
<el-select :filterable="true" clearable v-model="selectecQuDaoid" @change="GetMingXi(selectedPlanRow,selectecQuDaoid)" placeholder="选择渠道"
style="margin-left: 8px;width: 150px;">
<el-option label="全部" :value="0" />
<el-option v-for="(item1,index1) in selectedPlanRow.countsInfo" :key="index1"
:label="item1.name" :value="item1.appointment_type_id" />
</el-select>
</el-form-item>
<el-table :data="MingXiList" style="width: 100%;" row-key="id" v-loading="MingXiLoading">
<el-table-column prop="list_status" label="状态" width="100">
<template #default="scope">
<el-tag v-if="scope.row.list_status===0" class="ml-2" type="info"></el-tag>
<el-tag v-if="scope.row.list_status===1" class="ml-2" type="success"></el-tag>
<el-tag v-if="scope.row.list_status===2" class="ml-2"></el-tag>
<el-tag v-if="scope.row.list_status===3" class="ml-2" type="warning"></el-tag>
</template>
</el-table-column>
<el-table-column prop="user_name" label="姓名" />
<el-table-column prop="user_phone" label="电话" />
<el-table-column prop="reg_num" label="登记号" />
<el-table-column prop="reservation_department" label="申请科室" />
<el-table-column prop="entrust" label="项目" />
<el-table-column prop="qudao_name" label="渠道" />
</el-table>
</div>
</el-dialog>
</div>
</template>
<script setup>
import {
ref,
onMounted
} from 'vue'
import {
PlanListGetList,
GetEnableDepartmentList,
GetEnableDeviceList,
TimePeriodGetEnableList,
DepartmentResourceGetEnableList,
PlanDetailChangeInfo,
PlanListGetDetail,
PlanDetailPlanListDel,
GetPlanUsedList
} from '@/api/api.js'
import {
ElMessage,
ElMessageBox
} from 'element-plus'
let loading = ref(false)
let tableData = ref([])
let currentPage = ref(1) //
let pageSize = ref(15) //
let total = 0 //
const PageSizeChange = (e) => { //
pageSize.value = e
GetList()
}
const PageCurrentChange = (e) => { //
currentPage.value = e
GetList()
}
let tableSelected = ref([])
const handleSelectionChange = (e) => {
tableSelected.value = e
}
let searchInfo = ref({
department_id: null,
resources_id: null,
device_id: null,
xingqi: null,
status: null,
dateRange: []
})
let PlanDetailDialogVisible = ref(false)
const GetList = () => {
PlanListGetList({
page: currentPage.value,
pageSize: pageSize.value,
searchInfo: searchInfo.value
}).then(res => {
tableData.value = res.data.list
total = res.data.count
})
}
let xingqi = ref([{
label: '星期一',
value: 1
}, {
label: '星期二',
value: 2
}, {
label: '星期三',
value: 3
}, {
label: '星期四',
value: 4
}, {
label: '星期五',
value: 5
}, {
label: '星期六',
value: 6
}, {
label: '星期日',
value: 7
}])
//
let EnableDeviceList = ref([])
const GetEnableDeviceListFunc = () => {
loading.value = true
GetEnableDeviceList().then(res => {
loading.value = false
if (res.status) {
EnableDeviceList.value = res.data
} else {
ElMessage.error(res.msg)
}
})
}
let EnableDepartmentList = ref([])
const GetDepartmentEnableList = () => {
loading.value = true
GetEnableDepartmentList({is_all: true}).then(res => {
loading.value = false
if (res.status) {
EnableDepartmentList.value = res.data.list
} else {
ElMessage.error(res.msg)
}
})
}
// //
// let TimePeriodList = ref([])
// const GetEnableTimePeriod = () => {
// loading.value = true
// TimePeriodGetEnableList().then(res => {
// loading.value = false
// if (res.status) {
// TimePeriodList.value = res.data
// } else {
// ElMessage.error(res.msg)
// }
//
// })
// }
//
let enableResourceList = ref([])
const getEnableResource = () => {
DepartmentResourceGetEnableList(
{department_id: searchInfo.value.department_id}
).then(res => {
if (res.status) {
enableResourceList.value = res.data
} else {
ElMessage.error(res.msg)
}
})
}
//
let PlanDetaiInfo = ref('')
const getDetail = (id) => {
PlanDetailDialogVisible.value = true
loading.value = true
PlanListGetDetail({
id: id
}).then(res => {
loading.value = false
if (res.status) {
PlanDetaiInfo.value = res.data
} else {
ElMessage.error(res.msg)
}
})
}
//
const MaxCountChange = (e) => {
console.log(e)
if (e === '' || e == null || e === 0) {
PlanDetaiInfo.value.max_total = 0
}
let temp = 0
let qudao_count = PlanDetaiInfo.value.coutsInfo.length
for (let i = 0; i < qudao_count; i++) {
if (PlanDetaiInfo.value.coutsInfo[i].ratio === 0) continue
PlanDetaiInfo.value.coutsInfo[i].count = Math.round(PlanDetaiInfo.value.max_total * (PlanDetaiInfo.value
.coutsInfo[i].ratio / 100))
temp = temp + PlanDetaiInfo.value.coutsInfo[i].count
//1
if (i === qudao_count - 1 && temp !== PlanDetaiInfo.value.max_total) {
PlanDetaiInfo.value.coutsInfo[i].count = PlanDetaiInfo.value.coutsInfo[i].count - (temp - PlanDetaiInfo
.value.max_total)
}
}
}
//
const SavePlanAction = () => {
let tempCount = 0
PlanDetaiInfo.value.coutsInfo.forEach((item) => {
tempCount = tempCount + Number(item.count)
})
if (tempCount !== Number(PlanDetaiInfo.value.max_total)) {
ElMessage.error('各个渠道数量之和与当日总量不符')
return false
}
loading.value = true
PlanDetailChangeInfo({
PlanDetaiInfo: PlanDetaiInfo.value
}).then(res => {
loading.value = false
if (res.status) {
PlanDetailDialogVisible.value = false
GetList()
} else {
ElMessage.error(res.msg)
}
})
}
const Del = () => {
if (tableSelected.value.length == 0) {
ElMessage.error("请至少勾选1条记录")
return false
}
let ids = []
tableSelected.value.map((item) => {
ids.push(item.id)
})
ElMessageBox.confirm(
'确定删除吗?',
'提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
}
).then(() => {
loading.value = true
PlanDetailPlanListDel({
ids: ids
}).then(res => {
loading.value = false
if (res.status) {
ElMessage({
message: res.msg,
type: 'success',
})
GetList()
} else {
ElMessage.error(res.msg)
}
})
})
}
let MingXiDialogVisible = ref(false);
let MingXiLoading = ref(false)
let MingXiList = ref(null);
let selectedPlanRow = ref(null);
let selectecQuDaoid =ref(null);
const GetMingXi = (row, typeid) => {
selectecQuDaoid.value=typeid
selectedPlanRow.value = row
MingXiDialogVisible.value = true
MingXiLoading.value = true
GetPlanUsedList({
planid: row.id,
qudaoid: typeid
}).then(res => {
MingXiLoading.value = false
if (res.status) {
MingXiList.value = res.data
} else {
ElMessage.error(res.msg)
}
})
}
const DepartmentChange = () => {
enableResourceList.value = []
if (searchInfo.value.department_id > 0)
getEnableResource()
}
onMounted(() => {
GetList()
GetDepartmentEnableList()
GetEnableDeviceListFunc()
})
</script>
<style scoped>
.type_count {
display: flex;
}
.type_count div {
white-space: nowrap;
margin-right: 10px;
}
.qudao_k {
display: flex;
}
.qudao_k_input {
width: 150px;
}
.hongzi {
color: #b25252;
}
.yiyong {
font-weight: 700;
color: #f5a96c;
cursor: pointer;
}
.yiyong:hover {
color: #666;
}
</style>
Loading…
Cancel
Save