| | |
| | | <template #query> |
| | | <QueryFilterItem tip-content="录用状态"> |
| | | <FieldRadio |
| | | v-model="extraParamState.flexEnterpriseSettingStatus" |
| | | :value-enum="[ |
| | | { label: '已录用', value: 1 }, |
| | | { label: '未录用', value: 0 }, |
| | | ]" |
| | | v-model="extraParamState.hireStatus" |
| | | :value-enum="EnumTaskUserHireStatusText" |
| | | buttonStyle |
| | | showAllBtn |
| | | @change="getList()" |
| | |
| | | </QueryFilterItem> |
| | | <QueryFilterItem tip-content="实名状态"> |
| | | <FieldRadio |
| | | v-model="extraParamState.flexEnterpriseSettingStatus" |
| | | v-model="extraParamState.isReal" |
| | | :value-enum="[ |
| | | { label: '已实名', value: 1 }, |
| | | { label: '未实名', value: 0 }, |
| | | { label: '已实名', value: true }, |
| | | { label: '未实名', value: false }, |
| | | ]" |
| | | buttonStyle |
| | | showAllBtn |
| | | :all-btn-value="null" |
| | | @change="getList()" |
| | | /> |
| | | </QueryFilterItem> |
| | | <QueryFilterItem tip-content="灵工签约状态"> |
| | | <FieldSelect |
| | | v-model="extraParamState.flexEnterpriseSettingStatus" |
| | | :value-enum="[ |
| | | { label: '已实名', value: 1 }, |
| | | { label: '未实名', value: 0 }, |
| | | ]" |
| | | buttonStyle |
| | | showAllBtn |
| | | v-model="extraParamState.userSignContractStatus" |
| | | :value-enum="EnumTaskUserSignContractStatusText" |
| | | placeholder="请选择灵工签约状态" |
| | | clearable |
| | | @change="getList()" |
| | | /> |
| | | </QueryFilterItem> |
| | | <QueryFilterItem tip-content="企业签约状态"> |
| | | <FieldSelect |
| | | v-model="extraParamState.flexEnterpriseSettingStatus" |
| | | :value-enum="[ |
| | | { label: '已实名', value: 1 }, |
| | | { label: '未实名', value: 0 }, |
| | | ]" |
| | | buttonStyle |
| | | showAllBtn |
| | | v-model="extraParamState.enterpriseSignContractStatus" |
| | | :value-enum="EnumTaskUserSignContractStatusText" |
| | | placeholder="请选择企业签约状态" |
| | | clearable |
| | | @change="getList()" |
| | | /> |
| | | </QueryFilterItem> |
| | | <QueryFilterItem> |
| | | <FieldDatePicker |
| | | v-model="extraParamState.flexEnterpriseSettingStatus" |
| | | v-model="extraParamState.createdTime" |
| | | type="daterange" |
| | | range-separator="~" |
| | | start-placeholder="起始日期" |
| | |
| | | </QueryFilterItem> |
| | | <QueryFilterItem> |
| | | <FieldDatePicker |
| | | v-model="extraParamState.flexEnterpriseSettingStatus" |
| | | v-model="extraParamState.signContractTime" |
| | | type="daterange" |
| | | range-separator="~" |
| | | start-placeholder="起始日期" |
| | |
| | | :operationBtns="operationBtns" |
| | | show-column-check |
| | | ref="proTable" |
| | | :table-props="{ |
| | | rowKey: 'id', |
| | | }" |
| | | > |
| | | </ProTableV2> |
| | | </AppContainer> |
| | |
| | | v-bind="dialogBatchImportProps" |
| | | @onDownloadTemplate="handleDownloadTemplate" |
| | | /> |
| | | <SendShotMessageDialog v-bind="dialogShotMessageProps" /> |
| | | </LoadingLayout> |
| | | </template> |
| | | |
| | |
| | | UploadUserFile, |
| | | } from '@bole-core/components'; |
| | | import { FlexJobManageColumns } from './constants'; |
| | | import { FlexEnterpriseSettingStatus, Gender } from '@/constants'; |
| | | import { OrderInputType, Message } from '@bole-core/core'; |
| | | import { convertApi2FormUrlOnlyOne, downloadFileByUrl } from '@/utils'; |
| | | import { EnumTaskUserHireStatusText, EnumTaskUserSignContractStatusText } from '@/constants'; |
| | | import { Message } from '@bole-core/core'; |
| | | import { convertApi2FormUrlOnlyOne, downloadFileByUrl, format } from '@/utils'; |
| | | import StaffInfoDialog from './components/StaffInfoDialog.vue'; |
| | | import BatchImportDialog from './components/BatchImportDialog.vue'; |
| | | import SendShotMessageDialog from './components/SendShotMessageDialog.vue'; |
| | | import * as enterpriseEmployeeServices from '@/services/api/enterpriseEmployee'; |
| | | import { ModelValueType } from 'element-plus'; |
| | | |
| | | defineOptions({ |
| | | name: 'EnterpriseManageList', |
| | |
| | | onClick: (role) => handleSign(role), |
| | | }, |
| | | extraProps: { |
| | | hide: (row) => false, |
| | | hide: (row: API.GetEnterpriseEmployeesQueryResultItem) => |
| | | !( |
| | | row.userSignContractStatus === EnumTaskUserSignContractStatus.Pass && |
| | | row.enterpriseSignContractStatus === EnumTaskUserSignContractStatus.Wait |
| | | ), |
| | | }, |
| | | }, |
| | | { |
| | |
| | | onClick: (role) => handleUnSign(role), |
| | | }, |
| | | extraProps: { |
| | | hide: (row) => false, |
| | | hide: (row: API.GetEnterpriseEmployeesQueryResultItem) => |
| | | !( |
| | | row.userSignContractStatus === EnumTaskUserSignContractStatus.Pass && |
| | | row.enterpriseSignContractStatus === EnumTaskUserSignContractStatus.Pass |
| | | ), |
| | | }, |
| | | }, |
| | | { |
| | |
| | | } = useTable( |
| | | async ({ pageIndex, pageSize }, extraParamState) => { |
| | | try { |
| | | let params: API.GetFlexEnterpriseInput = { |
| | | let params: API.GetEnterpriseEmployeesQuery = { |
| | | pageModel: { |
| | | rows: pageSize, |
| | | page: pageIndex, |
| | | orderInput: extraParamState.orderInput, |
| | | }, |
| | | flexEnterpriseSettingStatus: extraParamState.flexEnterpriseSettingStatus, |
| | | searchWord: extraParamState.searchWord, |
| | | keywords: extraParamState.searchWord, |
| | | createdTimeStart: format(extraParamState.createdTime?.[0] ?? '', 'YYYY-MM-DD 00:00:00'), |
| | | createdTimeEnd: format(extraParamState.createdTime?.[1] ?? '', 'YYYY-MM-DD 23:59:59'), |
| | | signContractTimeStart: format( |
| | | extraParamState.signContractTime?.[0] ?? '', |
| | | 'YYYY-MM-DD 00:00:00' |
| | | ), |
| | | signContractTimeEnd: format( |
| | | extraParamState.signContractTime?.[1] ?? '', |
| | | 'YYYY-MM-DD 23:59:59' |
| | | ), |
| | | hireStatus: extraParamState.hireStatus, |
| | | isReal: extraParamState.isReal, |
| | | userSignContractStatus: extraParamState.userSignContractStatus, |
| | | enterpriseSignContractStatus: extraParamState.enterpriseSignContractStatus, |
| | | }; |
| | | |
| | | let res = await flexEnterpriseServices.getFlexEnterpriseList(params, { |
| | | let res = await enterpriseEmployeeServices.getEnterpriseEmployees(params, { |
| | | showLoading: !state.loading, |
| | | }); |
| | | return res; |
| | |
| | | { |
| | | defaultExtraParams: { |
| | | searchWord: '', |
| | | orderInput: [{ property: 'id', order: OrderInputType.Desc }], |
| | | flexEnterpriseSettingStatus: '' as any as FlexEnterpriseSettingStatus, |
| | | orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }], |
| | | createdTime: [] as unknown as ModelValueType, |
| | | signContractTime: [] as unknown as ModelValueType, |
| | | hireStatus: '' as any as EnumTaskUserHireStatus, |
| | | isReal: null as any as boolean, |
| | | userSignContractStatus: '' as any as EnumTaskUserSignContractStatus, |
| | | enterpriseSignContractStatus: '' as any as EnumTaskUserSignContractStatus, |
| | | }, |
| | | queryKey: ['flexEnterpriseServices/getFlexEnterpriseList'], |
| | | columnsRenderProps: {}, |
| | | queryKey: ['enterpriseEmployeeServices/getEnterpriseEmployees'], |
| | | columnsRenderProps: { |
| | | gender: { type: 'enum', valueEnum: EnumUserGenderTextForPerson }, |
| | | hireStatus: { type: 'enum', valueEnum: EnumTaskUserHireStatusText }, |
| | | userIsReal: { |
| | | formatter: (row: API.GetEnterpriseEmployeesQueryResultItem) => { |
| | | return row.userIsReal ? '已实名' : '未实名'; |
| | | }, |
| | | }, |
| | | userSignContractStatus: { type: 'enum', valueEnum: EnumTaskUserSignContractStatusText }, |
| | | hireTime: { type: 'date' }, |
| | | userRealTime: { type: 'date' }, |
| | | userSignContractTime: { type: 'date' }, |
| | | enterpriseSignContractStatus: { type: 'enum', valueEnum: EnumTaskUserSignContractStatusText }, |
| | | enterpriseSignContractTime: { type: 'date' }, |
| | | }, |
| | | } |
| | | ); |
| | | |
| | |
| | | defaultFormParams: { |
| | | id: '', |
| | | name: '', |
| | | idNumber: '', |
| | | phoneNumber: '', |
| | | genderType: Gender.Male, |
| | | age: 0, |
| | | companyId: '', |
| | | customerId: '', |
| | | identity: '', |
| | | contactPhoneNumber: '', |
| | | gender: EnumUserGender.Male, |
| | | age: null as any as number, |
| | | idFrontUrl: [] as UploadUserFile[], |
| | | idBackUrl: [] as UploadUserFile[], |
| | | contractUrl: [] as UploadUserFile[], |
| | | regiterTime: '', |
| | | realVerifyTime: '', |
| | | signTime: '', |
| | | userRealTime: '', |
| | | userSignContractTime: '', |
| | | isDetail: false, |
| | | }, |
| | | }); |
| | | |
| | | function openDialog(row, isDetail = false) { |
| | | function openDialog(row: API.GetEnterpriseEmployeesQueryResultItem, isDetail = false) { |
| | | handleStaffInfoEdit({ |
| | | id: row.id, |
| | | name: row.name, |
| | | idNumber: row.idNumber, |
| | | phoneNumber: row.phoneNumber, |
| | | genderType: Gender.Male, |
| | | age: row.age ?? 0, |
| | | companyId: row.companyId, |
| | | customerId: row.customerId, |
| | | identity: row.identity, |
| | | contactPhoneNumber: row.contactPhoneNumber, |
| | | gender: row.gender, |
| | | age: row.age ?? null, |
| | | idFrontUrl: convertApi2FormUrlOnlyOne(row.idFrontUrl), |
| | | idBackUrl: convertApi2FormUrlOnlyOne(row.idBackUrl), |
| | | contractUrl: convertApi2FormUrlOnlyOne(row.contractUrl, { |
| | | fileName: row.contractUrl ? row.contractUrl.split('/').pop() : '合同', |
| | | }), |
| | | regiterTime: row.regiterTime, |
| | | realVerifyTime: row.realVerifyTime, |
| | | signTime: row.signTime, |
| | | regiterTime: row.regiterTime ?? '', |
| | | userRealTime: row.userRealTime, |
| | | userSignContractTime: row.userSignContractTime, |
| | | isDetail: isDetail, |
| | | }); |
| | | } |
| | |
| | | |
| | | 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 handleSign(row: API.GetEnterpriseEmployeesQueryResultItem) {} |
| | | function handleBatchSign() {} |
| | | async function handleUnSign(row) { |
| | | async function handleUnSign(row: API.GetEnterpriseEmployeesQueryResultItem) { |
| | | try { |
| | | await Message.tipMessage('确定解约用户?'); |
| | | } catch (error) {} |
| | | } |
| | | |
| | | async function handleDelete(row) { |
| | | async function handleDelete(row: API.GetEnterpriseEmployeesQueryResultItem) { |
| | | try { |
| | | await Message.deleteMessage(); |
| | | } catch (error) {} |