号源调整

main
yanzai 1 year ago
parent a11eed7fac
commit c833bbe3f2

@ -33,32 +33,33 @@ class PlanController extends Controller
}
$model = DB::table('plan_model as a')->where(['a.id' => $params['model_id'], 'a.is_del' => 0, 'a.status' => 1])->first();
if (!$model) return \Yz::echoError1('模板不可用');
$planType = DB::table('plan_type as a')->where(['a.id' => $model->plan_type, 'a.is_del' => 0, 'a.status' => 1])->first();
if (!$planType) return \Yz::echoError1('号源类型不可用');
// $planType = DB::table('plan_type as a')->where(['a.id' => $model->plan_type, 'a.is_del' => 0, 'a.status' => 1])->first();
// if (!$planType) return \Yz::echoError1('号源类型不可用');
//查询此时间段内是否有已经生成的号源
$cha=DB::table('plans')->whereBetween('date',$Info['dateRange'])->get();
if(count($cha)>0){
return \Yz::return(false,'号源重复',['list'=>$cha]);
$cha = DB::table('plans')->whereBetween('date', $Info['dateRange'])->get();
if (count($cha) > 0) {
return \Yz::return(false, '号源重复', ['list' => $cha]);
}
//获取模板的全部时间点
$s=new TimeService();
$timelist=$s->TimePointsArr($model->start_time,$model->end_time,$model->interval_time);
if(count($timelist)<1) return \Yz::echoError1('');
// $s=new TimeService();
// $timelist=$s->TimePointsArr($model->start_time,$model->end_time,$model->interval_time);
$timelist = DB::table('plan_model_time')->where(['model_id' => $params['model_id']])->get();
if (count($timelist) < 1) return \Yz::echoError1('');
$startDate = new DateTime($Info['dateRange'][0]);
$endDate = new DateTime($Info['dateRange'][1]);
$currentDate = $startDate;
$success_count=0;
$success_count = 0;
while ($currentDate <= $endDate) {
//循环生成
$date_ymd=$currentDate->format('Y-m-d');
$date_ymd = $currentDate->format('Y-m-d');
//判断节假日是否生成
$s_day=DB::table('plan_holiday')->select('*','type as tp')->where(['date'=>$date_ymd])->first();
if(!!$s_day){
if($s_day->tp==1 and $params['workday_create']===0){
$s_day = DB::table('plan_holiday')->select('*', 'type as tp')->where(['date' => $date_ymd])->first();
if (!!$s_day) {
if ($s_day->tp == 1 and $params['workday_create'] === 0) {
$currentDate->modify('+1 day');
continue;
}
if($s_day->tp==2 and $params['holiday_create']===0){
if ($s_day->tp == 2 and $params['holiday_create'] === 0) {
$currentDate->modify('+1 day');
continue;
}
@ -67,32 +68,34 @@ class PlanController extends Controller
//获取星期几 星期1=1 星期日=7
$dayOfWeek = $currentDate->format('N');
//如果星期匹配上了
if(in_array($dayOfWeek, $params['week'])) {
foreach ($timelist as $key=>$time){
$type=1; //正常
if(in_array($key,json_decode($model->y_number,true))){
$type=0;//预留
if (in_array($dayOfWeek, $params['week'])) {
foreach ($timelist as $key => $time) {
$planType=null;
if(isset( $time->plan_type_id)){
$planType = DB::table('plan_type as a')->where(['a.id' => $time->plan_type_id, 'a.is_del' => 0, 'a.status' => 1])->first();
if (!$planType) return \Yz::echoError1('号源类型不可用');
}
$data=[
'model_id'=>$model->id,
'date'=>$date_ymd,
'week'=>$dayOfWeek,
'time'=>$time,
'type'=>$type,
'plan_number'=>implode('', explode(':', $time)),
'is_vip'=>$planType->is_vip,
'use_type'=>$planType->use_type,
'sex'=>$planType->sex,
'checkup_type_id'=>$planType->checkup_type_id,
'amount_limit1'=>$planType->amount_limit1,
'amount_limit2'=>$planType->amount_limit2,
'hospital_id'=>$model->hospital_id,
'status'=>1,
'is_del'=>0
$data = [
'model_id' => $model->id,
'date' => $date_ymd,
'week' => $dayOfWeek,
'time' => $time->time,
'type' => $time->type,
'plan_number' => implode('', explode(':', $time->time)),
'is_vip' => empty($planType)?null: $planType->is_vip,
'use_type' => empty($planType)?null:$planType->use_type,
'sex' => empty($planType)?null:$planType->sex,
'checkup_type_id' => empty($planType)?null:$planType->checkup_type_id,
'amount_limit1' =>empty($planType)?null: $planType->amount_limit1,
'amount_limit2' =>empty($planType)?null: $planType->amount_limit2,
'hospital_id' => $model->hospital_id,
'status' => 1,
'is_del' => 0
];
$i=DB::table('plans')->insert($data);
if($i){
$i = DB::table('plans')->insert($data);
if ($i) {
$success_count++;
}
}
@ -101,61 +104,109 @@ class PlanController extends Controller
// 日期加一天
$currentDate->modify('+1 day');
}
if($success_count>0){
return \Yz::Return(true,'',['success_count'=>$success_count]);
}else{
if ($success_count > 0) {
return \Yz::Return(true, '', ['success_count' => $success_count]);
} else {
return \Yz::echoError1('没有计划被创建');
}
}
public function GetList()
{
$page =request('page');
$pageSize =request('pageSize');
$searchInfo=request('searchInfo');
$list=DB::table('plans as a')
$page = request('page');
$pageSize = request('pageSize');
$searchInfo = request('searchInfo');
$list = DB::table('plans as a')
// ->leftJoin('plan_type as b','a.plan_type','=','b.id')
// ->select('a.*','b.name as plan_type_name')
->where(['a.is_del'=>0]);
if(!isset($searchInfo['date'])){
$searchInfo['date']=date('Y-m-d');
->where(['a.is_del' => 0]);
if (!isset($searchInfo['date'])) {
$searchInfo['date'] = date('Y-m-d');
}
$list=$list->where(['a.date'=>$searchInfo['date']]);
$count=$list->count();
$list=$list ->orderBy('a.id', 'asc')->get();
return \Yz::Return(true,'查询完成',['list'=>$list,'count'=>$count,'date'=> $searchInfo['date']]);
$list = $list->where(['a.date' => $searchInfo['date']]);
$count = $list->count();
$list = $list->orderBy('a.id', 'asc')->get();
return \Yz::Return(true, '查询完成', ['list' => $list, 'count' => $count, 'date' => $searchInfo['date']]);
}
public function GetDetail()
{
$id =request('id');
$info=DB::table('plans')->where(['id'=>$id])->first();
if(!!$info){
$info->checkup_type_id=json_decode($info->checkup_type_id,true);
return \Yz::Return(true,'查询完成',['info'=>$info]);
}else{
$id = request('id');
$info = DB::table('plans')->where(['id' => $id])->first();
if (!!$info) {
if(empty($info->checkup_type_id)){
$info->checkup_type_id='[]';
}
$info->checkup_type_id = json_decode($info->checkup_type_id, true);
return \Yz::Return(true, '查询完成', ['info' => $info]);
} else {
return \Yz::echoError1('查询失败');
}
}
//更新保存
public function Save()
{
$info =request('info');
if(isset($info['id'])){
$info['checkup_type_id']= isset($Info['checkup_type_id']) ? json_encode($Info['checkup_type_id']) : null;
$u=DB::table('plans')->where(['id'=>$info['id']])->update([
$info = request('info');
if (isset($info['id'])) {
$info['checkup_type_id'] = isset($info['checkup_type_id']) ? json_encode($info['checkup_type_id']) : null;
$u = DB::table('plans')->where(['id' => $info['id']])->update([
'is_vip' => $info['is_vip'],
'use_type' => $info['use_type'],
'sex' => $info['sex'],
'checkup_type_id' => $info['checkup_type_id'],
'amount_limit1' => $info['amount_limit1'],
'amount_limit2' => $info['amount_limit2'],
'status' => $info['status'],
]);
if ($u) {
return \Yz::Return(true, '保存成功', []);
} else {
return \Yz::echoError1('操作失败');
}
}
}
//批量更新号源类型
public function BatchUpdatePlanType(){
$ids = request('ids');
$type = request('type');
$info = request('info');
$cha =DB::table('plans')->whereIn('id', $ids)->where(['status'=>2])->get();
if(count($cha) >0){
return \Yz::echoError1('有号源被占用,不能执行此操作');
}
if($type==0){
$data=[
'is_vip'=>null,
'use_type'=>null,
'sex'=>null,
'checkup_type_id'=>[],
'amount_limit1'=>null,
'amount_limit2'=>null,
'type'=>0,
];
}
if($type==1){
if(empty($info['checkup_type_id'])) return \Yz::echoError1('体检类型不能为空');
$data=[
'is_vip'=>$info['is_vip'],
'use_type'=>$info['use_type'],
'sex'=>$info['sex'],
'checkup_type_id'=>$info['checkup_type_id'],
'amount_limit1'=>$info['amount_limit1'],
'amount_limit2'=>$info['amount_limit2'],
'status'=>$info['status'],
]);
if($u){
return \Yz::Return(true,'保存成功',[]);
'amount_limit1'=>isset($info['amount_limit1'])?$info['amount_limit1']:0,
'amount_limit2'=>isset($info['amount_limit2'])?$info['amount_limit2']:0,
'type'=>1,
];
}
$u=DB::table('plans')->whereIn('id', $ids)->update($data);
if ($u){
return \Yz::Return(true, '操作成功', []);
}else{
return \Yz::echoError1('操作失败');
}
}
}
}

@ -46,6 +46,8 @@ class PlanModelController extends Controller
public function Save()
{
$Info =request('Info');
$Timelist =request('Timelist');
$params = [
'hospital_id' => isset($Info['hospital_id']) ? $Info['hospital_id'] :null,
'name' => isset($Info['name']) ? $Info['name'] : null,
@ -55,7 +57,7 @@ class PlanModelController extends Controller
'count' => isset($Info['count']) ? $Info['count'] : 0,
'status'=>isset($Info['status']) ? $Info['status'] : 0,
];
$requiredFields = ['hospital_id'=>'医院','name'=>'名称','interval_time'=>'时间间隔','plan_type'=>'号源类型'];
$requiredFields = ['hospital_id'=>'医院','name'=>'名称','interval_time'=>'时间间隔'];
// 判断是否为空
foreach ($requiredFields as $key=> $field) {
if (!isset($params[$key]) || $params[$key] === null) {
@ -69,15 +71,34 @@ class PlanModelController extends Controller
$params['end_time']=$Info['TimeRange'][1];
$do=false;
$table=DB::table('plan_model');
$table_model_time=DB::table('plan_model_time');
DB::beginTransaction();
if($Info['id']==0){
$do=$table->insert($params);
$model_id=$table->insertGetId($params);
}
if($Info['id']>0){
$do=$table->where(['id'=>$Info['id']])->update($params);
$model_id=$Info['id'];
$table->where(['id'=>$Info['id']])->update($params);
}
$model_time_data=[];
foreach ($Timelist as $key=>$value){
$model_time_data[]=[
'type'=>isset($value['plan_type_id']) ? 1 : 0,
'model_id'=>$model_id,
'time'=>$value['time'],
'type_color'=>isset($value['type_color']) ? $value['type_color'] : null,
'plan_type_id'=>isset($value['plan_type_id']) ? $value['plan_type_id'] : null,
];
}
if(count($model_time_data)>0){
DB::table('plan_model_time')->where(['model_id'=>$model_id])->delete();
$do=$table_model_time->insert($model_time_data);
}
if($do){
DB::commit();
return \Yz::Return(true,'操作成功',[]);
}else{
DB::rollBack();
return \Yz::echoError1('操作失败');
}
@ -89,6 +110,8 @@ class PlanModelController extends Controller
if(!!$info){
$info->TimeRange=[$info->start_time,$info->end_time];
$info->y_number=json_decode($info->y_number,true);
$list=DB::table('plan_model_time as a')->where(['model_id'=>$id])->get();
$info->list=$list;
return \Yz::Return(true,'查询完成',$info);
}else{
return \Yz::echoError1('查询失败');

@ -20,8 +20,9 @@ class PlanTypeController extends Controller
'amount_limit1' => isset($Info['amount_limit1']) ? $Info['amount_limit1'] : 0,
'amount_limit2' => isset($Info['amount_limit2']) ? $Info['amount_limit2'] : 0,
'status'=>isset($Info['status']) ? $Info['status'] : 0,
'color'=>isset($Info['color']) ? $Info['color'] : null,
];
$requiredFields = ['name'=>'名称','is_vip'=>'vip类型','use_type'=>'个检/团检类型','checkup_type_id'=>'体检类型','status'=>'状态'];
$requiredFields = ['name'=>'名称','is_vip'=>'vip类型','use_type'=>'个检/团检类型','checkup_type_id'=>'体检类型','status'=>'状态','color'=>'颜色'];
// 判断是否为空
foreach ($requiredFields as $key=> $field) {
if (!isset($params[$key]) || $params[$key] === null) {

@ -90,6 +90,7 @@ Route::group(['middleware' => ['checktoken', 'log'], 'prefix' => 'v1'], function
Route::post('admin/PlanGetList', 'App\Http\Controllers\API\Admin\YeWu\PlanController@GetList');//号源列表
Route::post('admin/PlanGetDetail', 'App\Http\Controllers\API\Admin\YeWu\PlanController@GetDetail');//号源详情
Route::post('admin/PlanSave', 'App\Http\Controllers\API\Admin\YeWu\PlanController@Save');//保存号源详情
Route::post('admin/PlanBatchUpdatePlanType', 'App\Http\Controllers\API\Admin\YeWu\PlanController@BatchUpdatePlanType');//保存号源详情
Route::post('admin/ComboGetList', 'App\Http\Controllers\API\Admin\YeWu\ComboController@GetList');//获取套餐列表
Route::post('admin/ComboGetDetail', 'App\Http\Controllers\API\Admin\YeWu\ComboController@GetDetail');//获取套餐详情

@ -171,6 +171,10 @@ export const PlanGetDetail = (data = {}) => {
export const PlanSave = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/PlanSave', data: data })
}
//号源批量更新
export const PlanBatchUpdatePlanType = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/PlanBatchUpdatePlanType', data: data })
}
//获取套餐列表
export const ComboGetList = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/ComboGetList', data: data })

@ -14,6 +14,8 @@
<el-button type="primary" @click="GetList()" style="margin-left: 10px;"> </el-button>
<el-button type="warning" @click="Edit()" style="margin-left: 10px;"> </el-button>
<el-button type="danger" @click="Del()" style="margin-left: 10px;"> </el-button>
<el-button @click="BatchUpdate(1)" class="status_zhengchang" style="margin-left: 80px;">设为正常号</el-button>
<el-button @click="BatchUpdate(0)" style="margin-left: 10px;">设为预留号</el-button>
</el-row>
</div>
</div>
@ -103,7 +105,7 @@
ElMessageBox
} from 'element-plus'
import {
PlanGetList,PlanGetDetail,CheckUpTypeGetEnableList,PlanSave
PlanGetList,PlanGetDetail,CheckUpTypeGetEnableList,PlanSave,PlanBatchUpdatePlanType
} from '@/api/api.js'
let loading = ref(false)
let searchInfo = ref({})
@ -137,6 +139,8 @@
let Info=ref({});
let dialogVisible=ref(false);
const Edit=()=>{
dotype.value='one'
let selected_list=[];
list.value.forEach((v,i)=>{
if(v.selected!=undefined && v.selected==true){
@ -179,7 +183,9 @@
}
})
}
let dotype=ref('one');
const Save=()=>{
if(dotype.value=='one'){
loading.value = true
PlanSave({
info: Info.value,
@ -193,6 +199,45 @@
}
})
}
if(dotype.value=='batch'){
BatchUpdateFunc(1,Info.value)
}
}
const BatchUpdate=(type)=>{
if(type==1){
Info.value={}
dialogVisible.value=true
dotype.value='batch'
GetCheckUpTypeEnableList_Func()
}
if(type==0){
BatchUpdateFunc(type)
}
}
const BatchUpdateFunc=(type,info=null)=>{
loading.value = true
let selected_list=[]
list.value.forEach((v,i)=>{
if(v.selected!=undefined && v.selected==true){
selected_list.push(v.id)
}
})
PlanBatchUpdatePlanType({
ids: selected_list,
type:type,
info:info
}).then(res => {
loading.value = false
if (res.status) {
dialogVisible.value=false
GetList()
} else {
ElMessage.error(res.msg)
}
})
}
onMounted(() => {
GetList()
})

@ -14,7 +14,7 @@
<el-table :data="tableData" style="width: 100%;" row-key="id" v-loading="loading">
<el-table-column prop="id" label="Id" width="100" v-if="false" />
<el-table-column prop="name" label="名称" />
<el-table-column prop="plan_type_name" label="号源类型" />
<!-- <el-table-column prop="plan_type_name" label="号源类型" /> -->
<el-table-column prop="" label="起止时间" width="140">
<template #default="scope">
{{scope.row.start_time}} - {{scope.row.end_time}}
@ -67,23 +67,27 @@
<el-input-number v-model="Info.interval_time" :min="1" :max="10000"
@input.native="handle($event)" />
</el-form-item>
<el-form-item label="号源类型">
<!-- <el-form-item label="号源类型">
<el-select :filterable="true" clearable v-model="Info.plan_type" placeholder="选择号源类型">
<el-option v-for="(item,index) in PlabTypeList" :key="index" :label="item.name"
:value="item.id" />
</el-select>
</el-form-item>
</el-form-item> -->
<el-form-item label="状态">
<el-switch v-model="Info.status" size="large" active-text="" inactive-text=""
:active-value="1" :inactive-value="0" />
</el-form-item>
</el-form>
<div class="timelist_k">
<div v-for="(item,index) in timeList" :key="index" :class="['timelist_button', item.class]"
<div class="timelist_k" v-if="timeList">
<div v-for="(item,index) in timeList" :key="index" :class="['timelist_button', item.class]" :style="'background-color:'+ item.type_color"
@click="TimeClick(index)">{{item.time}}</div>
</div>
<div>未选中则为预留号源</div>
<div class="plan_type_list">
<div v-for="(item,index) in PlabTypeList" :key="index" @click="SetPlanType(item)" class="plan_type" :style="'background-color:'+ item.color" >设为 {{item.name}}</div>
</div>
</div>
<template #footer>
<span class="dialog-footer">
@ -294,6 +298,8 @@
const TimeClick = (index) => {
if (timeList.value[index].class == "timelist_button_selected") {
timeList.value[index].class = ""
timeList.value[index].type_color = null
timeList.value[index].plan_type_id = null
} else {
timeList.value[index].class = "timelist_button_selected"
}
@ -309,7 +315,8 @@
Info.value.count = timeList.value.length
loading.value = true
PlanModelSave({
Info: Info.value
Info: Info.value,
Timelist:timeList.value
}).then(res => {
loading.value = false
if (res.status) {
@ -333,7 +340,13 @@
loading.value = false
if (res.status) {
Info.value = res.data
GetTimeList('detail')
//GetTimeList('detail')
timeList.value=Info.value.list
timeList.value.forEach((v,i)=>{
if(v.type==1){
timeList.value[i].class = "timelist_button_selected"
}
})
} else {
ElMessage.error(res.msg)
}
@ -389,6 +402,14 @@
}
})
}
const SetPlanType=(item)=>{
timeList.value.forEach((v,i)=>{
if(v.class == "timelist_button_selected" && v.type_color==null){
timeList.value[i].type_color =item.color
timeList.value[i].plan_type_id =item.id
}
})
}
onMounted(() => {
GetList()
})
@ -423,6 +444,16 @@
.timelist_button_selected {
background-color: #8fc2ff;
color: #405772
color: #fff
}
.plan_type_list{
display: flex;
color: #fff;
}
.plan_type{
padding: 4px 8px;
border-radius: 6px;
margin-left: 8px;
cursor: pointer;
}
</style>

@ -110,6 +110,9 @@
<el-switch v-model="Info.status" size="large" active-text="" inactive-text=""
:active-value="1" :inactive-value="0" />
</el-form-item>
<el-form-item label="颜色">
<el-color-picker v-model="Info.color" />
</el-form-item>
</el-form>
</div>
<template #footer>

@ -281,7 +281,7 @@
</view>
</view>
</view>
<view class="botm_blank_wrapper" style="font-size: 18rpx;color: #ccc;">102250937</view>
<view class="botm_blank_wrapper" style="font-size: 18rpx;color: #ccc;">10261440</view>
</view>
</view>
</template>

Loading…
Cancel
Save