zhengyiming
4 天以前 dbebb8c83128e379bb24d8d7c1bf0838d7c5ebdc
src/views/MaterialReview/MaterialReview.vue
@@ -3,9 +3,20 @@
    <AppContainer>
      <ProTableQueryFilterBar @on-reset="reset">
        <template #query>
          <QueryFilterItem tip-content="最近申报日期">
          <QueryFilterItem>
            <FieldSelect
              v-model="extraParamState.industrialParkId"
              placeholder="请选择园区"
              :value-enum="fourStreamsIndustrialParkList"
              enumLabelKey="parkName"
              enum-value-key="id"
              clearable
              @change="getList()"
            />
          </QueryFilterItem>
          <QueryFilterItem tip-content="申报日期">
            <FieldDatePicker
              v-model="extraParamState.date"
              v-model="extraParamState.creationTime"
              type="daterange"
              range-separator="~"
              start-placeholder="开始日期"
@@ -14,9 +25,9 @@
              @change="getList()"
            ></FieldDatePicker>
          </QueryFilterItem>
          <QueryFilterItem tip-content="最近发放日期">
          <QueryFilterItem tip-content="审核日期">
            <FieldDatePicker
              v-model="extraParamState.date"
              v-model="extraParamState.outCheckTime"
              type="daterange"
              range-separator="~"
              start-placeholder="开始日期"
@@ -27,8 +38,8 @@
          </QueryFilterItem>
          <QueryFilterItem>
            <FieldRadio
              v-model="extraParamState.showStatus"
              :value-enum="DataRangeEnumText"
              v-model="extraParamState.outCheckStatus"
              :value-enum="BountyCheckStatusEnumText"
              buttonStyle
              showAllBtn
              @change="getList()"
@@ -36,7 +47,7 @@
          </QueryFilterItem>
          <QueryFilterItem>
            <SearchInput
              v-model="extraParamState.keyword"
              v-model="extraParamState.batchNo"
              style="width: 200px"
              placeholder="批次号"
              @on-click-search="getList"
@@ -48,7 +59,9 @@
      <ProTableV2 v-bind="proTableProps" :columns="column" :operationBtns="operationBtns">
      </ProTableV2>
      <ParkBountyApplyRedoDialog v-bind="dialogProps" />
    </AppContainer>
    <OperateHistoryLogDialog v-bind="logDialogProps" />
  </LoadingLayout>
</template>
@@ -64,87 +77,65 @@
  FieldRadio,
  QueryFilterItem,
  FieldDatePicker,
  FieldSelect,
  useFormDialog,
} from '@bole-core/components';
import { OrderInputType } from '@bole-core/core';
import { Message, OrderInputType } from '@bole-core/core';
import { format } from '@/utils';
import { DataRangeEnum, DataRangeEnumText } from '@/constants';
import * as informationServices from '@/services/api/Information';
import { BountyCheckStatusEnum, BountyCheckStatusEnumText, DataRangeEnumText } from '@/constants';
import * as parkBountyApplyServices from '@/services/api/ParkBountyApply';
import _ from 'lodash';
import { ModelValueType } from 'element-plus';
import { useGlobalEventContext } from '@/hooks';
import {
  useAccess,
  useGlobalEventContext,
  useIndustrialParkDropDownList,
  useOpenLogDialog,
} from '@/hooks';
import ParkBountyApplyRedoDialog from './components/ParkBountyApplyRedoDialog.vue';
defineOptions({
  name: 'MaterialReview',
  name: 'MaterialReviewList',
});
const column: API.CustomModuleColumnDto[] = [
  {
    id: '1',
    enCode: 'changeFlag',
    name: '申请批次号',
  },
  {
    id: '2',
    enCode: 'name',
    name: '申请园区',
  },
  {
    id: '3',
    enCode: 'idNumber',
    name: '园区类型',
  },
  {
    id: '4',
    enCode: 'workType',
    name: '申请奖励金月份',
  },
  {
    id: '5',
    enCode: 'gender',
    name: '奖励金汇总金额(元)',
  },
  {
    id: '6',
    enCode: 'age',
    name: '申报日期',
  },
  {
    id: '7',
    enCode: 'birthDay',
    name: '审核日期',
  },
  {
    id: '8',
    enCode: 'phoneNumber',
    name: '审核状态',
  },
];
const operationBtns = defineOperationBtns([
  {
    data: {
      enCode: 'detailBtn',
      name: '详情',
    },
const operationBtnMap: Record<string, OperationBtnType> = {
  detailBtn: {
    emits: {
      onClick: (role) => goDetail(role),
    },
  },
  {
    data: {
      enCode: 'auditBtn',
      name: '审核',
    },
  auditBtn: {
    emits: {
      onClick: (role) => goAudit(role),
    },
    extraProps: {
      hide: (row: API.GetParkBountyApplyListOutput) =>
        row.outCheckStatus !== BountyCheckStatusEnum.WaitCheck,
    },
  },
]);
  redoBtn: {
    emits: {
      onClick: (role) => openDialog(role),
    },
    extraProps: {
      hide: (row: API.GetParkBountyApplyListOutput) =>
        row.outCheckStatus !== BountyCheckStatusEnum.CheckPassed ||
        row.dualReviewOfGovernmentAffairs,
    },
  },
  logBtn: { emits: { onClick: (role) => openLogDialog(role.id) } },
};
const { checkSubModuleItemShow, column, operationBtns } = useAccess({
  operationBtnMap,
});
const router = useRouter();
const BaseState = {
  loading: true,
};
const { fourStreamsIndustrialParkList } = useIndustrialParkDropDownList();
const state = reactive({ ...BaseState });
@@ -168,16 +159,21 @@
} = 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,
        outCheckStatus: extraParamState.outCheckStatus,
        creationTimeBegin: format(extraParamState.creationTime?.[0] ?? '', 'YYYY-MM-DD 00:00:00'),
        creationTimeEnd: format(extraParamState.creationTime?.[1] ?? '', 'YYYY-MM-DD 23:59:59'),
        outCheckTimeBegin: format(extraParamState.outCheckTime?.[0] ?? '', 'YYYY-MM-DD 00:00:00'),
        outCheckTimeEnd: format(extraParamState.outCheckTime?.[1] ?? '', 'YYYY-MM-DD 23:59:59'),
        industrialParkId: extraParamState.industrialParkId,
      };
      let res = await informationServices.getInformationForManage(params, {
      let res = await parkBountyApplyServices.getOutcheckParkBountyList(params, {
        showLoading: !state.loading,
      });
      return res;
@@ -185,15 +181,24 @@
  },
  {
    defaultExtraParams: {
      keyword: '',
      showStatus: '' as any as DataRangeEnum,
      date: [] as unknown as ModelValueType,
      batchNo: '',
      outCheckStatus: '' as any as BountyCheckStatusEnum,
      creationTime: [] as unknown as ModelValueType,
      outCheckTime: [] as unknown as ModelValueType,
      orderInput: [{ property: 'creationTime', order: OrderInputType.Desc }],
      industrialParkId: '',
    },
    columnsRenderProps: {
      applyMonth: { type: 'date', format: 'YYYY年MM月' },
      creationTime: { type: 'date', format: 'YYYY-MM-DD HH:mm:ss' },
      outCheckTime: { type: 'date', format: 'YYYY-MM-DD HH:mm:ss' },
      applySumAmount: { type: 'money', precision: 2 },
      outCheckStatus: { type: 'enum', valueEnum: BountyCheckStatusEnumText },
    },
  }
);
function goDetail(row: any) {
function goDetail(row: API.GetParkBountyApplyListOutput) {
  router.push({
    name: 'MaterialReviewDetail',
    params: {
@@ -201,7 +206,7 @@
    },
  });
}
function goAudit(row: any) {
function goAudit(row: API.GetParkBountyApplyListOutput) {
  router.push({
    name: 'MaterialReviewAudit',
    params: {
@@ -209,6 +214,36 @@
    },
  });
}
function openDialog(row: API.GetParkBountyApplyListOutput) {
  handleAdd({
    parkBountyApplyId: row.id,
  });
}
const { dialogProps, handleAdd, editForm } = useFormDialog({
  onConfirm: outcheckParkBountyApplyRedoed,
  defaultFormParams: {
    reasonForWithdrawal: '',
    parkBountyApplyId: '',
  },
});
async function outcheckParkBountyApplyRedoed() {
  try {
    let params: API.OutcheckParkBountyApplyRedoedInput = {
      parkBountyApplyId: editForm.parkBountyApplyId,
      reasonForWithdrawal: editForm.reasonForWithdrawal,
    };
    let res = await parkBountyApplyServices.outcheckParkBountyApplyRedoed(params);
    if (res) {
      Message.successMessage('操作成功');
      getList(paginationState.pageIndex);
    }
  } catch (error) {}
}
const { openLogDialog, logDialogProps } = useOpenLogDialog();
</script>
<style lang="scss" scoped>