zhengyiming
2 天以前 f51b20beaeaaade5e3336b5eff749066c6a34b03
src/views/FlexJobManage/FlexJobManage.vue
@@ -5,11 +5,8 @@
        <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()"
@@ -17,43 +14,38 @@
          </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="起始日期"
@@ -65,7 +57,7 @@
          </QueryFilterItem>
          <QueryFilterItem>
            <FieldDatePicker
              v-model="extraParamState.flexEnterpriseSettingStatus"
              v-model="extraParamState.signContractTime"
              type="daterange"
              range-separator="~"
              start-placeholder="起始日期"
@@ -100,6 +92,9 @@
        :operationBtns="operationBtns"
        show-column-check
        ref="proTable"
        :table-props="{
          rowKey: 'id',
        }"
      >
      </ProTableV2>
    </AppContainer>
@@ -108,6 +103,7 @@
      v-bind="dialogBatchImportProps"
      @onDownloadTemplate="handleDownloadTemplate"
    />
    <SendShotMessageDialog v-bind="dialogShotMessageProps" />
  </LoadingLayout>
</template>
@@ -128,13 +124,15 @@
  useFormDialog,
  UploadUserFile,
} from '@bole-core/components';
import * as flexEnterpriseServices from '@/services/api/FlexEnterprise';
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',
@@ -168,7 +166,11 @@
      onClick: (role) => handleSign(role),
    },
    extraProps: {
      hide: (row) => false,
      hide: (row: API.GetEnterpriseEmployeesQueryResultItem) =>
        !(
          row.userSignContractStatus === EnumTaskUserSignContractStatus.Pass &&
          row.enterpriseSignContractStatus === EnumTaskUserSignContractStatus.Wait
        ),
    },
  },
  {
@@ -180,7 +182,11 @@
      onClick: (role) => handleUnSign(role),
    },
    extraProps: {
      hide: (row) => false,
      hide: (row: API.GetEnterpriseEmployeesQueryResultItem) =>
        !(
          row.userSignContractStatus === EnumTaskUserSignContractStatus.Pass &&
          row.enterpriseSignContractStatus === EnumTaskUserSignContractStatus.Pass
        ),
    },
  },
  {
@@ -217,17 +223,30 @@
} = 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;
@@ -238,11 +257,30 @@
  {
    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' },
    },
  }
);
@@ -270,42 +308,41 @@
  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) {
  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,
    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,
    isDetail: isDetail,
  });
async function openDialog(row: API.GetEnterpriseEmployeesQueryResultItem, isDetail = false) {
  try {
    let detail = await enterpriseEmployeeServices.getEnterpriseEmployee({ id: row.id });
    handleStaffInfoEdit({
      id: row.id,
      name: row.name,
      identity: row.identity,
      contactPhoneNumber: row.contactPhoneNumber,
      gender: detail.gender,
      age: detail.age ?? null,
      idFrontUrl: convertApi2FormUrlOnlyOne(detail.identityImg),
      idBackUrl: convertApi2FormUrlOnlyOne(detail.identityBackImg),
      contractUrl: convertApi2FormUrlOnlyOne(detail.contractUrl, {
        fileName: detail.contractUrl ? detail.contractUrl.split('/').pop() : '合同',
      }),
      regiterTime: detail.applyTime ?? '',
      userRealTime: row.userRealTime ?? '',
      userSignContractTime: row.userSignContractTime ?? '',
      isDetail: isDetail,
    });
  } catch (error) {}
}
async function handleAddOrEdit() {}
@@ -327,22 +364,54 @@
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) {}