| | |
| | | }, |
| | | }, |
| | | { |
| | | path: '/EmploymentManage', |
| | | redirect: 'noRedirect', |
| | | component: Layout, |
| | | hidden: false, |
| | | alwaysShow: true, |
| | | meta: { |
| | | rank: 10020, |
| | | title: '用人管理', |
| | | rootMenu: true, |
| | | icon: 'home', |
| | | }, |
| | | children: [ |
| | | { |
| | | path: '/TaskManageList', |
| | | name: 'TaskManageList', |
| | | hidden: false, |
| | | alwaysShow: true, |
| | | component: () => import('@/views/EmploymentManage/TaskManageList.vue'), |
| | | meta: { |
| | | rank: 10021, |
| | | title: '任务管理', |
| | | // rootMenu: true, |
| | | icon: 'home', |
| | | }, |
| | | }, |
| | | { |
| | | path: '/AddOrEditEmployment/:id?', |
| | | name: 'AddOrEditEmployment', |
| | | hidden: true, |
| | | alwaysShow: false, |
| | | component: () => import('@/views/EmploymentManage/AddOrEditEmployment.vue'), |
| | | meta: { |
| | | rank: 10022, |
| | | title: '发布编辑人员', |
| | | // rootMenu: true, |
| | | icon: 'home', |
| | | }, |
| | | }, |
| | | { |
| | | path: '/EmploymentManageDetail/:id', |
| | | name: 'EmploymentManageDetail', |
| | | hidden: true, |
| | | alwaysShow: false, |
| | | component: () => import('@/views/EmploymentManage/EmploymentManageDetail.vue'), |
| | | meta: { |
| | | rank: 10023, |
| | | title: '人员管理详情', |
| | | // rootMenu: true, |
| | | icon: 'home', |
| | | }, |
| | | }, |
| | | { |
| | | path: '/EmploymentSignList/:id', |
| | | name: 'EmploymentSignList', |
| | | hidden: true, |
| | | alwaysShow: false, |
| | | component: () => import('@/views/EmploymentManage/EmploymentSignList.vue'), |
| | | meta: { |
| | | rank: 10024, |
| | | title: '报名列表', |
| | | // rootMenu: true, |
| | | icon: 'home', |
| | | }, |
| | | }, |
| | | { |
| | | path: '/EmploymentManageArrange/:id', |
| | | name: 'EmploymentManageArrange', |
| | | hidden: true, |
| | | alwaysShow: false, |
| | | component: () => import('@/views/EmploymentManage/EmploymentManageArrange.vue'), |
| | | meta: { |
| | | rank: 10025, |
| | | title: '人员安排', |
| | | // rootMenu: true, |
| | | icon: 'home', |
| | | }, |
| | | }, |
| | | |
| | | { |
| | | path: '/CheckManage', |
| | | name: 'CheckManage', |
| | | hidden: false, |
| | | alwaysShow: true, |
| | | component: () => import('@/views/EmploymentManage/CheckManage.vue'), |
| | | meta: { |
| | | rank: 10030, |
| | | title: '验收管理', |
| | | // rootMenu: true, |
| | | icon: 'home', |
| | | }, |
| | | }, |
| | | { |
| | | path: '/CheckReceiveTaskDetail/:id', |
| | | name: 'CheckReceiveTaskDetail', |
| | | hidden: true, |
| | | alwaysShow: false, |
| | | component: () => import('@/views/EmploymentManage/CheckReceiveTaskDetail.vue'), |
| | | meta: { |
| | | rank: 10031, |
| | | title: '验收详情', |
| | | // rootMenu: true, |
| | | icon: 'home', |
| | | }, |
| | | }, |
| | | ], |
| | | }, |
| | | { |
| | | path: '/ServiceChargeManage', |
| | | redirect: 'noRedirect', |
| | | component: Layout, |
| | |
| | | </QueryFilterItem> |
| | | </template> |
| | | </ProTableQueryFilterBar> |
| | | <ProTableV2 |
| | | v-bind="proTableProps" |
| | | :columns="CheckManageColumns" |
| | | :operationBtns="operationBtns" |
| | | > |
| | | <ProTableV2 v-bind="proTableProps" :columns="column" :operationBtns="operationBtns"> |
| | | </ProTableV2> |
| | | </AppContainer> |
| | | </LoadingLayout> |
| | |
| | | useTable, |
| | | FieldDatePicker, |
| | | FieldRadio, |
| | | defineOperationBtns, |
| | | useFormDialog, |
| | | } from '@bole-core/components'; |
| | | import { CheckManageColumns } from './constants'; |
| | | import * as taskCheckReceiveServices from '@/services/api/taskCheckReceive'; |
| | | import { ModelValueType } from 'element-plus'; |
| | | import { downloadFileByUrl, format, OrderUtils, setOSSLink } from '@/utils'; |
| | |
| | | name: 'CheckManage', |
| | | }); |
| | | |
| | | const operationBtns = defineOperationBtns([ |
| | | { |
| | | data: { |
| | | enCode: 'detailBtn', |
| | | name: '详情', |
| | | }, |
| | | const operationBtnMap: Record<string, OperationBtnType> = { |
| | | detailBtn: { |
| | | emits: { |
| | | onClick: (role) => goCheckReceiveTaskDetail(role), |
| | | }, |
| | | }, |
| | | { |
| | | data: { |
| | | enCode: 'exportBtn', |
| | | name: '导出', |
| | | }, |
| | | exportBtn: { |
| | | emits: { |
| | | onClick: (role) => handleExport(role), |
| | | }, |
| | |
| | | row.checkReceiveStatus !== EnumTaskCheckReceiveStatus.Completed, |
| | | }, |
| | | }, |
| | | ]); |
| | | }; |
| | | |
| | | const { checkSubModuleItemShow, column, operationBtns } = useAccess({ |
| | | operationBtnMap, |
| | | }); |
| | | |
| | | const router = useRouter(); |
| | | |
| | |
| | | </ProForm> |
| | | </el-card> |
| | | |
| | | <ProTableV2 |
| | | v-bind="proTableProps" |
| | | :columns="CheckReceiveTaskDetailColumns" |
| | | :operationBtns="operationBtns" |
| | | > |
| | | <ProTableV2 v-bind="proTableProps" :columns="column" :operationBtns="operationBtns"> |
| | | </ProTableV2> |
| | | </AppContainer> |
| | | <CheckManageDialog v-bind="dialogProps" /> |
| | |
| | | AppContainer, |
| | | useTable, |
| | | useFormDialog, |
| | | defineOperationBtns, |
| | | ProForm, |
| | | ProFormCol, |
| | | ProFormColItem, |
| | |
| | | import * as taskCheckReceiveServices from '@/services/api/taskCheckReceive'; |
| | | import * as taskServices from '@/services/api/task'; |
| | | import { useQuery } from '@tanstack/vue-query'; |
| | | import { CheckReceiveTaskDetailColumns } from './constants'; |
| | | import { OrderUtils } from '@/utils'; |
| | | import { EnumBillingMethodUnitText, EnumBillingMethod, EnumBillingMethodText } from '@/constants'; |
| | | import dayjs from 'dayjs'; |
| | |
| | | name: 'CheckReceiveTaskDetail', |
| | | }); |
| | | |
| | | const operationBtns = defineOperationBtns([ |
| | | // { |
| | | // data: { |
| | | // enCode: 'exportBtn', |
| | | // name: '验收', |
| | | // }, |
| | | // emits: { |
| | | // onClick: (role) => openDialog(role), |
| | | // }, |
| | | // extraProps: { |
| | | // hide: (row: API.GetCheckReceiveTaskQueryResultItem) => |
| | | // row.checkReceiveStatus === EnumTaskCheckReceiveStatus.Completed || |
| | | // state.checkReceiveMethod === EnumTaskCheckReceiveMethod.CheckIn, |
| | | // }, |
| | | // }, |
| | | { |
| | | data: { |
| | | enCode: 'detailBtn', |
| | | name: '详情', |
| | | }, |
| | | const operationBtnMap: Record<string, OperationBtnType> = { |
| | | detailBtn: { |
| | | emits: { |
| | | onClick: (role) => openDialog(role, true), |
| | | }, |
| | | }, |
| | | ]); |
| | | }; |
| | | |
| | | const { checkSubModuleItemShow, column, operationBtns } = useAccess({ |
| | | operationBtnMap, |
| | | }); |
| | | |
| | | const route = useRoute(); |
| | | const id = (route.params.id as string) ?? ''; |
| | |
| | | </QueryFilterItem> |
| | | </template> |
| | | </ProTableQueryFilterBar> |
| | | <ProTableV2 |
| | | v-bind="proTableProps" |
| | | :columns="EmploymentArrangeColumns" |
| | | :operationBtns="operationBtns" |
| | | > |
| | | <ProTableV2 v-bind="proTableProps" :columns="column" :operationBtns="operationBtns"> |
| | | </ProTableV2> |
| | | </AppContainer> |
| | | </LoadingLayout> |
| | |
| | | useTable, |
| | | FieldDatePicker, |
| | | FieldRadio, |
| | | defineOperationBtns, |
| | | } from '@bole-core/components'; |
| | | import { EmploymentArrangeColumns } from './constants'; |
| | | import { Message } from '@bole-core/core'; |
| | | import * as taskUserServices from '@/services/api/taskUser'; |
| | | import { |
| | |
| | | name: 'EmploymentManageArrange', |
| | | }); |
| | | |
| | | const operationBtns = defineOperationBtns([ |
| | | { |
| | | data: { |
| | | enCode: 'arrangeBtn', |
| | | name: '安排', |
| | | }, |
| | | const operationBtnMap: Record<string, OperationBtnType> = { |
| | | arrangeBtn: { |
| | | emits: { |
| | | onClick: (role) => handleArrange(role), |
| | | }, |
| | |
| | | row.arrangeStatus === EnumTaskUserArrangeStatus.Complete, |
| | | }, |
| | | }, |
| | | ]); |
| | | }; |
| | | |
| | | const { checkSubModuleItemShow, column, operationBtns } = useAccess({ |
| | | operationBtnMap, |
| | | }); |
| | | |
| | | const router = useRouter(); |
| | | const route = useRoute(); |
| | |
| | | </QueryFilterItem> |
| | | </template> |
| | | </ProTableQueryFilterBar> |
| | | <ProTableV2 |
| | | v-bind="proTableProps" |
| | | :columns="EmploymentSignColumns" |
| | | :operationBtns="operationBtns" |
| | | > |
| | | <ProTableV2 v-bind="proTableProps" :columns="column" :operationBtns="operationBtns"> |
| | | </ProTableV2> |
| | | </AppContainer> |
| | | <StaffInfoDialog v-bind="dialogStaffInfoProps" /> |
| | |
| | | QueryFilterItem, |
| | | useTable, |
| | | FieldRadio, |
| | | defineOperationBtns, |
| | | useFormDialog, |
| | | UploadUserFile, |
| | | } from '@bole-core/components'; |
| | | import { EmploymentSignColumns } from './constants/columns'; |
| | | import { Message } from '@bole-core/core'; |
| | | import { EnumUserGender, EnumTaskUserHireStatusText } from '@/constants'; |
| | | import StaffInfoDialog from '@/views/FlexJobManage/components/StaffInfoDialog.vue'; |
| | |
| | | name: 'EmploymentSignList', |
| | | }); |
| | | |
| | | const operationBtns = defineOperationBtns([ |
| | | { |
| | | data: { |
| | | enCode: 'detailBtn', |
| | | name: '详情', |
| | | }, |
| | | const operationBtnMap: Record<string, OperationBtnType> = { |
| | | detailBtn: { |
| | | emits: { |
| | | onClick: (role) => openDialog(role), |
| | | }, |
| | | }, |
| | | { |
| | | data: { |
| | | enCode: 'recruitBtn', |
| | | name: '录用', |
| | | }, |
| | | recruitBtn: { |
| | | emits: { |
| | | onClick: (role) => setTaskUserHire(role, EnumTaskUserHireStatus.Pass), |
| | | }, |
| | |
| | | row.hireStatus === EnumTaskUserHireStatus.Pass, |
| | | }, |
| | | }, |
| | | { |
| | | data: { |
| | | enCode: 'refuseBtn', |
| | | name: '谢绝', |
| | | }, |
| | | refuseBtn: { |
| | | emits: { |
| | | onClick: (role) => setTaskUserHire(role, EnumTaskUserHireStatus.Refuse), |
| | | }, |
| | |
| | | row.hireStatus !== EnumTaskUserHireStatus.Wait, |
| | | }, |
| | | }, |
| | | ]); |
| | | }; |
| | | |
| | | const { checkSubModuleItemShow, column, operationBtns } = useAccess({ |
| | | operationBtnMap, |
| | | }); |
| | | |
| | | const router = useRouter(); |
| | | const route = useRoute(); |
| | |
| | | </QueryFilterItem> |
| | | </template> |
| | | <template #btn> |
| | | <el-button @click="goAddOrEdit()" type="primary">发布</el-button> |
| | | <el-button |
| | | v-if="checkSubModuleItemShow('pageButton', 'addBtn')" |
| | | @click="goAddOrEdit()" |
| | | type="primary" |
| | | >发布</el-button |
| | | > |
| | | </template> |
| | | </ProTableQueryFilterBar> |
| | | <ProTableV2 |
| | | v-bind="proTableProps" |
| | | :columns="EmploymentManageColumns" |
| | | :operationBtns="operationBtns" |
| | | > |
| | | <ProTableV2 v-bind="proTableProps" :columns="column" :operationBtns="operationBtns"> |
| | | <template #userCount="{ row }"> |
| | | <el-button link type="primary" @click="goSignList(row)">{{ |
| | | row.userCount || 0 |
| | |
| | | }); |
| | | |
| | | const operationBtnMap: Record<string, OperationBtnType> = { |
| | | // editBtn: { |
| | | // emits: { |
| | | // onClick: (role) => goAddOrEdit(role), |
| | | // }, |
| | | // extraProps: { |
| | | // hide: (row: API.GetTaskInfosQueryResultItem) => row.status === EnumTaskStatus.Complete, |
| | | // }, |
| | | // }, |
| | | detailBtn: { |
| | | emits: { |
| | | onClick: (row: API.GetTaskInfosQueryResultItem) => goDetail(row), |
| | | }, |
| | | }, |
| | | // publishBtn: { |
| | | // emits: { |
| | | // onClick: (row: API.GetTaskInfosQueryResultItem) => |
| | | // setTaskInfoReleaseStatus(row, EnumTaskReleaseStatus.InProcess), |
| | | // }, |
| | | // extraProps: { |
| | | // hide: (row: API.GetTaskInfosQueryResultItem) => |
| | | // row.releaseStatus === EnumTaskReleaseStatus.InProcess, |
| | | // }, |
| | | // }, |
| | | // unPublishBtn: { |
| | | // emits: { |
| | | // onClick: (row: API.GetTaskInfosQueryResultItem) => |
| | | // setTaskInfoReleaseStatus(row, EnumTaskReleaseStatus.Stopped), |
| | | // }, |
| | | // extraProps: { |
| | | // hide: (row: API.GetTaskInfosQueryResultItem) => |
| | | // row.releaseStatus === EnumTaskReleaseStatus.Stopped, |
| | | // }, |
| | | // }, |
| | | }; |
| | | |
| | | const operationBtns = defineOperationBtns([ |
| | | { |
| | | data: { |
| | | enCode: 'editBtn', |
| | | name: '编辑', |
| | | }, |
| | | editBtn: { |
| | | emits: { |
| | | onClick: (role) => goAddOrEdit(role), |
| | | }, |
| | |
| | | hide: (row: API.GetTaskInfosQueryResultItem) => row.status === EnumTaskStatus.Complete, |
| | | }, |
| | | }, |
| | | { |
| | | data: { |
| | | enCode: 'detailBtn', |
| | | name: '详情', |
| | | }, |
| | | detailBtn: { |
| | | emits: { |
| | | onClick: (row: API.GetTaskInfosQueryResultItem) => goDetail(row), |
| | | }, |
| | | }, |
| | | { |
| | | data: { |
| | | enCode: 'publishBtn', |
| | | name: '发布', |
| | | }, |
| | | publishBtn: { |
| | | emits: { |
| | | onClick: (row: API.GetTaskInfosQueryResultItem) => |
| | | setTaskInfoReleaseStatus(row, EnumTaskReleaseStatus.InProcess), |
| | |
| | | row.releaseStatus === EnumTaskReleaseStatus.InProcess, |
| | | }, |
| | | }, |
| | | { |
| | | data: { |
| | | enCode: 'unPublishBtn', |
| | | name: '停止发布', |
| | | }, |
| | | unPublishBtn: { |
| | | emits: { |
| | | onClick: (row: API.GetTaskInfosQueryResultItem) => |
| | | setTaskInfoReleaseStatus(row, EnumTaskReleaseStatus.Stopped), |
| | |
| | | row.releaseStatus === EnumTaskReleaseStatus.Stopped, |
| | | }, |
| | | }, |
| | | { |
| | | data: { |
| | | enCode: 'arrangeBtn', |
| | | name: '安排', |
| | | }, |
| | | arrangeBtn: { |
| | | emits: { |
| | | onClick: (row: API.GetTaskInfosQueryResultItem) => handleArrange(row), |
| | | }, |
| | |
| | | row.releaseStatus === EnumTaskReleaseStatus.Stopped, |
| | | }, |
| | | }, |
| | | ]); |
| | | }; |
| | | |
| | | const { checkSubModuleItemShow, column, operationBtns } = useAccess({ |
| | | operationBtnMap, |
| | | }); |
| | | |
| | | const router = useRouter(); |
| | | |