wupengfei
2025-12-03 7ea7cd0ce3faafb0ab881935d88bef7928fc2ca7
feat: 页面
8个文件已删除
8个文件已修改
1个文件已添加
951 ■■■■ 已修改文件
src/constants/apiEnum.ts 32 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/services/api/auth.ts 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/services/api/task.ts 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/services/api/typings.d.ts 89 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/CustomerManage/AddOrEditCustomer.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/CustomerManage/CustomerManage.vue 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/CustomerManage/constants/customerManage.ts 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/CustomerManage/constants/index.ts 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/DataReport/DistributionDetailReport.vue 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/EmploymentManage/TaskArrange.vue 292 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/EmploymentManage/TaskManageList.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/EmploymentManage/constants/columns.ts 276 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/EmploymentManage/constants/index.ts 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/FlexJobManage/constants/columns.ts 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/FlexJobManage/constants/index.ts 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/UserManage/constants/columns.ts 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/UserManage/constants/index.ts 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/constants/apiEnum.ts
@@ -429,36 +429,38 @@
  CommonServerSmsUtils = 10,
  /**配置 */
  CommonServerSettings = 11,
  /**已读 */
  CommonServerReadRecord = 12,
  /**用户认证 */
  UserServerAuth = 12,
  UserServerAuth = 13,
  /**用户菜单 */
  UserServerMenu = 13,
  UserServerMenu = 14,
  /**用户资源 */
  UserServerResource = 14,
  UserServerResource = 15,
  /**用户角色 */
  UserServerRole = 15,
  UserServerRole = 16,
  /**用户信息 */
  UserServerUser = 16,
  UserServerUser = 17,
  /**用户钱包 */
  UserServerUserWallet = 17,
  UserServerUserWallet = 18,
  /**电子签 */
  UserServerElectronSign = 18,
  UserServerElectronSign = 19,
  /**用户简历 */
  UserServerUserResume = 19,
  UserServerUserResume = 20,
  /**企业信息 */
  UserServerEnterprise = 20,
  UserServerEnterprise = 21,
  /**企业钱包 */
  UserServerEnterpriseWallet = 21,
  UserServerEnterpriseWallet = 22,
  /**企业合作钱包 */
  UserServerEnterpriseCooperationWallet = 22,
  UserServerEnterpriseCooperationWallet = 23,
  /**灵工信息 */
  UserServerEnterpriseEmployee = 23,
  UserServerEnterpriseEmployee = 24,
  /**电子签 */
  ElectronSignServerElectronSign = 24,
  ElectronSignServerElectronSign = 25,
  /**短信 */
  ToolServerSms = 25,
  ToolServerSms = 26,
  /**小程序 */
  ToolServerWxmp = 26,
  ToolServerWxmp = 27,
}
/** 资源请求方式 */
src/services/api/auth.ts
@@ -169,6 +169,21 @@
  });
}
/** 解绑微信小程序快捷登录 POST /api/user/auth/unBindUserWxmpId */
export async function unBindUserWxmpId(
  body: API.UnBindUserWxmpIdCommand,
  options?: API.RequestConfig
) {
  return request<string>('/api/user/auth/unBindUserWxmpId', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json-patch+json',
    },
    data: body,
    ...(options || {}),
  });
}
/** 发送更换手机号短信 POST /api/user/auth/updatePhoneNumberVerifyCode */
export async function updatePhoneNumberVerifyCode(
  body: API.UpdatePhoneNumberVerifyCodeCommand,
src/services/api/task.ts
@@ -281,6 +281,24 @@
  });
}
/** 查询发放明细报表分页列表数据 POST /api/flexjob/task/getTaskSettlementReleaseReports */
export async function getTaskSettlementReleaseReports(
  body: API.GetTaskSettlementReleaseReportsQuery,
  options?: API.RequestConfig
) {
  return request<API.GetTaskSettlementReleaseReportsQueryResult>(
    '/api/flexjob/task/getTaskSettlementReleaseReports',
    {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json-patch+json',
      },
      data: body,
      ...(options || {}),
    }
  );
}
/** 导入结算名单 POST /api/flexjob/task/importTaskSettlementOrderRosters */
export async function importTaskSettlementOrderRosters(
  body: API.ImportTaskSettlementOrderRostersCommand,
src/services/api/typings.d.ts
@@ -1172,36 +1172,38 @@
    CommonServerSmsUtils = 10,
    /**配置 */
    CommonServerSettings = 11,
    /**已读 */
    CommonServerReadRecord = 12,
    /**用户认证 */
    UserServerAuth = 12,
    UserServerAuth = 13,
    /**用户菜单 */
    UserServerMenu = 13,
    UserServerMenu = 14,
    /**用户资源 */
    UserServerResource = 14,
    UserServerResource = 15,
    /**用户角色 */
    UserServerRole = 15,
    UserServerRole = 16,
    /**用户信息 */
    UserServerUser = 16,
    UserServerUser = 17,
    /**用户钱包 */
    UserServerUserWallet = 17,
    UserServerUserWallet = 18,
    /**电子签 */
    UserServerElectronSign = 18,
    UserServerElectronSign = 19,
    /**用户简历 */
    UserServerUserResume = 19,
    UserServerUserResume = 20,
    /**企业信息 */
    UserServerEnterprise = 20,
    UserServerEnterprise = 21,
    /**企业钱包 */
    UserServerEnterpriseWallet = 21,
    UserServerEnterpriseWallet = 22,
    /**企业合作钱包 */
    UserServerEnterpriseCooperationWallet = 22,
    UserServerEnterpriseCooperationWallet = 23,
    /**灵工信息 */
    UserServerEnterpriseEmployee = 23,
    UserServerEnterpriseEmployee = 24,
    /**电子签 */
    ElectronSignServerElectronSign = 24,
    ElectronSignServerElectronSign = 25,
    /**短信 */
    ToolServerSms = 25,
    ToolServerSms = 26,
    /**小程序 */
    ToolServerWxmp = 26,
    ToolServerWxmp = 27,
  }
  enum EnumResourceMethod {
@@ -2921,6 +2923,24 @@
    /** 错误码 */
    errorCode?: string;
    data?: GetTaskInfosQueryResult;
    /** 执行成功 */
    success?: boolean;
    /** 错误信息 */
    msg?: any;
    /** 附加数据 */
    extras?: any;
    /** 时间戳 */
    timestamp?: number;
  }
  interface FriendlyResultGetTaskSettlementReleaseReportsQueryResult {
    /** 跟踪Id */
    traceId?: string;
    /** 状态码 */
    code?: number;
    /** 错误码 */
    errorCode?: string;
    data?: GetTaskSettlementReleaseReportsQueryResult;
    /** 执行成功 */
    success?: boolean;
    /** 错误信息 */
@@ -5017,6 +5037,8 @@
    collectedUserCount?: number;
    /** 联系记录 */
    contactedRecordCount?: number;
    /** 绑定微信快捷登录 */
    bindWxmpId?: boolean;
  }
  interface GetEnterpriseQueryResult {
@@ -5870,6 +5892,8 @@
    /** 任务地点名称 */
    addressName?: string;
    status?: GetPersonalApplyTaskInfosQueryStatus;
    /** 未读 */
    unRead?: boolean;
  }
  enum GetPersonalApplyTaskInfosQueryStatus {
@@ -5981,6 +6005,8 @@
    /** 任务地点名称 */
    addressName?: string;
    status?: GetPersonalHireTaskInfosQueryStatus;
    /** 未读 */
    unRead?: boolean;
  }
  enum GetPersonalHireTaskInfosQueryStatus {
@@ -7047,6 +7073,8 @@
    status?: EnumTaskStatus;
    releaseStatus?: EnumTaskReleaseStatus;
    hireStatus?: EnumTaskUserHireStatus;
    /** 录用备注 */
    hireRemark?: string;
    /** 灵工Id */
    enterpriseEmployeeId?: string;
    applyButton?: GetTaskInfoQueryResultApplyButton;
@@ -7220,6 +7248,33 @@
    code?: string;
    /** 任务名称 */
    name?: string;
  }
  interface GetTaskSettlementReleaseReportsQuery {
    /** 开始日期 */
    startMonth?: string;
    /** 结束日期 */
    endMonth?: string;
    pageModel?: PagedListQueryPageModel;
  }
  interface GetTaskSettlementReleaseReportsQueryResult {
    pageModel?: PagedListQueryResultPageModel;
    /** 数据 */
    data?: GetTaskSettlementReleaseReportsQueryResultItem[];
  }
  interface GetTaskSettlementReleaseReportsQueryResultItem {
    /** 日期 */
    month?: string;
    /** 发放金额 */
    amount?: number;
    /** 发放人数 */
    peopleCount?: number;
    /** 生成日期 */
    createdTime?: string;
    /** 汇总表格 */
    url?: string;
  }
  interface GetTaskUserHireStatusQueryResult {
@@ -7942,6 +7997,8 @@
  }
  interface PasswordLoginCommand {
    /** 用户登录凭证 */
    code?: string;
    /** 账号 */
    userName: string;
    /** 密码 */
@@ -9057,6 +9114,8 @@
  type TestEventCommand = Record<string, any>;
  type UnBindUserWxmpIdCommand = Record<string, any>;
  interface UpdateEnterpriseWeChatPayWalletBankAccountInfoCommand {
    /** 企业Id */
    enterpriseId?: string;
src/views/CustomerManage/AddOrEditCustomer.vue
@@ -1,5 +1,5 @@
<template>
  <AddOrEditCustomerView :isDetail="false"/>
  <AddOrEditCustomerView :isDetail="false" />
</template>
<script lang="ts">
src/views/CustomerManage/CustomerManage.vue
@@ -57,11 +57,8 @@
  AppContainer,
  QueryFilterItem,
  useTable,
  useFormDialog,
  defineOperationBtns,
} from '@bole-core/components';
import * as enterpriseServices from '@/services/api/enterprise';
import { CustomerManageColumns } from './constants';
import {
  EnumEnterpriseCooperationStatusText,
  EnumEnterpriseCooperationSignStatusText,
src/views/CustomerManage/constants/customerManage.ts
File was deleted
src/views/CustomerManage/constants/index.ts
File was deleted
src/views/DataReport/DistributionDetailReport.vue
@@ -5,14 +5,14 @@
        <template #query>
          <QueryFilterItem>
            <FieldDatePicker
              v-model="extraParamState.checkReceiveTime"
              v-model="extraParamState.time"
              type="daterange"
              range-separator="~"
              start-placeholder="起始日期"
              end-placeholder="截止日期"
              clearable
              @change="getList()"
              tooltipContent="验收日期"
              tooltipContent="日期"
            ></FieldDatePicker>
          </QueryFilterItem>
        </template>
@@ -33,7 +33,7 @@
  useTable,
  FieldDatePicker,
} from '@bole-core/components';
import * as taskCheckReceiveServices from '@/services/api/taskCheckReceive';
import * as taskServices from '@/services/api/task';
import { ModelValueType } from 'element-plus';
import { downloadFileByUrl, format, OrderUtils, setOSSLink } from '@/utils';
@@ -47,8 +47,7 @@
      onClick: (role) => handleDownload(role),
    },
    extraProps: {
      hide: (row: API.GetCheckReceiveTasksQueryResultItem) =>
        row.checkReceiveStatus !== EnumTaskCheckReceiveStatus.Completed,
      hide: (row: API.GetTaskSettlementReleaseReportsQueryResultItem) => !row.url,
    },
  },
};
@@ -79,23 +78,17 @@
} = useTable(
  async ({ pageIndex, pageSize }, extraParamState) => {
    try {
      let params: API.GetCheckReceiveTasksQuery = {
      let params: API.GetTaskSettlementReleaseReportsQuery = {
        pageModel: {
          rows: pageSize,
          page: pageIndex,
          orderInput: extraParamState.orderInput,
        },
        checkReceiveTimeBegin: format(
          extraParamState.checkReceiveTime?.[0] ?? '',
          'YYYY-MM-DD 00:00:00'
        ),
        checkReceiveTimeEnd: format(
          extraParamState.checkReceiveTime?.[1] ?? '',
          'YYYY-MM-DD 23:59:59'
        ),
        startMonth: format(extraParamState.time?.[0] ?? '', 'YYYY-MM-DD 00:00:00'),
        endMonth: format(extraParamState.time?.[1] ?? '', 'YYYY-MM-DD 23:59:59'),
      };
      let res = await taskCheckReceiveServices.getCheckReceiveTasks(params, {
      let res = await taskServices.getTaskSettlementReleaseReports(params, {
        showLoading: !state.loading,
      });
      return res;
@@ -105,27 +98,19 @@
  },
  {
    defaultExtraParams: {
      orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }],
      checkReceiveTime: [] as unknown as ModelValueType,
      orderInput: [{ property: 'month', order: EnumPagedListOrder.Desc }],
      time: [] as unknown as ModelValueType,
    },
    queryKey: ['taskCheckReceiveServices/getCheckReceiveTasks'],
    queryKey: ['taskServices/getTaskSettlementReleaseReports'],
    columnsRenderProps: {
      serviceFee: { type: 'money' },
      createdTime: { type: 'date', format: 'YYYY-MM-DD' },
      beginTime: { type: 'date', format: 'YYYY-MM-DD' },
      amount: { type: 'money' },
      month: { type: 'date', format: 'YYYY-MM-DD' },
      createdTime: { type: 'date' },
    },
  }
);
async function handleDownload(row: API.GetCheckReceiveTasksQueryResultItem) {
  try {
    let params: API.ExportTaskCheckReceiveTaskUsersCommand = {
      id: row.id,
    };
    let res = await taskCheckReceiveServices.exportTaskCheckReceiveTaskUsers(params);
    if (res) {
      downloadFileByUrl(setOSSLink(res));
    }
  } catch (error) {}
async function handleDownload(row: API.GetTaskSettlementReleaseReportsQueryResultItem) {
  downloadFileByUrl(setOSSLink(row.url));
}
</script>
src/views/EmploymentManage/TaskArrange.vue
New file
@@ -0,0 +1,292 @@
<template>
  <LoadingLayout :loading="state.loading">
    <AppContainer>
      <ProTableQueryFilterBar @on-reset="reset">
        <template #query>
          <QueryFilterItem tip-content="任务状态">
            <FieldRadio
              v-model="extraParamState.status"
              :value-enum="EnumTaskStatusText"
              buttonStyle
              showAllBtn
              @change="getList()"
            />
          </QueryFilterItem>
          <QueryFilterItem tip-content="发布状态">
            <FieldRadio
              v-model="extraParamState.releaseStatus"
              :value-enum="EnumTaskReleaseStatusText"
              buttonStyle
              showAllBtn
              @change="getList()"
            />
          </QueryFilterItem>
          <QueryFilterItem tip-content="发布时间">
            <FieldDatePicker
              v-model="extraParamState.time"
              type="daterange"
              range-separator="~"
              start-placeholder="开始日期"
              end-placeholder="结束日期"
              clearable
              @change="getList()"
            ></FieldDatePicker>
          </QueryFilterItem>
          <QueryFilterItem>
            <SearchInput
              v-model="extraParamState.keywords"
              style="width: 260px"
              placeholder="任务名称/客户"
              @on-click-search="getList"
            >
            </SearchInput>
          </QueryFilterItem>
        </template>
        <template #btn>
          <el-button
            v-if="checkSubModuleItemShow('pageButton', 'addBtn')"
            @click="goAddOrEdit()"
            type="primary"
            >发布</el-button
          >
        </template>
      </ProTableQueryFilterBar>
      <ProTableV2 v-bind="proTableProps" :columns="column" :operationBtns="operationBtns">
        <template #userCount="{ row }">
          <el-button v-if="!row.isInternal" link type="primary" @click="goSignList(row)">{{
            row.userCount || 0
          }}</el-button>
          <span v-else>/</span>
        </template>
      </ProTableV2>
    </AppContainer>
  </LoadingLayout>
</template>
<script setup lang="ts">
import {
  ProTableQueryFilterBar,
  ProTableV2,
  SearchInput,
  LoadingLayout,
  AppContainer,
  QueryFilterItem,
  useTable,
  FieldDatePicker,
  FieldRadio,
} from '@bole-core/components';
import { EnumTaskStatusText, EnumTaskReleaseStatusText } from '@/constants';
import { useGlobalEventContext } from '@/hooks';
import * as taskServices from '@/services/api/task';
import { format, OrderUtils } from '@/utils';
import { ModelValueType } from 'element-plus';
import { Message } from '@bole-core/core';
import dayjs from 'dayjs';
defineOptions({
  name: 'TaskArrange',
});
const operationBtnMap: Record<string, OperationBtnType> = {
  editBtn: {
    emits: {
      onClick: (role) => goAddOrEdit(role),
    },
    extraProps: {
      hide: (row: API.GetTaskInfosQueryResultItem) =>
        row.status === EnumTaskStatus.Complete || !row.isInternal,
    },
  },
  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 || !row.isInternal,
    },
  },
  unPublishBtn: {
    emits: {
      onClick: (row: API.GetTaskInfosQueryResultItem) =>
        setTaskInfoReleaseStatus(row, EnumTaskReleaseStatus.Stopped),
    },
    extraProps: {
      hide: (row: API.GetTaskInfosQueryResultItem) =>
        row.releaseStatus === EnumTaskReleaseStatus.Stopped || !row.isInternal,
    },
  },
  arrangeBtn: {
    emits: {
      onClick: (row: API.GetTaskInfosQueryResultItem) => handleArrange(row),
    },
    extraProps: {
      hide: (row: API.GetTaskInfosQueryResultItem) =>
        row.releaseStatus === EnumTaskReleaseStatus.Stopped || !row.isInternal,
    },
  },
};
const { checkSubModuleItemShow, column, operationBtns } = useAccess({
  operationBtnMap,
});
const router = useRouter();
const BaseState = {
  loading: true,
};
const state = reactive({ ...BaseState });
const eventContext = useGlobalEventContext();
eventContext.addEvent('taskManage:add', () => {
  getList();
});
eventContext.addEvent('taskManage:edit', () => {
  getList(paginationState.pageIndex);
});
onMounted(async () => {
  await getList();
  state.loading = false;
});
const {
  getDataSource: getList,
  proTableProps,
  paginationState,
  extraParamState,
  reset,
} = useTable(
  async ({ pageIndex, pageSize }, extraParamState) => {
    try {
      let params: API.GetTaskInfosQuery = {
        pageModel: {
          rows: pageSize,
          page: pageIndex,
          orderInput: extraParamState.orderInput,
        },
        keywords: extraParamState.keywords,
        status: extraParamState.status,
        releaseStatus: extraParamState.releaseStatus,
        beginTime: format(extraParamState.time?.[0] ?? '', 'YYYY-MM-DD 00:00:00'),
        endTime: format(extraParamState.time?.[1] ?? '', 'YYYY-MM-DD 23:59:59'),
      };
      let res = await taskServices.getTaskInfos(params, {
        showLoading: !state.loading,
      });
      return res;
    } catch (error) {
      console.log('error: ', error);
    }
  },
  {
    defaultExtraParams: {
      keywords: '',
      status: '' as any as EnumTaskStatus,
      releaseStatus: '' as any as EnumTaskReleaseStatus,
      time: [] as unknown as ModelValueType,
      orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }],
    },
    queryKey: ['taskServices/getTaskInfos'],
    columnsRenderProps: {
      billingMethod: { type: 'enum', valueEnum: EnumBillingMethodText },
      settlementCycle: { type: 'enum', valueEnum: EnumSettlementCycleText },
      genderLimit: { type: 'enum', valueEnum: EnumUserGenderText },
      status: { type: 'enum', valueEnum: EnumTaskStatusText },
      releaseStatus: { type: 'enum', valueEnum: EnumTaskReleaseStatusText },
      createdTime: { type: 'date', format: 'YYYY-MM-DD' },
      beginTime: { type: 'date', format: 'YYYY-MM-DD' },
      endTime: { type: 'date', format: 'YYYY-MM-DD' },
      serviceFee: {
        type: 'money',
        formatter: (row: API.GetTaskInfosQueryResultItem) => {
          return OrderUtils.getServiceFeeText(row.serviceFee, row.billingMethod);
        },
      },
      applyBeginTime: { type: 'date', format: 'YYYY-MM-DD' },
      applyEndTime: { type: 'date', format: 'YYYY-MM-DD' },
      //@ts-ignore
      applyStatus: {
        formatter: (row: API.GetTaskInfosQueryResultItem) => {
          const applyBeginTime = dayjs(row.applyBeginTime);
          const applyEndTime = dayjs(row.applyEndTime);
          const now = dayjs();
          if (applyEndTime.isBefore(now)) {
            return '已结束';
          } else if (applyBeginTime.isAfter(now)) {
            return '待开始';
          } else {
            return '进行中';
          }
        },
      },
    },
  }
);
async function setTaskInfoReleaseStatus(
  row: API.GetTaskInfosQueryResultItem,
  releaseStatus: EnumTaskReleaseStatus
) {
  try {
    await Message.tipMessage(`确认要${EnumTaskReleaseStatusTextForTip[releaseStatus]}吗?`);
    let params: API.SetTaskInfoReleaseStatusCommand = {
      ids: [row.id],
      releaseStatus: releaseStatus,
    };
    let res = await taskServices.setTaskInfoReleaseStatus(params);
    if (res) {
      Message.successMessage('操作成功');
      getList(paginationState.pageIndex);
    }
  } catch (error) {}
}
function handleArrange(row: API.GetTaskInfosQueryResultItem) {
  router.push({
    name: 'EmploymentManageArrange',
    params: {
      id: row?.id ?? '',
    },
  });
}
function goAddOrEdit(row?: API.GetTaskInfosQueryResultItem) {
  router.push({
    name: 'AddOrEditEmployment',
    params: {
      id: row?.id ?? '',
    },
    query: {
      supplierEnterpriseId: row?.supplierEnterpriseId,
    },
  });
}
function goDetail(row: API.GetTaskInfosQueryResultItem) {
  router.push({
    name: 'EmploymentManageDetail',
    params: {
      id: row?.id ?? '',
    },
  });
}
function goSignList(row: API.GetTaskInfosQueryResultItem) {
  router.push({
    name: 'EmploymentSignList',
    params: {
      id: row?.id ?? '',
    },
  });
}
</script>
src/views/EmploymentManage/TaskManageList.vue
@@ -76,7 +76,6 @@
  FieldRadio,
  defineOperationBtns,
} from '@bole-core/components';
import { EmploymentManageColumns } from './constants';
import { EnumTaskStatusText, EnumTaskReleaseStatusText } from '@/constants';
import { useGlobalEventContext } from '@/hooks';
import * as taskServices from '@/services/api/task';
src/views/EmploymentManage/constants/columns.ts
File was deleted
src/views/EmploymentManage/constants/index.ts
File was deleted
src/views/FlexJobManage/constants/columns.ts
File was deleted
src/views/FlexJobManage/constants/index.ts
File was deleted
src/views/UserManage/constants/columns.ts
File was deleted
src/views/UserManage/constants/index.ts
File was deleted