liubp
2025-12-05 4dedbc68faa2f7eae7da207c5e33c04b68f2f97c
代理商详情页添加代理商名称,查询条件优化
3个文件已修改
60 ■■■■■ 已修改文件
src/views/datacabin/index.vue 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/demo/page/desc/detailDL/index.vue 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/demo/page/form/stephetong/Step3.vue 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/datacabin/index.vue
@@ -376,7 +376,7 @@
      });
      const list = Array.isArray(resp) ? resp : resp?.records || [];
      const names = list
        .map((item: any) => item?.realname || item?.username || item?.nickName || '')
        .map((item: any) => item?.username || item?.realname || item?.nickName || '')
        .filter((name: string) => typeof name === 'string' && name.trim() !== '');
      return Array.from(new Set(names));
    } catch (error) {
@@ -456,9 +456,12 @@
    const collectFromArray = (arr: any[]): string[] => {
      const names: string[] = [];
      arr.forEach((item) => {
        if (!item) return;
        if (item === null || item === undefined) return;
        if (typeof item === 'string') {
          names.push(item.trim());
        } else if (typeof item === 'number') {
          // 数字也转换为字符串显示
          names.push(String(item));
        } else if (Array.isArray(item)) {
          names.push(...collectFromArray(item));
        } else if (typeof item === 'object') {
@@ -473,6 +476,9 @@
          if (typeof name === 'string' && name.trim() !== '') {
            names.push(name.trim());
          }
        } else {
          // 其他类型也转换为字符串
          names.push(String(item));
        }
      });
      return names;
@@ -488,7 +494,8 @@
      try {
        const parsed = JSON.parse(trimmed);
        if (Array.isArray(parsed)) {
          return collectFromArray(parsed);
          // 不过滤,接口返回什么就展示什么,将所有值转换为字符串
          return parsed.map((item) => String(item)).filter((item) => item.trim() !== '');
        }
      } catch (e) {
        // 不是标准 JSON,再按逗号分割
@@ -496,7 +503,8 @@
          .slice(1, -1)
          .split(',')
          .map((token) => token.trim().replace(/^['"]|['"]$/g, ''));
        return tokens.filter((token) => token && isNaN(Number(token)));
        // 不过滤,返回所有token
        return tokens.filter((token) => token !== '');
      }
      return [];
    };
@@ -546,15 +554,24 @@
        },
        { isTransformResponse: false, errorMessageMode: 'none' }
      );
      const namesSource =
        (Array.isArray(resp) && resp) ||
        (Array.isArray(resp?.records) && resp.records) ||
        (Array.isArray(resp?.result?.records) && resp.result.records) ||
        (Array.isArray(resp?.result) && resp.result) ||
        resp?.result ||
        resp?.message ||
        [];
      const names = Array.from(new Set(normalizeCustomerNames(namesSource))).filter((name) => name && name.trim() !== '');
      // 优先处理 result 字段,如果 result 是字符串格式的数组,需要解析
      let namesSource: any = null;
      if (Array.isArray(resp)) {
        namesSource = resp;
      } else if (Array.isArray(resp?.records)) {
        namesSource = resp.records;
      } else if (Array.isArray(resp?.result?.records)) {
        namesSource = resp.result.records;
      } else if (Array.isArray(resp?.result)) {
        namesSource = resp.result;
      } else if (resp?.result) {
        namesSource = resp.result;
      } else if (resp?.message) {
        namesSource = resp.message;
      } else {
        namesSource = [];
      }
      const names = normalizeCustomerNames(namesSource);
      customers.value = names.map((n) => ({ value: n as string, label: n as string }));
      selectedCustomer.value = null;
      // 清空下游
@@ -600,7 +617,7 @@
      if (isAgent) {
        const resp = await contractList({
          // 代理客户模式下,根据选中的代理商 + 客户名称筛选合同
          agentsName: selectedAgent.value,
          customerName: selectedCustomer.value,
          // customerName,
          // agentSales: currentCreateBy.value,
          pageNo: 1,
src/views/demo/page/desc/detailDL/index.vue
@@ -1,9 +1,10 @@
<template>
  <PageWrapper title="代理商详情页" contentBackground>
    <a-card title="基本信息">
      <p>代理商名称:{{ formData.agentsName }}</p>
      <a-descriptions title="" :column="3">
        <a-descriptions-item label="代理商名称">
          <span>{{ formData.agentsName || '-' }}</span>
        <a-descriptions-item label="客户名称">
          <span>{{ formData.customerName || '-' }}</span>
        </a-descriptions-item>
        <a-descriptions-item label="行业">
          <span>{{ formData.customer?.industry || '-' }}</span>
src/views/demo/page/form/stephetong/Step3.vue
@@ -159,8 +159,8 @@
          let statusValue: number | string | undefined = undefined; // 默认其他角色为1
          let reviewStatus: number | string | undefined = undefined;
          let isAgent = false; // 是否为代理商标志
          const userInfo = userStore.getUserInfo; // 获取用户信息,用于后续获取用户名
          try {
            const userInfo = userStore.getUserInfo;
            const userid = userInfo?.id || userInfo?.userId;
            if (userid) {
              const roleResponse = await queryUserRole({ userid: String(userid) });
@@ -237,9 +237,13 @@
                : undefined,
              // 将紧急状态移动至合同对象下
              emergencyStatus: props.step2Data.emergencyStatus ?? 3,
              // 如果是代理商,不提交customerName,而是通过agentsName传递
              // 当登录用户为代理商时,agentsName为当前登录用户的用户名,customerName为enterpriseName
              // 当登录用户不是代理商时,只传递customerName为enterpriseName
              ...(isAgent
                ? { agentsName: props.enterpriseName }
                ? {
                    agentsName: userInfo?.username || '',
                    customerName: props.enterpriseName,
                  }
                : { customerName: props.enterpriseName }),
              contractFileList,
              // 如果是代理商,设置审核状态为8