14个文件已修改
1个文件已删除
1 文件已重命名
11个文件已添加
| | |
| | | EnumTaskSettlementStatus, |
| | | BillingMethodEnumUnit, |
| | | } from '@12333/constants'; |
| | | import PayrollManageDetailCard from '../components/PayrollManageDetailCard.vue'; |
| | | import { Message, paginateList, setOSSLink, toThousand, OrderUtils } from '@12333/utils'; |
| | | import { useQuery } from '@tanstack/vue-query'; |
| | | import dayjs from 'dayjs'; |
| | | import { goBack } from '@/utils'; |
| | | import { ChunkTitle } from '@12333/components'; |
| | | import { ChunkTitle, PayrollManageDetailCard } from '@12333/components'; |
| | | |
| | | defineOptions({ |
| | | name: 'InnerPage', |
| | |
| | | ], |
| | | }, |
| | | { |
| | | root: 'subpackages/settleManage', |
| | | pages: [ |
| | | 'settleManage/settleManage', |
| | | 'settleManageDetail/settleManageDetail', |
| | | 'settleChange/settleChange', |
| | | ], |
| | | }, |
| | | { |
| | | root: 'subpackages/payrollManage', |
| | | pages: [ |
| | | 'payrollManage/payrollManage', |
| | |
| | | // cooperation = '/subpackages/setting/cooperation/cooperation', |
| | | // faq = '/subpackages/setting/faq/faq', |
| | | |
| | | settleManage = '/subpackages/settleManage/settleManage/settleManage', |
| | | settleManageDetail = '/subpackages/settleManage/settleManageDetail/settleManageDetail', |
| | | settleChange = '/subpackages/settleManage/settleChange/settleChange', |
| | | |
| | | payrollManage = '/subpackages/payrollManage/payrollManage/payrollManage', |
| | | payrollManageDetail = '/subpackages/payrollManage/payrollManageDetail/payrollManageDetail', |
| | | payrollChange = '/subpackages/payrollManage/payrollChange/payrollChange', |
| | |
| | | <CellChunk title="发薪"> |
| | | <div class="workbenches-cell-list"> |
| | | <TaskDetailWelfareItem |
| | | :icon="IconSettleManage" |
| | | text="结算管理" |
| | | @click="goPage(RouterPath.settleManage)" |
| | | /> |
| | | <TaskDetailWelfareItem |
| | | :icon="IconPayrollManage" |
| | | text="发薪管理" |
| | | @click="goPage(RouterPath.payrollManage)" |
| | |
| | | import IconPublishTask from '@/assets/workbenches/icon-publish-task.png'; |
| | | import IconTaskManage from '@/assets/workbenches/icon-task-manage.png'; |
| | | import IconPayrollManage from '@/assets/workbenches/icon-payroll.png'; |
| | | import IconSettleManage from '@/assets/workbenches/icon-settle.png'; |
| | | import { useAccessLogin } from '@/hooks'; |
| | | |
| | | defineOptions({ |
| | |
| | | <nut-button type="primary" @click.stop="checkContract(item)">查看合约</nut-button> |
| | | </template> --> |
| | | <nut-button |
| | | v-if="item.enterpriseSignContractStatus === EnumTaskUserSignContractStatus.Wait" |
| | | v-if=" |
| | | (item.userSignContractStatus === EnumTaskUserSignContractStatus.Wait || |
| | | item.userSignContractStatus === EnumTaskUserSignContractStatus.Stop || |
| | | !item.userSignContractStatus) && |
| | | item.source === EnumEnterpriseEmployeeSource.Internal |
| | | " |
| | | type="primary" |
| | | @click.stop="goEnterpriseSign(item)" |
| | | >签约</nut-button |
| | |
| | | EnumTaskUserHireStatus, |
| | | EnumTaskUserSignContractStatus, |
| | | EnumPagedListOrder, |
| | | EnumEnterpriseEmployeeSource, |
| | | } from '@12333/constants'; |
| | | import * as enterpriseEmployeeServices from '@12333/services/apiV2/enterpriseEmployee'; |
| | | import Taro from '@tarojs/taro'; |
| | |
| | | EnumTaskSettlementStatus, |
| | | BillingMethodEnumUnit, |
| | | } from '@12333/constants'; |
| | | import PayrollManageDetailCard from '../components/PayrollManageDetailCard.vue'; |
| | | import { Message, paginateList, setOSSLink, toThousand, OrderUtils } from '@12333/utils'; |
| | | import { useQuery } from '@tanstack/vue-query'; |
| | | import dayjs from 'dayjs'; |
| | | import { goBack } from '@/utils'; |
| | | import { ChunkTitle } from '@12333/components'; |
| | | import { ChunkTitle, PayrollManageDetailCard } from '@12333/components'; |
| | | |
| | | defineOptions({ |
| | | name: 'InnerPage', |
| New file |
| | |
| | | <template> |
| | | <ContentScrollView :paddingH="false"> |
| | | <nut-form :model-value="form" ref="formRef" :rules="rules"> |
| | | <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" |
| | | @change="onActualSettlementAmountChange" |
| | | /> |
| | | <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" |
| | | @change="onActualSettlementAmountChange" |
| | | /> |
| | | <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> |
| | | </ContentScrollView> |
| | | <PageFooter> |
| | | <PageFooterBtn type="primary" @click="handleConfirm">确认修改</PageFooterBtn> |
| | | </PageFooter> |
| | | </template> |
| | | |
| | | <script setup lang="ts"> |
| | | import { FormRules } from '@nutui/nutui-taro/dist/types/__VUE/form/types'; |
| | | import { NumberInput } from '@12333/components'; |
| | | import { FormValidator, Message, toRound } from '@12333/utils'; |
| | | import * as userServices from '@12333/services/apiV2/user'; |
| | | import { EnumEnterpriseWalletAccess, EnumUserBankCardAccess } from '@12333/constants'; |
| | | import { goBack } from '@/utils'; |
| | | import Taro from '@tarojs/taro'; |
| | | import * as taskUserServices from '@12333/services/apiV2/taskUser'; |
| | | import { useQuery } from '@tanstack/vue-query'; |
| | | import * as taskServices from '@12333/services/apiV2/task'; |
| | | import { useEventChannel } from 'senin-mini/hooks'; |
| | | |
| | | defineOptions({ |
| | | name: 'InnerPage', |
| | | }); |
| | | |
| | | const router = Taro.useRouter(); |
| | | //结算单id |
| | | const settleId = router.params?.settleId ?? ''; |
| | | //人员id |
| | | const orderRosterId = router.params?.orderRosterId ?? ''; |
| | | const operatorToken = router.params?.operatorToken ?? ''; |
| | | |
| | | const { isLoading, refetch } = useQuery({ |
| | | queryKey: ['taskUserServices/getSettlementTaskUsers', settleId, operatorToken], |
| | | queryFn: async () => { |
| | | let params: API.APIgetSettlementTaskUsersParams = { |
| | | id: settleId, |
| | | operatorToken: operatorToken, |
| | | }; |
| | | |
| | | return await taskUserServices.getSettlementTaskUsers(params, { |
| | | showLoading: false, |
| | | }); |
| | | }, |
| | | placeholderData: () => ({} as API.GetSettlementTaskUsersQueryResult), |
| | | onSuccess(res) { |
| | | const settlementTaskUser = res.data.find((x) => x.id === orderRosterId); |
| | | if (res?.detail) { |
| | | form.serviceFee = settlementTaskUser?.serviceFee ?? 0; |
| | | form.actualSettlementAmount = settlementTaskUser?.actualSettlementAmount ?? 0; |
| | | form.settlementAmount = settlementTaskUser?.settlementAmount ?? 0; |
| | | form.receiveAccount = settlementTaskUser?.receiveAccount ?? ''; |
| | | form.bank = settlementTaskUser?.bank ?? ''; |
| | | form.settlementAccess = res?.detail?.settlementAccess; |
| | | form.timeoutServiceFee = res?.detail?.timeoutServiceFee ?? 0; |
| | | form.timeoutHours = settlementTaskUser?.timeoutHours ?? ('' as any as number); |
| | | form.timeoutFee = settlementTaskUser?.timeoutFee ?? ('' as any as number); |
| | | form.otherFee = settlementTaskUser?.otherFee ?? ('' as any as number); |
| | | form.remark = settlementTaskUser?.remark ?? ''; |
| | | |
| | | // form.settlementOrderName = setOssFileName(res?.detail?.settlementOrderName); |
| | | // form.settlementOrderTime = res?.detail?.settlementOrderTime ?? ''; |
| | | } |
| | | }, |
| | | }); |
| | | |
| | | const form = reactive({ |
| | | settlementAmount: '' as any as number, |
| | | serviceFee: '' as any as number, |
| | | actualSettlementAmount: '' as any as number, |
| | | receiveAccount: '', |
| | | bank: '', |
| | | settlementAccess: EnumEnterpriseWalletAccess.PingAnPay, |
| | | timeoutServiceFee: 0, |
| | | timeoutHours: '' as any as number, |
| | | timeoutFee: '' as any as number, |
| | | otherFee: '' as any as number, |
| | | remark: '', |
| | | }); |
| | | |
| | | 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; |
| | | } |
| | | |
| | | const rules = reactive<FormRules>({ |
| | | code: [ |
| | | { required: true, message: '请输入银行卡号' }, |
| | | { message: '请输入正确的银行卡号', validator: FormValidator.validatorBankCard }, |
| | | ], |
| | | bank: [{ required: true, message: '请输入开户行' }], |
| | | phoneNumber: [ |
| | | { required: true, message: '请填写手机号码' }, |
| | | { message: '请输入正确的手机号码', validator: FormValidator.validatorPhoneNumber }, |
| | | ], |
| | | verifyCode: [{ required: true, message: '请输入验证码' }], |
| | | }); |
| | | |
| | | function onTimeoutHoursChange(event: any) { |
| | | form.timeoutFee = Number(form.timeoutServiceFee) |
| | | ? form.timeoutServiceFee * event.detail.value |
| | | : 0; |
| | | onActualSettlementAmountChange(); |
| | | } |
| | | |
| | | function onActualSettlementAmountChange() { |
| | | //暂时注掉 |
| | | // form.actualSettlementAmount = sumSettlementAmount(); |
| | | } |
| | | |
| | | const formRef = ref<any>(null); |
| | | function handleConfirm() { |
| | | if (!formRef.value) return; |
| | | formRef.value.validate().then(({ valid, errors }: any) => { |
| | | if (valid) { |
| | | confirm(); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | const eventChannel = useEventChannel(); |
| | | |
| | | async function confirm() { |
| | | let params: API.EditTaskSettlementOrderRosterCommand = { |
| | | id: orderRosterId, |
| | | settlementAmount: settlementAmount.value, |
| | | actualSettlementAmount: settlementAmount.value, |
| | | receiveAccount: form.receiveAccount, |
| | | bank: form.bank, |
| | | // totalWorkHours: editForm.totalWorkHours, |
| | | // bankBranch: editForm.bankBranch, |
| | | serviceFee: Number(form.serviceFee), |
| | | timeoutHours: Number(form.timeoutHours), |
| | | timeoutFee: Number(form.timeoutFee), |
| | | otherFee: Number(form.otherFee), |
| | | remark: form.remark, |
| | | }; |
| | | // try { |
| | | // let params: API.EditTaskSettlementOrderRosterCommand = { |
| | | // id: orderRosterId, |
| | | // settlementAmount: settlementAmount.value, |
| | | // actualSettlementAmount: form.actualSettlementAmount, |
| | | // receiveAccount: form.receiveAccount, |
| | | // bank: form.bank, |
| | | // // totalWorkHours: editForm.totalWorkHours, |
| | | // // bankBranch: editForm.bankBranch, |
| | | // serviceFee: form.serviceFee, |
| | | // timeoutHours: form.timeoutHours, |
| | | // timeoutFee: form.timeoutFee, |
| | | // otherFee: form.otherFee, |
| | | // remark: form.remark, |
| | | // }; |
| | | // let res = await taskServices.editTaskSettlementOrderRoster(params); |
| | | // if (res) { |
| | | // Message.success('修改成功', { |
| | | // onClosed() { |
| | | // goBack(); |
| | | // }, |
| | | // }); |
| | | // eventChannel.emit('update'); |
| | | // } |
| | | // } catch (error) {} |
| | | eventChannel.emit('update', params); |
| | | goBack(); |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/styles/common.scss'; |
| | | |
| | | .settleChange-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; |
| | | } |
| | | } |
| | | </style> |
| New file |
| | |
| | | export default definePageConfig({ |
| | | disableScroll: true, |
| | | }); |
| New file |
| | |
| | | <template> |
| | | <PageLayout class="settleChange-page-wrapper" title="修改" has-border> |
| | | <InnerPage></InnerPage> |
| | | </PageLayout> |
| | | </template> |
| | | |
| | | <script setup lang="ts"> |
| | | import InnerPage from './InnerPage.vue'; |
| | | |
| | | defineOptions({ |
| | | name: 'settleChange', |
| | | }); |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/styles/common.scss'; |
| | | </style> |
| New file |
| | |
| | | <template> |
| | | <ProTabs |
| | | v-model="queryState.paymentStatus" |
| | | name="task-tab" |
| | | :showPaneContent="false" |
| | | class="task-tabs" |
| | | isTransparent |
| | | title-gutter="8" |
| | | title-scroll |
| | | > |
| | | <ProTabPane |
| | | :title="`待审核(${waitAuditCount})`" |
| | | :pane-key="GetSettlementTasksQueryPaymentStatus.WaitAudit" |
| | | ></ProTabPane> |
| | | <ProTabPane |
| | | :title="`已审核(${completedAuditCount})`" |
| | | :pane-key="GetSettlementTasksQueryPaymentStatus.CompletedAudit" |
| | | ></ProTabPane> |
| | | <ProTabPane |
| | | :title="`已发放(${completedReleaseCount})`" |
| | | :pane-key="GetSettlementTasksQueryPaymentStatus.CompletedRelease" |
| | | ></ProTabPane> |
| | | </ProTabs> |
| | | <InfiniteLoading |
| | | scrollViewClassName="common-infinite-scroll-list settle-manage-list" |
| | | v-bind="infiniteLoadingProps" |
| | | :key="queryState.paymentStatus" |
| | | > |
| | | <template #renderItem="{ item }"> |
| | | <IncomeDetailListItem |
| | | :title="item.code" |
| | | :funds="item.settlementAmount" |
| | | :item="item.settlementTime ? dayjs(item.settlementTime).format('YYYY-MM-DD HH:mm:ss') : ''" |
| | | @click="openPassword(item)" |
| | | > |
| | | </IncomeDetailListItem> |
| | | </template> |
| | | </InfiniteLoading> |
| | | <nut-short-password |
| | | v-model="form.password" |
| | | v-model:visible="form.passwordVisible" |
| | | @focus="form.showKeyboard = true" |
| | | @close="form.showKeyboard = false" |
| | | tips="请输入6位操作密码" |
| | | desc="明细需输入操作密码才能查看" |
| | | :length="6" |
| | | @complete="complete" |
| | | > |
| | | </nut-short-password> |
| | | <nut-number-keyboard |
| | | v-model="form.password" |
| | | v-model:visible="form.showKeyboard" |
| | | @blur="form.showKeyboard = false" |
| | | :custom-key="['']" |
| | | > |
| | | </nut-number-keyboard> |
| | | </template> |
| | | |
| | | <script setup lang="ts"> |
| | | import { ProTabs, ProTabPane, IncomeDetailListItem } from '@12333/components'; |
| | | import Taro from '@tarojs/taro'; |
| | | import dayjs from 'dayjs'; |
| | | import { GetSettlementTasksQueryPaymentStatus, EnumPagedListOrder } from '@12333/constants'; |
| | | import * as taskServices from '@12333/services/apiV2/task'; |
| | | import * as userServices from '@12333/services/apiV2/user'; |
| | | import { useInfiniteLoading } from '@12333/hooks'; |
| | | |
| | | defineOptions({ |
| | | name: 'InnerPage', |
| | | }); |
| | | |
| | | const form = reactive({ |
| | | password: '', |
| | | passwordVisible: false, |
| | | showKeyboard: false, |
| | | id: '', |
| | | }); |
| | | |
| | | const queryState = reactive({ |
| | | paymentStatus: GetSettlementTasksQueryPaymentStatus.WaitAudit, |
| | | }); |
| | | |
| | | const { infiniteLoadingProps, invalidateQueries } = useInfiniteLoading( |
| | | ({ pageParam }) => { |
| | | let params: API.GetSettlementTasksQuery = { |
| | | pageModel: { |
| | | rows: 20, |
| | | page: pageParam, |
| | | orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }], |
| | | }, |
| | | paymentStatus: queryState.paymentStatus, |
| | | }; |
| | | return taskServices.getSettlementTasks(params, { |
| | | showLoading: false, |
| | | }); |
| | | }, |
| | | { |
| | | queryKey: ['taskServices/getSettlementTasks', queryState], |
| | | } |
| | | ); |
| | | |
| | | const completedAuditCount = computed(() => { |
| | | return infiniteLoadingProps.value?.listData?.pages?.[0]?.objectData?.completedAuditCount ?? 0; |
| | | }); |
| | | const waitAuditCount = computed(() => { |
| | | return infiniteLoadingProps.value?.listData?.pages?.[0]?.objectData?.waitAuditCount ?? 0; |
| | | }); |
| | | const completedReleaseCount = computed(() => { |
| | | return infiniteLoadingProps.value?.listData?.pages?.[0]?.objectData?.completedReleaseCount ?? 0; |
| | | }); |
| | | |
| | | function openPassword(item: API.GetSettlementTasksQueryResultItem) { |
| | | form.passwordVisible = true; |
| | | form.showKeyboard = true; |
| | | form.id = item.id; |
| | | } |
| | | |
| | | function complete(value: string) { |
| | | form.passwordVisible = false; |
| | | buildOperatorToken(value); |
| | | } |
| | | |
| | | async function buildOperatorToken(value: string) { |
| | | try { |
| | | let params: API.BuildOperatorTokenCommand = { |
| | | password: value, |
| | | }; |
| | | let res = await userServices.buildOperatorToken(params); |
| | | if (res) { |
| | | goSettleManageDetail(form.id, res.operatorToken); |
| | | } |
| | | } catch (error) { |
| | | form.showKeyboard = false; |
| | | } finally { |
| | | form.password = ''; |
| | | form.showKeyboard = false; |
| | | } |
| | | } |
| | | |
| | | async function goSettleManageDetail(id: string, operatorToken: string) { |
| | | Taro.navigateTo({ |
| | | url: `${RouterPath.settleManageDetail}?id=${id}&operatorToken=${operatorToken}`, |
| | | }); |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/styles/common.scss'; |
| | | |
| | | .settleManage-page-wrapper { |
| | | .settle-manage-list { |
| | | .income-detail-list-item-inner { |
| | | display: flex; |
| | | flex-direction: column; |
| | | background: #ffffff; |
| | | border-radius: 12px; |
| | | padding: 40px; |
| | | margin-bottom: 24px; |
| | | } |
| | | } |
| | | } |
| | | </style> |
| New file |
| | |
| | | export default definePageConfig({ |
| | | disableScroll: true, |
| | | }); |
| New file |
| | |
| | | <template> |
| | | <PageLayoutWithBg class="settleManage-page-wrapper" title="结算管理"> |
| | | <InnerPage /> |
| | | </PageLayoutWithBg> |
| | | </template> |
| | | |
| | | <script setup lang="ts"> |
| | | import InnerPage from './InnerPage.vue'; |
| | | |
| | | defineOptions({ |
| | | name: 'settleManage', |
| | | }); |
| | | </script> |
| New file |
| | |
| | | <template> |
| | | <LoadingLayout> |
| | | <ContentView> |
| | | <div class="settle-manage-detail-top"> |
| | | <div class="settle-manage-detail-top-title">任务信息</div> |
| | | <div class="settle-manage-detail-top-content"> |
| | | <div class="settle-manage-detail-top-content-item"> |
| | | <div class="settle-manage-detail-top-content-item-label">任务名称:</div> |
| | | <div class="settle-manage-detail-top-content-item-text">{{ form.name }}</div> |
| | | </div> |
| | | <div class="settle-manage-detail-top-content-item"> |
| | | <div class="settle-manage-detail-top-content-item-label">服务费金额:</div> |
| | | <div class="settle-manage-detail-top-content-item-text"> |
| | | {{ OrderUtils.getServiceFeeText(form.serviceFee, form.billingMethod) }} |
| | | </div> |
| | | </div> |
| | | <div class="settle-manage-detail-top-content-item"> |
| | | <div class="settle-manage-detail-top-content-item-label">结算人数:</div> |
| | | <div class="settle-manage-detail-top-content-item-text"> |
| | | {{ `${form.settlementCount ?? 0}人` }} |
| | | </div> |
| | | </div> |
| | | <div class="settle-manage-detail-top-content-item"> |
| | | <div class="settle-manage-detail-top-content-item-label">结算金额:</div> |
| | | <div class="settle-manage-detail-top-content-item-text"> |
| | | {{ `${toThousand(form.settlementAmount ?? 0)}元` }} |
| | | </div> |
| | | </div> |
| | | <div |
| | | class="settle-manage-detail-top-content-item" |
| | | v-if="form.auditStatus !== EnumTaskSettlementAuditStatus.Wait" |
| | | > |
| | | <div class="settle-manage-detail-top-content-item-label">审核时间:</div> |
| | | <div class="settle-manage-detail-top-content-item-text"> |
| | | {{ form.auditTime ? dayjs(form.auditTime).format('YYYY-MM-DD') : '' }} |
| | | </div> |
| | | </div> |
| | | <div |
| | | class="settle-manage-detail-top-content-item" |
| | | v-if="form.settlementStatus === EnumTaskSettlementStatus.Completed" |
| | | > |
| | | <div class="settle-manage-detail-top-content-item-label">结算时间:</div> |
| | | <div class="settle-manage-detail-top-content-item-text"> |
| | | {{ dayjs(form.settlementTime).format('YYYY-MM-DD') }} |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <ChunkTitle title="人员列表" /> |
| | | </ContentView> |
| | | <InfiniteLoading |
| | | scrollViewClassName="common-infinite-scroll-list" |
| | | v-bind="infiniteLoadingProps" |
| | | > |
| | | <template #renderItem="{ item }"> |
| | | <PayrollManageDetailCard |
| | | :avatar="setOSSLink(item.avatar)" |
| | | :name="item.name" |
| | | :gender="item.gender" |
| | | :isReal="item.isReal" |
| | | :totalWorkHours="item.timeoutHours" |
| | | :settlementAmount="item.settlementAmount" |
| | | > |
| | | <template #actions v-if="form.auditStatus === EnumTaskSettlementAuditStatus.Wait"> |
| | | <div class="settle-manage-detail-card-actions"> |
| | | <nut-button type="primary" plain @click="goSettleChange(item)">修改</nut-button> |
| | | </div> |
| | | </template> |
| | | </PayrollManageDetailCard> |
| | | </template> |
| | | </InfiniteLoading> |
| | | <PageFooter v-if="form.auditStatus === EnumTaskSettlementAuditStatus.Wait"> |
| | | <!-- <PageFooterBtn type="primary" @click="auditTaskSettlement(EnumTaskSettlementAuditStatus.Pass)" |
| | | >审核通过</PageFooterBtn |
| | | > |
| | | <PageFooterBtn |
| | | type="primary" |
| | | plain |
| | | @click="auditTaskSettlement(EnumTaskSettlementAuditStatus.Fail)" |
| | | >驳回</PageFooterBtn |
| | | > --> |
| | | <PageFooterBtn type="primary" @click="auditTaskSettlement(EnumTaskSettlementAuditStatus.Pass)" |
| | | >确认</PageFooterBtn |
| | | > |
| | | <PageFooterBtn type="primary" plain @click="goBack">取消</PageFooterBtn> |
| | | </PageFooter> |
| | | </LoadingLayout> |
| | | </template> |
| | | |
| | | <script setup lang="ts"> |
| | | import Taro from '@tarojs/taro'; |
| | | import * as taskUserServices from '@12333/services/apiV2/taskUser'; |
| | | import * as taskServices from '@12333/services/apiV2/task'; |
| | | import { useInfiniteLoading } from '@12333/hooks'; |
| | | import { |
| | | EnumBillingMethodText, |
| | | EnumTaskSettlementAuditStatus, |
| | | EnumTaskSettlementStatus, |
| | | BillingMethodEnumUnit, |
| | | } from '@12333/constants'; |
| | | import { Message, paginateList, setOSSLink, toThousand, OrderUtils } from '@12333/utils'; |
| | | import { useQuery } from '@tanstack/vue-query'; |
| | | import dayjs from 'dayjs'; |
| | | import { goBack } from '@/utils'; |
| | | import { ChunkTitle, PayrollManageDetailCard } from '@12333/components'; |
| | | |
| | | defineOptions({ |
| | | name: 'InnerPage', |
| | | }); |
| | | |
| | | const router = Taro.useRouter(); |
| | | const id = router.params?.id ?? ''; |
| | | const operatorToken = router.params?.operatorToken ?? ''; |
| | | |
| | | const form = reactive({ |
| | | name: '', |
| | | serviceFee: 0, |
| | | settlementCount: 0, |
| | | settlementAmount: 0, |
| | | settlementTime: '', |
| | | auditTime: '', |
| | | auditStatus: 0, |
| | | billingMethod: 0, |
| | | settlementStatus: 0, |
| | | |
| | | settlementTaskUsers: [] as API.GetSettlementTaskUsersQueryResultItem[], |
| | | }); |
| | | |
| | | const state = reactive({ |
| | | isLoaded: false, |
| | | }); |
| | | |
| | | const { |
| | | isLoading, |
| | | isError, |
| | | data: detail, |
| | | refetch, |
| | | } = useQuery({ |
| | | queryKey: ['taskUserServices/getSettlementTaskUsers', id, operatorToken], |
| | | queryFn: async () => { |
| | | let res = await taskUserServices.getSettlementTaskUsers( |
| | | { id: id, operatorToken: operatorToken }, |
| | | { |
| | | showLoading: false, |
| | | } |
| | | ); |
| | | if (res) { |
| | | form.name = res.detail?.name; |
| | | form.serviceFee = res.detail?.serviceFee; |
| | | form.settlementCount = res.data?.length; |
| | | form.settlementAmount = res.detail?.settlementAmount; |
| | | form.settlementTime = res.detail?.settlementTime; |
| | | form.auditTime = res.detail?.auditTime; |
| | | form.auditStatus = res.detail?.auditStatus; |
| | | form.settlementStatus = res.detail?.settlementStatus; |
| | | form.billingMethod = res.detail?.billingMethod; |
| | | } |
| | | return res; |
| | | }, |
| | | placeholderData: () => ({} as API.GetSettlementTaskUsersQueryResult), |
| | | onSuccess(res) { |
| | | if (!state.isLoaded) { |
| | | form.settlementTaskUsers = res?.data ?? []; |
| | | state.isLoaded = true; |
| | | } |
| | | }, |
| | | }); |
| | | |
| | | const { infiniteLoadingProps, invalidateQueries } = useInfiniteLoading( |
| | | ({ pageParam }) => { |
| | | let params: API.GetCheckReceiveTaskQuery = { |
| | | pageModel: { |
| | | rows: 20, |
| | | page: pageParam, |
| | | }, |
| | | }; |
| | | |
| | | return Promise.resolve({ |
| | | pageModel: { |
| | | rows: 20, |
| | | page: pageParam, |
| | | totalCount: form.settlementTaskUsers.length, |
| | | }, |
| | | data: paginateList(form.settlementTaskUsers, pageParam, 20), |
| | | }); |
| | | }, |
| | | { |
| | | enabled: computed(() => form.settlementTaskUsers?.length > 0), |
| | | } |
| | | ); |
| | | |
| | | async function auditTaskSettlement(auditStatus: EnumTaskSettlementAuditStatus) { |
| | | try { |
| | | let params: API.AuditTaskSettlementCommand = { |
| | | id: id, |
| | | operatorToken: operatorToken, |
| | | auditStatus: auditStatus, |
| | | rosters: form.settlementTaskUsers.map((item) => ({ |
| | | id: item.id, |
| | | serviceFee: item.serviceFee, |
| | | timeoutHours: item.timeoutHours, |
| | | timeoutFee: item.timeoutFee, |
| | | otherFee: item.otherFee, |
| | | remark: item.remark, |
| | | settlementAmount: item.settlementAmount, |
| | | })), |
| | | }; |
| | | // if(auditStatus===EnumTaskSettlementAuditStatus.Pass){ |
| | | // params.rosters |
| | | // } |
| | | let res = await taskServices.auditTaskSettlement(params); |
| | | if (res) { |
| | | Message.success('操作成功', { |
| | | onClosed() { |
| | | goBack(); |
| | | }, |
| | | }); |
| | | } |
| | | } catch (error) {} |
| | | } |
| | | |
| | | function goSettleChange(item: API.GetSettlementTaskUsersQueryResultItem) { |
| | | Taro.navigateTo({ |
| | | url: `${RouterPath.settleChange}?orderRosterId=${item.id}&settleId=${id}&operatorToken=${operatorToken}`, |
| | | events: { |
| | | update: function (params: API.EditTaskSettlementOrderRosterCommand) { |
| | | // refetch(); |
| | | form.settlementTaskUsers = form.settlementTaskUsers.map((item) => { |
| | | if (item.id == params.id) { |
| | | item.settlementAmount = params.settlementAmount; |
| | | item.actualSettlementAmount = params.actualSettlementAmount; |
| | | item.receiveAccount = params.receiveAccount; |
| | | item.bank = params.bank; |
| | | item.serviceFee = params.serviceFee; |
| | | item.timeoutHours = params.timeoutHours; |
| | | item.timeoutFee = params.timeoutFee; |
| | | item.otherFee = params.otherFee; |
| | | item.remark = params.remark; |
| | | return item; |
| | | } |
| | | return item; |
| | | }); |
| | | }, |
| | | }, |
| | | }); |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/styles/common.scss'; |
| | | |
| | | .settleManageDetail-page-wrapper { |
| | | .settle-manage-detail-top { |
| | | padding: 24px 32px; |
| | | margin-bottom: 24px; |
| | | background-color: #fff; |
| | | border-radius: 12px; |
| | | |
| | | .settle-manage-detail-top-title { |
| | | font-size: 32px; |
| | | font-weight: bold; |
| | | margin-bottom: 14px; |
| | | } |
| | | |
| | | .settle-manage-detail-top-content { |
| | | .settle-manage-detail-top-content-item { |
| | | font-size: 24px; |
| | | line-height: 40px; |
| | | |
| | | .settle-manage-detail-top-content-item-label { |
| | | display: inline-flex; |
| | | color: boleGetCssVar('text-color', 'primary'); |
| | | } |
| | | |
| | | .settle-manage-detail-top-content-item-text { |
| | | display: inline-flex; |
| | | color: boleGetCssVar('text-color', 'regular'); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | .settle-manage-detail-card-actions { |
| | | --nut-button-default-height: 24px; |
| | | |
| | | text-align: right; |
| | | } |
| | | } |
| | | </style> |
| New file |
| | |
| | | export default definePageConfig({ |
| | | disableScroll: true, |
| | | }); |
| New file |
| | |
| | | <template> |
| | | <PageLayoutWithBg class="settleManageDetail-page-wrapper" title="结算详情"> |
| | | <InnerPage /> |
| | | </PageLayoutWithBg> |
| | | </template> |
| | | |
| | | <script setup lang="ts"> |
| | | import InnerPage from './InnerPage.vue'; |
| | | |
| | | defineOptions({ |
| | | name: 'settleManageDetail', |
| | | }); |
| | | </script> |
| | |
| | | <template> |
| | | <div class="task-check-card-wrapper" @click.stop="emit('checkReceive')"> |
| | | <div class="task-check-card-wrapper"> |
| | | <TaskCheckPersonalView |
| | | class="task-check-card-view" |
| | | :avatar="avatar" |
| | |
| | | :contactPhoneNumber="contactPhoneNumber" |
| | | > |
| | | <template #actions> |
| | | <div |
| | | class="task-check-card-phone-status" |
| | | :style="{ color: EnumTaskCheckReceiveStatusColor[checkReceiveStatus] }" |
| | | <template |
| | | v-if=" |
| | | (checkReceiveStatus === EnumTaskCheckReceiveStatus.WaitCheckReceive || |
| | | checkReceiveStatus === EnumTaskCheckReceiveStatus.WaitSubmit) && |
| | | isInternal |
| | | " |
| | | > |
| | | {{ EnumTaskCheckReceiveStatusText[checkReceiveStatus] }} |
| | | </div> |
| | | <template v-if="OrderUtils.isContainCheckIn(checkReceiveMethods)"> |
| | | <nut-button |
| | | v-if=" |
| | | !checkHistoryType || checkHistoryType === EnumTaskUserSubmitCheckHistoryType.CheckIn |
| | | " |
| | | type="primary" |
| | | class="task-check-card-phone-btn" |
| | | @click.stop="handleMore" |
| | | >操作</nut-button |
| | | > |
| | | <nut-button |
| | | v-else |
| | | type="primary" |
| | | class="task-check-card-phone-btn" |
| | | @click.stop="emit('checkReceive')" |
| | | >验收</nut-button |
| | | > |
| | | </template> |
| | | <nut-button |
| | | v-else |
| | | type="primary" |
| | | class="task-check-card-phone-btn" |
| | | @click.stop="emit('checkReceive')" |
| | | >验收</nut-button |
| | | > |
| | | </template> |
| | | <template v-else> |
| | | <div |
| | | class="task-check-card-phone-status" |
| | | :style="{ color: EnumTaskCheckReceiveStatusColor[checkReceiveStatus] }" |
| | | > |
| | | {{ EnumTaskCheckReceiveStatusText[checkReceiveStatus] }} |
| | | </div> |
| | | </template> |
| | | </template> |
| | | </TaskCheckPersonalView> |
| | | </div> |
| | |
| | | EnumTaskCheckReceiveMethod, |
| | | EnumGetCheckReceiveTasksQueryResultItemCheckStatus, |
| | | EnumTaskUserSubmitCheckReceiveStatus, |
| | | EnumTaskUserSubmitCheckHistoryType, |
| | | EnumTaskCheckReceiveStatusColor, |
| | | } from '@12333/constants'; |
| | | import { TaskCheckPersonalView } from '@12333/components'; |
| | |
| | | checkReceiveMethods?: EnumTaskCheckReceiveMethod[]; |
| | | |
| | | submitCheckReceiveStatus?: EnumTaskUserSubmitCheckReceiveStatus; |
| | | |
| | | checkHistoryType?: EnumTaskUserSubmitCheckHistoryType; |
| | | |
| | | isInternal?: boolean; |
| | | }; |
| | | |
| | | const props = withDefaults(defineProps<Props>(), {}); |
| | | |
| | | const emit = defineEmits<{ |
| | | (e: 'checkReceive'): void; |
| | | (e: 'checkInOrOut', ev: EnumTaskUserSubmitCheckReceiveStatus): void; |
| | | (e: 'checkInOrOut', ev: EnumTaskUserSubmitCheckHistoryType): void; |
| | | }>(); |
| | | |
| | | const menuList = computed(() => { |
| | | let _menuList = []; |
| | | // if (props.checkReceiveMethod === EnumTaskCheckReceiveMethod.CheckIn) { |
| | | _menuList.push({ |
| | | name: '未到岗', |
| | | value: ManageActions.OutWork, |
| | | }); |
| | | if (!props.checkInTime) { |
| | | if (OrderUtils.isContainCheckIn(props.checkReceiveMethods)) { |
| | | if (!props.checkInTime) { |
| | | _menuList.push({ |
| | | name: '签到', |
| | | value: ManageActions.CheckIn, |
| | | }); |
| | | } else if (!props.checkOutTime) { |
| | | _menuList.push({ |
| | | name: '签出', |
| | | value: ManageActions.CheckOut, |
| | | }); |
| | | } |
| | | _menuList.push({ |
| | | name: '签到', |
| | | value: ManageActions.CheckIn, |
| | | }); |
| | | } else if (!props.checkOutTime) { |
| | | _menuList.push({ |
| | | name: '签出', |
| | | value: ManageActions.CheckOut, |
| | | name: '未到岗', |
| | | value: ManageActions.OutWork, |
| | | }); |
| | | } |
| | | // } |
| | | |
| | | return _menuList; |
| | | }); |
| | |
| | | function handleEmit(action: { name: string; value: number }) { |
| | | switch (action.value) { |
| | | case ManageActions.CheckIn: |
| | | emit('checkInOrOut', EnumTaskUserSubmitCheckReceiveStatus.WaitCheckReceive); |
| | | emit('checkInOrOut', EnumTaskUserSubmitCheckHistoryType.CheckIn); |
| | | break; |
| | | case ManageActions.CheckOut: |
| | | emit('checkInOrOut', EnumTaskUserSubmitCheckReceiveStatus.Success); |
| | | emit('checkInOrOut', EnumTaskUserSubmitCheckHistoryType.CheckOut); |
| | | break; |
| | | case ManageActions.OutWork: |
| | | emit('checkInOrOut', EnumTaskUserSubmitCheckReceiveStatus.Fail); |
| | | emit('checkInOrOut', EnumTaskUserSubmitCheckHistoryType.UnCheckIn); |
| | | break; |
| | | } |
| | | } |
| | |
| | | <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" |
| | | :checkHistoryType="item.checkHistoryType" |
| | | :isInternal="detail?.isInternal" |
| | | @checkReceive="goTaskDetail(item)" |
| | | @checkInOrOut="(ev) => checkReceiveTask(ev, item)" |
| | | /> |
| | | </template> |
| | | </InfiniteLoading> |
| | |
| | | import { |
| | | EnumTaskCheckReceiveMethod, |
| | | EnumTaskCheckReceiveStatus, |
| | | EnumTaskUserSubmitCheckHistoryType, |
| | | EnumTaskUserSubmitCheckReceiveStatus, |
| | | } from '@12333/constants'; |
| | | import { Message, setOSSLink, toRound } from '@12333/utils'; |
| | |
| | | const date = router.params?.date ?? ''; |
| | | const checkReceiveStatus = Number(router.params?.checkReceiveStatus); |
| | | |
| | | const detail = ref<API.GetCheckReceiveTasksQueryResultItem>(); |
| | | const detail = ref<API.GetCheckReceiveTaskQueryResultObjectData>(); |
| | | |
| | | const { infiniteLoadingProps } = useInfiniteLoading( |
| | | async ({ pageParam }) => { |
| | |
| | | queryKey: ['taskCheckReceiveServices/getCheckReceiveTask'], |
| | | } |
| | | ); |
| | | |
| | | function goTaskDetail(item: API.GetCheckReceiveTaskQueryResultItem) { |
| | | Taro.navigateTo({ |
| | | url: `${RouterPath.taskHandleCheckDetail}?id=${item.id}&date=${date}&taskInfoId=${id}`, |
| | | }); |
| | | } |
| | | |
| | | async function checkReceiveTask( |
| | | ev: EnumTaskUserSubmitCheckHistoryType, |
| | | item: API.GetCheckReceiveTaskQueryResultItem |
| | | ) { |
| | | try { |
| | | let params: API.CheckReceiveTaskCommand = { |
| | | taskInfoUserId: item.id, |
| | | date: dayjs(date).format('YYYY-MM-DD'), |
| | | checkHistoryType: ev, |
| | | }; |
| | | let res = await taskCheckReceiveServices.checkReceiveTask(params); |
| | | if (res) { |
| | | Message.success('提交成功'); |
| | | infiniteLoadingProps.value?.refetch?.(); |
| | | } |
| | | } catch (error) {} |
| | | } |
| | | </script> |
| | | <style lang="scss"> |
| | | @import '@/styles/common.scss'; |
| File was renamed from apps/bMiniApp/src/subpackages/payrollManage/components/PayrollManageDetailCard.vue |
| | |
| | | </template> |
| | | |
| | | <script setup lang="ts"> |
| | | import { FlexJobTopView } from '@12333/components'; |
| | | import FlexJobTopView from './FlexJobTopView.vue'; |
| | | import { EnumUserGender } from '@12333/constants'; |
| | | import { toThousand } from '@12333/utils'; |
| | | |
| | |
| | | export { default as TaskCheckPersonalView } from './Card/TaskCheckPersonalView.vue'; |
| | | export { default as TaskCheckHistoryCard } from './Card/TaskCheckHistoryCard.vue'; |
| | | export { default as FlexJobTopView } from './Card/FlexJobTopView.vue'; |
| | | export { default as PayrollManageDetailCard } from './Card/PayrollManageDetailCard.vue'; |
| | | export { default as QueryMenuView } from './Menu/QueryMenuView.vue'; |
| | | export { default as QueryMenuItem } from './Menu/QueryMenuItem.vue'; |
| | | export { default as ProRadio } from './Form/ProRadio.vue'; |
| | |
| | | ElectronSign = 20, |
| | | } |
| | | |
| | | /** 灵工来源 */ |
| | | export enum EnumEnterpriseEmployeeSource { |
| | | /**内部 */ |
| | | Internal = 10, |
| | | /**外部 */ |
| | | External = 20, |
| | | } |
| | | |
| | | /** 企业实名方式 */ |
| | | export enum EnumEnterpriseRealMethod { |
| | | /**企业三要素 */ |
| | |
| | | CommonServerCodeUrls = 4, |
| | | /**文件 */ |
| | | CommonServerFileUtils = 5, |
| | | /**事件 */ |
| | | CommonServerEventUtils = 6, |
| | | /**文字识别 */ |
| | | CommonServerOcrUtils = 6, |
| | | CommonServerOcrUtils = 7, |
| | | /**日志记录 */ |
| | | CommonServerLogRecords = 7, |
| | | CommonServerLogRecords = 8, |
| | | /**同步数据库 */ |
| | | CommonServerSyncDatabase = 8, |
| | | CommonServerSyncDatabase = 9, |
| | | /**短信工具 */ |
| | | CommonServerSmsUtils = 9, |
| | | CommonServerSmsUtils = 10, |
| | | /**配置 */ |
| | | CommonServerSettings = 10, |
| | | CommonServerSettings = 11, |
| | | /**用户认证 */ |
| | | UserServerAuth = 11, |
| | | UserServerAuth = 12, |
| | | /**用户菜单 */ |
| | | UserServerMenu = 12, |
| | | UserServerMenu = 13, |
| | | /**用户资源 */ |
| | | UserServerResource = 13, |
| | | UserServerResource = 14, |
| | | /**用户角色 */ |
| | | UserServerRole = 14, |
| | | UserServerRole = 15, |
| | | /**用户信息 */ |
| | | UserServerUser = 15, |
| | | UserServerUser = 16, |
| | | /**用户钱包 */ |
| | | UserServerUserWallet = 16, |
| | | UserServerUserWallet = 17, |
| | | /**电子签 */ |
| | | UserServerElectronSign = 17, |
| | | UserServerElectronSign = 18, |
| | | /**用户简历 */ |
| | | UserServerUserResume = 18, |
| | | UserServerUserResume = 19, |
| | | /**企业信息 */ |
| | | UserServerEnterprise = 19, |
| | | UserServerEnterprise = 20, |
| | | /**企业钱包 */ |
| | | UserServerEnterpriseWallet = 20, |
| | | UserServerEnterpriseWallet = 21, |
| | | /**企业合作钱包 */ |
| | | UserServerEnterpriseCooperationWallet = 21, |
| | | UserServerEnterpriseCooperationWallet = 22, |
| | | /**灵工信息 */ |
| | | UserServerEnterpriseEmployee = 22, |
| | | UserServerEnterpriseEmployee = 23, |
| | | /**电子签 */ |
| | | ElectronSignServerElectronSign = 23, |
| | | ElectronSignServerElectronSign = 24, |
| | | /**电子签 */ |
| | | ToolServerSms = 24, |
| | | ToolServerSms = 25, |
| | | } |
| | | |
| | | /** 资源请求方式 */ |
| | |
| | | // @ts-ignore |
| | | import { request } from '@/utils/request'; |
| | | |
| | | /** 添加灵工信息 POST /api/user/enterpriseEmployee/addEnterpriseEmployee */ |
| | | export async function addEnterpriseEmployee( |
| | | body: API.AddEnterpriseEmployeeCommand, |
| | | options?: API.RequestConfig |
| | | ) { |
| | | return request<string>('/api/user/enterpriseEmployee/addEnterpriseEmployee', { |
| | | method: 'POST', |
| | | headers: { |
| | | 'Content-Type': 'application/json-patch+json', |
| | | }, |
| | | data: body, |
| | | ...(options || {}), |
| | | }); |
| | | } |
| | | |
| | | /** 企业批量签约合同 POST /api/user/enterpriseEmployee/batchEnterpriseSignContract */ |
| | | export async function batchEnterpriseSignContract( |
| | | body: API.BatchEnterpriseSignContractCommand, |
| | |
| | | ); |
| | | } |
| | | |
| | | /** 修复1.3.0.2版本灵工数据 POST /api/user/enterpriseEmployee/repairEnterpriseEmployee_1_3_0_2 */ |
| | | export async function repairEnterpriseEmployee1302( |
| | | body: API.RepairEnterpriseEmployee1302Command, |
| | | options?: API.RequestConfig |
| | | ) { |
| | | return request<boolean>('/api/user/enterpriseEmployee/repairEnterpriseEmployee_1_3_0_2', { |
| | | method: 'POST', |
| | | headers: { |
| | | 'Content-Type': 'application/json-patch+json', |
| | | }, |
| | | data: body, |
| | | ...(options || {}), |
| | | }); |
| | | } |
| | | |
| | | /** 发送邀请签约短信 POST /api/user/enterpriseEmployee/sendInviteElectronSignSms */ |
| | | export async function sendInviteElectronSignSms( |
| | | body: API.SendInviteElectronSignSmsCommand, |
| New file |
| | |
| | | /* eslint-disable */ |
| | | // @ts-ignore |
| | | import { request } from '@/utils/request'; |
| | | |
| | | /** 测试事件 POST /api/common/eventUtils/testEvent */ |
| | | export async function testEvent(body: API.TestEventCommand, options?: API.RequestConfig) { |
| | | return request<boolean>('/api/common/eventUtils/testEvent', { |
| | | method: 'POST', |
| | | headers: { |
| | | 'Content-Type': 'application/json-patch+json', |
| | | }, |
| | | data: body, |
| | | ...(options || {}), |
| | | }); |
| | | } |
| | |
| | | import * as task from './task'; |
| | | import * as enterpriseWallet from './enterpriseWallet'; |
| | | import * as ocrUtils from './ocrUtils'; |
| | | import * as electronSign from './electronSign'; |
| | | import * as resource from './resource'; |
| | | import * as enterpriseCooperationWallet from './enterpriseCooperationWallet'; |
| | | import * as logRecords from './logRecords'; |
| | | import * as dictionary from './dictionary'; |
| | | import * as taskCheckReceive from './taskCheckReceive'; |
| | | import * as electronSign from './electronSign'; |
| | | import * as userResume from './userResume'; |
| | | import * as auth from './auth'; |
| | | import * as taskUser from './taskUser'; |
| | | import * as eventUtils from './eventUtils'; |
| | | import * as enterpriseCooperationWallet from './enterpriseCooperationWallet'; |
| | | import * as codeUrl from './codeUrl'; |
| | | import * as syncDatabase from './syncDatabase'; |
| | | import * as menu from './menu'; |
| | |
| | | task, |
| | | enterpriseWallet, |
| | | ocrUtils, |
| | | electronSign, |
| | | resource, |
| | | enterpriseCooperationWallet, |
| | | logRecords, |
| | | dictionary, |
| | | taskCheckReceive, |
| | | electronSign, |
| | | userResume, |
| | | auth, |
| | | taskUser, |
| | | eventUtils, |
| | | enterpriseCooperationWallet, |
| | | codeUrl, |
| | | syncDatabase, |
| | | menu, |
| | |
| | | [key: string]: any; |
| | | } |
| | | |
| | | interface AddEnterpriseEmployeeCommand { |
| | | /** 姓名 */ |
| | | name: string; |
| | | /** 身份证号 */ |
| | | identity: string; |
| | | /** 手机号 */ |
| | | contactPhoneNumber: string; |
| | | gender?: EnumUserGender; |
| | | /** 年龄 */ |
| | | age?: number; |
| | | /** 身份证人像面 */ |
| | | identityImg?: string; |
| | | /** 身份证国徽面 */ |
| | | identityBackImg?: string; |
| | | /** 电子合同 */ |
| | | contractUrl?: string; |
| | | /** 协议起始时间 */ |
| | | contractBegin?: string; |
| | | /** 协议终止时间 */ |
| | | contractEnd?: string; |
| | | } |
| | | |
| | | interface AgainSureTaskSettlementOrderRosterCommand { |
| | | /** 名单Id */ |
| | | id?: string; |
| | |
| | | interface APIgetMenusParams { |
| | | /** 用户类型 */ |
| | | userType?: EnumUserType; |
| | | /** 企业类型 */ |
| | | enterpriseType?: EnumEnterpriseType; |
| | | /** 客户端类型 */ |
| | | clientType?: EnumClientType; |
| | | /** 角色Id */ |
| | |
| | | } |
| | | |
| | | interface EditEnterpriseEmployeeCommand { |
| | | /** Id */ |
| | | id?: string; |
| | | /** 姓名 */ |
| | | name: string; |
| | | /** 身份证号 */ |
| | |
| | | identityImg?: string; |
| | | /** 身份证国徽面 */ |
| | | identityBackImg?: string; |
| | | /** Id */ |
| | | id?: string; |
| | | /** 电子合同 */ |
| | | contractUrl?: string; |
| | | /** 协议起始时间 */ |
| | | contractBegin?: string; |
| | | /** 协议终止时间 */ |
| | | contractEnd?: string; |
| | | } |
| | | |
| | | interface EditTaskSettlementOrderRosterCommand { |
| | |
| | | SMS = 10, |
| | | /**电子签 */ |
| | | ElectronSign = 20, |
| | | } |
| | | |
| | | enum EnumEnterpriseEmployeeSource { |
| | | /**内部 */ |
| | | Internal = 10, |
| | | /**外部 */ |
| | | External = 20, |
| | | } |
| | | |
| | | enum EnumEnterpriseRealMethod { |
| | |
| | | CommonServerCodeUrls = 4, |
| | | /**文件 */ |
| | | CommonServerFileUtils = 5, |
| | | /**事件 */ |
| | | CommonServerEventUtils = 6, |
| | | /**文字识别 */ |
| | | CommonServerOcrUtils = 6, |
| | | CommonServerOcrUtils = 7, |
| | | /**日志记录 */ |
| | | CommonServerLogRecords = 7, |
| | | CommonServerLogRecords = 8, |
| | | /**同步数据库 */ |
| | | CommonServerSyncDatabase = 8, |
| | | CommonServerSyncDatabase = 9, |
| | | /**短信工具 */ |
| | | CommonServerSmsUtils = 9, |
| | | CommonServerSmsUtils = 10, |
| | | /**配置 */ |
| | | CommonServerSettings = 10, |
| | | CommonServerSettings = 11, |
| | | /**用户认证 */ |
| | | UserServerAuth = 11, |
| | | UserServerAuth = 12, |
| | | /**用户菜单 */ |
| | | UserServerMenu = 12, |
| | | UserServerMenu = 13, |
| | | /**用户资源 */ |
| | | UserServerResource = 13, |
| | | UserServerResource = 14, |
| | | /**用户角色 */ |
| | | UserServerRole = 14, |
| | | UserServerRole = 15, |
| | | /**用户信息 */ |
| | | UserServerUser = 15, |
| | | UserServerUser = 16, |
| | | /**用户钱包 */ |
| | | UserServerUserWallet = 16, |
| | | UserServerUserWallet = 17, |
| | | /**电子签 */ |
| | | UserServerElectronSign = 17, |
| | | UserServerElectronSign = 18, |
| | | /**用户简历 */ |
| | | UserServerUserResume = 18, |
| | | UserServerUserResume = 19, |
| | | /**企业信息 */ |
| | | UserServerEnterprise = 19, |
| | | UserServerEnterprise = 20, |
| | | /**企业钱包 */ |
| | | UserServerEnterpriseWallet = 20, |
| | | UserServerEnterpriseWallet = 21, |
| | | /**企业合作钱包 */ |
| | | UserServerEnterpriseCooperationWallet = 21, |
| | | UserServerEnterpriseCooperationWallet = 22, |
| | | /**灵工信息 */ |
| | | UserServerEnterpriseEmployee = 22, |
| | | UserServerEnterpriseEmployee = 23, |
| | | /**电子签 */ |
| | | ElectronSignServerElectronSign = 23, |
| | | ElectronSignServerElectronSign = 24, |
| | | /**电子签 */ |
| | | ToolServerSms = 24, |
| | | ToolServerSms = 25, |
| | | } |
| | | |
| | | enum EnumResourceMethod { |
| | |
| | | createdTimeEnd?: string; |
| | | } |
| | | |
| | | interface ExportPersonalUserTransactionEreceiptsCommand { |
| | | /** 关键字 */ |
| | | keywords?: string; |
| | | transactionStatus?: EnumWalletTransactionStatus; |
| | | /** 创建时间-起始 */ |
| | | createdTimeStart?: string; |
| | | /** 创建时间-截止 */ |
| | | createdTimeEnd?: string; |
| | | /** 用户Id */ |
| | | userId?: string; |
| | | /** 企业钱包Id */ |
| | | enterpriseWalletId?: string; |
| | | } |
| | | |
| | | interface ExportTaskCheckReceiveTaskUsersCommand { |
| | | /** 任务Id */ |
| | | id?: string; |
| | |
| | | /** 错误码 */ |
| | | errorCode?: string; |
| | | data?: EnterpriseUserElectronSignCommandResult; |
| | | /** 执行成功 */ |
| | | success?: boolean; |
| | | /** 错误信息 */ |
| | | msg?: any; |
| | | /** 附加数据 */ |
| | | extras?: any; |
| | | /** 时间戳 */ |
| | | timestamp?: number; |
| | | } |
| | | |
| | | interface FriendlyResultFileContentResult { |
| | | /** 跟踪Id */ |
| | | traceId?: string; |
| | | /** 状态码 */ |
| | | code?: number; |
| | | /** 错误码 */ |
| | | errorCode?: string; |
| | | /** 数据 */ |
| | | data?: string; |
| | | /** 执行成功 */ |
| | | success?: boolean; |
| | | /** 错误信息 */ |
| | |
| | | /** 用户签出时间 */ |
| | | userCheckOutTime?: string; |
| | | userCheckHistoryType?: EnumTaskUserSubmitCheckHistoryType; |
| | | /** 用户操作人 */ |
| | | userOperator?: string; |
| | | /** 人工签到时间 */ |
| | | checkInTime?: string; |
| | | /** 人工签出时间 */ |
| | | checkOutTime?: string; |
| | | checkHistoryType?: EnumTaskUserSubmitCheckHistoryType; |
| | | /** 操作人 */ |
| | | checkOperator?: string; |
| | | /** 操作人 */ |
| | | operator?: string; |
| | | /** 最近提交时间 */ |
| | |
| | | interface GetCheckReceiveTaskQueryResultObjectData { |
| | | /** 供应商Id */ |
| | | supplierEnterpriseId?: string; |
| | | /** 是否内部订单 */ |
| | | isInternal?: boolean; |
| | | /** 需求人数 */ |
| | | needPeopleNumber?: number; |
| | | /** 任务名称 */ |
| | |
| | | interface GetCheckReceiveTaskUserSubmitQueryResult { |
| | | /** 提交Id */ |
| | | id?: string; |
| | | /** 任务人员Id */ |
| | | taskInfoUserId?: string; |
| | | enterpriseEmployeeUser?: GetCheckReceiveTaskUserSubmitsQueryResultObjectDataEnterpriseEmployeeUser; |
| | | /** 验收时间 */ |
| | | date?: string; |
| | |
| | | /** 用户签出时间 */ |
| | | userCheckOutTime?: string; |
| | | userCheckHistoryType?: EnumTaskUserSubmitCheckHistoryType; |
| | | /** 用户操作人 */ |
| | | userOperator?: string; |
| | | /** 人工签到时间 */ |
| | | checkInTime?: string; |
| | | /** 人工签出时间 */ |
| | | checkOutTime?: string; |
| | | checkHistoryType?: EnumTaskUserSubmitCheckHistoryType; |
| | | /** 操作人 */ |
| | | checkOperator?: string; |
| | | /** 操作人 */ |
| | | operator?: string; |
| | | /** 验收照片 */ |
| | | files?: string[]; |
| | | /** 验收方式 */ |
| | | checkReceiveMethods?: EnumTaskCheckReceiveMethod[]; |
| | | /** 超时服务费 */ |
| | | /** 任务超时服务费单价 */ |
| | | timeoutServiceFee?: number; |
| | | /** 服务费(元) */ |
| | | serviceFee?: number; |
| | | /** 超时(小时) */ |
| | | timeoutHours?: number; |
| | | /** 超时费用(元) */ |
| | | timeoutFee?: number; |
| | | /** 其他费用(元) */ |
| | | otherFee?: number; |
| | | /** 备注 */ |
| | | remark?: string; |
| | | /** 结算金额 */ |
| | | settlementAmount?: number; |
| | | } |
| | | |
| | | interface GetCheckReceiveTaskUserSubmitsQuery { |
| | |
| | | /** 用户签出时间 */ |
| | | userCheckOutTime?: string; |
| | | userCheckHistoryType?: EnumTaskUserSubmitCheckHistoryType; |
| | | /** 用户操作人 */ |
| | | userOperator?: string; |
| | | /** 人工签到时间 */ |
| | | checkInTime?: string; |
| | | /** 人工签出时间 */ |
| | | checkOutTime?: string; |
| | | checkHistoryType?: EnumTaskUserSubmitCheckHistoryType; |
| | | /** 操作人 */ |
| | | checkOperator?: string; |
| | | /** 操作人 */ |
| | | operator?: string; |
| | | /** 提交时间 */ |
| | |
| | | /** 签约时间-最晚时间 */ |
| | | signContractTimeEnd?: string; |
| | | hireStatus?: EnumTaskUserHireStatus; |
| | | /** 实名时间-最早时间 */ |
| | | userRealTimeStart?: string; |
| | | /** 实名时间-最晚时间 */ |
| | | userRealTimeEnd?: string; |
| | | /** 是否实名 */ |
| | | isReal?: boolean; |
| | | source?: EnumEnterpriseEmployeeSource; |
| | | userSignContractStatus?: EnumTaskUserSignContractStatus; |
| | | enterpriseSignContractStatus?: EnumTaskUserSignContractStatus; |
| | | signContractStatus?: EnumGetEnterpriseEmployeesQuerySignContractStatus; |
| | |
| | | enterpriseSignContractTime?: string; |
| | | /** 电子合同 */ |
| | | contractUrl?: string; |
| | | /** 协议起始时间 */ |
| | | contractBegin?: string; |
| | | /** 协议终止时间 */ |
| | | contractEnd?: string; |
| | | source?: EnumEnterpriseEmployeeSource; |
| | | /** 来源名称 */ |
| | | sourceName?: string; |
| | | /** 创建时间 */ |
| | | createdTime?: string; |
| | | } |
| | | |
| | |
| | | /** 是否选择(用户角色授权) */ |
| | | isChecked?: boolean; |
| | | userType?: EnumUserType; |
| | | enterpriseType?: EnumEnterpriseType; |
| | | clientType?: EnumClientType; |
| | | /** 上级Id */ |
| | | parentId?: string; |
| | |
| | | settlementReceiveStatus?: SettlementReceiveStatus; |
| | | /** 结算时间 */ |
| | | settlementTime?: string; |
| | | settlementAuditStatus?: EnumTaskSettlementAuditStatus; |
| | | /** 审核时间 */ |
| | | settlementAuditTime?: string; |
| | | /** 付款人账户 */ |
| | | payerAccount?: string; |
| | | /** 付款人名称 */ |
| | |
| | | dataPower?: EnumRoleWebApiDataPower; |
| | | /** 备注 */ |
| | | remark?: string; |
| | | /** 用户数 */ |
| | | userCount?: number; |
| | | /** 菜单Id */ |
| | | menuIds?: string[]; |
| | | /** 资源 */ |
| | |
| | | billingMethod?: EnumBillingMethod; |
| | | /** 服务费 */ |
| | | serviceFee?: number; |
| | | /** 预计服务费 */ |
| | | estimatedServiceFee?: number; |
| | | /** 核定工时 */ |
| | | verifyWorkHours?: number; |
| | | /** 超时服务费 */ |
| | |
| | | contactPhoneNumber?: string; |
| | | /** 身份证号 */ |
| | | identity?: string; |
| | | /** 协议起始时间 */ |
| | | contractBegin?: string; |
| | | /** 协议终止时间 */ |
| | | contractEnd?: string; |
| | | } |
| | | |
| | | interface ImportTaskSettlementOrderRostersCommand { |
| | |
| | | |
| | | type RepairContractTemplateValuePointBy1202Command = Record<string, any>; |
| | | |
| | | type RepairEnterpriseEmployee1302Command = Record<string, any>; |
| | | |
| | | type RepairTaskEstimatedServiceFee1301Command = Record<string, any>; |
| | | |
| | | interface ResendResourceCommand { |
| | |
| | | |
| | | interface SaveMenuCommand { |
| | | userType?: EnumUserType; |
| | | enterpriseType?: EnumEnterpriseType; |
| | | clientType?: EnumClientType; |
| | | /** 上级Id */ |
| | | parentId?: string; |
| | |
| | | billingMethod: EnumBillingMethod; |
| | | /** 服务费 */ |
| | | serviceFee?: number; |
| | | /** 预计服务费 */ |
| | | estimatedServiceFee?: number; |
| | | /** 核定工时 */ |
| | | verifyWorkHours?: number; |
| | | /** 超时服务费 */ |
| | |
| | | remark?: string; |
| | | } |
| | | |
| | | type TestEventCommand = Record<string, any>; |
| | | |
| | | interface UpdateEnterpriseWeChatPayWalletBankAccountInfoCommand { |
| | | /** 企业Id */ |
| | | enterpriseId?: string; |
| | |
| | | }); |
| | | } |
| | | |
| | | /** 导出个人用户收支明细电子回单 POST /api/user/user/exportPersonalUserTransactionEreceipts */ |
| | | export async function exportPersonalUserTransactionEreceipts( |
| | | body: API.ExportPersonalUserTransactionEreceiptsCommand, |
| | | options?: API.RequestConfig |
| | | ) { |
| | | return request<string>('/api/user/user/exportPersonalUserTransactionEreceipts', { |
| | | method: 'POST', |
| | | headers: { |
| | | 'Content-Type': 'application/json-patch+json', |
| | | }, |
| | | data: body, |
| | | ...(options || {}), |
| | | }); |
| | | } |
| | | |
| | | /** 查询个人用户银行卡信息 GET /api/user/user/getPersonalUserBankCard */ |
| | | export async function getPersonalUserBankCard( |
| | | // 叠加生成的Param类型 (非body参数swagger默认没有生成对象) |