wupengfei
4 天以前 a4bb5626dcf18a1893792eeeca75e9139c744ad0
Merge branch 'dev-1.1.2' of http://120.26.58.240:8888/r/flexJobAdmin into dev-1.1.2
5个文件已添加
2个文件已修改
460 ■■■■ 已修改文件
src/components/Form/FieldPaginationSelect.vue 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/Form/ProFormPaginationSelect.vue 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/utils/common/file.ts 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/EnterpriseManage/components/WeChatPayWalletBankBranchAreaCascader.vue 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/EnterpriseManage/components/WeChatPayWalletBankBranchsSelect.vue 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/EnterpriseManage/components/WeChatPayWalletBanksSelect.vue 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/EnterpriseManage/components/WechatConfigureView.vue 141 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/Form/FieldPaginationSelect.vue
New file
@@ -0,0 +1,37 @@
<template>
  <div>
    <el-select v-model="modelValue" v-bind="{ ...$attrs }">
      <el-option
        v-for="item in proTableProps.tableData"
        :key="item[props.enumValueKey]"
        :label="item[props.enumLabelKey]"
        :value="item[props.enumValueKey]"
      >
      </el-option>
      <template #footer>
        <ProPagination v-bind="proTableProps" layout="total, prev, pager, next"></ProPagination>
      </template>
    </el-select>
  </div>
</template>
<script setup lang="ts">
import { ProPagination } from '@bole-core/components';
defineOptions({
  name: 'FieldPaginationSelect',
});
type Props = {
  proTableProps: any;
  enumLabelKey?: string;
  enumValueKey?: string;
};
const props = withDefaults(defineProps<Props>(), {
  enumLabelKey: 'label',
  enumValueKey: 'value',
});
const modelValue = defineModel<string>();
</script>
src/components/Form/ProFormPaginationSelect.vue
New file
@@ -0,0 +1,35 @@
<template>
  <ProFieldCustom>
    <FieldPaginationSelect
      v-model="modelValue"
      :proTableProps="proTableProps"
      v-bind="{ ...$attrs }"
      :enumLabelKey="enumLabelKey"
      :enumValueKey="enumValueKey"
    />
  </ProFieldCustom>
</template>
<script setup lang="ts">
import { ProFieldCustom } from '@bole-core/components';
import FieldPaginationSelect from './FieldPaginationSelect.vue';
defineOptions({
  name: 'ProFormPaginationSelect',
});
type Props = {
  proTableProps: any;
  enumLabelKey?: string;
  enumValueKey?: string;
};
const props = withDefaults(defineProps<Props>(), {});
console.log('props: ', props);
const modelValue = defineModel<string>();
</script>
<style lang="scss" scoped>
@use '@/style/common.scss' as *;
</style>
src/utils/common/file.ts
@@ -25,6 +25,10 @@
  return path ? [convertApi2FormUrl(path)] : [];
}
export function convertApi2FormUrls(paths: string[]): UploadUserFile[] {
  return paths?.length > 0 ? paths.map((x) => convertApi2FormUrl(x)) : [];
}
/**
 * 把upload的路径转换为上传到api的路径
 */
src/views/EnterpriseManage/components/WeChatPayWalletBankBranchAreaCascader.vue
New file
@@ -0,0 +1,93 @@
<template>
  <ProFieldCustom>
    <div class="address-select">
      <el-cascader
        v-bind="areaByCascaderProps"
        v-model="areaList"
        :placeholder="placeholder"
        clearable
        :value-on-clear="() => []"
      ></el-cascader>
    </div>
  </ProFieldCustom>
</template>
<script setup lang="ts">
import { ProFieldCustom } from '@bole-core/components';
import { CascaderProps } from 'element-plus';
import * as enterpriseWalletServices from '@/services/api/enterpriseWallet';
import { useQueryClient } from '@tanstack/vue-query';
defineOptions({
  name: 'WeChatPayWalletBankBranchAreaCascader',
});
type Props = {
  placeholder?: string;
};
const props = withDefaults(defineProps<Props>(), {});
const areaList = defineModel<number[]>('areaList');
const queryClient = useQueryClient();
function getEnterpriseWeChatPayWalletBankProvinces() {
  return queryClient.fetchQuery({
    queryKey: ['enterpriseWalletServices/getEnterpriseWeChatPayWalletBankProvinces'],
    queryFn: async () => {
      let res = await enterpriseWalletServices.getEnterpriseWeChatPayWalletBankProvinces(
        {},
        { showLoading: false }
      );
      return res.map((x) => ({
        areaName: x.province_name,
        areaCode: x.province_code,
      }));
    },
    staleTime: Infinity,
  });
}
function getEnterpriseWeChatPayWalletBankCities(provinceCode: number) {
  return queryClient.fetchQuery({
    queryKey: ['enterpriseWalletServices/getEnterpriseWeChatPayWalletBankCities', provinceCode],
    queryFn: async () => {
      let res = await enterpriseWalletServices.getEnterpriseWeChatPayWalletBankCities(
        {
          provinceCode: provinceCode,
        },
        { showLoading: false }
      );
      return res.map((x) => ({
        areaName: x.city_name,
        areaCode: x.city_code,
      }));
    },
    staleTime: Infinity,
  });
}
const areaByCascaderProps = {
  props: {
    label: 'areaName',
    value: 'areaCode',
    lazy: true,
    async lazyLoad(node, resolve) {
      const { level, data, value } = node;
      console.log('value: ', value);
      const areas =
        level === 0
          ? await getEnterpriseWeChatPayWalletBankProvinces()
          : await getEnterpriseWeChatPayWalletBankCities(value as any);
      return resolve(
        areas.map((x) => ({
          ...x,
          leaf: level >= 1,
        }))
      );
    },
  } as CascaderProps,
};
</script>
src/views/EnterpriseManage/components/WeChatPayWalletBankBranchsSelect.vue
New file
@@ -0,0 +1,72 @@
<template>
  <ProFormPaginationSelect
    v-model="bank_branch_id"
    :proTableProps="proTableProps"
    enum-label-key="bank_branch_name"
    enum-value-key="bank_branch_id"
  >
  </ProFormPaginationSelect>
</template>
<script setup lang="ts">
import { useTable } from '@bole-core/components';
import * as enterpriseWalletServices from '@/services/api/enterpriseWallet';
defineOptions({
  name: 'WeChatPayWalletBankBranchsSelect',
});
type Props = {
  bank_alias_code: string;
  city_code: number;
  need_bank_branch: boolean;
};
const props = withDefaults(defineProps<Props>(), {});
const bank_branch_id = defineModel<string>('bank_branch_id');
watch(
  [toRef(props, 'bank_alias_code'), toRef(props, 'city_code'), toRef(props, 'need_bank_branch')],
  ([bank_alias_code, city_code, need_bank_branch]) => {
    bank_branch_id.value = '';
    if (need_bank_branch) {
      getList();
    }
  }
);
const {
  getDataSource: getList,
  proTableProps,
  paginationState,
  extraParamState,
  reset,
} = useTable(
  async ({ pageIndex, pageSize }, extraParamState) => {
    try {
      let params: API.GetEnterpriseWeChatPayWalletBankBranchesQuery = {
        pageModel: {
          rows: pageSize,
          page: pageIndex,
        },
        bank_alias_code: props.bank_alias_code,
        city_code: props.city_code,
      };
      let res = await enterpriseWalletServices.getEnterpriseWeChatPayWalletBankBranches(params, {
        showLoading: true,
      });
      return res;
    } catch (error) {
      console.log('error: ', error);
    }
  },
  {
    defaultExtraParams: {
      keywords: '',
    },
    queryKey: ['enterpriseWalletServices/getEnterpriseWeChatPayWalletBankBranches'],
  }
);
</script>
src/views/EnterpriseManage/components/WeChatPayWalletBanksSelect.vue
New file
@@ -0,0 +1,78 @@
<template>
  <ProFormPaginationSelect
    v-model="bank_alias"
    :proTableProps="proTableProps"
    @change="handleAccountBankChange"
    enum-label-key="bank_alias"
    enum-value-key="bank_alias"
  >
  </ProFormPaginationSelect>
</template>
<script setup lang="ts">
import { useTable } from '@bole-core/components';
import * as enterpriseWalletServices from '@/services/api/enterpriseWallet';
defineOptions({
  name: 'WeChatPayWalletBanksSelect',
});
// type Props = {
// };
// const props = withDefaults(defineProps<Props>(), {});
const bank_alias = defineModel<string>('bank_alias');
const account_bank = defineModel<string>('account_bank');
const account_bank_code = defineModel<number>('account_bank_code');
const bank_alias_code = defineModel<string>('bank_alias_code');
const need_bank_branch = defineModel<boolean>('need_bank_branch');
onMounted(() => {
  getList();
});
const {
  getDataSource: getList,
  proTableProps,
  paginationState,
  extraParamState,
  reset,
} = useTable(
  async ({ pageIndex, pageSize }, extraParamState) => {
    try {
      let params: API.GetEnterpriseWeChatPayWalletBanksQuery = {
        pageModel: {
          rows: pageSize,
          page: pageIndex,
        },
        bank_account_type: 0,
      };
      let res = await enterpriseWalletServices.getEnterpriseWeChatPayWalletBanks(params, {
        showLoading: true,
      });
      return res;
    } catch (error) {
      console.log('error: ', error);
    }
  },
  {
    defaultExtraParams: {
      keywords: '',
    },
    queryKey: ['enterpriseWalletServices/getEnterpriseWeChatPayWalletBanks'],
  }
);
function handleAccountBankChange(bank_alias: string) {
  console.log('bank_alias: ', bank_alias);
  const bank = proTableProps.value.tableData.find((item) => item.bank_alias === bank_alias);
  if (bank) {
    account_bank.value = bank.account_bank;
    account_bank_code.value = bank.account_bank_code;
    bank_alias_code.value = bank.bank_alias_code;
    need_bank_branch.value = bank.need_bank_branch;
  }
}
</script>
src/views/EnterpriseManage/components/WechatConfigureView.vue
@@ -902,12 +902,21 @@
      </ProFormItemV2>
      <ProFormItemV2
        label="开户银行:"
        prop="account_bank"
        prop="bank_alias"
        :checkRules="[{ message: '请输入开户银行' }]"
      >
        <ProFormText v-model.trim="form.account_bank" placeholder="请输入开户银行" />
        <!-- <ProFormText v-model.trim="form.account_bank" placeholder="请输入开户银行" /> -->
        <WeChatPayWalletBanksSelect
          v-model:bank_alias="form.bank_alias"
          v-model:account_bank="form.account_bank"
          v-model:account_bank_code="form.account_bank_code"
          v-model:bank_alias_code="form.bank_alias_code"
          v-model:need_bank_branch="form.need_bank_branch"
          placeholder="请输入开户银行"
          clearable
        />
      </ProFormItemV2>
      <ProFormItemV2
      <!-- <ProFormItemV2
        label="开户银行省市编码:"
        prop="bank_address_code"
        :checkRules="[{ message: '请输入开户银行省市编码' }]"
@@ -918,21 +927,36 @@
            >省市编码模板</el-button
          >
        </div>
      </ProFormItemV2>
      <ProFormItemV2
        label="开户银行银行号:"
        prop="bank_branch_id"
        :checkRules="[{ message: '请输入开户银行银行号' }]"
      >
        <ProFormText v-model.trim="form.bank_branch_id" placeholder="请输入开户银行银行号" />
      </ProFormItemV2>
      <ProFormItemV2
        label="开户银行全称(含支行):"
        prop="bank_name"
        :checkRules="[{ message: '请输入开户银行全称(含支行)' }]"
      >
        <ProFormText v-model.trim="form.bank_name" placeholder="请输入开户银行全称(含支行)" />
      </ProFormItemV2>
      </ProFormItemV2> -->
      <template v-if="form.need_bank_branch">
        <!-- <ProFormItemV2
          label="开户银行银行号:"
          prop="bank_branch_id"
          :checkRules="[{ message: '请输入开户银行银行号' }]"
        >
          <ProFormText v-model.trim="form.bank_branch_id" placeholder="请输入开户银行银行号" />
        </ProFormItemV2> -->
        <ProFormItemV2
          label="开户支行省市编码:"
          prop="bank_branch_area"
          :checkRules="[{ message: '请输入开户银行银行号', type: 'array' }]"
        >
          <WeChatPayWalletBankBranchAreaCascader v-model:areaList="form.bank_branch_area" />
        </ProFormItemV2>
        <ProFormItemV2
          label="开户银行全称(含支行):"
          prop="bank_branch_id"
          :checkRules="[{ message: '请输入开户银行全称(含支行)' }]"
        >
          <WeChatPayWalletBankBranchsSelect
            v-model:bank_branch_id="form.bank_branch_id"
            placeholder="请输入"
            :bank_alias_code="form.bank_alias_code"
            :need_bank_branch="form.need_bank_branch"
            :city_code="form.bank_branch_area?.[1]"
          />
        </ProFormItemV2>
      </template>
      <ProFormItemV2
        label="银行账号:"
        prop="account_number"
@@ -980,8 +1004,17 @@
  EnumWeChatPayApplymentSalesScenesTypeText,
  EnumWeChatPayApplymentBankAccountTypeText,
} from '@/constants';
import { convertApi2FormUrl, convertApi2FormUrlOnlyOne, downloadFileByUrl, format } from '@/utils';
import {
  convertApi2FormUrl,
  convertApi2FormUrlOnlyOne,
  downloadFileByUrl,
  format,
  convertApi2FormUrls,
} from '@/utils';
import { Message } from '@bole-core/core';
import WeChatPayWalletBanksSelect from './WeChatPayWalletBanksSelect.vue';
import WeChatPayWalletBankBranchsSelect from './WeChatPayWalletBankBranchsSelect.vue';
import WeChatPayWalletBankBranchAreaCascader from './WeChatPayWalletBankBranchAreaCascader.vue';
defineOptions({
  name: 'WechatConfigureView',
@@ -1073,6 +1106,11 @@
  bank_branch_id: '',
  bank_name: '',
  account_number: '',
  bank_alias_code: '',
  bank_alias: '',
  account_bank_code: '' as any as number,
  need_bank_branch: false,
  bank_branch_area: [] as number[],
});
const EnumWeChatPayApplymentCertTypeTextList = computed(() => {
@@ -1120,7 +1158,7 @@
    form.business_code = data.business_code ?? '';
    form.contact_type = data.contact_info?.contact_type;
    form.contact_name = data.contact_info?.contact_name ?? '';
    form.contact_id_doc_type = data.contact_info?.contact_id_doc_type;
    form.contact_id_doc_type = data.contact_info?.contact_id_doc_type ?? ('' as any);
    form.contact_id_number = data.contact_info?.contact_id_number ?? '';
    form.contact_id_doc_copy = convertApi2FormUrlOnlyOne(
      data.contact_info?.contact_id_doc_copy ?? ''
@@ -1203,55 +1241,36 @@
    form.biz_address_code = data.business_info?.sales_info?.biz_store_info?.biz_address_code;
    form.biz_store_address =
      data.business_info?.sales_info?.biz_store_info?.biz_store_address ?? '';
    form.store_entrance_pic =
      data.business_info?.sales_info?.biz_store_info?.store_entrance_pic.length > 0
        ? data.business_info?.sales_info?.biz_store_info?.store_entrance_pic.map((x) =>
            convertApi2FormUrl(x)
          )
        : [];
    form.indoor_pic =
      data.business_info?.sales_info?.biz_store_info?.indoor_pic.length > 0
        ? data.business_info?.sales_info?.biz_store_info?.indoor_pic.map((x) =>
            convertApi2FormUrl(x)
          )
        : [];
    form.store_entrance_pic = convertApi2FormUrls(
      data.business_info?.sales_info?.biz_store_info?.store_entrance_pic
    );
    form.indoor_pic = convertApi2FormUrls(
      data.business_info?.sales_info?.biz_store_info?.indoor_pic
    );
    form.mp_appid = data.business_info?.sales_info?.mp_info?.mp_appid ?? '';
    form.mp_sub_appid = data.business_info?.sales_info?.mp_info?.mp_sub_appid ?? '';
    form.mp_pics =
      data.business_info?.sales_info?.mp_info?.mp_pics.length > 0
        ? data.business_info?.sales_info?.mp_info?.mp_pics.map((x) => convertApi2FormUrl(x))
        : [];
    form.mp_pics = convertApi2FormUrls(data.business_info?.sales_info?.mp_info?.mp_pics);
    form.mini_program_appid =
      data.business_info?.sales_info?.mini_program_info?.mini_program_appid ?? '';
    form.mini_program_sub_appid =
      data.business_info?.sales_info?.mini_program_info?.mini_program_sub_appid ?? '';
    form.mini_program_pics =
      data.business_info?.sales_info?.mini_program_info?.mini_program_pics.length > 0
        ? data.business_info?.sales_info?.mini_program_info?.mini_program_pics.map((x) =>
            convertApi2FormUrl(x)
          )
        : [];
    form.mini_program_pics = convertApi2FormUrls(
      data.business_info?.sales_info?.mini_program_info?.mini_program_pics
    );
    form.app_appid = data.business_info?.sales_info?.app_info?.app_appid ?? '';
    form.app_sub_appid = data.business_info?.sales_info?.app_info?.app_sub_appid ?? '';
    form.app_pics =
      data.business_info?.sales_info?.app_info?.app_pics.length > 0
        ? data.business_info?.sales_info?.app_info?.app_pics.map((x) => convertApi2FormUrl(x))
        : [];
    form.app_pics = convertApi2FormUrls(data.business_info?.sales_info?.app_info?.app_pics);
    form.domain = data.business_info?.sales_info?.web_info?.domain ?? '';
    form.web_authorisation = convertApi2FormUrlOnlyOne(
      data.business_info?.sales_info?.web_info?.web_authorisation ?? ''
    );
    form.sub_corp_id = data.business_info?.sales_info?.wework_info?.sub_corp_id ?? '';
    form.wework_pics =
      data.business_info?.sales_info?.wework_info?.wework_pics.length > 0
        ? data.business_info?.sales_info?.wework_info?.wework_pics.map((x) => convertApi2FormUrl(x))
        : [];
    form.wework_pics = convertApi2FormUrls(
      data.business_info?.sales_info?.wework_info?.wework_pics
    );
    form.settlement_id = data.settlement_info?.settlement_id ?? '';
    form.qualification_type = data.settlement_info?.qualification_type ?? '';
    form.qualifications =
      data.settlement_info?.qualifications?.length > 0
        ? data.settlement_info?.qualifications.map((x) => convertApi2FormUrl(x))
        : [];
    form.qualifications = convertApi2FormUrls(data.settlement_info?.qualifications);
    form.bank_account_type = data.bank_account_info?.bank_account_type;
    form.account_name = data.bank_account_info?.account_name ?? '';
    form.account_bank = data.bank_account_info?.account_bank ?? '';
@@ -1259,6 +1278,14 @@
    form.bank_branch_id = data.bank_account_info?.bank_branch_id ?? '';
    form.bank_name = data.bank_account_info?.bank_name ?? '';
    form.account_number = data.bank_account_info?.account_number ?? '';
    form.bank_alias_code = data.bank_account_info?.bank_alias_code ?? '';
    form.bank_alias = data.bank_account_info?.bank_alias ?? '';
    form.account_bank_code = data.bank_account_info?.account_bank_code;
    form.need_bank_branch = data.bank_account_info?.need_bank_branch ?? false;
    form.bank_branch_area = [
      data.bank_account_info?.province_code,
      data.bank_account_info?.city_code,
    ].filter(Boolean);
  },
});
@@ -1438,6 +1465,12 @@
        bank_branch_id: form.bank_branch_id,
        bank_name: form.bank_name,
        account_number: form.account_number,
        bank_alias_code: form.bank_alias_code,
        province_code: form.bank_branch_area?.[0],
        city_code: form.bank_branch_area?.[1],
        bank_alias: form.bank_alias,
        account_bank_code: form.account_bank_code,
        need_bank_branch: form.need_bank_branch,
      },
    };
    let res = await enterpriseWalletServices.openEnterpriseWeChatPayWallet(params);