| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- <template>
- <div>
- <a-modal
- v-model:visible="visible"
- :title="$t('navbar.check.info')"
- @cancel="() => handleCancel()"
- @before-ok="handleBeforeOk"
- >
- <a-form :model="form">
- <a-form-item field="name" label="ID">
- <a-input v-model="form.id" placeholder="ID" />
- </a-form-item>
- </a-form>
- </a-modal>
- </div>
- </template>
- <script setup lang="ts" name="CheckInPage">
- import { reactive, ref, shallowRef, watch, getCurrentInstance } from 'vue';
- import { fetchCheckIn } from '@/api/record';
- import dayjs from 'dayjs';
- const this_ = getCurrentInstance()?.appContext.config.globalProperties;
- interface CheckIn {
- id: string;
- time: string;
- }
- interface CheckInPageProps {
- modelValue: boolean;
- }
- interface CheckInPageEmits {
- (e: 'update:modelValue', value: boolean): void;
- }
- const props = withDefaults(defineProps<CheckInPageProps>(), {
- modelValue: false,
- });
- const emit = defineEmits<CheckInPageEmits>();
- const visible = shallowRef<boolean>(false);
- watch(
- () => props.modelValue,
- value => {
- visible.value = value;
- }
- );
- const form = ref<CheckIn>({
- id: '',
- time: '',
- });
- const handleBeforeOk = (done: (closed: boolean) => void) => {
- form.value.time = dayjs().format('YYYY-MM-DD HH:mm:ss');
- fetchCheckIn(form.value)
- .then(res => {
- this_?.$message.success('签到成功');
- done(true); // 关闭模态框
- handleCancel();
- })
- .catch(() => {
- done(false); // 不关闭模态框(例如提交失败时)
- });
- };
- const handleCancel = () => {
- form.value = {
- id: '',
- time: '',
- };
- visible.value = false;
- emit('update:modelValue', false);
- };
- </script>
|