<template>
|
<div class="app-container">
|
<el-row :gutter="20">
|
<el-col :span="7" :xs="24">
|
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="68px">
|
<el-form-item label="科室" prop="deptName">
|
<el-input v-model="queryParams.deptName" placeholder="请输入科室" clearable style="width: 200px" />
|
</el-form-item>
|
<el-form-item label="医师" prop="userName">
|
<el-input v-model="queryParams.userName" placeholder="请输入医师" clearable style="width: 200px" />
|
</el-form-item>
|
<el-form-item label="人员分类" prop="userName">
|
<el-select v-model="queryParams.roleId" placeholder="请输入挂号类别" clearable style="width: 160px">
|
<el-option v-for="dict in roleList" :key="dict.roleId" :label="dict.roleName"
|
:value="dict.roleId" />
|
</el-select>
|
</el-form-item>
|
<el-form-item>
|
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
</el-form-item>
|
</el-form>
|
<el-table border v-loading="loading" ref="tab" :data="timeConfigList" @selection-change="handleSelectionChange">
|
<el-table-column type="selection" width="50" align="center" />
|
<el-table-column label="医师" align="center" prop="userName" width="120">
|
</el-table-column>
|
<el-table-column label="科室" align="center" prop="deptName" width="100" />
|
<!-- <el-table-column
|
label="职称"
|
align="center"
|
prop="cftitle"
|
width="100"
|
/> -->
|
<el-table-column label="最大排班日期" align="center" prop="time" />
|
<el-table-column width="50" label="操作" align="center" class-name="small-padding fixed-width">
|
<template slot-scope="scope">
|
<el-button size="mini" type="text" icon="el-icon-delete" @click="tingzhen(scope.row)"
|
v-hasPermi="['mall:timeConfig:remove']" title="删除">
|
</el-button>
|
</template>
|
</el-table-column>
|
</el-table>
|
|
<div class="pag">
|
<div class="pag1">
|
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum"
|
:limit.sync="queryParams.pageSize" @pagination="getList" />
|
</div>
|
</div>
|
</el-col>
|
<el-col :span="17">
|
<el-form :model="form" :rules="rules" ref="queryForm" size="small" :inline="true" label-width="80px">
|
<el-form-item label="排班类别" prop="numType">
|
<el-select v-model="form.numType" placeholder="请输入挂号类别" clearable style="width: 160px">
|
<el-option v-for="dict in dict.type.yuyue_num_type" :key="dict.value" :label="dict.label"
|
:value="dict.value" />
|
</el-select>
|
</el-form-item>
|
<el-form-item label="排班限号" prop="allNum">
|
<el-input v-model="form.allNum" placeholder="请输入预约限号" clearable style="width: 160px" />
|
</el-form-item>
|
<el-form-item label="排班日期" prop="createTimeList">
|
<!-- <el-date-picker v-model="createTimeList" type="datetimerange" align="right" :picker-options="pickerOptions"
|
style="width: 300px" start-placeholder="开始日期" end-placeholder="结束日期" format="yyyy-MM-dd"
|
value-format="yyyy-MM-dd" @change="dateChangebirthday1">
|
</el-date-picker> -->
|
<el-date-picker v-model="startTime" type="date" placeholder="选择日期" :picker-options="pickerOptionsStart"
|
style="width: 160px">
|
</el-date-picker>
|
<el-date-picker v-model="endTime" type="date" placeholder="选择日期" :picker-options="pickerOptionsEnd"
|
style="width: 160px" @change="dateChangebirthday1">
|
</el-date-picker>
|
</el-form-item>
|
<el-form-item label="上午/下午">
|
<el-radio-group v-model="morA">
|
<el-radio :label="1">上午</el-radio>
|
<el-radio :label="2">下午</el-radio>
|
<el-radio :label="3">全天</el-radio>
|
</el-radio-group>
|
</el-form-item>
|
|
<el-form-item>
|
<el-button type="primary" icon="el-icon-search" size="mini" @click="Scheduling">生成排班</el-button>
|
<el-button type="primary" icon="el-icon-search" size="mini" :disabled="disabled"
|
@click="SaveRoster">保存排班</el-button>
|
</el-form-item>
|
</el-form>
|
<el-table border v-loading="loading" :data="SchedulingList" height="620">
|
<el-table-column type="selection" width="50" align="center" />
|
|
<el-table-column label="序号" width="55" align="center" prop="newID" />
|
<el-table-column label="医师" width="100" align="center" prop="userName" />
|
<el-table-column label="日期" align="center" prop="time">
|
<template slot-scope="scope">
|
<span>{{ parseTime(scope.row.time, "{y}-{m}-{d}") }}</span>
|
</template>
|
</el-table-column>
|
<el-table-column label="星期" align="center" prop="week">
|
</el-table-column>
|
<el-table-column label="上午/下午" align="center" prop="morA">
|
</el-table-column>
|
<el-table-column label="排班类别" align="center" prop="numType">
|
<template slot-scope="scope">
|
<dict-tag :options="dict.type.yuyue_num_type" :value="scope.row.numType" />
|
</template>
|
</el-table-column>
|
<el-table-column label="出诊科室" align="center" prop="deptName" />
|
<el-table-column label="医师" align="center" prop="userName" />
|
<el-table-column label="排班限号" align="center" prop="allNum">
|
<template slot-scope="scope">
|
<el-input v-model="scope.row.allNum" @change="changeInput" placeholder="请输入内容"
|
style="height: 23px; line-height: 23px"></el-input>
|
</template>
|
</el-table-column>
|
<el-table-column width="80" label="操作" align="center" class-name="small-padding fixed-width">
|
<template slot-scope="scope">
|
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
|
v-hasPermi="['mall:timeConfig:remove']" title="删除">
|
</el-button>
|
</template>
|
</el-table-column>
|
</el-table>
|
</el-col>
|
</el-row>
|
</div>
|
</template>
|
|
<script>
|
import {
|
getUserList,
|
getScheduling,
|
timeConfig,
|
updateIsClose,
|
roleList
|
} from "@/api/mall/timeConfig";
|
|
export default {
|
name: "TimeConfig",
|
dicts: ["yuyue_num_type"],
|
data() {
|
return {
|
yc: false,
|
// pickerOptions: {
|
// disabledDate: (date) => {
|
// return date.getTime() < Date.now() - 24 * 60 * 60 * 1000; // 可选未来天、可选当前天、不可选历史天;
|
// },
|
// },
|
startTime: "", //开始日期
|
pickerOptionsStart: {
|
disabledDate: (date) => {
|
let minDate = new Date(this.startTime).getTime(); //拿到输入的开始日期
|
return (
|
date.getTime() < Date.now() - 24 * 60 * 60 * 1000 ||
|
date.getTime() < minDate
|
); // 可选未来天、可选当前天、不可选历史天;
|
},
|
// disabledDate: (time) => {
|
// let maxDate = new Date(this.endTime).getTime()//拿到输入的结束日期
|
// return time.getTime() > maxDate //判断大于结束日期 返回true 禁用
|
// }
|
},
|
endTime: "", //结束日期
|
pickerOptionsEnd: {
|
disabledDate: (time) => {
|
let minDate = new Date(this.startTime).getTime(); //拿到输入的开始日期
|
return (
|
time.getTime() < minDate ||
|
time.getTime() < Date.now() - 24 * 60 * 60 * 1000
|
); //判断小于开始日期 返回true 禁用
|
},
|
},
|
time: "",
|
disabled: true,
|
// 遮罩层
|
loading: true,
|
// 选中数组
|
ids: [],
|
// 非单个禁用
|
single: true,
|
// 非多个禁用
|
multiple: true,
|
// 显示搜索条件
|
showSearch: true,
|
// 总条数
|
total: 0,
|
// 预约时间表格数据
|
timeConfigList: [],
|
morA: 0,
|
morAList: [
|
{
|
value: "上午",
|
dict: 1
|
},
|
{
|
value: "下午",
|
dict: 2
|
},
|
{
|
value: "全天",
|
dict: 3
|
},
|
],
|
SchedulingList: [],
|
// 查询参数
|
queryParams: {
|
userName: null,
|
deptName: null,
|
roleId: null,
|
pageNum: 1,
|
pageSize: 10,
|
},
|
// 表单参数
|
form: {},
|
dataList: [],
|
roleList: [],
|
// 表单校验
|
rules: {
|
startTime: [
|
{
|
required: true,
|
message: "",
|
trigger: "blur",
|
},
|
],
|
endTime: [
|
{
|
required: true,
|
message: "",
|
trigger: "blur",
|
},
|
],
|
allNum: [
|
{
|
required: true,
|
message: "",
|
trigger: "blur",
|
},
|
],
|
allNum: [
|
{
|
required: true,
|
message: "",
|
trigger: "blur",
|
},
|
],
|
numType: [
|
{
|
required: true,
|
message: "",
|
trigger: "blur",
|
},
|
],
|
},
|
};
|
},
|
created() {
|
this.getList();
|
},
|
methods: {
|
dateChangebirthday1(val) {
|
if (val == null) {
|
this.endTime = " ";
|
} else {
|
let times = new Date(this.endTime).getTime();
|
var time = new Date(times);
|
var y = time.getFullYear();
|
var m = time.getMonth() + 1;
|
var d = time.getDate();
|
this.endTime = y + "-" + m + "-" + d;
|
}
|
},
|
/** 查询预约时间列表 */
|
getList() {
|
this.loading = true;
|
getUserList().then((response) => {
|
this.timeConfigList = response.data.voList;
|
this.total = response.data.total;
|
this.loading = false;
|
});
|
roleList().then(res => {
|
this.roleList =res.rows
|
})
|
},
|
|
/** 搜索按钮操作 */
|
handleQuery() {
|
this.queryParams.pageNum = 1;
|
getUserList(this.queryParams).then((response) => {
|
this.timeConfigList = response.data.voList;
|
this.total = response.data.total;
|
});
|
},
|
|
// 多选框选中数据
|
handleSelectionChange(selection) {
|
this.dataList = selection;
|
this.dataList.forEach((element) => {
|
if (element.time) {
|
let date = new Date(element.time).getTime();
|
let time = date + 24 * 60 * 60 * 1000;
|
const dt = new Date(time);
|
const y = dt.getFullYear();
|
const m = (dt.getMonth() + 1 + "").padStart(2, "0");
|
const d = (dt.getDate() + "").padStart(2, "0");
|
this.startTime = y + "-" + m + "-" + d;
|
return this.startTime;
|
} else if (element.time == null) {
|
this.startTime = "";
|
// let date = new Date(this.startTime).getTime();
|
let date = Date.now() - 24 * 60 * 60 * 1000;
|
let time = date + 24 * 60 * 60 * 1000;
|
const dt = new Date(time);
|
const y = dt.getFullYear();
|
const m = (dt.getMonth() + 1 + "").padStart(2, "0");
|
const d = (dt.getDate() + "").padStart(2, "0");
|
this.startTime = y + "-" + m + "-" + d;
|
return this.startTime;
|
}
|
});
|
this.ids = selection.map((item) => item.id);
|
},
|
|
Scheduling() {
|
if (this.dataList.length >= 1) {
|
if (this.form.allNum && this.form.numType) {
|
if (this.endTime) {
|
// let mallSchedulingTimeDto = {
|
// allNum: this.form.allNum,
|
// deptId: this.dataList[0].deptId,
|
// deptName: this.dataList[0].deptName,
|
// numType: this.form.numType,
|
// endTime: this.endTime,
|
// startTime: this.startTime,
|
// morA: this.morA,
|
// userId: this.dataList[0].userId,
|
// userName: this.dataList[0].userName,
|
// };
|
this.dataList.forEach(item => {
|
item.allNum=this.form.allNum,
|
item.numType= this.form.numType,
|
item.endTime= this.endTime,
|
item.startTime= this.startTime,
|
item.morA= this.morA
|
})
|
getScheduling(this.dataList).then((res) => {
|
this.disabled = false;
|
this.SchedulingList = res.data;
|
this.SchedulingList.forEach((item, index) => {
|
item.newID =
|
(this.queryParams.pageNum - 1) * this.queryParams.pageSize +
|
index +
|
1;
|
});
|
});
|
} else {
|
this.$modal.msgError("请选择时间段");
|
}
|
} else {
|
this.$modal.msgError("请填写带星");
|
}
|
} else {
|
this.$modal.msgError("请选择医生");
|
}
|
},
|
|
SaveRoster() {
|
let mallSchedulingTimes = this.SchedulingList;
|
timeConfig(mallSchedulingTimes).then((res) => {
|
if (res.code == 200) {
|
this.$modal.msgSuccess("保存成功");
|
this.getList();
|
}
|
});
|
},
|
|
changeInput(val) {
|
console.log(val);
|
},
|
|
/** 删除按钮操作 */
|
handleDelete(row) {
|
this.SchedulingList.forEach((item, index) => {
|
if (item == row) {
|
this.SchedulingList.splice(index, 1);
|
}
|
});
|
},
|
tingzhen(row) {
|
let MallSchedulingTime = row;
|
console.log(MallSchedulingTime);
|
updateIsClose(MallSchedulingTime).then((response) => {
|
console.log(response);
|
});
|
},
|
},
|
};
|
</script>
|
<style scoped>
|
.el-input--medium .el-input__inner {
|
height: 24px;
|
line-height: 24px;
|
}
|
|
.pag {
|
width: 140%;
|
display: flex;
|
justify-content: center;
|
}
|
|
.pag1 {
|
width: 20%;
|
}
|
</style>
|