后台增加号源列表功能、改bug

main
yanzai 1 year ago
parent 2ede0329ba
commit 226964a3fc

@ -36,7 +36,7 @@ class PlanController extends Controller
// $planType = DB::table('plan_type as a')->where(['a.id' => $model->plan_type, 'a.is_del' => 0, 'a.status' => 1])->first(); // $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('号源类型不可用'); // if (!$planType) return \Yz::echoError1('号源类型不可用');
//查询此时间段内是否有已经生成的号源 //查询此时间段内是否有已经生成的号源
$cha = DB::table('plans')->whereBetween('date', $Info['dateRange'])->where(['is_del'=>0])->get(); $cha = DB::table('plans')->whereBetween('date', $Info['dateRange'])->where(['is_del'=>0])->whereIn('status',[0,1])->get();
if (count($cha) > 0) { if (count($cha) > 0) {
return \Yz::return(false, '号源重复', ['list' => $cha]); return \Yz::return(false, '号源重复', ['list' => $cha]);
} }
@ -52,6 +52,8 @@ class PlanController extends Controller
while ($currentDate <= $endDate) { while ($currentDate <= $endDate) {
//循环生成 //循环生成
$date_ymd = $currentDate->format('Y-m-d'); $date_ymd = $currentDate->format('Y-m-d');
//查询这一天已经占用的号源
$usedPlans= DB::table('plans')->where(['date'=>$date_ymd,'status'=>2])->get();
//判断节假日是否生成 //判断节假日是否生成
$s_day = DB::table('plan_holiday')->select('*', 'type as tp')->where(['date' => $date_ymd])->first(); $s_day = DB::table('plan_holiday')->select('*', 'type as tp')->where(['date' => $date_ymd])->first();
if (!!$s_day) { if (!!$s_day) {
@ -76,6 +78,14 @@ class PlanController extends Controller
if (!$planType) return \Yz::echoError1('号源类型不可用'); if (!$planType) return \Yz::echoError1('号源类型不可用');
} }
$cleanTime = implode('', explode(':', $time->time)); // 去除冒号的时间字符串 $cleanTime = implode('', explode(':', $time->time)); // 去除冒号的时间字符串
$tiaoguo=false;
foreach ($usedPlans as $usekey => $usedPlan) { //如果有占用的号源则跳过
if($usedPlan->date==$date_ymd and $usedPlan->time==$time->time){
$tiaoguo=true;
break;
}
}
if($tiaoguo) continue;
$data = [ $data = [
'model_id' => $model->id, 'model_id' => $model->id,
'date' => $date_ymd, 'date' => $date_ymd,
@ -212,7 +222,16 @@ class PlanController extends Controller
public function Del() public function Del()
{ {
$ids = request('ids'); $ids = request('ids');
$del=DB::table('plans')->whereIn('id', $ids)->where(['status'=>1])->update(['is_del'=>1]); $dates = request('dates');
if(empty($ids) and empty($dates)) return \Yz::echoError1("条件不完整");
$del=DB::table('plans');
if(!empty($ids)){
$del=$del ->whereIn('id', $ids);
}
if(isset($dates) and !empty($dates)){
$del=$del->whereIn('date',$dates);
}
$del=$del->whereIn('status',[0,1])->update(['is_del'=>1]);
if($del){ if($del){
return \Yz::Return(true, '操作成功', []); return \Yz::Return(true, '操作成功', []);
}else{ }else{

@ -0,0 +1,26 @@
<?php
namespace App\Http\Controllers\API\Admin\YeWu;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class PlanListController extends Controller
{
public function GetList()
{
$searchInfo = request('searchInfo');
$today=date('Y-m-d');
if(empty($searchInfo['dateRange']) or count($searchInfo['dateRange'])<>2){
$searchInfo['dateRange']=[$today,$today];
}
$list=DB::select("select date,
SUM(CASE WHEN type = 0 THEN 1 ELSE 0 END) as type_0_count,
SUM(CASE WHEN type =1 THEN 1 ELSE 0 END) as type_1_count,
SUM(CASE WHEN status=2 THEN 1 ELSE 0 END) as type_used_count
from plans where date >=? and date<=? and is_del=0 GROUP BY date",$searchInfo['dateRange']);
return \Yz::Return(true,"查询完成",['list'=>$list,'dateRange'=>$searchInfo['dateRange'],'count'=>0]);
}
}

@ -93,6 +93,7 @@ class OrderController extends Controller
'source' => '体检推送', 'source' => '体检推送',
'name' => $data['姓名'], 'name' => $data['姓名'],
'id_number' => $data['证件号码'], 'id_number' => $data['证件号码'],
'person_id'=>0,
'buy_info' => json_encode($buyInfo, JSON_UNESCAPED_UNICODE), 'buy_info' => json_encode($buyInfo, JSON_UNESCAPED_UNICODE),
'status' => 4, 'status' => 4,
'plan_number' => $data['分诊信息'], 'plan_number' => $data['分诊信息'],

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

@ -422,3 +422,7 @@ export const CouponsGetDetail = (data = {}) => {
export const ComboGetAllList = (data = {}) => { export const ComboGetAllList = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + `v1/admin/ComboGetAllList`, data: data }) return axios({ url: import.meta.env.VITE_APP_API + `v1/admin/ComboGetAllList`, data: data })
} }
//获取号源列表的列表
export const PlanListGetList = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + `v1/admin/PlanListGetList`, data: data })
}

@ -120,6 +120,13 @@ const router = createRouter({
meta: { meta: {
title: '号源模板' title: '号源模板'
} }
},{
path: '/planMngr/planlist',
name: 'PlanMngrPlanlist',
component: () => import('../views/PlanMngr/PlanList.vue'),
meta: {
title: '号源列表'
}
},{ },{
path: '/planMngr/plan', path: '/planMngr/plan',
name: 'PlanMngrPlan', name: 'PlanMngrPlan',

@ -112,6 +112,12 @@
PlanBatchUpdatePlanType, PlanBatchUpdatePlanType,
PlanDel PlanDel
} from '@/api/api.js' } from '@/api/api.js'
import {
useRoute,
useRouter
} from "vue-router"
const route = useRoute()
const router = useRouter()
let loading = ref(false) let loading = ref(false)
let searchInfo = ref({}) let searchInfo = ref({})
let list = ref([]); let list = ref([]);
@ -274,6 +280,7 @@
}) })
} }
onMounted(() => { onMounted(() => {
searchInfo.value.date=route.query.date
GetList() GetList()
}) })
</script> </script>

@ -0,0 +1,213 @@
<template>
<div>
<div class="head">
<div class="head">
<el-row>
<el-form-item>
<el-date-picker v-model="searchInfo.dateRange" type="daterange" value-format="YYYY-MM-DD"
range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期">
</el-date-picker>
</el-form-item>
<el-form-item>
<el-input v-model="searchInfo.name" placeholder="请输入模板名称" style="margin-left: 10px;" />
</el-form-item>
<el-button type="primary" @click="GetList()" style="margin-left: 10px;">查询</el-button>
<el-button type="success" @click="Add()" style="margin-left: 10px;">添加</el-button>
</el-row>
</div>
</div>
<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="date" label="日期" />
<el-table-column prop="type_0_count" label="预留" />
<el-table-column prop="" label="已用/可用总数">
<template #default="scope">
{{scope.row.type_used_count}}/{{scope.row.type_1_count}}
</template>
</el-table-column>
<el-table-column prop="" label="号源总数">
<template #default="scope">
{{Number(scope.row.type_0_count)+Number(scope.row.type_1_count)}}
</template>
</el-table-column>
<el-table-column prop="" label="操作" width="220">
<template #default="scope">
<el-button type="primary" @click="toDetail(scope.row.date)" size="small">明细</el-button>
<!-- <el-button type="success" @click="CreatPlanClick(scope.row)" size="small">重新生成</el-button> -->
<el-button type="danger" @click="Del(scope.row.date)" size="small">删除</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> -->
</div>
</template>
<script setup>
import {
ref,
onMounted
} from 'vue';
import {
ElMessage,
ElMessageBox
} from 'element-plus'
import {
PlanListGetList,
PlanDel,
PlanCreate,
} from '@/api/api.js'
let loading = ref(false)
let searchInfo = ref({
dateRange: []
})
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()
}
const GetList = () => {
loading.value = true
PlanListGetList({
searchInfo: searchInfo.value,
page: currentPage.value,
pageSize: pageSize.value
}).then(res => {
loading.value = false
if (res.status) {
tableData.value = res.data.list
total = res.data.count
searchInfo.value.dateRange = res.data.dateRange
} else {
ElMessage.error(res.msg)
}
})
}
let Info = ref({});
const GetDetail = (id) => {
loading.value = true
PlanModelGetDetail({
id: id
}).then(res => {
loading.value = false
if (res.status) {
Info.value = res.data
//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)
}
})
}
let selectedDate = ref([]);
const Del = (date = null) => {
if (date !== null) {
selectedDate.value = [date]
}
ElMessageBox.confirm(
'确定删除吗?已经占用的号源不会被删除',
'提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
}
)
.then(() => {
loading.value = true
PlanDel({
dates: selectedDate.value
}).then(res => {
loading.value = false
if (res.status) {
GetList()
} else {
ElMessage.error(res.msg)
}
})
})
}
let CPlan = ref({});
let ChongFuList = ref([]);
const CreatPlanClick = (row) => {
CPlan.value.name = row.name
CPlan.value.model_id = row.id
}
const toDetail=(date)=>{
window.location.href = "./#/planMngr/plan?date="+date
}
onMounted(() => {
GetList()
})
</script>
<style scoped>
.timelist_k {
display: flex;
flex-wrap: wrap;
}
.timelist_button {
width: 150px;
border: 1px solid #e2e2e2;
margin-top: 8px;
margin-left: 8px;
text-align: center;
height: 28px;
line-height: 28px;
cursor: pointer;
background-color: #f4f4f4;
font-weight: 700;
border-radius: 4px;
}
.timelist_button:hover {
border: 2px solid #8fc2ff;
line-height: 26px;
color: #2b5885;
}
.timelist_button_selected {
background-color: #8fc2ff;
color: #fff
}
.plan_type_list {
display: flex;
color: #fff;
}
.plan_type {
padding: 4px 8px;
border-radius: 6px;
margin-left: 8px;
cursor: pointer;
}
</style>

@ -149,16 +149,16 @@
</template> </template>
</el-dialog> </el-dialog>
<el-dialog v-model="CreatTiShiDialogVisible" title="生成号源"> <el-dialog v-model="CreatTiShiDialogVisible" title="生成号源">
<div style="margin-bottom: 10px;">当前选择的时间段和现有如下计划时间段有重叠</div> <div style="margin-bottom: 10px;">当前选择的时间段和现有如下计划时间段有重叠,请先删除</div>
<div style="display: flex; justify-content: space-between;flex-wrap: wrap;"> <div style="display: flex; justify-content: space-between;flex-wrap: wrap;">
<el-tag style="margin: 4px;" size="large" v-for="(item,index) in ChongFuList" :key="index" type="primary">{{item.date +' '+item.time}}</el-tag> <el-tag style="margin: 4px;" size="large" v-for="(item,index) in ChongFuList" :key="index" type="primary">{{item.date +' '+item.time}}</el-tag>
</div> </div>
<template #footer> <template #footer>
<span class="dialog-footer"> <span class="dialog-footer">
<el-button @click="CreatTiShiDialogVisible = false">取消</el-button> <!-- <el-button @click="CreatTiShiDialogVisible = false">取消</el-button> -->
<el-button type="primary" @click="CreatePlans()"> <el-button type="primary" @click="CreatTiShiDialogVisible = false">
确定 知道了
</el-button> </el-button>
</span> </span>
</template> </template>

Loading…
Cancel
Save