| | |
| | | "miniprogram": { |
| | | "list": [ |
| | | { |
| | | "name": "人å详æ
", |
| | | "pathName": "subpackages/task/taskHandleCheckDetail/taskHandleCheckDetail", |
| | | "query": "id=d4ff597f-20e3-41ff-87a4-08de1dbc63e7&date=2025-11-07&taskInfoId=b0e79981-56d5-4730-83e7-08de1d1fb9dd", |
| | | "scene": null, |
| | | "launchMode": "default" |
| | | }, |
| | | { |
| | | "name": "éªæ¶è¯¦æ
", |
| | | "pathName": "subpackages/task/taskCheckDetail/taskCheckDetail", |
| | | "query": "id=b0e79981-56d5-4730-83e7-08de1d1fb9dd&date=2025-11-07&checkReceiveStatus=20", |
| | | "scene": null, |
| | | "launchMode": "default" |
| | | "launchMode": "default", |
| | | "scene": null |
| | | }, |
| | | { |
| | | "name": "åèªè¯¦æ
", |
| | |
| | | <template v-if="OrderUtils.isContainCheckIn(checkReceiveMethods)"> |
| | | <nut-button |
| | | v-if=" |
| | | !userCheckHistoryType || |
| | | userCheckHistoryType === EnumTaskUserSubmitCheckHistoryType.CheckIn |
| | | !checkHistoryType || checkHistoryType === EnumTaskUserSubmitCheckHistoryType.CheckIn |
| | | " |
| | | type="primary" |
| | | class="task-check-card-phone-btn" |
| | |
| | | v-else |
| | | type="primary" |
| | | class="task-check-card-phone-btn" |
| | | @click.stop="handleMore" |
| | | @click.stop="emit('checkReceive')" |
| | | >éªæ¶</nut-button |
| | | > |
| | | </template> |
| | | <nut-button v-else type="primary" class="task-check-card-phone-btn" @click.stop="handleMore" |
| | | <nut-button |
| | | v-else |
| | | type="primary" |
| | | class="task-check-card-phone-btn" |
| | | @click.stop="emit('checkReceive')" |
| | | >éªæ¶</nut-button |
| | | > |
| | | </template> |
| | |
| | | |
| | | submitCheckReceiveStatus?: EnumTaskUserSubmitCheckReceiveStatus; |
| | | |
| | | userCheckHistoryType?: EnumTaskUserSubmitCheckHistoryType; |
| | | checkHistoryType?: EnumTaskUserSubmitCheckHistoryType; |
| | | }; |
| | | |
| | | const props = withDefaults(defineProps<Props>(), {}); |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | import { Message, toRound } from '@12333/utils'; |
| | | import * as taskCheckReceiveServices from '@12333/services/apiV2/taskCheckReceive'; |
| | | import dayjs from 'dayjs'; |
| | | import { EnumTaskUserSubmitCheckReceiveStatus } from '@12333/constants'; |
| | | import { MaybeRef } from 'vue'; |
| | | |
| | | type UseSettlementAmountOptions = { |
| | | id: MaybeRef<string>; |
| | | date: string; |
| | | onSuccess?: () => void; |
| | | taskInfoUserId: MaybeRef<string>; |
| | | timeoutServiceFee: MaybeRef<number>; |
| | | }; |
| | | |
| | | export function useSettlementAmount({ |
| | | id, |
| | | date, |
| | | taskInfoUserId, |
| | | onSuccess, |
| | | timeoutServiceFee, |
| | | }: UseSettlementAmountOptions) { |
| | | const dialogVisible = ref(false); |
| | | |
| | | const form = reactive({ |
| | | serviceFee: 0, |
| | | timeoutHours: 0, |
| | | timeoutFee: 0, |
| | | otherFee: 0, |
| | | remark: '', |
| | | timeoutServiceFee: 0, |
| | | }); |
| | | |
| | | const settlementAmount = computed(() => sumSettlementAmount()); |
| | | |
| | | function sumSettlementAmount() { |
| | | return toRound( |
| | | getFeeValue(Number(form.timeoutFee ?? 0)) + |
| | | getFeeValue(Number(form.serviceFee ?? 0)) + |
| | | getFeeValue(Number(form.otherFee ?? 0)) |
| | | ); |
| | | } |
| | | |
| | | function getFeeValue(val: number) { |
| | | return val || 0; |
| | | } |
| | | |
| | | async function openDialog(checkInTime: string) { |
| | | let res = await calcTaskCheckReceive(checkInTime); |
| | | if (res) { |
| | | dialogVisible.value = true; |
| | | form.serviceFee = res.serviceFee ?? 0; |
| | | form.timeoutHours = res.timeoutHours ?? 0; |
| | | form.otherFee = 0; |
| | | form.timeoutFee = 0; |
| | | form.remark = ''; |
| | | form.timeoutServiceFee = unref(timeoutServiceFee) ?? 0; |
| | | } |
| | | } |
| | | |
| | | async function calcTaskCheckReceive(checkInTime: string) { |
| | | try { |
| | | let params: API.CalcTaskCheckReceiveCommand = { |
| | | taskInfoId: unref(id), |
| | | checkInTime: dayjs(checkInTime).format('YYYY-MM-DD HH:mm:ss'), |
| | | checkOutTime: dayjs().format('YYYY-MM-DD HH:mm:ss'), |
| | | }; |
| | | return await taskCheckReceiveServices.calcTaskCheckReceive(params); |
| | | } catch (error) {} |
| | | } |
| | | |
| | | function handleCancel() { |
| | | dialogVisible.value = false; |
| | | } |
| | | |
| | | async function handleConfirm() { |
| | | try { |
| | | let params: API.CheckReceiveTaskCommand = { |
| | | taskInfoUserId: unref(taskInfoUserId), |
| | | date: dayjs(date).format('YYYY-MM-DD'), |
| | | checkReceiveStatus: EnumTaskUserSubmitCheckReceiveStatus.Success, |
| | | serviceFee: form.serviceFee, |
| | | timeoutHours: form.timeoutHours, |
| | | timeoutFee: form.timeoutFee, |
| | | otherFee: form.otherFee, |
| | | remark: form.remark, |
| | | settlementAmount: settlementAmount.value, |
| | | }; |
| | | let res = await taskCheckReceiveServices.checkReceiveTask(params); |
| | | if (res) { |
| | | Message.success('æäº¤æå'); |
| | | dialogVisible.value = false; |
| | | // infiniteLoadingProps.value?.refetch?.(); |
| | | onSuccess?.(); |
| | | } |
| | | } catch (error) {} |
| | | } |
| | | |
| | | function onTimeoutHoursChange(event: any) { |
| | | form.timeoutFee = Number(form.timeoutServiceFee) |
| | | ? form.timeoutServiceFee * event.detail.value |
| | | : 0; |
| | | } |
| | | |
| | | return { |
| | | dialogVisible, |
| | | form, |
| | | settlementAmount, |
| | | handleCancel, |
| | | openDialog, |
| | | handleConfirm, |
| | | onTimeoutHoursChange, |
| | | }; |
| | | } |
| | |
| | | <template #renderItem="{ item }"> |
| | | <TaskCheckCard |
| | | :avatar="setOSSLink(item.avatar)" |
| | | :name="item.name" |
| | | :name="item.name ?? ''" |
| | | :gender="item.gender" |
| | | :isReal="item.isReal" |
| | | :checkInTime="item.checkInTime" |
| | |
| | | :checkReceiveStatus="item.checkReceiveStatus" |
| | | :checkReceiveMethods="detail?.checkReceiveMethods" |
| | | :submitCheckReceiveStatus="item.submitCheckReceiveStatus" |
| | | :userCheckHistoryType="item.userCheckHistoryType" |
| | | :checkHistoryType="item.checkHistoryType" |
| | | @checkReceive="goTaskDetail(item)" |
| | | @checkInOrOut="(ev) => checkReceiveTask(ev, item)" |
| | | /> |
| | | </template> |
| | | </InfiniteLoading> |
| | | <!-- <nut-popup v-model:visible="dialogVisible"> |
| | | <div class="payroll-form-wrapper"> |
| | | <nut-form :model-value="form" ref="formRef"> |
| | | <nut-form-item |
| | | label="æå¡è´¹:" |
| | | class="bole-form-item" |
| | | prop="serviceFee" |
| | | label-width="90px" |
| | | > |
| | | <div class="bole-form-input-wrapper"> |
| | | <NumberInput |
| | | v-model.trim="form.serviceFee" |
| | | class="nut-input-text bole-input-text" |
| | | placeholder="请è¾å
¥æå¡è´¹" |
| | | :min="0" |
| | | :max="999999999999" |
| | | :precision="2" |
| | | type="text" |
| | | disabled |
| | | /> |
| | | <div class="form-input-unit">å
</div> |
| | | </div> |
| | | </nut-form-item> |
| | | <nut-form-item |
| | | label="è¶
æ¶:" |
| | | class="bole-form-item" |
| | | prop="timeoutHours" |
| | | label-width="90px" |
| | | > |
| | | <div class="bole-form-input-wrapper"> |
| | | <NumberInput |
| | | v-model.trim="form.timeoutHours" |
| | | class="nut-input-text bole-input-text" |
| | | placeholder="请è¾å
¥è¶
æ¶æ¶é¿" |
| | | :min="0" |
| | | :max="999999999999" |
| | | :precision="2" |
| | | type="text" |
| | | @change="onTimeoutHoursChange" |
| | | /> |
| | | <div class="form-input-unit">å°æ¶</div> |
| | | </div> |
| | | </nut-form-item> |
| | | <nut-form-item |
| | | label="è¶
æ¶è´¹ç¨:" |
| | | class="bole-form-item" |
| | | prop="timeoutFee" |
| | | label-width="90px" |
| | | > |
| | | <div class="bole-form-input-wrapper"> |
| | | <NumberInput |
| | | v-model.trim="form.timeoutFee" |
| | | class="nut-input-text bole-input-text" |
| | | placeholder="请è¾å
¥è¶
æ¶è´¹ç¨" |
| | | :min="0" |
| | | :max="999999999999" |
| | | :precision="2" |
| | | type="text" |
| | | /> |
| | | <div class="form-input-unit">å
</div> |
| | | </div> |
| | | </nut-form-item> |
| | | <nut-form-item |
| | | label="å
¶ä»è´¹ç¨:" |
| | | class="bole-form-item" |
| | | prop="otherFee" |
| | | label-width="90px" |
| | | > |
| | | <div class="bole-form-input-wrapper"> |
| | | <NumberInput |
| | | v-model.trim="form.otherFee" |
| | | class="nut-input-text bole-input-text" |
| | | placeholder="请è¾å
¥å
¶ä»è´¹ç¨" |
| | | :max="999999999999" |
| | | :precision="2" |
| | | type="text" |
| | | /> |
| | | <div class="form-input-unit">å
</div> |
| | | </div> |
| | | </nut-form-item> |
| | | <nut-form-item |
| | | label="ç»ç®éé¢:" |
| | | class="bole-form-item" |
| | | prop="settlementAmount" |
| | | label-width="90px" |
| | | > |
| | | {{ `${settlementAmount}å
` }} |
| | | </nut-form-item> |
| | | <nut-form-item |
| | | label="夿³¨:" |
| | | class="bole-form-item alignTop" |
| | | prop="remark" |
| | | label-width="90px" |
| | | > |
| | | <nut-textarea v-model="form.remark" rows="4" placeholder="请è¾å
¥å¤æ³¨"> </nut-textarea> |
| | | </nut-form-item> |
| | | </nut-form> |
| | | <div class="payroll-form-footer"> |
| | | <nut-button @click="handleCancel">åæ¶</nut-button> |
| | | <nut-button type="primary" @click="handleConfirm">确认</nut-button> |
| | | </div> |
| | | </div> |
| | | </nut-popup> --> |
| | | </LoadingLayout> |
| | | </template> |
| | | |
| | |
| | | const date = router.params?.date ?? ''; |
| | | const checkReceiveStatus = Number(router.params?.checkReceiveStatus); |
| | | |
| | | const dialogVisible = ref(false); |
| | | |
| | | const form = reactive({ |
| | | serviceFee: 0, |
| | | timeoutHours: 0, |
| | | timeoutFee: 0, |
| | | otherFee: 0, |
| | | remark: '', |
| | | timeoutServiceFee: 0, |
| | | |
| | | taskInfoId: '', |
| | | checkInTime: '', |
| | | checkoutTime: '', |
| | | }); |
| | | |
| | | const detail = ref<API.GetCheckReceiveTasksQueryResultItem>(); |
| | | |
| | | const { infiniteLoadingProps } = useInfiniteLoading( |
| | |
| | | } |
| | | ); |
| | | |
| | | const settlementAmount = computed(() => sumSettlementAmount()); |
| | | |
| | | function onTimeoutHoursChange(event: any) { |
| | | form.timeoutFee = Number(form.timeoutServiceFee) |
| | | ? form.timeoutServiceFee * event.detail.value |
| | | : 0; |
| | | } |
| | | |
| | | function sumSettlementAmount() { |
| | | return toRound( |
| | | getFeeValue(Number(form.timeoutFee ?? 0)) + |
| | | getFeeValue(Number(form.serviceFee ?? 0)) + |
| | | getFeeValue(Number(form.otherFee ?? 0)) |
| | | ); |
| | | } |
| | | |
| | | function getFeeValue(val: number) { |
| | | return val || 0; |
| | | } |
| | | |
| | | async function openDialog(item: API.GetCheckReceiveTaskQueryResultItem) { |
| | | let res = await calcTaskCheckReceive(item); |
| | | if (res) { |
| | | dialogVisible.value = true; |
| | | form.taskInfoId = item.id; |
| | | form.serviceFee = res.serviceFee ?? 0; |
| | | form.timeoutHours = res.timeoutHours ?? 0; |
| | | form.timeoutServiceFee = detail.value?.timeoutServiceFee ?? 0; |
| | | form.otherFee = 0; |
| | | form.timeoutFee = 0; |
| | | form.remark = ''; |
| | | } |
| | | } |
| | | |
| | | function handleCancel() { |
| | | dialogVisible.value = false; |
| | | } |
| | | |
| | | async function handleConfirm() { |
| | | try { |
| | | let params: API.CheckReceiveTaskCommand = { |
| | | taskInfoUserId: form.taskInfoId, |
| | | date: dayjs(date).format('YYYY-MM-DD'), |
| | | checkOutTime: dayjs().format('YYYY-MM-DD HH:mm:ss'), |
| | | checkReceiveStatus: EnumTaskUserSubmitCheckReceiveStatus.Success, |
| | | serviceFee: form.serviceFee, |
| | | timeoutHours: form.timeoutHours, |
| | | timeoutFee: form.timeoutFee, |
| | | otherFee: form.otherFee, |
| | | remark: form.remark, |
| | | settlementAmount: settlementAmount.value, |
| | | }; |
| | | let res = await taskCheckReceiveServices.checkReceiveTask(params); |
| | | if (res) { |
| | | Message.success('æäº¤æå'); |
| | | dialogVisible.value = false; |
| | | infiniteLoadingProps.value?.refetch?.(); |
| | | } |
| | | } catch (error) {} |
| | | } |
| | | |
| | | async function calcTaskCheckReceive(item: API.GetCheckReceiveTaskQueryResultItem) { |
| | | try { |
| | | let params: API.CalcTaskCheckReceiveCommand = { |
| | | taskInfoId: id, |
| | | checkInTime: dayjs(item.checkInTime).format('YYYY-MM-DD HH:mm:ss'), |
| | | checkOutTime: dayjs().format('YYYY-MM-DD HH:mm:ss'), |
| | | }; |
| | | return await taskCheckReceiveServices.calcTaskCheckReceive(params); |
| | | } catch (error) {} |
| | | } |
| | | |
| | | function goTaskDetail(item: API.GetCheckReceiveTaskQueryResultItem) { |
| | | Taro.navigateTo({ |
| | | url: `${RouterPath.taskHandleCheckDetail}?id=${item.id}&date=${date}`, |
| | | url: `${RouterPath.taskHandleCheckDetail}?id=${item.id}&date=${date}&taskInfoId=${id}`, |
| | | }); |
| | | } |
| | | |
| | |
| | | } catch (error) {} |
| | | } |
| | | </script> |
| | | <style lang="scss"> |
| | | @import '@/styles/common.scss'; |
| | | |
| | | .taskCheckDetail-page-wrapper { |
| | | .bole-form-input-wrapper { |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | | |
| | | .form-input-unit { |
| | | margin-left: 10px; |
| | | color: boleGetCssVar('text-color', 'primary'); |
| | | flex-shrink: 0; |
| | | } |
| | | |
| | | .payroll-form-wrapper { |
| | | width: 600px; |
| | | } |
| | | |
| | | .payroll-form-footer { |
| | | padding: 10px 20px; |
| | | text-align: center; |
| | | |
| | | .nut-button + .nut-button { |
| | | margin-left: 20px; |
| | | } |
| | | } |
| | | } |
| | | </style> |
| | |
| | | :contactPhoneNumber="detail?.enterpriseEmployeeUser?.contactPhoneNumber" |
| | | /> |
| | | </div> |
| | | <div class="taskCheckFileCard-status-title">éªæ¶ç
§ç</div> |
| | | <div class="taskCheckFileCard-status-title">éªæ¶è¯¦æ
</div> |
| | | <TaskCheckFileCard |
| | | :created-time="detail?.createdTime" |
| | | :userCheckInTime="detail?.userCheckInTime" |
| | | :userCheckOutTime="detail?.userCheckOutTime" |
| | | :checkInTime="detail?.checkInTime" |
| | | :checkOutTime="detail?.checkOutTime" |
| | | :checkReceiveMethods="detail?.checkReceiveMethods" |
| | | :files="detail?.files?.map((x) => setOSSLink(x))" |
| | | userCheckLabelPrefix="ç¨æ·" |
| | | showCheckTime |
| | | ></TaskCheckFileCard> |
| | | </ContentScrollView> |
| | | <PageFooter> |
| | |
| | | type="primary" |
| | | :color="Colors.Info" |
| | | class="dark-btn" |
| | | @click="checkReceiveTask(EnumTaskUserSubmitCheckReceiveStatus.Fail)" |
| | | >éªæ¶æªéè¿</PageFooterBtn |
| | | @click="openDialog(detail?.checkInTime ?? '')" |
| | | >ä¿®æ¹æå¡è´¹</PageFooterBtn |
| | | > |
| | | <PageFooterBtn |
| | | type="primary" |
| | | @click="checkReceiveTask(EnumTaskUserSubmitCheckReceiveStatus.Success)" |
| | | >éªæ¶éè¿</PageFooterBtn |
| | | > |
| | | <PageFooterBtn type="primary" @click="checkReceiveTask()">éªæ¶</PageFooterBtn> |
| | | </PageFooter> |
| | | <nut-popup v-model:visible="dialogVisible"> |
| | | <div class="payroll-form-wrapper"> |
| | | <nut-form :model-value="form" ref="formRef"> |
| | | <nut-form-item |
| | | label="æå¡è´¹:" |
| | | class="bole-form-item" |
| | | prop="serviceFee" |
| | | label-width="90px" |
| | | > |
| | | <div class="bole-form-input-wrapper"> |
| | | <NumberInput |
| | | v-model.trim="form.serviceFee" |
| | | class="nut-input-text bole-input-text" |
| | | placeholder="请è¾å
¥æå¡è´¹" |
| | | :min="0" |
| | | :max="999999999999" |
| | | :precision="2" |
| | | type="text" |
| | | disabled |
| | | /> |
| | | <div class="form-input-unit">å
</div> |
| | | </div> |
| | | </nut-form-item> |
| | | <nut-form-item |
| | | label="è¶
æ¶:" |
| | | class="bole-form-item" |
| | | prop="timeoutHours" |
| | | label-width="90px" |
| | | > |
| | | <div class="bole-form-input-wrapper"> |
| | | <NumberInput |
| | | v-model.trim="form.timeoutHours" |
| | | class="nut-input-text bole-input-text" |
| | | placeholder="请è¾å
¥è¶
æ¶æ¶é¿" |
| | | :min="0" |
| | | :max="999999999999" |
| | | :precision="2" |
| | | type="text" |
| | | @change="onTimeoutHoursChange" |
| | | /> |
| | | <div class="form-input-unit">å°æ¶</div> |
| | | </div> |
| | | </nut-form-item> |
| | | <nut-form-item |
| | | label="è¶
æ¶è´¹ç¨:" |
| | | class="bole-form-item" |
| | | prop="timeoutFee" |
| | | label-width="90px" |
| | | > |
| | | <div class="bole-form-input-wrapper"> |
| | | <NumberInput |
| | | v-model.trim="form.timeoutFee" |
| | | class="nut-input-text bole-input-text" |
| | | placeholder="请è¾å
¥è¶
æ¶è´¹ç¨" |
| | | :min="0" |
| | | :max="999999999999" |
| | | :precision="2" |
| | | type="text" |
| | | /> |
| | | <div class="form-input-unit">å
</div> |
| | | </div> |
| | | </nut-form-item> |
| | | <nut-form-item |
| | | label="å
¶ä»è´¹ç¨:" |
| | | class="bole-form-item" |
| | | prop="otherFee" |
| | | label-width="90px" |
| | | > |
| | | <div class="bole-form-input-wrapper"> |
| | | <NumberInput |
| | | v-model.trim="form.otherFee" |
| | | class="nut-input-text bole-input-text" |
| | | placeholder="请è¾å
¥å
¶ä»è´¹ç¨" |
| | | :max="999999999999" |
| | | :precision="2" |
| | | type="text" |
| | | /> |
| | | <div class="form-input-unit">å
</div> |
| | | </div> |
| | | </nut-form-item> |
| | | <nut-form-item |
| | | label="ç»ç®éé¢:" |
| | | class="bole-form-item" |
| | | prop="settlementAmount" |
| | | label-width="90px" |
| | | > |
| | | {{ `${settlementAmount}å
` }} |
| | | </nut-form-item> |
| | | <nut-form-item |
| | | label="夿³¨:" |
| | | class="bole-form-item alignTop" |
| | | prop="remark" |
| | | label-width="90px" |
| | | > |
| | | <nut-textarea v-model="form.remark" rows="4" placeholder="请è¾å
¥å¤æ³¨"> </nut-textarea> |
| | | </nut-form-item> |
| | | </nut-form> |
| | | <div class="payroll-form-footer"> |
| | | <nut-button @click="handleCancel">åæ¶</nut-button> |
| | | <nut-button type="primary" @click="handleConfirm">确认</nut-button> |
| | | </div> |
| | | </div> |
| | | </nut-popup> |
| | | </LoadingLayout> |
| | | </template> |
| | | |
| | |
| | | import Taro from '@tarojs/taro'; |
| | | import { useQuery } from '@tanstack/vue-query'; |
| | | import * as taskCheckReceiveServices from '@12333/services/apiV2/taskCheckReceive'; |
| | | import { TaskCheckFileCard, TaskCheckPersonalView } from '@12333/components'; |
| | | import { TaskCheckFileCard, TaskCheckPersonalView, NumberInput } from '@12333/components'; |
| | | import { Colors, EnumTaskUserSubmitCheckReceiveStatus } from '@12333/constants'; |
| | | import { Message, setOSSLink } from '@12333/utils'; |
| | | import dayjs from 'dayjs'; |
| | | import { goBack } from '@/utils'; |
| | | import { useCheckReceiveTaskUserSubmit } from '@12333/hooks'; |
| | | import { useSettlementAmount } from '../hooks'; |
| | | |
| | | defineOptions({ |
| | | name: 'InnerPage', |
| | |
| | | |
| | | const router = Taro.useRouter(); |
| | | const id = router.params?.id ?? ''; |
| | | const taskInfoId = router.params?.taskInfoId ?? ''; |
| | | const date = router.params?.date ?? ''; |
| | | |
| | | const { isLoading, isError, detail, refetch } = useCheckReceiveTaskUserSubmit({ |
| | |
| | | }, |
| | | }); |
| | | |
| | | async function checkReceiveTask(checkReceiveStatus: EnumTaskUserSubmitCheckReceiveStatus) { |
| | | const { |
| | | dialogVisible, |
| | | form, |
| | | settlementAmount, |
| | | handleCancel, |
| | | openDialog, |
| | | handleConfirm, |
| | | onTimeoutHoursChange, |
| | | } = useSettlementAmount({ |
| | | taskInfoUserId: id, |
| | | id: taskInfoId, |
| | | timeoutServiceFee: computed(() => detail.value?.timeoutServiceFee), |
| | | date, |
| | | onSuccess() { |
| | | Message.success('æäº¤æå', { |
| | | onClosed() { |
| | | goBack(); |
| | | }, |
| | | }); |
| | | }, |
| | | }); |
| | | |
| | | async function checkReceiveTask() { |
| | | try { |
| | | let params: API.CheckReceiveTaskCommand = { |
| | | id: detail.value?.id, |
| | | checkReceiveStatus: checkReceiveStatus, |
| | | checkReceiveStatus: EnumTaskUserSubmitCheckReceiveStatus.Success, |
| | | // serviceFee: form.serviceFee, |
| | | // timeoutHours: form.timeoutHours, |
| | | // timeoutFee: form.timeoutFee, |
| | | // otherFee: form.otherFee, |
| | | // remark: form.remark, |
| | | // settlementAmount: settlementAmount.value, |
| | | }; |
| | | let res = await taskCheckReceiveServices.checkReceiveTask(params); |
| | | if (res) { |
| | |
| | | border-bottom: 1px solid #d9d9d9; |
| | | margin-bottom: 22px; |
| | | } |
| | | |
| | | .bole-form-input-wrapper { |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | | |
| | | .form-input-unit { |
| | | margin-left: 10px; |
| | | color: boleGetCssVar('text-color', 'primary'); |
| | | flex-shrink: 0; |
| | | } |
| | | |
| | | .payroll-form-wrapper { |
| | | width: 600px; |
| | | } |
| | | |
| | | .payroll-form-footer { |
| | | padding: 10px 20px; |
| | | text-align: center; |
| | | |
| | | .nut-button + .nut-button { |
| | | margin-left: 20px; |
| | | } |
| | | } |
| | | } |
| | | </style> |
| | |
| | | :endTime="infiniteLoadingProps?.listData?.pages?.[0]?.objectData?.taskInfo?.endTime" |
| | | :showMyTaskArrow="false" |
| | | ></MyTaskCard> |
| | | <div class="taskCheckFileCard-status-title">éªæ¶ç
§ç</div> |
| | | <div class="taskCheckFileCard-status-title">éªæ¶è¯¦æ
</div> |
| | | <InfiniteLoading |
| | | scrollViewClassName="common-infinite-scroll-list-no-padding task-list" |
| | | v-bind="infiniteLoadingProps" |
| | |
| | | <div class="taskCheckFileCard-time-wrapper"> |
| | | <template v-if="OrderUtils.isContainCheckIn(checkReceiveMethods)"> |
| | | <div class="taskCheckFileCard-time"> |
| | | ç¾å°æ¶é´ï¼{{ |
| | | {{ userCheckLabelPrefix }}ç¾å°æ¶é´ï¼{{ |
| | | props.userCheckInTime |
| | | ? dayjs(props.userCheckInTime).format('YYYY-MM-DD HH:mm:ss') |
| | | : '' |
| | | }} |
| | | </div> |
| | | <div class="taskCheckFileCard-time"> |
| | | ç¾åºæ¶é´ï¼{{ |
| | | {{ userCheckLabelPrefix }}ç¾åºæ¶é´ï¼{{ |
| | | props.userCheckOutTime |
| | | ? dayjs(props.userCheckOutTime).format('YYYY-MM-DD HH:mm:ss') |
| | | : '' |
| | | }} |
| | | </div> |
| | | <template v-if="showCheckTime"> |
| | | <div class="taskCheckFileCard-time"> |
| | | 人工ç¾å°æ¶é´ï¼{{ |
| | | props.checkInTime ? dayjs(props.checkInTime).format('YYYY-MM-DD HH:mm:ss') : '' |
| | | }} |
| | | </div> |
| | | <div class="taskCheckFileCard-time"> |
| | | 人工ç¾åºæ¶é´ï¼{{ |
| | | props.checkOutTime ? dayjs(props.checkOutTime).format('YYYY-MM-DD HH:mm:ss') : '' |
| | | }} |
| | | </div> |
| | | </template> |
| | | </template> |
| | | <div class="taskCheckFileCard-time" v-else> |
| | | {{ props.createdTime ? dayjs(props.createdTime).format('YYYY-MM-DD HH:mm:ss') : '' }} |
| | |
| | | userCheckInTime?: string; |
| | | /** ç¨æ·ç¾åºæ¶é´ */ |
| | | userCheckOutTime?: string; |
| | | /** 人工ç¾å°æ¶é´ */ |
| | | checkInTime?: string; |
| | | /** 人工ç¾åºæ¶é´ */ |
| | | checkOutTime?: string; |
| | | |
| | | /** éªæ¶æ¹å¼ */ |
| | | checkReceiveMethods?: EnumTaskCheckReceiveMethod[]; |
| | | userCheckLabelPrefix?: string; |
| | | showCheckTime?: boolean; |
| | | }; |
| | | |
| | | const props = withDefaults(defineProps<Props>(), { |
| | | showCheckReceiveStatus: false, |
| | | userCheckLabelPrefix: '', |
| | | showCheckTime: false, |
| | | }); |
| | | </script> |
| | | |
| | |
| | | ); |
| | | } |
| | | |
| | | /** ä¿®å¤ä»»å¡é¢è®¡æ»æå¡è´¹v1.3.0.1 POST /api/flexjob/task/repairTaskEstimatedServiceFee_1_3_0_1 */ |
| | | export async function repairTaskEstimatedServiceFee1301( |
| | | body: API.RepairTaskEstimatedServiceFee1301Command, |
| | | options?: API.RequestConfig |
| | | ) { |
| | | return request<boolean>('/api/flexjob/task/repairTaskEstimatedServiceFee_1_3_0_1', { |
| | | method: 'POST', |
| | | headers: { |
| | | 'Content-Type': 'application/json-patch+json', |
| | | }, |
| | | data: body, |
| | | ...(options || {}), |
| | | }); |
| | | } |
| | | |
| | | /** æ¤åç»ç® POST /api/flexjob/task/revokeTaskSettlementOrder */ |
| | | export async function revokeTaskSettlementOrder( |
| | | body: API.RevokeTaskSettlementOrderCommand, |
| | |
| | | lastSubmitTime?: string; |
| | | checkReceiveStatus?: EnumTaskCheckReceiveStatus; |
| | | submitCheckReceiveStatus?: EnumTaskUserSubmitCheckReceiveStatus; |
| | | /** éªæ¶æ¹å¼ */ |
| | | checkReceiveMethods?: EnumTaskCheckReceiveMethod[]; |
| | | } |
| | | |
| | | interface GetCheckReceiveTaskQueryResultObjectData { |
| | |
| | | files?: string[]; |
| | | /** éªæ¶æ¹å¼ */ |
| | | checkReceiveMethods?: EnumTaskCheckReceiveMethod[]; |
| | | /** è¶
æ¶æå¡è´¹ */ |
| | | timeoutServiceFee?: number; |
| | | } |
| | | |
| | | interface GetCheckReceiveTaskUserSubmitsQuery { |
| | |
| | | checkReceiveStatus?: EnumTaskCheckReceiveStatus; |
| | | /** ç»ç®åå· */ |
| | | settlementCode?: string; |
| | | /** ä¾åºååç§° */ |
| | | supplierEnterpriseName?: string; |
| | | settlementOrderStatus?: EnumTaskSettlementOrderStatus; |
| | | /** ç»ç®ååç§° */ |
| | | settlementOrderName?: string; |
| | |
| | | |
| | | type RepairContractTemplateValuePointBy1202Command = Record<string, any>; |
| | | |
| | | type RepairTaskEstimatedServiceFee1301Command = Record<string, any>; |
| | | |
| | | interface ResendResourceCommand { |
| | | /** èµæºæ¥å¿Id */ |
| | | id?: string; |