wupengfei
2025-04-11 ae671e401db4b158b6bd4292fb99fab58e40844c
src/views/Reward/RewardGrant.vue
@@ -5,7 +5,7 @@
        <template #query>
          <QueryFilterItem tip-content="申报日期">
            <FieldDatePicker
              v-model="extraParamState.date"
              v-model="extraParamState.creationTime"
              type="daterange"
              range-separator="~"
              start-placeholder="开始日期"
@@ -16,7 +16,7 @@
          </QueryFilterItem>
          <QueryFilterItem tip-content="发放日期">
            <FieldDatePicker
              v-model="extraParamState.date"
              v-model="extraParamState.settleTime"
              type="daterange"
              range-separator="~"
              start-placeholder="开始日期"
@@ -27,8 +27,8 @@
          </QueryFilterItem>
          <QueryFilterItem>
            <FieldRadio
              v-model="extraParamState.showStatus"
              :value-enum="DataRangeEnumText"
              v-model="extraParamState.settleStatus"
              :value-enum="SettleStatusEnumText"
              buttonStyle
              showAllBtn
              @change="getList()"
@@ -36,7 +36,7 @@
          </QueryFilterItem>
          <QueryFilterItem>
            <SearchInput
              v-model="extraParamState.keyword"
              v-model="extraParamState.batchNo"
              style="width: 200px"
              placeholder="批次号"
              @on-click-search="getList"
@@ -48,7 +48,6 @@
      <ProTableV2 v-bind="proTableProps" :columns="column" :operationBtns="operationBtns">
      </ProTableV2>
      <RewardGrantDialog v-bind="dialogProps"></RewardGrantDialog>
    </AppContainer>
  </LoadingLayout>
@@ -68,11 +67,12 @@
  FieldDatePicker,
  useFormDialog,
  UploadUserFile,
  bolePreview,
} from '@bole-core/components';
import { OrderInputType } from '@bole-core/core';
import { convertApi2FormUrlOnlyOne, format } from '@/utils';
import { DataRangeEnum, DataRangeEnumText } from '@/constants';
import * as informationServices from '@/services/api/Information';
import { Message, OrderInputType } from '@bole-core/core';
import { convertApi2FormUrl, convertApi2FormUrlOnlyOne, downloadFileByUrl, format } from '@/utils';
import { SettleStatusEnum, SettleStatusEnumText } from '@/constants';
import * as parkBountyApplyServices from '@/services/api/ParkBountyApply';
import RewardGrantDialog from './components/RewardGrantDialog.vue';
import _ from 'lodash';
import { ModelValueType } from 'element-plus';
@@ -84,42 +84,42 @@
const column: API.CustomModuleColumnDto[] = [
  {
    id: '1',
    enCode: 'changeFlag',
    enCode: 'batchNo',
    name: '申请批次号',
  },
  {
    id: '2',
    enCode: 'name',
    enCode: 'parkName',
    name: '申请园区',
  },
  {
    id: '3',
    enCode: 'idNumber',
    enCode: 'parkTypeName',
    name: '园区类型',
  },
  {
    id: '4',
    enCode: 'workType',
    enCode: 'applyMonth',
    name: '申请奖励金月份',
  },
  {
    id: '5',
    enCode: 'gender',
    enCode: 'applySumAmount',
    name: '奖励金汇总金额(元)',
  },
  {
    id: '6',
    enCode: 'age',
    enCode: 'creationTime',
    name: '申报日期',
  },
  {
    id: '7',
    enCode: 'phoneNumber',
    enCode: 'settleStatus',
    name: '发放状态',
  },
  {
    id: '8',
    enCode: 'phoneNumber',
    enCode: 'settleTime',
    name: '发放日期',
  },
];
@@ -142,6 +142,10 @@
    emits: {
      onClick: (role) => openDialog(role),
    },
    extraProps: {
      hide: (row: API.GetParkBountyApplyListOutput) =>
        row.settleStatus === SettleStatusEnum.HasSettle,
    },
  },
  {
    data: {
@@ -150,6 +154,10 @@
    },
    emits: {
      onClick: (role) => handlePreview(role),
    },
    extraProps: {
      hide: (row: API.GetParkBountyApplyListOutput) =>
        row.settleStatus === SettleStatusEnum.WaitForSettle,
    },
  },
]);
@@ -175,16 +183,20 @@
} = useTable(
  async ({ pageIndex, pageSize }, extraParamState) => {
    try {
      let params: API.GetInformationForManageInput = {
      let params: API.GetParkBountyApplyListInput = {
        pageModel: {
          rows: pageSize,
          page: pageIndex,
          orderInput: extraParamState.orderInput,
        },
        publishStartDate: format(extraParamState.date?.[0] ?? '', 'YYYY-MM-DD 00:00:00'),
        publishEndDate: format(extraParamState.date?.[1] ?? '', 'YYYY-MM-DD 23:59:59'),
        batchNo: extraParamState.batchNo,
        settleStatus: extraParamState.settleStatus,
        creationTimeBegin: format(extraParamState.creationTime?.[0] ?? '', 'YYYY-MM-DD 00:00:00'),
        creationTimeEnd: format(extraParamState.creationTime?.[1] ?? '', 'YYYY-MM-DD 23:59:59'),
        settleTimeBegin: format(extraParamState.settleTime?.[0] ?? '', 'YYYY-MM-DD 00:00:00'),
        settleTimeEnd: format(extraParamState.settleTime?.[1] ?? '', 'YYYY-MM-DD 23:59:59'),
      };
      let res = await informationServices.getInformationForManage(params, {
      let res = await parkBountyApplyServices.getParkBountyApplyList(params, {
        showLoading: !state.loading,
      });
      return res;
@@ -192,10 +204,18 @@
  },
  {
    defaultExtraParams: {
      keyword: '',
      showStatus: '' as any as DataRangeEnum,
      date: [] as unknown as ModelValueType,
      batchNo: '',
      settleStatus: '' as any as SettleStatusEnum,
      creationTime: [] as unknown as ModelValueType,
      settleTime: [] as unknown as ModelValueType,
      orderInput: [{ property: 'creationTime', order: OrderInputType.Desc }],
    },
    columnsRenderProps: {
      applyMonth: { type: 'date', format: 'YYYY年MM月' },
      creationTime: { type: 'date', format: 'YYYY-MM-DD HH:mm:ss' },
      settleTime: { type: 'date', format: 'YYYY-MM-DD HH:mm:ss' },
      applySumAmount: { type: 'money' },
      settleStatus: { type: 'enum', valueEnum: SettleStatusEnumText },
    },
  }
);
@@ -210,20 +230,42 @@
}
const { dialogProps, handleAdd, handleEdit, editForm } = useFormDialog({
  onConfirm: handleAddOrEdit,
  defaultFormParams: {
    id: '',
    url: [] as UploadUserFile[],
    parkBountyApplyId: '',
    settleFileUrl: [] as UploadUserFile[],
  },
});
function openDialog(row?: API.IncentivePaymentsManageListOutput) {
function openDialog(row?: API.GetParkBountyApplyListOutput) {
  handleEdit({
    id: row.enterpriseName,
    url: convertApi2FormUrlOnlyOne(row.issueVouchersUrl),
    parkBountyApplyId: row.id,
    settleFileUrl: [] as UploadUserFile[],
  });
}
function handlePreview(row?: API.IncentivePaymentsManageListOutput) {}
async function handleAddOrEdit() {
  try {
    let params: API.ParkBountyApplySettleInput = {
      parkBountyApplyId: editForm.parkBountyApplyId,
      settleFileUrl: editForm.settleFileUrl.map((x) => x.path).join('|'),
    };
    let res = await parkBountyApplyServices.parkBountyApplySettle(params);
    if (res) {
      Message.successMessage('操作成功');
      getList(paginationState.pageIndex);
    }
  } catch (error) {}
}
function handlePreview(row?: API.GetParkBountyApplyListOutput) {
  const fileList = row.settleFileUrl?.split('|').map((x) => convertApi2FormUrl(x)) ?? [];
  if (fileList.length > 1) {
    console.log('fileList: ', fileList);
  } else {
    downloadFileByUrl(fileList[0]);
  }
}
</script>
<style lang="scss" scoped>