| | |
| | | :show-close="false" |
| | | class="scheduled-task-dialog" |
| | | top="0" |
| | | :destroy-on-close="true" |
| | | :close-on-click-modal="false" |
| | | > |
| | | <template #header> |
| | | <div class="scheduled-task-header"> |
| | |
| | | /> |
| | | </div> |
| | | </template> |
| | | <div class="scheduled-task-content"> |
| | | <div class="scheduled-task-content" v-loading="loading"> |
| | | <div class="content-left"> |
| | | <div class="content-left-date"> |
| | | <TimePicker v-model="timeValue" /> |
| | |
| | | <div class="content-left-stereotyped-writing"> |
| | | <div class="stereotyped-writing"> |
| | | <input |
| | | v-model="taskName" |
| | | v-model.trim="taskName" |
| | | type="text" |
| | | :disabled="isInpDisabled" |
| | | class="stereotyped-writing-input" |
| | |
| | | </div> |
| | | <template #footer> |
| | | <div class="my-button cancel" @click="handleCancel">取消</div> |
| | | <div class="my-button confirm" @click="handleConfirm">确认</div> |
| | | <div |
| | | class="my-button confirm" |
| | | :class="loading ? 'cancel' : ''" |
| | | @click="handleConfirm" |
| | | > |
| | | 确认 |
| | | </div> |
| | | </template> |
| | | </el-dialog> |
| | | </div> |
| | |
| | | |
| | | <script lang="ts" setup> |
| | | import { computed, ref } from "vue"; |
| | | import dayjs from "dayjs"; |
| | | import { setTimeoutAlert } from "@/utils/httpApi"; |
| | | import { useBedsideAuxiliaryScreenStore } from "@/store/bedsideAuxiliaryScreen"; |
| | | |
| | | // @ts-ignore |
| | | import TimePicker from "./TimePicker.vue"; |
| | | |
| | |
| | | import tdddbaojing from "@/assets/tzddd.mp3"; |
| | | import tzxllbaojing from "@/assets/tzxll.mp3"; |
| | | import cgbaojing from "@/assets/cg.mp3"; |
| | | import { ElMessage } from "element-plus"; |
| | | |
| | | interface TaskItem { |
| | | label: string; |
| | |
| | | value: number; |
| | | } |
| | | |
| | | const bedsideAuxiliaryScreenStore = useBedsideAuxiliaryScreenStore(); |
| | | |
| | | const isShow = ref(false); |
| | | |
| | | const taskName = ref(""); // 任务名称 |
| | | const isInpDisabled = ref(false); // 输入框是否禁用 |
| | | |
| | | const timeValue = ref("19:16"); |
| | | const timeValue = ref(""); |
| | | |
| | | const detaCheck = ref<number | null>(); // 这个是判断时间按钮的 |
| | | |
| | | const loading = ref(false); |
| | | |
| | | const taskOptions = ref<TaskItem[]>([ |
| | | { |
| | |
| | | |
| | | const openDialog = () => { |
| | | isShow.value = true; |
| | | const time = dayjs(); |
| | | timeValue.value = time.format("HH:mm"); |
| | | }; |
| | | |
| | | const onStereotypedWritingClick = (item: TaskItem) => { |
| | |
| | | }; |
| | | |
| | | const handleCancel = () => { |
| | | if (loading.value) return; |
| | | isShow.value = false; |
| | | }; |
| | | |
| | | const handleConfirm = () => {}; |
| | | const handleConfirm = async () => { |
| | | if (loading.value) return; |
| | | const today = dayjs().format("YYYY-MM-DD"); |
| | | const fullDateTime = dayjs(`${today} ${timeValue.value}`) |
| | | .second(0) |
| | | .millisecond(0); // 秒和毫秒都去掉,要不然间隔短了就是0分钟 |
| | | |
| | | const now = dayjs().second(0).millisecond(0); // 秒和毫秒都去掉 |
| | | if (!fullDateTime.isAfter(now)) |
| | | return ElMessage.warning("任务提醒时间不能早于或等于当前时间"); |
| | | if (!taskName.value) return ElMessage.warning("任务内容不能为空"); |
| | | loading.value = true; |
| | | try { |
| | | const diffMinutes = fullDateTime.diff(now, "minute"); |
| | | const params = { |
| | | deviceCode: bedsideAuxiliaryScreenStore.deviceData.deviceCode, |
| | | minutes: diffMinutes, |
| | | alertText: taskName.value, |
| | | }; |
| | | const recordCode = bedsideAuxiliaryScreenStore.deviceData.recordCode; |
| | | const { data, message } = await setTimeoutAlert(params); |
| | | if (data !== "OK") return ElMessage.warning(message); |
| | | ElMessage.success("操作成功"); |
| | | bedsideAuxiliaryScreenStore.setSyncTask({ |
| | | deviceCode: params.deviceCode, |
| | | recordCode: recordCode, |
| | | taskDate: dayjs(fullDateTime).format("YYYY-MM-DD HH:mm"), |
| | | taskName: params.alertText, |
| | | overdue: false, |
| | | }); |
| | | handleCancel(); |
| | | } finally { |
| | | loading.value = false; |
| | | } |
| | | }; |
| | | |
| | | defineExpose({ |
| | | openDialog, |
| | |
| | | .date { |
| | | margin-left: 0; |
| | | padding: 0; |
| | | width: 50px; |
| | | height: 23px; |
| | | line-height: 23px; |
| | | width: 44px; |
| | | height: 18px; |
| | | line-height: 18px; |
| | | text-align: center; |
| | | font-size: 11px; |
| | | background-color: #769aff; |
| | |
| | | &:not(:first-child) { |
| | | margin-left: 6px; |
| | | } |
| | | &.cancel { |
| | | background: #bbc6dd; |
| | | } |
| | | |
| | | &.confirm { |
| | | background: #769aff; |
| | | } |
| | | &.cancel { |
| | | background: #bbc6dd; |
| | | } |
| | | &.refresh { |
| | | background: #e6a23c; |
| | | } |