| | |
| | | <template> |
| | | <ContentScrollView :paddingH="false"> |
| | | <nut-form :model-value="form" ref="formRef" :rules="rules"> |
| | | <nut-form-item label="上传照片:" class="bole-form-item alignTop" prop="files" required> |
| | | <Uploader |
| | | v-model:file-list="form.files" |
| | | :maximum="9" |
| | | :limitFileSize="10" |
| | | class="bole-uploader nopaddingtop" |
| | | <LoadingLayout :loading="isLoading" :error="isError" :loadError="refetch"> |
| | | <ContentScrollView :paddingH="false"> |
| | | <nut-form :model-value="form" ref="formRef" :rules="rules"> |
| | | <nut-form-item |
| | | label="上传照片:" |
| | | class="bole-form-item alignTop" |
| | | prop="files" |
| | | :required="!isContainCheckIn" |
| | | > |
| | | </Uploader> |
| | | </nut-form-item> |
| | | </nut-form> |
| | | </ContentScrollView> |
| | | <PageFooter :isOnlyAction="false"> |
| | | <PageFooterBtn type="primary" @click="handleSubmit()">提交</PageFooterBtn> |
| | | </PageFooter> |
| | | <Uploader |
| | | v-model:file-list="form.files" |
| | | :maximum="9" |
| | | :limitFileSize="10" |
| | | class="bole-uploader nopaddingtop" |
| | | :sourceType="['camera']" |
| | | > |
| | | </Uploader> |
| | | </nut-form-item> |
| | | </nut-form> |
| | | </ContentScrollView> |
| | | <PageFooter :isOnlyAction="false"> |
| | | <template v-if="isContainCheckIn"> |
| | | <PageFooterBtn type="primary" v-if="!detail.userCheckHistoryType" @click="handleCheckIn()" |
| | | >签到</PageFooterBtn |
| | | > |
| | | <PageFooterBtn |
| | | v-else-if="detail.userCheckHistoryType === EnumTaskUserSubmitCheckHistoryType.CheckIn" |
| | | type="primary" |
| | | @click="handleCheckOut()" |
| | | >签出</PageFooterBtn |
| | | > |
| | | </template> |
| | | <PageFooterBtn v-else type="primary" @click="handleSubmit()">提交</PageFooterBtn> |
| | | </PageFooter> |
| | | </LoadingLayout> |
| | | </template> |
| | | |
| | | <script setup lang="ts"> |
| | | import { FormRules } from '@nutui/nutui-taro/dist/types/__VUE/form/types'; |
| | | import { FileItem } from '@nutui/nutui-taro/dist/types/__VUE/uploader/type'; |
| | | import { FormValidator, Message } from '@12333/utils'; |
| | | import { FormValidator, Message, OrderUtils, convertApiPath2Url } from '@12333/utils'; |
| | | import * as taskCheckReceiveServices from '@12333/services/apiV2/taskCheckReceive'; |
| | | import Taro from '@tarojs/taro'; |
| | | import { goBack } from '@/utils'; |
| | | import { useQueryClient } from '@tanstack/vue-query'; |
| | | import dayjs from 'dayjs'; |
| | | import { useCheckReceiveTaskUserSubmit } from '@12333/hooks'; |
| | | import { EnumTaskUserSubmitCheckHistoryType } from '@12333/constants'; |
| | | |
| | | defineOptions({ |
| | | name: 'InnerPage', |
| | |
| | | const date = route.params?.date as string; |
| | | const queryClient = useQueryClient(); |
| | | |
| | | const { isLoading, isError, detail, refetch, isContainCheckIn } = useCheckReceiveTaskUserSubmit({ |
| | | params: { |
| | | taskInfoId: id, |
| | | date: dayjs(date).format('YYYY-MM-DD'), |
| | | }, |
| | | onSuccess(data) { |
| | | if (data.files?.length > 0) { |
| | | form.files = data.files.map(convertApiPath2Url); |
| | | } |
| | | }, |
| | | }); |
| | | |
| | | const form = reactive({ |
| | | files: [] as FileItem[], |
| | | }); |
| | | |
| | | const rules = reactive<FormRules>({ |
| | | files: [{ required: true, message: '请上传照片', validator: FormValidator.validatorArray }], |
| | | files: [{ message: '请上传照片', validator: FormValidator.validatorArray }], |
| | | }); |
| | | |
| | | const formRef = ref<any>(null); |
| | | |
| | | function handleCheckIn() { |
| | | submitCheckReceiveTask(EnumTaskUserSubmitCheckHistoryType.CheckIn); |
| | | // if (!formRef.value) return; |
| | | // formRef.value.validate().then(({ valid, errors }: any) => { |
| | | // if (valid) { |
| | | // } |
| | | // }); |
| | | } |
| | | |
| | | function handleCheckOut() { |
| | | submitCheckReceiveTask(EnumTaskUserSubmitCheckHistoryType.CheckOut); |
| | | // if (!formRef.value) return; |
| | | // formRef.value.validate().then(({ valid, errors }: any) => { |
| | | // if (valid) { |
| | | // } |
| | | // }); |
| | | } |
| | | |
| | | function handleSubmit() { |
| | | if (!formRef.value) return; |
| | |
| | | }); |
| | | } |
| | | |
| | | async function submitCheckReceiveTask() { |
| | | async function submitCheckReceiveTask(userCheckHistoryType?: EnumTaskUserSubmitCheckHistoryType) { |
| | | try { |
| | | let params: API.SubmitCheckReceiveTaskCommand = { |
| | | taskInfoId: id, |
| | | date: dayjs(date).format('YYYY-MM-DD'), |
| | | files: form.files.map((x) => x.path), |
| | | userCheckHistoryType, |
| | | }; |
| | | let res = await taskCheckReceiveServices.submitCheckReceiveTask(params); |
| | | if (res) { |
| | | Message.success('提交成功', { |
| | | onClosed() { |
| | | goBack(); |
| | | // goBack(); |
| | | queryClient.invalidateQueries(['taskServices/getTaskInfo', id]); |
| | | }, |
| | | }); |
| | |
| | | } catch (error) {} |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/styles/common.scss'; |
| | | </style> |