Merge branch 'master' of http://120.26.58.240:8888/r/flexJobAdminBClient
6个文件已添加
1 文件已重命名
14个文件已修改
| | |
| | | |
| | | export type GlobalEvent = { |
| | | 'home:add': any; |
| | | 'taskManage:add': any; |
| | | 'taskManage:edit': any; |
| | | 'employment:add': any; |
| | | 'employment:edit': any; |
| | | }; |
| | | |
| | | export type GlobalEventListener<T extends keyof GlobalEvent> = (payload: GlobalEvent[T]) => any; |
| | |
| | | }, |
| | | children: [ |
| | | { |
| | | path: '/TaskManage', |
| | | name: 'TaskManage', |
| | | path: '/EmploymentManageList', |
| | | name: 'EmploymentManageList', |
| | | hidden: false, |
| | | alwaysShow: true, |
| | | component: () => import('@/views/EmploymentManage/TaskManage.vue'), |
| | | component: () => import('@/views/EmploymentManage/EmploymentManage.vue'), |
| | | meta: { |
| | | rank: 10021, |
| | | title: '任务管理', |
| | |
| | | }, |
| | | }, |
| | | { |
| | | path: '/AddOrEditEmployment', |
| | | path: '/AddOrEditEmployment/:id?', |
| | | name: 'AddOrEditEmployment', |
| | | hidden: true, |
| | | alwaysShow: false, |
| | |
| | | }, |
| | | }, |
| | | { |
| | | path: '/EmploymentManageDetail', |
| | | path: '/EmploymentManageDetail/:id', |
| | | name: 'EmploymentManageDetail', |
| | | hidden: true, |
| | | alwaysShow: false, |
| | |
| | | }, |
| | | }, |
| | | { |
| | | path: '/EmploymentSignList', |
| | | path: '/EmploymentSignList/:id', |
| | | name: 'EmploymentSignList', |
| | | hidden: true, |
| | | alwaysShow: false, |
| | |
| | | }, |
| | | }, |
| | | { |
| | | path: '/EmploymentManageArrange', |
| | | path: '/EmploymentManageArrange/:id', |
| | | name: 'EmploymentManageArrange', |
| | | hidden: true, |
| | | alwaysShow: false, |
| | |
| | | }, |
| | | }, |
| | | { |
| | | path: '/ServiceChargeSettle', |
| | | path: '/ServiceChargeSettle/:id', |
| | | name: 'ServiceChargeSettle', |
| | | hidden: false, |
| | | alwaysShow: true, |
| | | hidden: true, |
| | | alwaysShow: false, |
| | | component: () => import('@/views/ServiceChargeManage/ServiceChargeSettle.vue'), |
| | | meta: { |
| | | rank: 10042, |
| | |
| | | }, |
| | | }, |
| | | { |
| | | path: '/ServiceChargeDetail', |
| | | path: '/ServiceChargeDetail/:id', |
| | | name: 'ServiceChargeDetail', |
| | | hidden: false, |
| | | alwaysShow: true, |
| | | hidden: true, |
| | | alwaysShow: false, |
| | | component: () => import('@/views/ServiceChargeManage/ServiceChargeDetail.vue'), |
| | | meta: { |
| | | rank: 10042, |
| | | rank: 10043, |
| | | title: '详情', |
| | | // rootMenu: true, |
| | | icon: 'home', |
| | |
| | | ], |
| | | }, |
| | | { |
| | | path: '/FinanceManage', |
| | | redirect: 'noRedirect', |
| | | component: Layout, |
| | | hidden: false, |
| | | alwaysShow: true, |
| | | meta: { |
| | | rank: 10050, |
| | | title: '财务管理', |
| | | rootMenu: true, |
| | | icon: 'home', |
| | | }, |
| | | children: [ |
| | | { |
| | | path: '/FinanceManageList', |
| | | name: 'FinanceManageList', |
| | | hidden: false, |
| | | alwaysShow: true, |
| | | component: () => import('@/views/FinanceManage/FinanceManage.vue'), |
| | | meta: { |
| | | rank: 10051, |
| | | title: '财务管理', |
| | | // rootMenu: true, |
| | | icon: 'home', |
| | | }, |
| | | }, |
| | | ], |
| | | }, |
| | | { |
| | | path: '/Login', |
| | | name: 'Login', |
| | | hidden: true, |
| | |
| | | } |
| | | ); |
| | | |
| | | const { dialogProps, handleEdit, editForm } = useFormDialog({ |
| | | const { dialogProps, dialogState, handleEdit, editForm } = useFormDialog({ |
| | | defaultFormParams: { |
| | | id: '', |
| | | type: '', |
| | |
| | | |
| | | function handleCheck(val) { |
| | | console.log('val: ', val); |
| | | dialogState.dialogVisible = false; |
| | | } |
| | | </script> |
File was renamed from src/views/EmploymentManage/TaskManage.vue |
| | |
| | | :operationBtns="operationBtns" |
| | | > |
| | | <template #signNum="{ row }"> |
| | | <el-button type="text" @click="goSignList(row.id)">{{ row.signNum || 0 }}</el-button> |
| | | <el-button link type="primary" @click="goSignList(row)">{{ row.signNum || 0 }}</el-button> |
| | | </template> |
| | | </ProTableV2> |
| | | </AppContainer> |
| | |
| | | import { useGlobalEventContext } from '@/hooks'; |
| | | |
| | | defineOptions({ |
| | | name: 'TaskManage', |
| | | name: 'EmploymentManageList', |
| | | }); |
| | | |
| | | const operationBtns = defineOperationBtns([ |
| | |
| | | |
| | | const eventContext = useGlobalEventContext(); |
| | | |
| | | eventContext.addEvent('taskManage:add', () => { |
| | | eventContext.addEvent('employment:add', () => { |
| | | getList(); |
| | | }); |
| | | |
| | | eventContext.addEvent('taskManage:edit', () => { |
| | | eventContext.addEvent('employment:edit', () => { |
| | | getList(paginationState.pageIndex); |
| | | }); |
| | | |
| | |
| | | <SearchInput |
| | | v-model="extraParamState.searchWord" |
| | | style="width: 250px" |
| | | placeholder="任务名称" |
| | | placeholder="姓名/身份证/电话" |
| | | @on-click-search="getList" |
| | | @keyup.enter="getList()" |
| | | > |
| | |
| | | ); |
| | | |
| | | function handleArrange(row) { |
| | | router.push({ |
| | | name: 'EmploymentManageArrange', |
| | | params: { |
| | | id: row?.id ?? '', |
| | | }, |
| | | }); |
| | | console.log('row: ', row); |
| | | } |
| | | </script> |
| | |
| | | ]); |
| | | |
| | | const router = useRouter(); |
| | | |
| | | const route = useRoute(); |
| | | const id = route.params.id as string; |
| | | const BaseState = { |
| | | loading: true, |
| | | }; |
| | |
| | | </ProFormColItem> |
| | | </ProFormCol> |
| | | <ProFormCol> |
| | | <ProFormItemV2 label="服务费:" prop="salaryType"> |
| | | <RadioWithExtra |
| | | v-model="form.salaryType" |
| | | :value-enum="[ |
| | | { label: '按月', value: 1 }, |
| | | { label: '按日', value: 2 }, |
| | | ]" |
| | | :showExtra="true" |
| | | > |
| | | <template #extra> |
| | | <ProFormInputNumber |
| | | :controls="false" |
| | | :min="0" |
| | | :max="999" |
| | | v-model="form.name" |
| | | placeholder="请输入" |
| | | :unit="form.salaryType === 1 ? '元/月' : '元/天'" |
| | | ></ProFormInputNumber> |
| | | </template> |
| | | </RadioWithExtra> |
| | | </ProFormItemV2> |
| | | <ProFormColItem :span="12"> |
| | | <ProFormItemV2 label="服务费:" prop="salaryType"> |
| | | <RadioWithExtra |
| | | v-model="form.salaryType" |
| | | :value-enum="[ |
| | | { label: '按月', value: 1 }, |
| | | { label: '按日', value: 2 }, |
| | | ]" |
| | | :showExtra="true" |
| | | :button-style="false" |
| | | > |
| | | <template #extra> |
| | | <ProFormInputNumber |
| | | :controls="false" |
| | | :min="0" |
| | | :max="999" |
| | | v-model="form.name" |
| | | placeholder="请输入" |
| | | :unit="form.salaryType === 1 ? '元/月' : '元/天'" |
| | | ></ProFormInputNumber> |
| | | </template> |
| | | </RadioWithExtra> |
| | | </ProFormItemV2> |
| | | </ProFormColItem> |
| | | </ProFormCol> |
| | | <ProFormCol> |
| | | <ProFormColItem :span="12"> |
| | |
| | | <ProFormRadio |
| | | v-model="form.salaryType" |
| | | :value-enum="[{ label: '是', value: 1 }]" |
| | | :button-style="false" |
| | | ></ProFormRadio> |
| | | </ProFormItemV2> |
| | | </ProFormColItem> |
| | | </ProFormCol> |
| | | <ProFormCol> |
| | | <ProFormColItem :span="12"> |
| | | <ProFormItemV2 label="年龄要求:" prop="ageRange"> |
| | | <ProFormItemV2 label="福利:" prop="benefits"> |
| | | <el-checkbox |
| | | v-model="state.checBenefitskAll" |
| | | style="margin-right: 30px" |
| | | :indeterminate="state.isBenefitsIndeterminate" |
| | | @change="handleCheckBenefitsAllChange" |
| | | >全选</el-checkbox |
| | | > |
| | | <ProFormCheckbox |
| | | v-model="form.benefits" |
| | | :value-enum="[]" |
| | | enumLabelKey="name" |
| | | enum-value-key="id" |
| | | @change="handleCheckedBenefitsServicesChange" |
| | | ></ProFormCheckbox> |
| | | </ProFormItemV2> |
| | | </ProFormColItem> |
| | | </ProFormCol> |
| | | <ProFormCol> |
| | | <ProFormColItem :span="12"> |
| | | <ProFormItemV2 label="年龄范围:" prop="ageRange" class="form-age-range"> |
| | | <ProFormInputNumber |
| | | :controls="false" |
| | | :min="0" |
| | | v-model="form.ageStart" |
| | | placeholder="请输入" |
| | | disabled |
| | | ></ProFormInputNumber> |
| | | <div class="form-input-separator">至</div> |
| | | <ProFormInputNumber |
| | |
| | | :min="0" |
| | | v-model="form.ageEnd" |
| | | placeholder="请输入" |
| | | disabled |
| | | ></ProFormInputNumber> |
| | | </ProFormItemV2> |
| | | </ProFormColItem> |
| | |
| | | <ProFormCol> |
| | | <ProFormColItem :span="12"> |
| | | <ProFormItemV2 label="性别要求:" prop="sexRequirement" required> |
| | | <RadioWithExtra |
| | | <ProFormRadio |
| | | v-model="form.sexRequirement" |
| | | :value-enum="[ |
| | | { |
| | | label: '不限', |
| | | value: 1, |
| | | }, |
| | | ]" |
| | | :showExtra="true" |
| | | :value-enum="[{ label: '不限', value: 1 }]" |
| | | ></ProFormRadio> |
| | | </ProFormItemV2> |
| | | </ProFormColItem> |
| | | </ProFormCol> |
| | | <ProFormCol> |
| | | <ProFormColItem :span="12"> |
| | | <ProFormItemV2 label="资格证书:" prop="benefits"> |
| | | <el-checkbox |
| | | v-model="state.checBenefitskAll" |
| | | style="margin-right: 30px" |
| | | :indeterminate="state.isBenefitsIndeterminate" |
| | | @change="handleCheckBenefitsAllChange" |
| | | >全选</el-checkbox |
| | | > |
| | | <template #extra> |
| | | <div class="form-input-separator">男性</div> |
| | | <ProFormInputNumber |
| | | :controls="false" |
| | | :min="0" |
| | | v-model="form.manNumber" |
| | | placeholder="请输入" |
| | | disabled |
| | | ></ProFormInputNumber> |
| | | <div class="form-input-separator">女性</div> |
| | | <ProFormInputNumber |
| | | :controls="false" |
| | | :min="0" |
| | | v-model="form.womanNumber" |
| | | placeholder="请输入" |
| | | disabled |
| | | ></ProFormInputNumber> |
| | | </template> |
| | | </RadioWithExtra> |
| | | <ProFormCheckbox |
| | | v-model="form.benefits" |
| | | :value-enum="[]" |
| | | enumLabelKey="name" |
| | | enum-value-key="id" |
| | | @change="handleCheckedBenefitsServicesChange" |
| | | ></ProFormCheckbox> |
| | | </ProFormItemV2> |
| | | </ProFormColItem> |
| | | </ProFormCol> |
| | | <ProFormCol> |
| | | <ProFormColItem :span="12"> |
| | | <ProFormItemV2 label="任务地点:" prop="areaList"> |
| | | <!-- <ProFromAddressSelect :areaList="form.areaList" :address="form.address" /> --> |
| | | </ProFormItemV2> |
| | | </ProFormColItem> |
| | | </ProFormCol> |
| | | <ProFormCol> |
| | | <ProFormColItem :span="12"> |
| | | <ProFormItemV2 label="任务时间:" prop="name"> |
| | | <ProFormDatePicker |
| | | v-model="form.name" |
| | | type="daterange" |
| | | range-separator="至" |
| | | start-placeholder="开始日期" |
| | | end-placeholder="结束日期" |
| | | ></ProFormDatePicker> |
| | | </ProFormItemV2> |
| | | </ProFormColItem> |
| | | </ProFormCol> |
| | |
| | | ProFormText, |
| | | ProFormInputNumber, |
| | | ProFormRadio, |
| | | ProFormDatePicker, |
| | | ProFormCheckbox, |
| | | } from '@bole-core/components'; |
| | | import { FormInstance } from 'element-plus'; |
| | | import { Message } from '@bole-core/core'; |
| | |
| | | |
| | | const { closeViewPush } = useRouteView(); |
| | | |
| | | const state = reactive({ |
| | | checBenefitskAll: false, |
| | | isBenefitsIndeterminate: false, |
| | | }); |
| | | |
| | | const form = reactive({ |
| | | name: '', |
| | | salaryType: 1, |
| | |
| | | sexRequirement: 1, |
| | | manNumber: 0, |
| | | womanNumber: 0, |
| | | benefits: [], |
| | | areaList: [] as number[], |
| | | address: '', |
| | | }); |
| | | |
| | | const { isLoading } = useQuery({ |
| | |
| | | } |
| | | ); |
| | | }, |
| | | placeholderData: () => ({} as API.GetFlexTaskDetailForBackOutput), |
| | | onSuccess(data) { |
| | | form.name = data.taskName; |
| | | }, |
| | |
| | | |
| | | function handleBack() { |
| | | closeViewPush(route, { |
| | | name: 'TaskManage', |
| | | name: 'EmploymentManageList', |
| | | }); |
| | | } |
| | | const productFormRef = ref<FormInstance>(); |
| | |
| | | let res; |
| | | if (res) { |
| | | Message.successMessage('操作成功'); |
| | | eventContext.emit(isEdit ? 'taskManage:edit' : 'taskManage:add'); |
| | | eventContext.emit(isEdit ? 'employment:edit' : 'employment:add'); |
| | | handleBack(); |
| | | } |
| | | } catch (error) {} |
| | | } |
| | | |
| | | function handleCheckBenefitsAllChange() {} |
| | | |
| | | function handleCheckedBenefitsServicesChange() {} |
| | | </script> |
| | | <style lang="scss" scoped> |
| | | @use '@/style/common.scss' as *; |
| | | |
| | | :deep() { |
| | | .radio-with-input-extra-wrapper { |
| | | display: flex; |
| | | } |
| | | |
| | | .form-age-range { |
| | | .pro-from-item-read-content-wrapper { |
| | | width: auto; |
| | | } |
| | | } |
| | | } |
| | | </style> |
| | |
| | | id: '1', |
| | | enCode: 'name', |
| | | name: '任务名称', |
| | | width: 180, |
| | | }, |
| | | { |
| | | id: '2', |
| | | enCode: 'name', |
| | | name: '任务单号', |
| | | width: 180, |
| | | }, |
| | | { |
| | | id: '3', |
| | |
| | | id: '5', |
| | | enCode: 'name', |
| | | name: '结算方式', |
| | | width: 140, |
| | | }, |
| | | { |
| | | id: '6', |
| | | enCode: 'name', |
| | | name: '性别要求', |
| | | width: 140, |
| | | }, |
| | | { |
| | | id: '7', |
| | | enCode: 'signNum', |
| | | name: '报名人数', |
| | | width: 140, |
| | | }, |
| | | { |
| | | id: '8', |
| | | enCode: 'name', |
| | | name: '任务状态', |
| | | width: 140, |
| | | }, |
| | | { |
| | | id: '9', |
| | | enCode: 'name', |
| | | name: '发布日期', |
| | | width: 160, |
| | | }, |
| | | { |
| | | id: '10', |
| | | enCode: 'name', |
| | | name: '结束日期', |
| | | width: 160, |
| | | }, |
| | | { |
| | | id: '11', |
| | | enCode: 'name', |
| | | name: '发布状态', |
| | | width: 160, |
| | | }, |
| | | ]); |
| | | |
| | |
| | | id: '1', |
| | | enCode: 'name', |
| | | name: '姓名', |
| | | width: 180, |
| | | }, |
| | | { |
| | | id: '2', |
| | | enCode: 'name', |
| | | name: '身份证号', |
| | | width: 180, |
| | | }, |
| | | { |
| | | id: '3', |
| | |
| | | id: '5', |
| | | enCode: 'name', |
| | | name: '性别', |
| | | width: 140, |
| | | }, |
| | | { |
| | | id: '6', |
| | | enCode: 'name', |
| | | name: '学历', |
| | | width: 140, |
| | | }, |
| | | { |
| | | id: '7', |
| | | enCode: 'name', |
| | | name: '排班状态', |
| | | width: 140, |
| | | }, |
| | | ]); |
| | | |
| | |
| | | id: '1', |
| | | enCode: 'name', |
| | | name: '姓名', |
| | | width: 180, |
| | | }, |
| | | { |
| | | id: '2', |
| | | enCode: 'name', |
| | | name: '身份证号', |
| | | width: 180, |
| | | }, |
| | | { |
| | | id: '3', |
| | |
| | | id: '5', |
| | | enCode: 'name', |
| | | name: '性别', |
| | | width: 140, |
| | | }, |
| | | { |
| | | id: '6', |
| | | enCode: 'name', |
| | | name: '学历', |
| | | width: 140, |
| | | }, |
| | | { |
| | | id: '7', |
| | | enCode: 'name', |
| | | name: '录用状态', |
| | | width: 140, |
| | | }, |
| | | ]); |
| | | |
| | |
| | | id: '1', |
| | | enCode: 'name', |
| | | name: '姓名', |
| | | width: 180, |
| | | }, |
| | | { |
| | | id: '2', |
| | | enCode: 'name', |
| | | name: '身份证号', |
| | | width: 180, |
| | | }, |
| | | { |
| | | id: '3', |
| | |
| | | id: '5', |
| | | enCode: 'name', |
| | | name: '手机号', |
| | | width: 140, |
| | | }, |
| | | { |
| | | id: '6', |
| | | enCode: 'name', |
| | | name: '所属客户', |
| | | width: 140, |
| | | }, |
| | | { |
| | | id: '7', |
| | | enCode: 'name', |
| | | name: '提交时间', |
| | | width: 140, |
| | | }, |
| | | { |
| | | id: '8', |
| | | enCode: 'name', |
| | | name: '验收状态', |
| | | width: 140, |
| | | }, |
| | | ]); |
New file |
| | |
| | | <template> |
| | | <AppContainer> |
| | | <ProTabs v-model="state.tabType" hasBorder> |
| | | <ProTabPane lazy label="发放明细" :name="FinanceTabType.DistributionDetail"> |
| | | <DistributionDetailView /> |
| | | </ProTabPane> |
| | | <ProTabPane lazy label="用量明细" :name="FinanceTabType.UsageDetail"> |
| | | <UsageDetailView /> |
| | | </ProTabPane> |
| | | </ProTabs> |
| | | </AppContainer> |
| | | </template> |
| | | |
| | | <script setup lang="ts"> |
| | | import { AppContainer, ProTabs, ProTabPane } from '@bole-core/components'; |
| | | import DistributionDetailView from './components/DistributionDetailView.vue'; |
| | | import UsageDetailView from './components/UsageDetailView.vue'; |
| | | |
| | | defineOptions({ |
| | | name: 'FinanceManageList', |
| | | }); |
| | | |
| | | enum FinanceTabType { |
| | | DistributionDetail = 10, |
| | | UsageDetail = 20, |
| | | } |
| | | |
| | | const state = reactive({ |
| | | tabType: FinanceTabType.DistributionDetail, |
| | | }); |
| | | </script> |
New file |
| | |
| | | <template> |
| | | <LoadingLayout :loading="state.loading"> |
| | | <AppContainer> |
| | | <ProTableV2 |
| | | v-bind="proTableProps" |
| | | :columns="DistributionDetailColumns" |
| | | :operationBtns="operationBtns" |
| | | > |
| | | </ProTableV2> |
| | | </AppContainer> |
| | | </LoadingLayout> |
| | | </template> |
| | | |
| | | <script setup lang="ts"> |
| | | import { |
| | | ProTableV2, |
| | | LoadingLayout, |
| | | AppContainer, |
| | | useTable, |
| | | defineOperationBtns, |
| | | } from '@bole-core/components'; |
| | | import * as flexEnterpriseServices from '@/services/api/FlexEnterprise'; |
| | | import { DistributionDetailColumns } from '../constants'; |
| | | import { FlexEnterpriseSettingStatus } from '@/constants'; |
| | | import { OrderInputType } from '@bole-core/core'; |
| | | |
| | | defineOptions({ |
| | | name: 'DistributionDetailView', |
| | | }); |
| | | |
| | | const operationBtns = defineOperationBtns([]); |
| | | |
| | | const BaseState = { |
| | | loading: true, |
| | | }; |
| | | |
| | | const state = reactive({ ...BaseState }); |
| | | |
| | | onMounted(async () => { |
| | | await getList(); |
| | | state.loading = false; |
| | | }); |
| | | |
| | | const { |
| | | getDataSource: getList, |
| | | proTableProps, |
| | | paginationState, |
| | | extraParamState, |
| | | reset, |
| | | } = useTable( |
| | | async ({ pageIndex, pageSize }, extraParamState) => { |
| | | try { |
| | | let params: API.GetFlexEnterpriseInput = { |
| | | pageModel: { |
| | | rows: pageSize, |
| | | page: pageIndex, |
| | | orderInput: extraParamState.orderInput, |
| | | }, |
| | | flexEnterpriseSettingStatus: extraParamState.flexEnterpriseSettingStatus, |
| | | searchWord: extraParamState.searchWord, |
| | | }; |
| | | |
| | | let res = await flexEnterpriseServices.getFlexEnterpriseList(params, { |
| | | showLoading: !state.loading, |
| | | }); |
| | | return res; |
| | | } catch (error) { |
| | | console.log('error: ', error); |
| | | } |
| | | }, |
| | | { |
| | | defaultExtraParams: { |
| | | searchWord: '', |
| | | orderInput: [{ property: 'id', order: OrderInputType.Desc }], |
| | | flexEnterpriseSettingStatus: '' as any as FlexEnterpriseSettingStatus, |
| | | }, |
| | | queryKey: ['flexEnterpriseServices/getFlexEnterpriseList'], |
| | | columnsRenderProps: {}, |
| | | } |
| | | ); |
| | | </script> |
New file |
| | |
| | | <template> |
| | | <LoadingLayout :loading="state.loading"> |
| | | <AppContainer> |
| | | <ProTableV2 v-bind="proTableProps" :columns="UsageDetailColumns" :showOperationColumn="false"> |
| | | </ProTableV2> |
| | | </AppContainer> |
| | | </LoadingLayout> |
| | | </template> |
| | | |
| | | <script setup lang="ts"> |
| | | import { ProTableV2, LoadingLayout, AppContainer, useTable } from '@bole-core/components'; |
| | | import * as flexEnterpriseServices from '@/services/api/FlexEnterprise'; |
| | | import { UsageDetailColumns } from '../constants'; |
| | | import { FlexEnterpriseSettingStatus } from '@/constants'; |
| | | import { OrderInputType } from '@bole-core/core'; |
| | | |
| | | defineOptions({ |
| | | name: 'UsageDetailView', |
| | | }); |
| | | |
| | | const BaseState = { |
| | | loading: true, |
| | | }; |
| | | |
| | | const state = reactive({ ...BaseState }); |
| | | |
| | | onMounted(async () => { |
| | | await getList(); |
| | | state.loading = false; |
| | | }); |
| | | |
| | | const { |
| | | getDataSource: getList, |
| | | proTableProps, |
| | | paginationState, |
| | | extraParamState, |
| | | reset, |
| | | } = useTable( |
| | | async ({ pageIndex, pageSize }, extraParamState) => { |
| | | try { |
| | | let params: API.GetFlexEnterpriseInput = { |
| | | pageModel: { |
| | | rows: pageSize, |
| | | page: pageIndex, |
| | | orderInput: extraParamState.orderInput, |
| | | }, |
| | | flexEnterpriseSettingStatus: extraParamState.flexEnterpriseSettingStatus, |
| | | searchWord: extraParamState.searchWord, |
| | | }; |
| | | |
| | | let res = await flexEnterpriseServices.getFlexEnterpriseList(params, { |
| | | showLoading: !state.loading, |
| | | }); |
| | | return res; |
| | | } catch (error) { |
| | | console.log('error: ', error); |
| | | } |
| | | }, |
| | | { |
| | | defaultExtraParams: { |
| | | searchWord: '', |
| | | orderInput: [{ property: 'id', order: OrderInputType.Desc }], |
| | | flexEnterpriseSettingStatus: '' as any as FlexEnterpriseSettingStatus, |
| | | }, |
| | | queryKey: ['flexEnterpriseServices/getFlexEnterpriseList'], |
| | | columnsRenderProps: {}, |
| | | } |
| | | ); |
| | | </script> |
New file |
| | |
| | | import { defineColumns } from '@bole-core/components'; |
| | | |
| | | export const DistributionDetailColumns = defineColumns([ |
| | | { |
| | | id: '1', |
| | | enCode: 'name', |
| | | name: '所属客户', |
| | | }, |
| | | { |
| | | id: '2', |
| | | enCode: 'name', |
| | | name: '所属任务', |
| | | }, |
| | | { |
| | | id: '3', |
| | | enCode: 'name', |
| | | name: '结算单名称', |
| | | }, |
| | | { |
| | | id: '4', |
| | | enCode: 'name', |
| | | name: '姓名', |
| | | }, |
| | | { |
| | | id: '5', |
| | | enCode: 'name', |
| | | name: '手机号', |
| | | }, |
| | | { |
| | | id: '6', |
| | | enCode: 'name', |
| | | name: '结算金额', |
| | | }, |
| | | { |
| | | id: '7', |
| | | enCode: 'signNum', |
| | | name: '结算状态', |
| | | }, |
| | | { |
| | | id: '8', |
| | | enCode: 'name', |
| | | name: '结算日期', |
| | | }, |
| | | ]); |
| | | |
| | | export const UsageDetailColumns = defineColumns([ |
| | | { |
| | | id: '1', |
| | | enCode: 'name', |
| | | name: '使用时间', |
| | | }, |
| | | { |
| | | id: '2', |
| | | enCode: 'name', |
| | | name: '用量类型', |
| | | }, |
| | | { |
| | | id: '3', |
| | | enCode: 'name', |
| | | name: '扣费状态', |
| | | }, |
| | | { |
| | | id: '4', |
| | | enCode: 'name', |
| | | name: '费用(元)', |
| | | }, |
| | | ]); |
New file |
| | |
| | | export * from './columns'; |
| | |
| | | :operationBtns="operationBtns" |
| | | show-column-check |
| | | ref="proTable" |
| | | :table-props="{ |
| | | rowKey: 'id', |
| | | }" |
| | | > |
| | | </ProTableV2> |
| | | </AppContainer> |
| | |
| | | v-bind="dialogBatchImportProps" |
| | | @onDownloadTemplate="handleDownloadTemplate" |
| | | /> |
| | | <SendShotMessageDialog v-bind="dialogShotMessageProps" /> |
| | | </LoadingLayout> |
| | | </template> |
| | | |
| | |
| | | import { convertApi2FormUrlOnlyOne, downloadFileByUrl } from '@/utils'; |
| | | import StaffInfoDialog from './components/StaffInfoDialog.vue'; |
| | | import BatchImportDialog from './components/BatchImportDialog.vue'; |
| | | import SendShotMessageDialog from './components/SendShotMessageDialog.vue'; |
| | | |
| | | defineOptions({ |
| | | name: 'EnterpriseManageList', |
| | |
| | | |
| | | async function handleBatchImport() {} |
| | | |
| | | const { |
| | | dialogProps: dialogShotMessageProps, |
| | | handleAdd: handleShotMessageAdd, |
| | | editForm: editShotMessageForm, |
| | | } = useFormDialog({ |
| | | onConfirm: sendMessageForSign, |
| | | defaultFormParams: { |
| | | ids: [] as string[], |
| | | customerId: '', |
| | | name: '', |
| | | }, |
| | | }); |
| | | |
| | | async function handleSendShotMessage() { |
| | | try { |
| | | const selectionRows = getSelectionRows(); |
| | | if (selectionRows) { |
| | | if (selectionRows.some((x) => x.status === 10)) { |
| | | await Message.tipMessage('勾选人员中包含已签约完成人员,确认要继续发送短信通知吗?'); |
| | | } |
| | | handleShotMessageAdd({ |
| | | ids: selectionRows.map((x) => x.id), |
| | | name: '人员签约通道短信', |
| | | }); |
| | | } |
| | | } catch (error) {} |
| | | } |
| | | |
| | | async function sendMessageForSign() { |
| | | try { |
| | | } catch (error) {} |
| | | } |
| | | |
| | | function handleDownloadTemplate() { |
| | | downloadFileByUrl('', '批量导入模板'); |
| | | } |
| | | |
| | | function handleBatchUnSign() {} |
| | | function handleSendShotMessage() {} |
| | | |
| | | function handleSign(row) {} |
| | | function handleBatchSign() {} |
New file |
| | |
| | | <template> |
| | | <ProDialog title="短信发送" v-model="visible" @close="onDialogClose" destroy-on-close draggable> |
| | | <ProForm :model="form" ref="dialogForm" label-width="90px"> |
| | | <ProFormItemV2 label="短信类型:" prop="name" required> |
| | | <div>{{ '人员签约通道短信' }}</div> |
| | | </ProFormItemV2> |
| | | </ProForm> |
| | | <template #footer> |
| | | <span class="dialog-footer"> |
| | | <el-button @click="emit('onCancel')">取 消</el-button> |
| | | <el-button type="primary" @click="handleConfirm">提 交</el-button> |
| | | </span> |
| | | </template> |
| | | </ProDialog> |
| | | </template> |
| | | |
| | | <script setup lang="ts"> |
| | | import { FormInstance } from 'element-plus'; |
| | | import { ProDialog, ProForm, ProFormItemV2 } from '@bole-core/components'; |
| | | |
| | | defineOptions({ |
| | | name: 'SendShotMessageDialog', |
| | | }); |
| | | |
| | | const visible = defineModel({ type: Boolean }); |
| | | |
| | | type Form = { |
| | | title?: string; |
| | | ids: string[]; |
| | | customerId: string; |
| | | name: string; |
| | | }; |
| | | |
| | | const form = defineModel<Form>('form'); |
| | | |
| | | const emit = defineEmits<{ |
| | | (e: 'onConfirm'): void; |
| | | (e: 'onCancel'): void; |
| | | }>(); |
| | | |
| | | const dialogForm = ref<FormInstance>(); |
| | | |
| | | function onDialogClose() { |
| | | if (!dialogForm.value) return; |
| | | dialogForm.value.resetFields(); |
| | | } |
| | | |
| | | function handleConfirm() { |
| | | if (!dialogForm.value) return; |
| | | dialogForm.value.validate((valid) => { |
| | | if (valid) { |
| | | emit('onConfirm'); |
| | | } else { |
| | | return; |
| | | } |
| | | }); |
| | | } |
| | | </script> |
| | |
| | | id: '1', |
| | | enCode: 'name', |
| | | name: '姓名', |
| | | width: 180, |
| | | }, |
| | | { |
| | | id: '2', |
| | | enCode: 'idNumber', |
| | | name: '身份证号', |
| | | width: 180, |
| | | }, |
| | | { |
| | | id: '3', |
| | |
| | | id: '6', |
| | | enCode: 'phoneNumber', |
| | | name: '手机号', |
| | | width: 140, |
| | | }, |
| | | { |
| | | id: '8', |
| | | enCode: 'regiterStatus', |
| | | name: '录用状态', |
| | | width: 140, |
| | | }, |
| | | { |
| | | id: '9', |
| | | enCode: 'realVerifyStatus', |
| | | name: '实名状态', |
| | | width: 140, |
| | | }, |
| | | { |
| | | id: '10', |
| | | enCode: 'signStatus', |
| | | name: '灵工签约状态', |
| | | width: 140, |
| | | }, |
| | | { |
| | | id: '11', |
| | | enCode: 'regiterTime', |
| | | name: '录用时间', |
| | | width: 160, |
| | | }, |
| | | { |
| | | id: '12', |
| | | enCode: 'realVerifyTime', |
| | | name: '实名时间', |
| | | width: 160, |
| | | }, |
| | | { |
| | | id: '13', |
| | | enCode: 'signTime', |
| | | name: '签约时间', |
| | | width: 160, |
| | | }, |
| | | { |
| | | id: '14', |
| | | enCode: 'enterSignStatus', |
| | | name: '企业签约状态', |
| | | width: 160, |
| | | }, |
| | | { |
| | | id: '15', |
| | | enCode: 'enterSignTime', |
| | | name: '企业签约时间', |
| | | width: 160, |
| | | }, |
| | | ]); |
| | |
| | | <template> |
| | | <LoadingLayout :loading="isLoading"> |
| | | <AppScrollContainer> |
| | | <ChunkCell title="结算单详情"> </ChunkCell> |
| | | <ChunkCell title="结算流程"> </ChunkCell> |
| | | <ChunkCell title="结算名单"> </ChunkCell> |
| | | <ChunkCell title="结算单详情"> |
| | | <template #titleRight> |
| | | <el-button type="primary" icon="Download" @click="handleDownloadTemplate()" |
| | | >电子回单下载</el-button |
| | | > |
| | | </template> |
| | | <ProForm :model="form" ref="formRef" label-width="120px" :is-read="true"> |
| | | <ProFormCol> |
| | | <ProFormColItem :span="8"> |
| | | <ProFormItemV2 label="所属任务:" prop="name"> |
| | | <ProFormText v-model="form.name"> </ProFormText> |
| | | </ProFormItemV2> |
| | | </ProFormColItem> |
| | | <ProFormColItem :span="8"> |
| | | <ProFormItemV2 label="任务编号:" prop="name"> |
| | | <ProFormText v-model="form.name"> </ProFormText> |
| | | </ProFormItemV2> |
| | | </ProFormColItem> |
| | | <ProFormColItem :span="8"></ProFormColItem> |
| | | </ProFormCol> |
| | | <ProFormCol> |
| | | <ProFormColItem :span="8"> |
| | | <ProFormItemV2 label="结算单名称:" prop="name"> |
| | | <ProFormText v-model="form.name"> </ProFormText> |
| | | </ProFormItemV2> |
| | | </ProFormColItem> |
| | | <ProFormColItem :span="8"> |
| | | <ProFormItemV2 label="上传时间:" prop="name"> |
| | | <ProFormDatePicker |
| | | v-model="form.name" |
| | | type="date" |
| | | format="YYYY-MM-DD HH:mm" |
| | | ></ProFormDatePicker> |
| | | </ProFormItemV2> |
| | | </ProFormColItem> |
| | | <ProFormColItem :span="8"></ProFormColItem> |
| | | </ProFormCol> |
| | | <ProFormCol> |
| | | <ProFormColItem :span="8"> |
| | | <ProFormItemV2 label="结算金额:" prop="money"> |
| | | <ProFormInputNumber v-model="form.money"> </ProFormInputNumber> |
| | | </ProFormItemV2> |
| | | </ProFormColItem> |
| | | <ProFormColItem :span="8"> |
| | | <ProFormItemV2 label="实发金额:" prop="money"> |
| | | <ProFormInputNumber v-model="form.money"> </ProFormInputNumber> |
| | | </ProFormItemV2> |
| | | </ProFormColItem> |
| | | <ProFormColItem :span="8"> |
| | | <ProFormItemV2 label="状态:" prop="status"> |
| | | <ProFormRadio v-model="form.status" :value-enum="[{ label: '是', value: 1 }]"> |
| | | </ProFormRadio> |
| | | </ProFormItemV2> |
| | | </ProFormColItem> |
| | | </ProFormCol> |
| | | </ProForm> |
| | | </ChunkCell> |
| | | <ChunkCell title="结算流程"> |
| | | <div class="step-wrapper"> |
| | | <el-steps :active="1" align-center finish-status="process"> |
| | | <el-step title="结算单上传" :icon="Edit"> |
| | | <template #description> |
| | | <div>创建人:{{ form.name }}</div> |
| | | <div>时间:{{ form.name }}</div> |
| | | <TextOverTooltip>备注:{{ form.name }}</TextOverTooltip> |
| | | </template> |
| | | </el-step> |
| | | <el-step title="结算付款" :icon="Upload"> |
| | | <template #description> |
| | | <div>创建人:{{ form.name }}</div> |
| | | <div>时间:{{ form.name }}</div> |
| | | <TextOverTooltip |
| | | >备注:{{ 'form.nameform.nameform.eform.nameform.nameform.name' }}</TextOverTooltip |
| | | > |
| | | </template> |
| | | </el-step> |
| | | </el-steps> |
| | | </div> |
| | | </ChunkCell> |
| | | <ChunkCell title="结算名单"> |
| | | <ProTableQueryFilterBar @on-reset="reset"> |
| | | <template #query> |
| | | <QueryFilterItem> |
| | | <SearchInput |
| | | v-model="extraParamState.searchWord" |
| | | style="width: 300px" |
| | | placeholder="人员姓名/身份证号/手机号" |
| | | @on-click-search="getList" |
| | | > |
| | | </SearchInput> |
| | | </QueryFilterItem> |
| | | </template> |
| | | </ProTableQueryFilterBar> |
| | | <ProTableV2 |
| | | v-bind="proTableProps" |
| | | :columns="SettlementListColumns" |
| | | :operationBtns="operationBtns" |
| | | :auto-height="false" |
| | | ref="proTable" |
| | | :tableProps="{ |
| | | maxHeight: '400px', |
| | | }" |
| | | > |
| | | </ProTableV2> |
| | | </ChunkCell> |
| | | </AppScrollContainer> |
| | | </LoadingLayout> |
| | | </template> |
| | | <script setup lang="ts"> |
| | | import { LoadingLayout, AppScrollContainer, ChunkCell } from '@bole-core/components'; |
| | | import { |
| | | LoadingLayout, |
| | | AppScrollContainer, |
| | | ChunkCell, |
| | | ProForm, |
| | | ProFormItemV2, |
| | | ProFormText, |
| | | ProFormCol, |
| | | ProFormColItem, |
| | | ProFormDatePicker, |
| | | ProFormInputNumber, |
| | | ProFormRadio, |
| | | useTable, |
| | | ProTableV2, |
| | | defineOperationBtns, |
| | | SearchInput, |
| | | QueryFilterItem, |
| | | ProTableQueryFilterBar, |
| | | TextOverTooltip, |
| | | } from '@bole-core/components'; |
| | | import { Edit, Upload } from '@element-plus/icons-vue'; |
| | | import { SettlementListColumns } from './constants'; |
| | | import { useQuery } from '@tanstack/vue-query'; |
| | | import { downloadFileByUrl, OrderInputType } from '@bole-core/core'; |
| | | |
| | | defineOptions({ |
| | | name: 'ServiceChargeDetail', |
| | | }); |
| | | |
| | | const operationBtns = defineOperationBtns([ |
| | | { |
| | | data: { |
| | | enCode: 'downloadBtn', |
| | | name: '下载回单', |
| | | }, |
| | | }, |
| | | ]); |
| | | |
| | | const route = useRoute(); |
| | | const id = (route.params.id as string) ?? ''; |
| | | |
| | | const state = reactive({ |
| | | loading: true, |
| | | const form = reactive({ |
| | | name: '', |
| | | money: 0, |
| | | status: 1, |
| | | }); |
| | | |
| | | const { isLoading } = useQuery({ |
| | |
| | | } |
| | | ); |
| | | }, |
| | | placeholderData: () => ({} as API.GetFlexTaskDetailForBackOutput), |
| | | onSuccess(data) {}, |
| | | enabled: !!id, |
| | | }); |
| | | |
| | | onMounted(() => {}); |
| | | const { |
| | | getDataSource: getList, |
| | | proTableProps, |
| | | paginationState, |
| | | extraParamState, |
| | | reset, |
| | | } = useTable( |
| | | async ({ pageIndex, pageSize }, extraParamState) => { |
| | | try { |
| | | let params: API.GetFlexEnterpriseInput = { |
| | | pageModel: { |
| | | rows: pageSize, |
| | | page: pageIndex, |
| | | orderInput: extraParamState.orderInput, |
| | | }, |
| | | searchWord: extraParamState.searchWord, |
| | | }; |
| | | |
| | | let res = await flexEnterpriseServices.getFlexEnterpriseList(params); |
| | | return res; |
| | | } catch (error) { |
| | | console.log('error: ', error); |
| | | } |
| | | }, |
| | | { |
| | | defaultExtraParams: { |
| | | searchWord: '', |
| | | orderInput: [{ property: 'id', order: OrderInputType.Desc }], |
| | | }, |
| | | queryKey: ['flexEnterpriseServices/getFlexEnterpriseList'], |
| | | columnsRenderProps: {}, |
| | | } |
| | | ); |
| | | |
| | | function handleDownloadTemplate() { |
| | | downloadFileByUrl('', '电子回单'); |
| | | } |
| | | |
| | | onMounted(() => { |
| | | getList(); |
| | | }); |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | @use '@/style/common.scss' as *; |
| | | |
| | | .step-wrapper { |
| | | margin: 0 auto; |
| | | padding: 24px 0; |
| | | } |
| | | </style> |
| | | <style lang="scss"> |
| | | .text-over-tooltip-content { |
| | | max-width: 600px; |
| | | word-break: break-all; |
| | | } |
| | | </style> |
| | |
| | | </template> |
| | | <template #btn> |
| | | <el-button type="primary" link @click="handleDownloadTemplate()">结算单模板</el-button> |
| | | <el-button type="primary" @click="handleDownloadTemplate()">上传结算单</el-button> |
| | | <BlFileUpload |
| | | :limitFileSize="10" |
| | | accept="xls,xlsx" |
| | | :showTip="false" |
| | | :show-file-list="false" |
| | | :on-success="handleUploadSuccess" |
| | | style="margin-right: 10px; margin-left: 10px" |
| | | > |
| | | <template #default> |
| | | <el-button type="primary">上传结算单</el-button> |
| | | </template> |
| | | </BlFileUpload> |
| | | <el-button type="primary" @click="handleDownloadTemplate()">导出</el-button> |
| | | </template> |
| | | </ProTableQueryFilterBar> |
| | |
| | | FieldRadio, |
| | | defineOperationBtns, |
| | | BlFileUpload, |
| | | UploadUserFile, |
| | | } from '@bole-core/components'; |
| | | import { ServiceChargeManageColumns } from './constants'; |
| | | import { FlexEnterpriseSettingStatus, Gender } from '@/constants'; |
| | |
| | | import { downloadFileByUrl } from '@/utils'; |
| | | |
| | | defineOptions({ |
| | | name: 'ServiceChargeManage', |
| | | name: 'ServiceChargeManageList', |
| | | }); |
| | | |
| | | const operationBtns = defineOperationBtns([ |
| | |
| | | function goSettle(row) { |
| | | router.push({ |
| | | name: 'ServiceChargeSettle', |
| | | query: { |
| | | params: { |
| | | id: row.id, |
| | | }, |
| | | }); |
| | |
| | | function goDetail(row) { |
| | | router.push({ |
| | | name: 'ServiceChargeDetail', |
| | | query: { |
| | | params: { |
| | | id: row.id, |
| | | }, |
| | | }); |
| | | } |
| | | |
| | | function handleUploadSuccess(response: UploadUserFile) {} |
| | | |
| | | function handleUpload(val, row) { |
| | | console.log('val: ', val); |
| | | } |
| | |
| | | <template> |
| | | <LoadingLayout :loading="isLoading"> |
| | | <AppScrollContainer> |
| | | <ChunkCell title="付款方信息"> </ChunkCell> |
| | | <ChunkCell title="收款方信息"> </ChunkCell> |
| | | <ChunkCell title="转账信息"> </ChunkCell> |
| | | <ChunkCell title="付款方信息"> |
| | | <ProForm :model="form" ref="formRef" label-width="120px"> |
| | | <ProFormItemV2 |
| | | label="付款账户:" |
| | | prop="name" |
| | | :check-rules="[{ message: '请选择付款账户' }]" |
| | | > |
| | | <ProFormSelect |
| | | v-model="form.name" |
| | | :valueEnum="[]" |
| | | placeholder="请选择您的付款方式" |
| | | clearable |
| | | > |
| | | </ProFormSelect> |
| | | </ProFormItemV2> |
| | | <ProFormMixinsItemContainer> |
| | | <ProFormItemV2 |
| | | label="付款金额:" |
| | | prop="money" |
| | | :check-rules="[{ message: '请输入付款金额' }]" |
| | | mode="read" |
| | | > |
| | | <ProFormInputNumber v-model="form.money"> </ProFormInputNumber> |
| | | </ProFormItemV2> |
| | | </ProFormMixinsItemContainer> |
| | | </ProForm> |
| | | </ChunkCell> |
| | | <ChunkCell title="收款方信息"> |
| | | <ProForm :model="form" ref="formRef" label-width="120px"> |
| | | <ProFormItemV2 |
| | | label="收款方账户:" |
| | | prop="name" |
| | | :check-rules="[{ message: '请选择收款方账户' }]" |
| | | > |
| | | <ProFormRadio |
| | | v-model="form.name" |
| | | :valueEnum="[]" |
| | | placeholder="请选择收款方账户" |
| | | clearable |
| | | > |
| | | </ProFormRadio> |
| | | </ProFormItemV2> |
| | | <ProFormMixinsItemContainer> |
| | | <ProFormItemV2 |
| | | label="收款方户名:" |
| | | prop="name" |
| | | :check-rules="[{ message: '请输入收款方户名' }]" |
| | | mode="read" |
| | | > |
| | | <ProFormText v-model="form.name"> </ProFormText> |
| | | </ProFormItemV2> |
| | | <ProFormItemV2 |
| | | label="收款方账号:" |
| | | prop="name" |
| | | :check-rules="[{ message: '请输入收款方账号' }]" |
| | | mode="read" |
| | | > |
| | | <ProFormText v-model="form.name"> </ProFormText> |
| | | </ProFormItemV2> |
| | | <ProFormItemV2 |
| | | label="收款方开户行:" |
| | | prop="name" |
| | | :check-rules="[{ message: '请输入收款开户行' }]" |
| | | mode="read" |
| | | > |
| | | <ProFormText v-model="form.name"> </ProFormText> |
| | | </ProFormItemV2> |
| | | </ProFormMixinsItemContainer> |
| | | </ProForm> |
| | | </ChunkCell> |
| | | <ChunkCell title="转账信息"> |
| | | <ProForm :model="form" ref="formRef" label-width="120px"> |
| | | <ProFormMixinsItemContainer> |
| | | <ProFormItemV2 label="交易用途:" prop="name" mode="read"> |
| | | <ProFormText v-model="form.name"> </ProFormText> |
| | | </ProFormItemV2> |
| | | </ProFormMixinsItemContainer> |
| | | <ProFormItemV2 label="附言:" prop="name"> |
| | | <ProFormText v-model="form.name" :maxlength="30" show-word-limit> </ProFormText> |
| | | </ProFormItemV2> |
| | | <ProFormItemV2 label="备注:" prop="name"> |
| | | <ProFormText v-model="form.name" :maxlength="30" show-word-limit> </ProFormText> |
| | | </ProFormItemV2> |
| | | <div class="chuck-add-or-edit-actions"> |
| | | <el-button class="chuck-add-or-edit-actions" @click="handleBack()">取消</el-button> |
| | | <el-button class="chuck-add-or-edit-actions" type="primary" @click="handleSubmit" |
| | | >提交审核</el-button |
| | | > |
| | | </div> |
| | | </ProForm> |
| | | </ChunkCell> |
| | | </AppScrollContainer> |
| | | </LoadingLayout> |
| | | </template> |
| | | <script setup lang="ts"> |
| | | import { LoadingLayout, AppScrollContainer, ChunkCell } from '@bole-core/components'; |
| | | import { |
| | | LoadingLayout, |
| | | AppScrollContainer, |
| | | ChunkCell, |
| | | ProForm, |
| | | ProFormItemV2, |
| | | ProFormText, |
| | | ProFormSelect, |
| | | ProFormInputNumber, |
| | | ProFormRadio, |
| | | ProFormMixinsItemContainer, |
| | | } from '@bole-core/components'; |
| | | import {} from '@/constants'; |
| | | import { useQuery } from '@tanstack/vue-query'; |
| | | import { useRouteView } from '@/hooks'; |
| | | import { FormInstance } from 'element-plus'; |
| | | import { validateFormList } from '@/utils'; |
| | | |
| | | defineOptions({ |
| | | name: 'ServiceChargeSettle', |
| | |
| | | const route = useRoute(); |
| | | const id = (route.params.id as string) ?? ''; |
| | | |
| | | const state = reactive({ |
| | | loading: true, |
| | | const { closeViewPush } = useRouteView(); |
| | | |
| | | const form = reactive({ |
| | | name: '', |
| | | money: 0, |
| | | }); |
| | | |
| | | const { isLoading } = useQuery({ |
| | |
| | | } |
| | | ); |
| | | }, |
| | | placeholderData: () => ({} as API.GetFlexTaskDetailForBackOutput), |
| | | onSuccess(data) {}, |
| | | enabled: !!id, |
| | | }); |
| | | |
| | | function handleBack() { |
| | | closeViewPush(route, { |
| | | name: 'ServiceChargeManageList', |
| | | }); |
| | | } |
| | | const formRef = ref<FormInstance>(); |
| | | async function handleSubmit() { |
| | | try { |
| | | const valid = await validateFormList([formRef.value]); |
| | | if (valid) { |
| | | // |
| | | } |
| | | } catch (error) {} |
| | | } |
| | | |
| | | onMounted(() => {}); |
| | | </script> |
| | | |
| | |
| | | id: '1', |
| | | enCode: 'name', |
| | | name: '所属任务', |
| | | width: 180, |
| | | }, |
| | | { |
| | | id: '2', |
| | | enCode: 'name', |
| | | name: '发放方式', |
| | | width: 180, |
| | | }, |
| | | { |
| | | id: '3', |
| | |
| | | id: '5', |
| | | enCode: 'name', |
| | | name: '结算单状态', |
| | | width: 140, |
| | | }, |
| | | { |
| | | id: '6', |
| | | enCode: 'name', |
| | | name: '结算单名称', |
| | | width: 140, |
| | | }, |
| | | { |
| | | id: '7', |
| | | enCode: 'signNum', |
| | | name: '上传时间', |
| | | width: 140, |
| | | }, |
| | | { |
| | | id: '8', |
| | | enCode: 'name', |
| | | name: '结算状态', |
| | | width: 140, |
| | | }, |
| | | { |
| | | id: '9', |
| | | enCode: 'name', |
| | | name: '实发金额', |
| | | width: 160, |
| | | }, |
| | | { |
| | | id: '10', |
| | | enCode: 'name', |
| | | name: '结算金额', |
| | | width: 160, |
| | | }, |
| | | { |
| | | id: '11', |
| | | enCode: 'name', |
| | | name: '失败金额', |
| | | width: 160, |
| | | }, |
| | | { |
| | | id: '12', |
| | | enCode: 'name', |
| | | name: '退款金额', |
| | | width: 160, |
| | | }, |
| | | { |
| | | id: '13', |
| | | enCode: 'name', |
| | | name: '结算时间', |
| | | width: 160, |
| | | }, |
| | | { |
| | | id: '14', |
| | | enCode: 'name', |
| | | name: '备注', |
| | | width: 160, |
| | | }, |
| | | ]); |
| | | |
| | | export const SettlementListColumns = defineColumns([ |
| | | { |
| | | id: '1', |
| | | enCode: 'name', |
| | | name: '姓名', |
| | | }, |
| | | { |
| | | id: '2', |
| | | enCode: 'name', |
| | | name: '身份证号', |
| | | }, |
| | | { |
| | | id: '3', |
| | | enCode: 'name', |
| | | name: '手机号', |
| | | }, |
| | | { |
| | | id: '4', |
| | | enCode: 'name', |
| | | name: '所属银行', |
| | | }, |
| | | { |
| | | id: '5', |
| | | enCode: 'name', |
| | | name: '所属支行', |
| | | }, |
| | | { |
| | | id: '6', |
| | | enCode: 'name', |
| | | name: '收款帐户', |
| | | }, |
| | | { |
| | | id: '7', |
| | | enCode: 'signNum', |
| | | name: '结算金额', |
| | | }, |
| | | { |
| | | id: '8', |
| | | enCode: 'name', |
| | | name: '实发金额', |
| | | }, |
| | | { |
| | | id: '9', |
| | | enCode: 'name', |
| | | name: '状态', |
| | | }, |
| | | { |
| | | id: '10', |
| | | enCode: 'name', |
| | | name: '结算流水号', |
| | | }, |
| | | { |
| | | id: '11', |
| | | enCode: 'name', |
| | | name: '结算时间', |
| | | }, |
| | | ]); |