Browse Source

增加多医院弹出框及调整交互

pull/15/head
zq 4 weeks ago
parent
commit
eae809460f
  1. 606
      src/views/HosInformation.vue

606
src/views/HosInformation.vue

@ -94,14 +94,6 @@
</div> </div>
<div class="flex-line"></div> <div class="flex-line"></div>
<div class="flex-right" v-if="form.worktimes"> <div class="flex-right" v-if="form.worktimes">
<!-- <GuipFormItem column="column" label="每周出诊安排" :required="true">
<div class="flex weekPlan" slot="formDom">
<GuipSelect v-for="day in weekDays" :key="day.id" v-model="form.worktimes[day.id].plan"
:options="options_weekPlan" :label="day.name" placeholder="休息"></GuipSelect>
</div>
</GuipFormItem> -->
<GuipFormItem column="column" class="mb24" label="工作时间( 下午 )" :required="true"> <GuipFormItem column="column" class="mb24" label="工作时间( 下午 )" :required="true">
<el-time-picker slot="formDom" style="width:100%" is-range v-model="form.afternoon_worktime" <el-time-picker slot="formDom" style="width:100%" is-range v-model="form.afternoon_worktime"
range-separator="至" start-placeholder="开始时间" end-placeholder="结束时间" placeholder="选择时间范围" range-separator="至" start-placeholder="开始时间" end-placeholder="结束时间" placeholder="选择时间范围"
@ -350,7 +342,8 @@
<div class="header-left"> <div class="header-left">
<span class="month-text">{{ formatMonth(currentDay) }}</span> <span class="month-text">{{ formatMonth(currentDay) }}</span>
<span v-if="isCurrentMonth(currentDay)" class="current-month-badge">本月</span> <span v-if="isCurrentMonth(currentDay)" class="current-month-badge">本月</span>
<span class="header-tip" v-if="conflictCount > 0">本月有 {{ conflictCount }} 天出诊医院重合请检查</span> <span class="header-tip" v-if="conflictCount > 0 && !is_allow_coincide">本月有 {{ conflictCount }}
天出诊医院重合请检查</span>
</div> </div>
<div class="header-right"> <div class="header-right">
<el-button-group> <el-button-group>
@ -372,8 +365,7 @@
<el-tooltip placement="bottom" :disabled="hosList.length == 1" <el-tooltip placement="bottom" :disabled="hosList.length == 1"
v-if="hasScheduleData(data.day, date)" popper-class="schedule-tooltip"> v-if="hasScheduleData(data.day, date)" popper-class="schedule-tooltip">
<!-- getDateCellClass 控制单独医院 的类名--> <!-- getDateCellClass 控制单独医院 的类名-->
<div class="calendar-date" <div class="calendar-date" @click="handleDateClick(data.day, $event, date, data)"
@click="handleDateClick(data.day,$event, date)"
:class="[hosList.length == 1 ? getDateCellClass(data.day) : '', (isConflictDate(data.day) && !is_allow_coincide) ? 'conflict-date' : '']"> :class="[hosList.length == 1 ? getDateCellClass(data.day) : '', (isConflictDate(data.day) && !is_allow_coincide) ? 'conflict-date' : '']">
<div class="date-header flex-between"> <div class="date-header flex-between">
<div class="flex gap12"> <div class="flex gap12">
@ -395,7 +387,9 @@
<div v-for="(shiftType, key) in plantype" :key="key"> <div v-for="(shiftType, key) in plantype" :key="key">
<div v-if="key !== '0' && getDateSchedule(data.day)[key] && getDateSchedule(data.day)[key].length > 0" <div v-if="key !== '0' && getDateSchedule(data.day)[key] && getDateSchedule(data.day)[key].length > 0"
class="schedule-item" :class="getScheduleItemClass(data.day, key)"> class="schedule-item" :class="getScheduleItemClass(data.day, key)">
<span class="shift-type">{{ shiftType }}</span> <span class="shift-type"
:style="(hosList.length == 1 && getDateCellClass(data.day) == 'shift-type-0') ? 'text-decoration:line-through' : ''">{{
shiftType }}</span>
<div class="hospital-tags" v-if="hosList.length > 1"> <div class="hospital-tags" v-if="hosList.length > 1">
<span v-for="hospital in getDateSchedule(data.day)[key]" <span v-for="hospital in getDateSchedule(data.day)[key]"
:key="hospital.hid" :key="hospital.hid"
@ -607,22 +601,74 @@
</GuipDialog> </GuipDialog>
<GuipDialog :dialogVisible="singleHosVisiable" :title="singleHosTitle" :show-close-button="false" width="599px" <GuipDialog :dialogVisible="singleHosVisiable" :title="singleHosTitle" :show-close-button="false" width="599px"
:show-cancel-button="true" @confirm="singleTempCancel" @cancel="singleTempConfirm" ref="singleHosRef"> :show-cancel-button="true" @confirm="singleTempConfirm" @cancel="singleTempCancel" ref="singleHosRef">
<p class="mb24"> <p class="" v-if="isShowDialogDate">
{{ currentEditingDate }}{{ isToday(currentEditingDate) ? '(今日)' : '' }} {{ currentEditingDate }}{{ isToday(currentEditingDate) ? '(今日)' : '' }}
</p> </p>
<div class="flex" v-if="currentEditingHospital"> <div class="flex mt24" v-if="currentEditingHospital">
<el-radio v-model="currentEditingHospital.currentPlan" :label="'1'">上午出诊</el-radio> <el-radio v-model="currentEditingHospital.currentPlan" :label="'1'">上午出诊</el-radio>
<el-radio v-model="currentEditingHospital.currentPlan" :label="'2'">下午出诊</el-radio> <el-radio v-model="currentEditingHospital.currentPlan" :label="'2'">下午出诊</el-radio>
<el-radio v-model="currentEditingHospital.currentPlan" :label="'3'">全天出诊</el-radio> <el-radio v-model="currentEditingHospital.currentPlan" :label="'3'">全天出诊</el-radio>
<el-radio v-model="currentEditingHospital.currentPlan" :label="'0'">不出诊</el-radio> <el-radio v-model="currentEditingHospital.currentPlan" :label="'0'">不出诊</el-radio>
</div> </div>
</GuipDialog>
<GuipDialog :dialogVisible="moreHosVisiable" title="出诊日历" :show-close-button="false" width="599px"
:show-cancel-button="true" @cancel="moreTempCancel" @confirm="moreTempConfirm" ref="singleHosRef">
<p class="mb24">
{{ currentEditingDate }}{{ isToday(currentEditingDate) ? '(今日)' : '' }}
</p>
<el-form>
<div class="flex mb24">
<span class="" style="width: 50px;margin-right: 24px;">上午班</span>
<div class="select-container">
<div class="selected-hospitals-display" @click="toggleAfternoonDropdown('morn')">
{{ getAfternoonSelectedNames('morningSelectedHospitals') }}
<i :class="['el-icon-arrow-down', { 'is-reverse': isMornDropdownOpen }]"></i>
</div>
<el-select placeholder="请选择" ref="afternoonSelect" class="hidden-select" @visible-change="handleMornVisibleChange">
<el-option v-for="item in hosList" :key="item.hid" :label="item.name" disabled
>
<div class="flex-between option-content">
<span style="color:#333">{{ item.name }}</span>
<div class="checkbox-wrapper" @click.stop>
<el-checkbox @change="handleWorkCheckDirect(item, $event,'morningSelectedHospitals')"
:disabled="!is_allow_coincide"
:checked="item.morning_plan == '1' ? true : false"></el-checkbox>
</div>
</div>
<div> </el-option>
<GuipSelect width="466px" :options="options_weekPlan" label="上午班" placeholder="休息"></GuipSelect> </el-select>
<GuipSelect width="466px" :options="options_weekPlan" label="下午班" placeholder="休息"></GuipSelect> </div>
</div> </div>
<div class="flex">
<span style="width: 50px;margin-right: 24px;">下午班</span>
<div class="select-container">
<div class="selected-hospitals-display" @click="toggleAfternoonDropdown('after')">
{{ getAfternoonSelectedNames('afternoonSelectedHospitals') }}
<i :class="['el-icon-arrow-down', { 'is-reverse': isAfternoonDropdownOpen }]"></i>
</div>
<el-select placeholder="请选择" ref="afternoonSelect" class="hidden-select" @visible-change="handleAfternoonVisibleChange">
<el-option v-for="item in hosList" :key="item.hid" :label="item.name" disabled
>
<div class="flex-between option-content">
<span style="color:#333">{{ item.name }}</span>
<div class="checkbox-wrapper" @click.stop>
<el-checkbox @change="handleWorkCheckDirect(item, $event,'afternoonSelectedHospitals')"
:disabled="!is_allow_coincide"
:checked="item.afternoon_plan == '1' ? true : false"></el-checkbox>
</div>
</div>
</el-option>
</el-select>
</div>
</div>
</el-form>
</GuipDialog> </GuipDialog>
<!-- freeRegVisible --> <!-- freeRegVisible -->
<GuipDialog :dialogVisible="freeRegVisible" title="免挂号费规则" :show-close-button="false" width="599px" <GuipDialog :dialogVisible="freeRegVisible" title="免挂号费规则" :show-close-button="false" width="599px"
@ -666,6 +712,7 @@
</div> </div>
</template> </template>
<script> <script>
import GuipFormItem from '@/components/GuipFormItem.vue'; import GuipFormItem from '@/components/GuipFormItem.vue';
import PromptText from '@/components/PromptText.vue'; import PromptText from '@/components/PromptText.vue';
import BatchProject from '@/components/BatchProject.vue'; import BatchProject from '@/components/BatchProject.vue';
@ -683,6 +730,7 @@ import CustomDropdown from '@/components/CustomDropdown.vue';
import addPay from '@/components/addPay.vue'; import addPay from '@/components/addPay.vue';
import { mapState } from 'vuex'; import { mapState } from 'vuex';
import { Object } from 'core-js'; import { Object } from 'core-js';
// const cityOptions = ['', '', '广', ''];
const PAY_TYPE_WEIXIN = 2; // const PAY_TYPE_WEIXIN = 2; //
const PAY_TYPE_ALIPAY = 3; // const PAY_TYPE_ALIPAY = 3; //
@ -708,6 +756,8 @@ export default {
}, },
data() { data() {
return { return {
afterText: '',
morningText: '',
depart_id: false, depart_id: false,
doctor_id: false, doctor_id: false,
dialogType: '1', dialogType: '1',
@ -894,8 +944,9 @@ export default {
}, },
weekDaysDesc: ['周日', '周一', '周二', '周三', '周四', '周五', '周六'], weekDaysDesc: ['周日', '周一', '周二', '周三', '周四', '周五', '周六'],
hosLength: 0, hosLength: 0,
singleHosVisiable: false, singleHosVisiable: false,//
singleHosTitle: '出诊日历', moreHosVisiable: false,//
singleHosTitle: '出诊日历',//
temp_plans: null,// temp_plans: null,//
hosList: [],// hosList: [],//
currentDay: new Date(), currentDay: new Date(),
@ -908,6 +959,30 @@ export default {
tempAdjustments: {}, // {: {ID: {, , }}} tempAdjustments: {}, // {: {ID: {, , }}}
currentEditingHospital: null, // currentEditingHospital: null, //
currentEditingDate: null, // currentEditingDate: null, //
isShowDialogDate: false,//
morning_value: ['双皮奶', '鸡蛋'],
options: [{
value: '选项1',
label: '黄金糕'
}, {
value: '选项2',
label: '双皮奶'
}, {
value: '选项3',
label: '蚵仔煎'
}, {
value: '选项4',
label: '龙须面'
}, {
value: '选项5',
label: '北京烤鸭'
}],
morningSelectedHospitals: [], // ID
afternoonSelectedHospitals: [], // ID
// morningSelectedHospitals: [], // ID
// afternoonSelectedHospitals: [], // ID
isAfternoonDropdownOpen: false,
isMornDropdownOpen: false,
} }
}, },
created() { created() {
@ -1003,38 +1078,234 @@ export default {
...mapState(['hosMenuData']) // VuexshowSidebar ...mapState(['hosMenuData']) // VuexshowSidebar
}, },
methods: { methods: {
toggleAfternoonDropdown() {
console.log('----09999',this.afternoonSelectedHospitals);
if (this.isAfternoonDropdownOpen) {
this.$refs.afternoonSelect.blur();
} else {
this.$refs.afternoonSelect.focus();
}
},
handleAfternoonVisibleChange(visible) {
this.isAfternoonDropdownOpen = visible;
this.isMornDropdownOpen = false;
},
handleMornVisibleChange(visible) {
this.isMornDropdownOpen = visible;
this.isAfternoonDropdownOpen = false;
},
getAfternoonSelectedNames(list) {
if (this[list].length === 0) {
return '请选择';
}
const selectedNames = this[list].map(hid => {
const hospital = this.hosList.find(item => item.hid === hid);
return hospital ? hospital.name : '';
}).filter(name => name);
return selectedNames.join('、') || '休息';
},
getDateCellClass(dateString) {
const schedule = this.getDateSchedule(dateString);
console.log(schedule, 'getDateCellClass-schedule');
if (!schedule) return '';
for (const key in schedule) {
if (key !== '0' && schedule[key] && schedule[key].length > 0) {
let obj = schedule[key][0]
// 0
if (obj.currentPlan == '0') {
return `shift-type-0`;
} else {
return `shift-type-${key}`;
}
}
}
return '';
},
// checkbox
handleWorkCheckDirect(item, checked,workHos) {
if (checked) {
if(workHos == 'afternoonSelectedHospitals'){
item.afternoon_plan = '1'
}else{
item.morning_plan = '1'
}
this.selectMorningHospital(item.hid,workHos);
} else {
if(workHos == 'afternoonSelectedHospitals'){
item.afternoon_plan = '0'
}else{
item.morning_plan = '0'
}
this.deselectMorningHospital(item.hid,workHos);
}
// this.hosList = this.hosList.map(item1 => {
// if(item1.hid == item.hid){
// return {
// ...item1,
// morning_plan:checked ? '1' : '0'
// }
// }
// }); //
},
//
selectMorningHospital(hospitalId,workHos) {
console.log(workHos,hospitalId,'workHos00000');
if (!this.is_allow_coincide && this[workHos].length >= 1) {
//
this[workHos] = [hospitalId];
} else {
//
if (!this[workHos].includes(hospitalId)) {
this[workHos].push(hospitalId);
}
}
console.log(this.hosList,this['afternoonSelectedHospitals'],'hos===this.hosList');
},
//
deselectMorningHospital(hospitalId,workHos) {
this[workHos] = this[workHos].filter(id => id !== hospitalId);
},
// //
handleDateClick(dateString, event) { handleDateClick(dateString, event) {
//
event.stopPropagation(); event.stopPropagation();
// //
if (!this.hasScheduleData(dateString)) { if (!this.hasScheduleData(dateString)) {
console.log('该日期无排班数据'); console.log('该日期无排班数据');
return; return;
} }
//
console.log('点击日期:', dateString); const date1 = new Date(dateString);
const day = date1.getDay()
const dayText = day == 0 ? '周日' : this.weekPlan[day]
this.currentEditingDate = this.formatMonth(dateString, true) + ` ${dayText}`
this.isShowDialogDate = this.hasTempAdjustments(dateString)
console.log('点击日期:000', this.isShowDialogDate, '999998888888', date1, this.currentEditingDate, dayText, dateString);
if (this.isShowDialogDate) {
this.singleHosTitle = dayText + '出诊规则'
}
// //
const schedule = this.getDateSchedule(dateString); const schedule = this.getDateSchedule(dateString);
if (!schedule) return; if (!schedule) return;
// //
const hospitals = this.getHospitalsByDate(dateString); const hospitals = this.getHospitalsByDate(dateString);
console.log(hospitals,'hospitals==='); //
this.hosList = this.hosList.map(item => {
let hospitalInfo = {
hid: item.hid,
name: item.h_depart_name,
workTime: '已取消',
originalPlan: '0',
currentPlan: '0',
isCancelled: false //
};
hospitals.forEach(hospital => {
if (hospital.hid === item.hid) {
hospitalInfo = { ...hospital }
if (hospital.currentPlan == '1') {
hospitalInfo.morning_plan = '1'
} else if (hospital.currentPlan == '2') {
hospitalInfo.afternoon_plan = '1'
} else if (hospital.currentPlan == '3') {
hospitalInfo.morning_plan = '1'
hospitalInfo.afternoon_plan = '1'
}
}
})
console.log(hospitalInfo, ' ...hospitalInfo');
return {
morning_plan: '0',
afternoon_plan: '0',
...item,
...hospitalInfo,
}
})
console.log(hospitals, this.hosList, 'hospitals===');
// //
if (hospitals.length === 1) { if (this.hosList.length === 1) {
// - //
this.currentEditingDate = dateString;
this.currentEditingHospital = hospitals[0]; this.currentEditingHospital = hospitals[0];
this.singleHosVisiable = true; this.singleHosVisiable = true;
// this.showSingleHospitalDialog(dateString, hospitals[0]);
} else { } else {
// - this.initSelectedHospitals(this.hosList);
// this.showMultiHospitalDialog(dateString, hospitals); //
} }
}, },
//
initSelectedHospitals(hospitals) {
this.morningSelectedHospitals = [];
this.afternoonSelectedHospitals = [];
hospitals.forEach(hospital => {
const { hid, morning_plan, afternoon_plan } = hospital;
if (morning_plan === '1') {
this.morningSelectedHospitals.push(hid);
}
if (afternoon_plan === '1') {
this.afternoonSelectedHospitals.push(hid);
}
});
this.moreHosVisiable = true;
// this.morningText = this.morningSelectedHospitals.join(', ')
// this.afterText = this.afternoonSelectedHospitals.join(', ')
console.log(this.morningSelectedHospitals, this.afternoonSelectedHospitals, '初始化的喧哗走ing');
},
//
async moreTempConfirm() {
try {
const plans = [];
console.log('moreTempConfirm:',this.hosList);
//
this.hosList.forEach(hospital => {
const { hid } = hospital;
const isInMorning = this.morningSelectedHospitals.includes(hid);
const isInAfternoon = this.afternoonSelectedHospitals.includes(hid);
let morning_plan = "0";
let afternoon_plan = "0";
//
if (isInMorning) {
morning_plan = "1";
}
//
if (isInAfternoon) {
afternoon_plan = "1";
}
plans.push({
depart_id: hid,
morning_plan: morning_plan,
afternoon_plan: afternoon_plan
});
});
console.log('保存的排班数据:', plans);
await this.saveTempAdjustment(this.currentEditingDate, plans);
this.moreHosVisiable = false;
} catch (error) {
console.error('保存多医院调诊失败:', error);
this.$message.error('保存失败');
}
},
// ---- // ----
async saveTempAdjustment(dateString, newPlan) { async saveTempAdjustment(dateString, newPlan) {
console.log(newPlan, 'newPlan===='); console.log(newPlan, 'newPlan====');
@ -1090,6 +1361,7 @@ export default {
return hospitals; return hospitals;
}, },
// //
getWorkTimeDisplayText(hospital, dateStr, hospitalId) { getWorkTimeDisplayText(hospital, dateStr, hospitalId) {
const hospitalData = this.rawScheduleData[hospitalId]; const hospitalData = this.rawScheduleData[hospitalId];
@ -1098,7 +1370,7 @@ export default {
// console.log(hospitalData,hospital,'hospitalData===='); // console.log(hospitalData,hospital,'hospitalData====');
const { morning_worktime, afternoon_worktime, temp_change_worktime } = hospitalData; const { morning_worktime, afternoon_worktime, temp_change_worktime } = hospitalData;
console.log(morning_worktime,'morning_worktime==='); // console.log(morning_worktime, 'morning_worktime===');
let allDay_worktime = ''; let allDay_worktime = '';
if ((hospital.currentPlan == 3 || hospital.originalPlan == 3) && (morning_worktime && afternoon_worktime)) { if ((hospital.currentPlan == 3 || hospital.originalPlan == 3) && (morning_worktime && afternoon_worktime)) {
allDay_worktime = morning_worktime.slice(0, 5) + '-' + afternoon_worktime.slice(-5); allDay_worktime = morning_worktime.slice(0, 5) + '-' + afternoon_worktime.slice(-5);
@ -1411,24 +1683,12 @@ export default {
}, },
// getDoctorHosPreview // getDoctorHosPreview
async getDoctorHosPreview() { async getDoctorHosPreview() {
await this.$http('POST', '/api/admin/get_departs_worktimes', { // await this.$http('POST', '/api/admin/get_departs_worktimes', {
doctor_id: this.doctor_id, // doctor_id: this.doctor_id,
}).then(response => { // }).then(response => {
const list = response.msg; // const list = response.msg;
console.log(list, '原始数据==='); // console.log(list, '===');
let list = this.rawScheduleData = {
if (response.code == 0) {
//
this.hosList = Object.keys(list).map(item => {
return {
hid: item,
h_depart_name: list[item].h_depart_name
}
});
//
// this.rawScheduleData = list;
this.rawScheduleData = {
"7": { "7": {
"h_depart_name": "北京大学第三医院针灸科", "h_depart_name": "北京大学第三医院针灸科",
"worktime_no_fixed": 0, "worktime_no_fixed": 0,
@ -1512,22 +1772,110 @@ export default {
"morning_plan": "0", "morning_plan": "0",
"afternoon_plan": "0", "afternoon_plan": "0",
"date": "2025-11-12", "date": "2025-11-12",
"plan": 0, "plan": 0,
"work_paln_desc": "不可预约", "work_paln_desc": "不可预约",
"date_paln_desc": "11.12休息" "date_paln_desc": "11.12休息"
} }
} }
},
"4": {
"h_depart_name": "武丽娜中医针灸中医科",
"worktime_no_fixed": 0,
"display_work_days": 0,
"worktime_list": {
"1": {
"id": "92",
"doctor_id": "3",
"depart_id": "4",
"week_day": "1",
"plan": "1",
"work_paln_desc": "上午可约"
},
"2": {
"id": "93",
"doctor_id": "3",
"depart_id": "4",
"week_day": "2",
"plan": "3",
"work_paln_desc": "全天可约"
},
"3": {
"id": "94",
"doctor_id": "3",
"depart_id": "4",
"week_day": "3",
"plan": "2",
"work_paln_desc": "下午可约"
},
"4": {
"id": "95",
"doctor_id": "3",
"depart_id": "4",
"week_day": "4",
"plan": "1",
"work_paln_desc": "上午可约"
},
"5": {
"id": "96",
"doctor_id": "3",
"depart_id": "4",
"week_day": "5",
"plan": "3",
"work_paln_desc": "全天可约"
},
"6": {
"id": "97",
"doctor_id": "3",
"depart_id": "4",
"week_day": "6",
"plan": "3",
"work_paln_desc": "全天可约"
},
"7": {
"id": "98",
"doctor_id": "3",
"depart_id": "4",
"week_day": "7",
"plan": "0",
"work_paln_desc": "不可预约"
}
},
"temp_change_worktime": {
"2025-11-08": {
"id": "55",
"doctor_id": "3",
"depart_id": "4",
"morning_plan": "0",
"afternoon_plan": "0",
"date": "2025-11-08",
"plan": 0,
"work_paln_desc": "不可预约",
"date_paln_desc": "11.8休息"
} }
} }
},
}
// if (response.code == 0) {
//
this.hosList = Object.keys(list).map(item => {
return {
hid: item,
h_depart_name: list[item].h_depart_name
}
});
//
// this.rawScheduleData = list;
// //
this.generateMonthSchedule(this.currentDay); this.generateMonthSchedule(this.currentDay);
this.hosLength = Object.keys(list).length; this.hosLength = Object.keys(list).length;
} // }
}).catch(error => { // }).catch(error => {
console.error(error, 'error') // console.error(error, 'error')
}) // })
}, },
// //
generateMonthSchedule(date) { generateMonthSchedule(date) {
@ -1644,66 +1992,6 @@ export default {
} }
}, },
// addHospitalToSchedule(daySchedule, hospitalId, hospital, plan, workDesc) {
// const shiftType = plan.toString();
// const dateStr = daySchedule._dateStr;
// const originalPlan = this.getOriginalPlan(dateStr, hospitalId);
// console.log(` - addHospitalToSchedule: =${hospitalId}, =${shiftType}, =${originalPlan}`);
// //
// if (shiftType === "0" && originalPlan !== "0") {
// console.log(` - : =${hospitalId}, =${originalPlan}`);
// //
// if (!daySchedule[originalPlan]) {
// daySchedule[originalPlan] = [];
// }
// const hospitalInfo = {
// hid: hospitalId,
// hospital_name: hospital.h_depart_name,
// workTime: '',
// originalPlan: originalPlan,
// currentPlan: shiftType,
// isCancelled: true //
// };
// //
// const existingIndex = daySchedule[originalPlan].findIndex(item => item.hid === hospitalId);
// if (existingIndex >= 0) {
// daySchedule[originalPlan][existingIndex] = hospitalInfo;
// } else {
// daySchedule[originalPlan].push(hospitalInfo);
// }
// console.log(` - ${originalPlan} :`, hospitalInfo);
// return;
// }
// //
// if (shiftType !== "0") {
// if (!daySchedule[shiftType]) {
// daySchedule[shiftType] = [];
// }
// const hospitalInfo = {
// hid: hospitalId,
// hospital_name: hospital.h_depart_name,
// workTime: workDesc,
// originalPlan: originalPlan,
// currentPlan: shiftType,
// isCancelled: false
// };
// const existingIndex = daySchedule[shiftType].findIndex(item => item.hid === hospitalId);
// if (existingIndex >= 0) {
// daySchedule[shiftType][existingIndex] = hospitalInfo;
// } else {
// daySchedule[shiftType].push(hospitalInfo);
// }
// console.log(` - ${shiftType} :`, hospitalInfo);
// }
// },
// //
getSchedulePriority(hospitalId, plan, dateStr) { getSchedulePriority(hospitalId, plan, dateStr) {
const status = this.getTempAdjustmentStatus(dateStr, hospitalId, this.getOriginalPlan(dateStr, hospitalId)); const status = this.getTempAdjustmentStatus(dateStr, hospitalId, this.getOriginalPlan(dateStr, hospitalId));
@ -1836,10 +2124,6 @@ export default {
// //
singleTempConfirm() { singleTempConfirm() {
this.singleHosVisiable = false this.singleHosVisiable = false
},
//
singleTempCancel() {
this.singleHosVisiable = false;
let plan = this.currentEditingHospital.currentPlan; let plan = this.currentEditingHospital.currentPlan;
let depart_id = this.currentEditingHospital.hid; let depart_id = this.currentEditingHospital.hid;
let plans = { let plans = {
@ -1865,6 +2149,14 @@ export default {
plansList.push(plans) plansList.push(plans)
this.saveTempAdjustment(this.currentEditingDate, plansList) this.saveTempAdjustment(this.currentEditingDate, plansList)
}, },
//
singleTempCancel() {
this.singleHosVisiable = false;
},
//
moreTempCancel() {
this.moreHosVisiable = false;
},
isCurrentMonth(date) { isCurrentMonth(date) {
const current = new Date(); const current = new Date();
const target = new Date(date); const target = new Date(date);
@ -1893,11 +2185,15 @@ export default {
this.generateMonthSchedule(this.currentDay); this.generateMonthSchedule(this.currentDay);
this.countMonthlyConflicts(); // this.countMonthlyConflicts(); //
}, },
formatMonth(date) { formatMonth(date, dayFlag) {
const d = new Date(date); const d = new Date(date);
const year = d.getFullYear(); const year = d.getFullYear();
const month = d.getMonth() + 1; const month = d.getMonth() + 1;
return `${year}${month}`; let dateDesc = `${year}${month}`;
if (dayFlag) {
dateDesc += `${d.getDate()}`
}
return dateDesc
}, },
overrideWeekTitles() { overrideWeekTitles() {
this.$nextTick(() => { this.$nextTick(() => {
@ -1917,24 +2213,6 @@ export default {
return today.toDateString() === date.toDateString(); return today.toDateString() === date.toDateString();
}, },
//
// getDateSchedule(dateString) {
// //
// if (!this.calendarList[dateString]) {
// const date = new Date(dateString);
// const today = new Date();
// //
// if (date >= today) {
// const daySchedule = this.getScheduleForDate(date);
// if (daySchedule) {
// this.$set(this.calendarList, dateString, daySchedule);
// }
// }
// }
// // console.log(this.calendarList[dateString],dateString,'====this.calendarList[dateString]');
// return this.calendarList[dateString];
// },
// //
hasActualSchedule(schedule) { hasActualSchedule(schedule) {
if (!schedule) return false; if (!schedule) return false;
@ -2936,6 +3214,45 @@ export default {
} }
} }
// --
.select-container {
position: relative;
flex: 1;
}
.selected-hospitals-display {
border: 1px solid #DCDFE6;
border-radius: 4px;
padding: 0 15px;
height: 40px;
line-height: 40px;
background: white;
cursor: pointer;
display: flex;
justify-content: space-between;
align-items: center;
transition: border-color 0.2s;
}
.selected-hospitals-display:hover {
border-color: #C0C4CC;
}
.selected-hospitals-display:focus {
border-color: #409EFF;
}
.hidden-select {
position: absolute;
top: 0;
left: 0;
width: 100%;
opacity: 0;
z-index: 1;
}
// --
.tooltip-content { .tooltip-content {
.hospital-item { .hospital-item {
font-size: 12px; font-size: 12px;
@ -3156,6 +3473,15 @@ export default {
} }
/* 如果需要调整文字颜色 */ /* 如果需要调整文字颜色 */
.shift-type-0 {
background-color: #F6F7FA !important;
.date-text,
.shift-type {
color: #626573;
}
}
.shift-type-1 { .shift-type-1 {
background-color: #ECF5FF !important; background-color: #ECF5FF !important;

Loading…
Cancel
Save