zhengyiming
1 天以前 0d7be0c65fb884947fea23504c2425f5e771ba58
src/views/ServiceChargeManage/ServiceChargeSettle.vue
@@ -1,17 +1,106 @@
<template>
  <LoadingLayout :loading="isLoading">
    <AppScrollContainer>
      <ChunkCell title="付款方信息"> </ChunkCell>
      <ChunkCell title="收款方信息"> </ChunkCell>
      <ChunkCell title="转账信息"> </ChunkCell>
      <ChunkCell title="付款方信息">
        <ProForm :model="form" ref="formRef" label-width="120px">
          <ProFormItemV2
            label="付款账户:"
            prop="name"
            :check-rules="[{ message: '请选择付款账户' }]"
          >
            <ProFormSelect
              v-model="form.name"
              :valueEnum="[]"
              placeholder="请选择您的付款方式"
              clearable
            >
            </ProFormSelect>
          </ProFormItemV2>
          <ProFormMixinsItemContainer>
            <ProFormItemV2
              label="付款金额:"
              prop="money"
              :check-rules="[{ message: '请输入付款金额' }]"
              mode="read"
            >
              <ProFormInputNumber v-model="form.money"> </ProFormInputNumber>
            </ProFormItemV2>
          </ProFormMixinsItemContainer>
        </ProForm>
      </ChunkCell>
      <ChunkCell title="收款方信息">
        <ProTableQueryFilterBar @on-reset="reset">
          <template #query>
            <QueryFilterItem>
              <SearchInput
                v-model="extraParamState.keywords"
                style="width: 300px"
                placeholder="人员姓名/身份证号/手机号"
                @on-click-search="getList"
              >
              </SearchInput>
            </QueryFilterItem>
          </template>
        </ProTableQueryFilterBar>
        <ProTableV2
          v-bind="proTableProps"
          :columns="SettlementListColumns"
          :show-operation-column="false"
          :auto-height="false"
          ref="proTable"
          :tableProps="{
            maxHeight: '400px',
          }"
        >
        </ProTableV2>
      </ChunkCell>
      <ChunkCell title="转账信息">
        <ProForm :model="form" ref="formRef" label-width="120px">
          <ProFormMixinsItemContainer>
            <ProFormItemV2 label="交易用途:" prop="name" mode="read">
              <ProFormText v-model="form.name"> </ProFormText>
            </ProFormItemV2>
          </ProFormMixinsItemContainer>
          <ProFormItemV2 label="附言:" prop="name">
            <ProFormText v-model="form.name" :maxlength="30" show-word-limit> </ProFormText>
          </ProFormItemV2>
          <ProFormItemV2 label="备注:" prop="name">
            <ProFormText v-model="form.name" :maxlength="30" show-word-limit> </ProFormText>
          </ProFormItemV2>
          <div class="chuck-add-or-edit-actions">
            <el-button class="chuck-add-or-edit-actions" @click="handleBack()">取消</el-button>
            <el-button class="chuck-add-or-edit-actions" type="primary" @click="handleSubmit"
              >提交审核</el-button
            >
          </div>
        </ProForm>
      </ChunkCell>
    </AppScrollContainer>
  </LoadingLayout>
</template>
<script setup lang="ts">
import { LoadingLayout, AppScrollContainer, ChunkCell } from '@bole-core/components';
import {} from '@/constants';
import * as flexTaskServices from '@/services/api/FlexTask';
import {
  LoadingLayout,
  AppScrollContainer,
  ChunkCell,
  ProForm,
  ProFormItemV2,
  ProFormText,
  ProFormSelect,
  ProFormInputNumber,
  ProTableV2,
  QueryFilterItem,
  SearchInput,
  ProTableQueryFilterBar,
  ProFormMixinsItemContainer,
  useTable,
} from '@bole-core/components';
import { useQuery } from '@tanstack/vue-query';
import { useRouteView } from '@/hooks';
import { FormInstance } from 'element-plus';
import { validateFormList } from '@/utils';
import * as taskServices from '@/services/api/task';
import { SettlementListColumns } from './constants';
defineOptions({
  name: 'ServiceChargeSettle',
@@ -19,26 +108,85 @@
const route = useRoute();
const id = (route.params.id as string) ?? '';
const eventContext = useGlobalEventContext();
const { closeViewPush } = useRouteView();
const state = reactive({
  loading: true,
const form = reactive({
  name: '',
  money: 0,
});
const { isLoading } = useQuery({
  queryKey: ['flexTaskServices/getFlexTaskDetail', id],
  queryKey: ['taskServices/getTaskInfo', id],
  queryFn: async () => {
    return await flexTaskServices.getFlexTaskDetail(
    return await taskServices.getTaskInfo(
      { id: id },
      {
        showLoading: false,
      }
    );
  },
  onSuccess(data) {},
  placeholderData: () => ({} as API.GetTaskInfoQueryResult),
  onSuccess(data) {
    form.name = data.name;
  },
  enabled: !!id,
});
onMounted(() => {});
const {
  getDataSource: getList,
  proTableProps,
  paginationState,
  extraParamState,
  reset,
} = useTable(
  async ({ pageIndex, pageSize }, extraParamState) => {
    try {
      let params: API.GetOpenTaskInfosQuery = {
        pageModel: {
          rows: pageSize,
          page: pageIndex,
          orderInput: extraParamState.orderInput,
        },
        keywords: extraParamState.keywords,
      };
      let res = await taskServices.getOpenTaskInfos(params);
      return res;
    } catch (error) {
      console.log('error: ', error);
    }
  },
  {
    defaultExtraParams: {
      keywords: '',
      orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }],
    },
    queryKey: ['taskServices/getOpenTaskInfos'],
    columnsRenderProps: {},
  }
);
function handleBack() {
  closeViewPush(route, {
    name: 'ServiceChargeManageList',
  });
}
const formRef = ref<FormInstance>();
async function handleSubmit() {
  try {
    const valid = await validateFormList([formRef.value]);
    if (valid) {
      submit();
    }
  } catch (error) {}
}
async function submit() {
  try {
    eventContext.emit('serviceChargeSettle');
  } catch (error) {}
}
</script>
<style lang="scss" scoped>