Procházet zdrojové kódy

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	src/api/product/base/index.ts
#	src/api/product/base/types.ts
tjxt před 4 měsíci
rodič
revize
3dbfce8efc
39 změnil soubory, kde provedl 4823 přidání a 310 odebrání
  1. 75 0
      src/api/company/company/index.ts
  2. 410 0
      src/api/company/company/types.ts
  3. 63 0
      src/api/customer/bank/index.ts
  4. 146 0
      src/api/customer/bank/types.ts
  5. 63 0
      src/api/customer/contact/index.ts
  6. 201 0
      src/api/customer/contact/types.ts
  7. 63 0
      src/api/customer/customerCategory/enterpriseScale/index.ts
  8. 75 0
      src/api/customer/customerCategory/enterpriseScale/types.ts
  9. 63 0
      src/api/customer/customerCategory/industryCategory/index.ts
  10. 75 0
      src/api/customer/customerCategory/industryCategory/types.ts
  11. 13 2
      src/api/customer/info/index.ts
  12. 3 3
      src/api/customer/info/types.ts
  13. 63 0
      src/api/product/attributes/index.ts
  14. 171 0
      src/api/product/attributes/types.ts
  15. 118 2
      src/api/product/base/index.ts
  16. 48 0
      src/api/product/base/types.ts
  17. 63 0
      src/api/product/brand/index.ts
  18. 315 0
      src/api/product/brand/types.ts
  19. 74 0
      src/api/product/category/index.ts
  20. 402 0
      src/api/product/category/types.ts
  21. 63 0
      src/api/product/unit/index.ts
  22. 101 0
      src/api/product/unit/types.ts
  23. 63 0
      src/api/product/warehouseInventory/index.ts
  24. 176 0
      src/api/product/warehouseInventory/types.ts
  25. 6 6
      src/api/supplier/address/index.ts
  26. 5 0
      src/api/supplier/address/types.ts
  27. 6 6
      src/api/supplier/bank/index.ts
  28. 15 15
      src/api/supplier/info/types.ts
  29. 63 0
      src/api/supplierAddress/supplieraddress/index.ts
  30. 236 0
      src/api/supplierAddress/supplieraddress/types.ts
  31. 74 0
      src/api/system/level/index.ts
  32. 62 0
      src/api/system/level/types.ts
  33. 74 0
      src/api/system/type/index.ts
  34. 62 0
      src/api/system/type/types.ts
  35. 411 0
      src/components/RegionCascader/index.vue
  36. 835 225
      src/views/customer/info/detail.vue
  37. 34 23
      src/views/customer/info/index.vue
  38. 8 8
      src/views/login.vue
  39. 25 20
      src/views/supplier/approve/index.vue

+ 75 - 0
src/api/company/company/index.ts

@@ -0,0 +1,75 @@
+import request from '@/utils/request';
+import { AxiosPromise } from 'axios';
+import { CompanyVO, CompanyForm, CompanyQuery } from '@/api/company/company/types';
+
+/**
+ * 查询公司信息列表
+ * @param query
+ * @returns {*}
+ */
+
+export const listCompany = (query?: CompanyQuery): AxiosPromise<CompanyVO[]> => {
+  return request({
+    url: '/system/company/list',
+    method: 'get',
+    params: query
+  });
+};
+
+/**
+ * 查询公司信息详细
+ * @param id
+ */
+export const getCompany = (id: string | number): AxiosPromise<CompanyVO> => {
+  return request({
+    url: '/system/company/' + id,
+    method: 'get'
+  });
+};
+
+/**
+ * 新增公司信息
+ * @param data
+ */
+export const addCompany = (data: CompanyForm) => {
+  return request({
+    url: '/system/company',
+    method: 'post',
+    data: data
+  });
+};
+
+/**
+ * 修改公司信息
+ * @param data
+ */
+export const updateCompany = (data: CompanyForm) => {
+  return request({
+    url: '/system/company',
+    method: 'put',
+    data: data
+  });
+};
+
+/**
+ * 删除公司信息
+ * @param id
+ */
+export const delCompany = (id: string | number | Array<string | number>) => {
+  return request({
+    url: '/system/company/' + id,
+    method: 'delete'
+  });
+};
+
+export function changeShowStatus(id: string | number, isShow: string) {
+  const data = {
+    id,
+    isShow
+  };
+  return request({
+    url: '/system/bank/changeStatus',
+    method: 'put',
+    data: data
+  });
+}

+ 410 - 0
src/api/company/company/types.ts

@@ -0,0 +1,410 @@
+export interface CompanyVO {
+  /**
+   * 主键ID
+   */
+  id: string | number;
+
+  /**
+   * 会计主体ID
+   */
+  accBnId: string | number;
+
+  /**
+   * 会计主体编号
+   */
+  accBnNo: string;
+
+  /**
+   * 公司地址
+   */
+  address: string;
+
+  /**
+   * 经营开始日期
+   */
+  begData: string;
+
+  /**
+   * 经营范围
+   */
+  busScp: string;
+
+  /**
+   * 注册资本金额
+   */
+  capAmt: number;
+
+  /**
+   * 公司全名
+   */
+  companyFullName: string;
+
+  /**
+   * 法人代表
+   */
+  corporation: string;
+
+  /**
+   * 电子邮箱
+   */
+  email: string;
+
+  /**
+   * 经营结束日期
+   */
+  endData: string;
+
+  /**
+   * 成立日期
+   */
+  foundDa: string;
+
+  /**
+   * 内部客户ID
+   */
+  inCustId: string | number;
+
+  /**
+   * 内部供应商ID
+   */
+  inSupId: string | number;
+
+  /**
+   * 法律代表人
+   */
+  lelPer: string;
+
+  /**
+   * 联系电话
+   */
+  phone: string;
+
+  /**
+   * 负责人/经办人
+   */
+  principal: string;
+
+  /**
+   * 注册地址
+   */
+  regAddr: string;
+
+  /**
+   * 注册日期
+   */
+  regData: string;
+
+  /**
+   * 注册机关
+   */
+  regOrg: string;
+
+  /**
+   * 税务登记号
+   */
+  taxNo: string;
+
+  /**
+   * 公司编号
+   */
+  companyCode: string;
+
+  /**
+   * 公司名称
+   */
+  companyName: string;
+
+  /**
+   * 是否显示(0-是,1-否)
+   */
+  isShow: string;
+
+  /**
+   * 数据来源
+   */
+  dataSource: string;
+
+  /**
+   * 状态(0正常 1停用)
+   */
+  status: string;
+
+  /**
+   * 备注
+   */
+  remark: string;
+}
+
+export interface CompanyForm extends BaseEntity {
+  /**
+   * 主键ID
+   */
+  id?: string | number;
+
+  /**
+   * 会计主体ID
+   */
+  accBnId?: string | number;
+
+  /**
+   * 会计主体编号
+   */
+  accBnNo?: string;
+
+  /**
+   * 公司地址
+   */
+  address?: string;
+
+  /**
+   * 经营开始日期
+   */
+  begData?: string;
+
+  /**
+   * 经营范围
+   */
+  busScp?: string;
+
+  /**
+   * 注册资本金额
+   */
+  capAmt?: number;
+
+  /**
+   * 公司全名
+   */
+  companyFullName?: string;
+
+  /**
+   * 法人代表
+   */
+  corporation?: string;
+
+  /**
+   * 电子邮箱
+   */
+  email?: string;
+
+  /**
+   * 经营结束日期
+   */
+  endData?: string;
+
+  /**
+   * 成立日期
+   */
+  foundDa?: string;
+
+  /**
+   * 内部客户ID
+   */
+  inCustId?: string | number;
+
+  /**
+   * 内部供应商ID
+   */
+  inSupId?: string | number;
+
+  /**
+   * 法律代表人
+   */
+  lelPer?: string;
+
+  /**
+   * 联系电话
+   */
+  phone?: string;
+
+  /**
+   * 负责人/经办人
+   */
+  principal?: string;
+
+  /**
+   * 注册地址
+   */
+  regAddr?: string;
+
+  /**
+   * 注册日期
+   */
+  regData?: string;
+
+  /**
+   * 注册机关
+   */
+  regOrg?: string;
+
+  /**
+   * 税务登记号
+   */
+  taxNo?: string;
+
+  /**
+   * 公司编号
+   */
+  companyCode?: string;
+
+  /**
+   * 公司名称
+   */
+  companyName?: string;
+
+  /**
+   * 是否显示(0-是,1-否)
+   */
+  isShow?: string;
+
+  /**
+   * 数据来源
+   */
+  dataSource?: string;
+
+  /**
+   * 状态(0正常 1停用)
+   */
+  status?: string;
+
+  /**
+   * 备注
+   */
+  remark?: string;
+}
+
+export interface CompanyQuery extends PageQuery {
+  /**
+   * 会计主体ID
+   */
+  accBnId?: string | number;
+
+  /**
+   * 会计主体编号
+   */
+  accBnNo?: string;
+
+  /**
+   * 公司地址
+   */
+  address?: string;
+
+  /**
+   * 经营开始日期
+   */
+  begData?: string;
+
+  /**
+   * 经营范围
+   */
+  busScp?: string;
+
+  /**
+   * 注册资本金额
+   */
+  capAmt?: number;
+
+  /**
+   * 公司全名
+   */
+  companyFullName?: string;
+
+  /**
+   * 法人代表
+   */
+  corporation?: string;
+
+  /**
+   * 电子邮箱
+   */
+  email?: string;
+
+  /**
+   * 经营结束日期
+   */
+  endData?: string;
+
+  /**
+   * 成立日期
+   */
+  foundDa?: string;
+
+  /**
+   * 内部客户ID
+   */
+  inCustId?: string | number;
+
+  /**
+   * 内部供应商ID
+   */
+  inSupId?: string | number;
+
+  /**
+   * 法律代表人
+   */
+  lelPer?: string;
+
+  /**
+   * 联系电话
+   */
+  phone?: string;
+
+  /**
+   * 负责人/经办人
+   */
+  principal?: string;
+
+  /**
+   * 注册地址
+   */
+  regAddr?: string;
+
+  /**
+   * 注册日期
+   */
+  regData?: string;
+
+  /**
+   * 注册机关
+   */
+  regOrg?: string;
+
+  /**
+   * 税务登记号
+   */
+  taxNo?: string;
+
+  /**
+   * 公司编号
+   */
+  companyCode?: string;
+
+  /**
+   * 公司名称
+   */
+  companyName?: string;
+
+  /**
+   * 是否显示(0-是,1-否)
+   */
+  isShow?: string;
+
+  /**
+   * 数据来源
+   */
+  dataSource?: string;
+
+  /**
+   * 状态(0正常 1停用)
+   */
+  status?: string;
+
+  /**
+   * 平台标识
+   */
+  platformCode?: string;
+
+  /**
+   * 日期范围参数
+   */
+  params?: any;
+}

+ 63 - 0
src/api/customer/bank/index.ts

@@ -0,0 +1,63 @@
+import request from '@/utils/request';
+import { AxiosPromise } from 'axios';
+import { BankVO, BankForm, BankQuery } from '@/api/customer/bank/types';
+
+/**
+ * 查询供应商银行账户列表
+ * @param query
+ * @returns {*}
+ */
+
+export const listBank = (query?: BankQuery): AxiosPromise<BankVO[]> => {
+  return request({
+    url: '/customer/supplierbank/list',
+    method: 'get',
+    params: query
+  });
+};
+
+/**
+ * 查询供应商银行账户详细
+ * @param id
+ */
+export const getBank = (id: string | number): AxiosPromise<BankVO> => {
+  return request({
+    url: '/customer/supplierbank/' + id,
+    method: 'get'
+  });
+};
+
+/**
+ * 新增供应商银行账户
+ * @param data
+ */
+export const addBank = (data: BankForm) => {
+  return request({
+    url: '/customer/supplierbank',
+    method: 'post',
+    data: data
+  });
+};
+
+/**
+ * 修改供应商银行账户
+ * @param data
+ */
+export const updateBank = (data: BankForm) => {
+  return request({
+    url: '/customer/supplierbank',
+    method: 'put',
+    data: data
+  });
+};
+
+/**
+ * 删除供应商银行账户
+ * @param id
+ */
+export const delBank = (id: string | number | Array<string | number>) => {
+  return request({
+    url: '/customer/supplierbank/' + id,
+    method: 'delete'
+  });
+};

+ 146 - 0
src/api/customer/bank/types.ts

@@ -0,0 +1,146 @@
+export interface BankVO {
+  /**
+   * 账户序号
+   */
+  num: number;
+
+  /**
+   * 供应商编号
+   */
+  supplierNo: string;
+
+  /**
+   * 供应商ID
+   */
+  supplierId: string | number;
+
+  /**
+   * 银行行号
+   */
+  bankNum: string;
+
+  /**
+   * 银行信息编号(可能为内部系统编号)
+   */
+  bankInfoNo: string;
+
+  /**
+   * 银行名称
+   */
+  bankName: string;
+
+  /**
+   * 银行账号
+   */
+  bankNo: string;
+
+}
+
+export interface BankForm extends BaseEntity {
+  /**
+   * 账户序号
+   */
+  num?: number;
+
+  /**
+   * 供应商编号
+   */
+  supplierNo?: string;
+
+  /**
+   * 供应商ID
+   */
+  supplierId?: string | number;
+
+  /**
+   * 银行行号
+   */
+  bankNum?: string;
+
+  /**
+   * 银行信息编号(可能为内部系统编号)
+   */
+  bankInfoNo?: string;
+
+  /**
+   * 银行名称
+   */
+  bankName?: string;
+
+  /**
+   * 银行账号
+   */
+  bankNo?: string;
+
+  /**
+   * 账户有效性标识(1-有效, 0-无效)
+   */
+  isture?: string;
+
+  /**
+   * 账户户名
+   */
+  circlesName?: string;
+
+  /**
+   * 账户预留电话
+   */
+  phone?: string;
+
+  /**
+   * 发票类型编码
+   */
+  invoiceTypeNo?: string;
+
+  /**
+   * 发票类型名称
+   */
+  invoiceTypeName?: string;
+
+}
+
+export interface BankQuery extends PageQuery {
+
+  /**
+   * 账户序号
+   */
+  num?: number;
+
+  /**
+   * 供应商编号
+   */
+  supplierNo?: string;
+
+  /**
+   * 供应商ID
+   */
+  supplierId?: string | number;
+
+  /**
+   * 银行行号
+   */
+  bankNum?: string;
+
+  /**
+   * 银行信息编号(可能为内部系统编号)
+   */
+  bankInfoNo?: string;
+
+  /**
+   * 银行名称
+   */
+  bankName?: string;
+
+  /**
+   * 银行账号
+   */
+  bankNo?: string;
+
+    /**
+     * 日期范围参数
+     */
+    params?: any;
+}
+
+
+

+ 63 - 0
src/api/customer/contact/index.ts

@@ -0,0 +1,63 @@
+import request from '@/utils/request';
+import { AxiosPromise } from 'axios';
+import { ContactVO, ContactForm, ContactQuery } from '@/api/customer/contact/types';
+
+/**
+ * 查询联系人列表
+ * @param query
+ * @returns {*}
+ */
+
+export const listContact = (query?: ContactQuery): AxiosPromise<ContactVO[]> => {
+  return request({
+    url: '/customer/contact/list',
+    method: 'get',
+    params: query
+  });
+};
+
+/**
+ * 查询联系人详细
+ * @param id
+ */
+export const getContact = (id: string | number): AxiosPromise<ContactVO> => {
+  return request({
+    url: '/customer/contact/' + id,
+    method: 'get'
+  });
+};
+
+/**
+ * 新增联系人
+ * @param data
+ */
+export const addContact = (data: ContactForm) => {
+  return request({
+    url: '/customer/contact',
+    method: 'post',
+    data: data
+  });
+};
+
+/**
+ * 修改联系人
+ * @param data
+ */
+export const updateContact = (data: ContactForm) => {
+  return request({
+    url: '/customer/contact',
+    method: 'put',
+    data: data
+  });
+};
+
+/**
+ * 删除联系人
+ * @param id
+ */
+export const delContact = (id: string | number | Array<string | number>) => {
+  return request({
+    url: '/customer/contact/' + id,
+    method: 'delete'
+  });
+};

+ 201 - 0
src/api/customer/contact/types.ts

@@ -0,0 +1,201 @@
+export interface ContactVO {
+  /**
+   * ID
+   */
+  id?: string | number;
+
+  /**
+   * 供应商编号
+   */
+  supplierNo?: string;
+
+  /**
+   * 供应商ID
+   */
+  supplierId?: string | number;
+
+  /**
+   * 供应商名称
+   */
+  supplierName?: string;
+
+  /**
+   * 用户ID
+   */
+  userNo?: string;
+
+  /**
+   * A10标识号
+   */
+  abutment_no?: string;
+
+  /**
+   * 员工姓名
+   */
+  userName?: string;
+
+  /**
+   * 手机号
+   */
+  phone?: string;
+
+  /**
+   * 角色
+   */
+  roleNo?: string;
+
+  /**
+   * 部门
+   */
+  departmentNo?: string;
+
+  /**
+   * 职位
+   */
+  position?: string;
+
+  /**
+   * 主要联系人(0-否,1-是)
+   */
+  isPrimaryContact?: string;
+
+  /**
+   * 允许登录供应商端(0-否,1-是)
+   */
+  isRegister?: string;
+
+  /**
+   * 状态(0正常 1停用)
+   */
+  status?: string;
+
+  /**
+   * 邮箱
+   */
+  email?: string;
+
+  /**
+   * 传真
+   */
+  fax?: string;
+
+  /**
+   * 备注
+   */
+  remark?: string;
+}
+
+export interface ContactForm extends BaseEntity {
+  /**
+   * 供应商编号
+   */
+  supplierNo?: string;
+
+  /**
+   * 供应商ID
+   */
+  supplierId?: string | number;
+
+  /**
+   * 用户ID
+   */
+  userNo?: string;
+
+  /**
+   * A10标识号
+   */
+  abutment_no?: string;
+
+  /**
+   * 员工姓名
+   */
+  userName?: string;
+
+  /**
+   * 手机号
+   */
+  phone?: string;
+
+  /**
+   * 角色
+   */
+  roleNo?: string;
+
+  /**
+   * 部门
+   */
+  departmentNo?: string;
+
+  /**
+   * 职位
+   */
+  position?: string;
+
+  /**
+   * 主要联系人(0-否,1-是)
+   */
+  isPrimaryContact?: string;
+
+  /**
+   * 允许登录供应商端(0-否,1-是)
+   */
+  isRegister?: string;
+
+  /**
+   * 状态(0正常 1停用)
+   */
+  status?: string;
+
+  /**
+   * 邮箱
+   */
+  email?: string;
+
+  /**
+   * 传真
+   */
+  fax?: string;
+
+  /**
+   * 备注
+   */
+  remark?: string;
+}
+
+export interface ContactQuery extends PageQuery {
+
+  /**
+   * 供应商编号
+   */
+  supplierNo?: string;
+
+  /**
+   * 供应商ID
+   */
+  supplierId?: string | number;
+
+  /**
+   * 用户ID
+   */
+  userNo?: string;
+
+  /**
+   * 员工姓名
+   */
+  userName?: string;
+
+  /**
+   * 手机号
+   */
+  phone?: string;
+
+  /**
+   * 状态(0正常 1停用)
+   */
+  status?: string;
+
+    /**
+     * 日期范围参数
+     */
+    params?: any;
+}

+ 63 - 0
src/api/customer/customerCategory/enterpriseScale/index.ts

@@ -0,0 +1,63 @@
+import request from '@/utils/request';
+import { AxiosPromise } from 'axios';
+import { EnterpriseScaleVO, EnterpriseScaleForm, EnterpriseScaleQuery } from '@/api/customer/customerCategory/enterpriseScale/types';
+
+/**
+ * 查询企业规模列表
+ * @param query
+ * @returns {*}
+ */
+
+export const listEnterpriseScale = (query?: EnterpriseScaleQuery): AxiosPromise<EnterpriseScaleVO[]> => {
+  return request({
+    url: '/customer/enterpriseScale/list',
+    method: 'get',
+    params: query
+  });
+};
+
+/**
+ * 查询企业规模详细
+ * @param id
+ */
+export const getEnterpriseScale = (id: string | number): AxiosPromise<EnterpriseScaleVO> => {
+  return request({
+    url: '/customer/enterpriseScale/' + id,
+    method: 'get'
+  });
+};
+
+/**
+ * 新增企业规模
+ * @param data
+ */
+export const addEnterpriseScale = (data: EnterpriseScaleForm) => {
+  return request({
+    url: '/customer/enterpriseScale',
+    method: 'post',
+    data: data
+  });
+};
+
+/**
+ * 修改企业规模
+ * @param data
+ */
+export const updateEnterpriseScale = (data: EnterpriseScaleForm) => {
+  return request({
+    url: '/customer/enterpriseScale',
+    method: 'put',
+    data: data
+  });
+};
+
+/**
+ * 删除企业规模
+ * @param id
+ */
+export const delEnterpriseScale = (id: string | number | Array<string | number>) => {
+  return request({
+    url: '/customer/enterpriseScale/' + id,
+    method: 'delete'
+  });
+};

+ 75 - 0
src/api/customer/customerCategory/enterpriseScale/types.ts

@@ -0,0 +1,75 @@
+export interface EnterpriseScaleVO {
+  /**
+   * ID
+   */
+  id: string | number;
+
+  /**
+   * 企业规模名称
+   */
+  enterpriseScaleName: string;
+
+  /**
+   * 状态(0正常 1停用)
+   */
+  status: string;
+
+  /**
+   * 备注
+   */
+  remark: string;
+
+  /**
+   * 平台标识
+   */
+  platformCode: string;
+}
+
+export interface EnterpriseScaleForm extends BaseEntity {
+  /**
+   * ID
+   */
+  id?: string | number;
+
+  /**
+   * 企业规模名称
+   */
+  enterpriseScaleName?: string;
+
+  /**
+   * 状态(0正常 1停用)
+   */
+  status?: string;
+
+  /**
+   * 备注
+   */
+  remark?: string;
+
+  /**
+   * 平台标识
+   */
+  platformCode?: string;
+}
+
+export interface EnterpriseScaleQuery extends PageQuery {
+  /**
+   * 企业规模名称
+   */
+  enterpriseScaleName?: string;
+
+  /**
+   * 状态(0正常 1停用)
+   */
+  status?: string;
+
+  /**
+   * 平台标识
+   */
+  platformCode?: string;
+
+  /**
+   * 日期范围参数
+   */
+  params?: any;
+}

+ 63 - 0
src/api/customer/customerCategory/industryCategory/index.ts

@@ -0,0 +1,63 @@
+import request from '@/utils/request';
+import { AxiosPromise } from 'axios';
+import { IndustryCategoryVO, IndustryCategoryForm, IndustryCategoryQuery } from '@/api/customer/customerCategory/industryCategory/types';
+
+/**
+ * 查询所属行业列表
+ * @param query
+ * @returns {*}
+ */
+
+export const listIndustryCategory = (query?: IndustryCategoryQuery): AxiosPromise<IndustryCategoryVO[]> => {
+  return request({
+    url: '/customer/industryCategory/list',
+    method: 'get',
+    params: query
+  });
+};
+
+/**
+ * 查询所属行业详细
+ * @param id
+ */
+export const getIndustryCategory = (id: string | number): AxiosPromise<IndustryCategoryVO> => {
+  return request({
+    url: '/customer/industryCategory/' + id,
+    method: 'get'
+  });
+};
+
+/**
+ * 新增所属行业
+ * @param data
+ */
+export const addIndustryCategory = (data: IndustryCategoryForm) => {
+  return request({
+    url: '/customer/industryCategory',
+    method: 'post',
+    data: data
+  });
+};
+
+/**
+ * 修改所属行业
+ * @param data
+ */
+export const updateIndustryCategory = (data: IndustryCategoryForm) => {
+  return request({
+    url: '/customer/industryCategory',
+    method: 'put',
+    data: data
+  });
+};
+
+/**
+ * 删除所属行业
+ * @param id
+ */
+export const delIndustryCategory = (id: string | number | Array<string | number>) => {
+  return request({
+    url: '/customer/industryCategory/' + id,
+    method: 'delete'
+  });
+};

+ 75 - 0
src/api/customer/customerCategory/industryCategory/types.ts

@@ -0,0 +1,75 @@
+export interface IndustryCategoryVO {
+  /**
+   * ID
+   */
+  id: string | number;
+
+  /**
+   * 所属行业
+   */
+  industryCategoryName: string;
+
+  /**
+   * 状态(0正常 1停用)
+   */
+  status: string;
+
+  /**
+   * 备注
+   */
+  remark: string;
+
+  /**
+   * 平台标识
+   */
+  platformCode: string;
+}
+
+export interface IndustryCategoryForm extends BaseEntity {
+  /**
+   * ID
+   */
+  id?: string | number;
+
+  /**
+   * 所属行业
+   */
+  industryCategoryName?: string;
+
+  /**
+   * 状态(0正常 1停用)
+   */
+  status?: string;
+
+  /**
+   * 备注
+   */
+  remark?: string;
+
+  /**
+   * 平台标识
+   */
+  platformCode?: string;
+}
+
+export interface IndustryCategoryQuery extends PageQuery {
+  /**
+   * 所属行业
+   */
+  industryCategoryName?: string;
+
+  /**
+   * 状态(0正常 1停用)
+   */
+  status?: string;
+
+  /**
+   * 平台标识
+   */
+  platformCode?: string;
+
+  /**
+   * 日期范围参数
+   */
+  params?: any;
+}

+ 13 - 2
src/api/customer/info/index.ts

@@ -245,6 +245,17 @@ export const getAuthorizeDetailList = (supplierId: string | number) => {
   });
 };
 
+/**
+ * 保存供应商采购信息(产品经理和采购员)
+ * @param data 采购信息数据
+ */
+export const savePurchaseInfo = (data: { supplierId: string | number; productManager: number | null; purchaser: number | null }) => {
+  return request({
+    url: '/system/comStaff/saveInformation',
+    method: 'post',
+    data: data
+  });
+};
 /**
  * 根据供应商ID获取地址列表
  * @param supplierId 供应商ID
@@ -275,8 +286,8 @@ export const getSupplierTypeList = (params?: any) => {
     url: '/system/type/list',
     method: 'get',
     params: {
-      
-      
+
+
       dataSource: 'youyi',
       ...params
     }

+ 3 - 3
src/api/customer/info/types.ts

@@ -22,7 +22,7 @@ export interface InfoVO {
   /**
    * 供应商类型
    */
-  supplierType: string;
+  supplierType: string | number;
 
   /**
    * 合作类型
@@ -67,7 +67,7 @@ export interface InfoVO {
   /**
    * 办公地址-区/县
    */
-  officeCounty: string;
+  officeCounty?: string;
 
   /**
    * 办公详细地址
@@ -177,7 +177,7 @@ export interface InfoVO {
   /**
    * 合作等级
    */
-  cooperateLevel: string;
+  cooperateLevel: string | number;
 
   /**
    * 合同到期时间

+ 63 - 0
src/api/product/attributes/index.ts

@@ -0,0 +1,63 @@
+import request from '@/utils/request';
+import { AxiosPromise } from 'axios';
+import { AttributesVO, AttributesForm, AttributesQuery } from '@/api/product/attributes/types';
+
+/**
+ * 查询产品属性定义(用于动态属性配置)列表
+ * @param query
+ * @returns {*}
+ */
+
+export const listAttributes = (query?: AttributesQuery): AxiosPromise<AttributesVO[]> => {
+  return request({
+    url: '/product/attributes/list',
+    method: 'get',
+    params: query
+  });
+};
+
+/**
+ * 查询产品属性定义(用于动态属性配置)详细
+ * @param id
+ */
+export const getAttributes = (id: string | number): AxiosPromise<AttributesVO> => {
+  return request({
+    url: '/product/attributes/' + id,
+    method: 'get'
+  });
+};
+
+/**
+ * 新增产品属性定义(用于动态属性配置)
+ * @param data
+ */
+export const addAttributes = (data: AttributesForm) => {
+  return request({
+    url: '/product/attributes',
+    method: 'post',
+    data: data
+  });
+};
+
+/**
+ * 修改产品属性定义(用于动态属性配置)
+ * @param data
+ */
+export const updateAttributes = (data: AttributesForm) => {
+  return request({
+    url: '/product/attributes',
+    method: 'put',
+    data: data
+  });
+};
+
+/**
+ * 删除产品属性定义(用于动态属性配置)
+ * @param id
+ */
+export const delAttributes = (id: string | number | Array<string | number>) => {
+  return request({
+    url: '/product/attributes/' + id,
+    method: 'delete'
+  });
+};

+ 171 - 0
src/api/product/attributes/types.ts

@@ -0,0 +1,171 @@
+  export interface AttributesVO {
+  /**
+   * 主键,自增ID
+   */
+  id: string | number;
+
+  /**
+   * 关联的产品分类id
+   */
+  categoryId: string | number;
+
+  /**
+   * 产品分类名称
+   */
+  categoryName?: string;
+
+  /**
+   * 属性编码(用于系统识别)
+   */
+  productAttributesCode: string;
+
+  /**
+   * 属性显示名称
+   */
+  productAttributesName: string;
+
+  /**
+   * 是否可选:0=单选属性,1=唯一属性,2=复选属性
+   */
+  isOptional: string; 
+
+  /**
+   * 属性录入方式(1=手工录入,2=从列表中选择)
+   */
+  entryMethod: string;
+
+  /**
+   * 是否用于商品筛选:1=是,0=否
+   */
+  isFilter: string;
+
+  /**
+   * 预定义属性值列表(逗号分隔或JSON)
+   */
+  attributesList: string;
+
+  /**
+   * 是否必填: 1=是, 0=否
+   */
+  required: string;
+
+  /**
+   * 备注
+   */
+  remark: string;
+
+}
+
+export interface AttributesForm extends BaseEntity {
+  /**
+   * 主键,自增ID
+   */
+  id?: string | number;
+
+  /**
+   * 关联的产品分类id
+   */
+  categoryId?: string | number;
+
+  /**
+   * 属性编码(用于系统识别)
+   */
+  productAttributesCode?: string;
+
+  /**
+   * 属性显示名称
+   */
+  productAttributesName?: string;
+
+  /**
+   * 是否可选:0=单选属性,1=唯一属性,2=复选属性
+   */
+  isOptional?: string | number;
+
+  /**
+   * 属性录入方式(manual=手工录入,select=从列表中选择)
+   */
+  entryMethod?: string;
+
+  /**
+   * 是否用于商品筛选:1=是,0=否
+   */
+  isFilter?: string | number;
+
+  /**
+   * 预定义属性值列表(逗号分隔或JSON)
+   */
+  attributesList?: string;
+
+  /**
+   * 是否必填: 1=是, 0=否
+   */
+  required?: string;
+
+  /**
+   * 备注
+   */
+  remark?: string;
+
+}
+
+export interface AttributesQuery extends PageQuery {
+
+  /**
+   * 关联的产品分类id
+   */
+  categoryId?: string | number;
+
+  /**
+   * 分类名称(用于模糊搜索)
+   */
+  categoryName?: string;
+
+  /**
+   * 属性编码(用于系统识别)
+   */
+  productAttributesCode?: string;
+
+  /**
+   * 属性显示名称
+   */
+  productAttributesName?: string;
+
+  /**
+   * 是否可选:0=单选属性,1=唯一属性,2=复选属性
+   */
+  isOptional?: string;
+
+  /**
+   * 属性录入方式(manual=手工录入,select=从列表中选择)
+   */
+  entryMethod?: string;
+
+  /**
+   * 是否用于商品筛选:1=是,0=否
+   */
+  isFilter?: string;
+
+  /**
+   * 预定义属性值列表(逗号分隔或JSON)
+   */
+  attributesList?: string;
+
+  /**
+   * 是否必填: 1=是, 0=否
+   */
+  required?: string;
+
+  /**
+   * 平台标识
+   */
+  platformCode?: string;
+
+    /**
+     * 日期范围参数
+     */
+    params?: any;
+}
+
+
+

+ 118 - 2
src/api/product/base/index.ts

@@ -1,7 +1,12 @@
 import request from '@/utils/request';
 import { AxiosPromise } from 'axios';
-import { BaseVO, BaseForm, BaseQuery, StatusCountVo } from '@/api/product/base/types';
-
+import { BaseVO, BaseForm, BaseQuery } from '@/api/product/base/types';
+import { CategoryQuery, categoryTreeVO, CategoryVO } from '../category/types';
+import { BrandQuery, BrandVO } from '../brand/types';
+import { AttributesVO } from '../attributes/types';
+import { EnsureQuery, EnsureVO } from '../ensure/types';
+import { AfterSalesQuery, AfterSalesVO } from '../afterSales/types';
+import { UnitQuery, UnitVO } from '../unit/types';
 
 /**
  * 查询产品基础信息列表
@@ -63,3 +68,114 @@ export const delBase = (id: string | number | Array<string | number>) => {
   });
 };
 
+/**
+ * 获取产品分类树
+ * @param query
+ * @returns {*}
+ */
+export const categoryTree = (query?: CategoryQuery): AxiosPromise<categoryTreeVO[]> => {
+  return request({
+    url: '/product/base/categoryTree',
+    method: 'get',
+    params: query
+  });
+};
+/**
+ * 查询产品分类信息列表
+ * @param query
+ * @returns {*}
+ */
+export const categoryList = (query?: CategoryQuery): AxiosPromise<CategoryVO[]> => {
+  return request({
+    url: '/product/base/categoryList',
+    method: 'get',
+    params: query
+  });
+};
+/**
+ * 查询产品品牌信息列表
+ * @param query
+ * @returns {*}
+ */
+export const brandList = (query?: BrandQuery): AxiosPromise<BrandVO[]> => {
+  return request({
+    url: '/product/base/brandList',
+    method: 'get',
+    params: query
+  });
+};
+/**
+ * 查询产品分类下的属性列表
+ * @param id
+ * @returns {*}
+ */
+export const categoryAttributeList = (id: string | number): AxiosPromise<AttributesVO[]> => {
+  return request({
+    url: '/product/base/getProductAttributeList/' + id,
+    method: 'get'
+  });
+};
+
+/**
+ * 查询产品服务保障列表
+ * @param query
+ * @returns {*}
+ */
+export const getServiceList = (query?: EnsureQuery): AxiosPromise<EnsureVO[]> => {
+  return request({
+    url: '/product/base/getServiceList',
+    method: 'get',
+    params: query
+  });
+};
+
+/**
+ * 获取售后服务信息列表
+ * @param query
+ * @returns {*}
+ */
+export const getAfterSaleList = (query?: AfterSalesQuery): AxiosPromise<AfterSalesVO[]> => {
+  return request({
+    url: '/product/base/getAfterSalesList',
+    method: 'get',
+    params: query
+  });
+};
+
+/**
+ * 获取单位信息列表
+ * @param query
+ * @returns {*}
+ */
+export const getUnitList = (query?: UnitQuery): AxiosPromise<UnitVO[]> => {
+  return request({
+    url: '/product/base/getUnitList',
+    method: 'get',
+    params: query
+  });
+};
+
+/**
+ * 商品审核
+ * @param data 审核信息(包含id、productReviewStatus、reviewComments)
+ */
+export const reviewBase = (data: BaseForm) => {
+  return request({
+    url: '/product/base/review',
+    method: 'post',
+    data: data
+  });
+};
+
+/**
+ * 商品上下架 状态变更
+ * @param data 审核信息(包含id、productStatus、shelfComments)
+ */
+export const shelfReview = (data: BaseForm) => {
+  return request({
+    url: '/product/base/shelfReview',
+    method: 'post',
+    data: data
+  });
+};
+

+ 48 - 0
src/api/product/base/types.ts

@@ -243,6 +243,41 @@ export interface BaseVO {
    */
   attributesList?: string;
 
+  /**
+   * 品牌名称
+   */
+  brandName?: string;
+
+  /**
+   * 分类名称
+   */
+  categoryName?: string;
+
+  /**
+   * 单位名称
+   */
+  unitName?: string;
+
+  /**
+   * 可用库存数
+   */
+  availableStock?: number;
+
+  /**
+   * 实际库存
+   */
+  actualStock?: number;
+
+  /**
+   * 虚拟库存
+   */
+  virtualStock?: number;
+
+  /**
+   * 对接状态
+   */
+  connectStatus?: string;
+
 }
 
 export interface BaseForm extends BaseEntity {
@@ -710,7 +745,20 @@ export interface BaseQuery extends PageQuery {
    */
   projectOrg?: string;
 
+  /**
+   * 游标分页 - 上次看到的ID
+   */
+  lastSeenId?: string | number;
 
+  /**
+   * 游标分页 - 第一个ID(用于上一页)
+   */
+  firstSeenId?: string | number;
+
+  /**
+   * 游标分页方向 0=上一页,1=下一页
+   */
+  way?: number;
 
     /**
      * 日期范围参数

+ 63 - 0
src/api/product/brand/index.ts

@@ -0,0 +1,63 @@
+import request from '@/utils/request';
+import { AxiosPromise } from 'axios';
+import { BrandVO, BrandForm, BrandQuery } from '@/api/product/brand/types';
+
+/**
+ * 查询产品品牌信息列表
+ * @param query
+ * @returns {*}
+ */
+
+export const listBrand = (query?: BrandQuery): AxiosPromise<BrandVO[]> => {
+  return request({
+    url: '/product/brand/list',
+    method: 'get',
+    params: query
+  });
+};
+
+/**
+ * 查询产品品牌信息详细
+ * @param id
+ */
+export const getBrand = (id: string | number): AxiosPromise<BrandVO> => {
+  return request({
+    url: '/product/brand/' + id,
+    method: 'get'
+  });
+};
+
+/**
+ * 新增产品品牌信息
+ * @param data
+ */
+export const addBrand = (data: BrandForm) => {
+  return request({
+    url: '/product/brand',
+    method: 'post',
+    data: data
+  });
+};
+
+/**
+ * 修改产品品牌信息
+ * @param data
+ */
+export const updateBrand = (data: BrandForm) => {
+  return request({
+    url: '/product/brand',
+    method: 'put',
+    data: data
+  });
+};
+
+/**
+ * 删除产品品牌信息
+ * @param id
+ */
+export const delBrand = (id: string | number | Array<string | number>) => {
+  return request({
+    url: '/product/brand/' + id,
+    method: 'delete'
+  });
+};

+ 315 - 0
src/api/product/brand/types.ts

@@ -0,0 +1,315 @@
+export interface BrandVO {
+  /**
+   * 主键
+   */
+  id: string | number;
+
+  /**
+   * 品牌编号(唯一标识)
+   */
+  brandNo: string;
+
+  /**
+   * 品牌中文名称
+   */
+  brandName: string;
+
+  /**
+   * 品牌首字母缩写(如拼音首字母)
+   */
+  brandInitials: string;
+
+  /**
+   * 品牌英文名称
+   */
+  brandEnglishName: string;
+
+  /**
+   * 推荐值(数值越大越靠前)
+   */
+  recommendValue: number;
+
+  /**
+   * 品牌Logo图片路径或URL
+   */
+  brandLogo: string;
+
+  /**
+   * 品牌标题(用于展示)
+   */
+  brandTitle: string;
+
+  /**
+   * 品牌大图(横幅/封面图)
+   */
+  brandBigImage: string;
+
+  /**
+   * 品牌大图(横幅/封面图)Url
+   */
+  brandBigImageUrl: string;
+  /**
+   * 品牌故事(简介文本)
+   */
+  brandStory: string;
+
+  /**
+   * 是否显示(1=显示,0=隐藏)
+   */
+  isShow: number;
+
+  /**
+   * 品牌注册人
+   */
+  brandRegistrant: string;
+
+  /**
+   * 许可证编号
+   */
+  license: string;
+
+  /**
+   * 注册证书编号
+   */
+  registrationCertificate: string;
+
+  /**
+   * 证书/许可过期时间
+   */
+  expireTime: string;
+
+  /**
+   * 品牌描述(较长文本)
+   */
+  brandDescribe: string;
+
+  /**
+   * 展示位置(如首页、分类页等)
+   */
+  position: string;
+
+  /**
+   * 关注度/收藏数(默认为0)
+   */
+  care: number;
+
+  /**
+   * 数据来源
+   */
+  dataSource: string;
+
+  /**
+   * 备注
+   */
+  remark: string;
+
+}
+
+export interface BrandForm extends BaseEntity {
+  /**
+   * 主键
+   */
+  id?: string | number;
+
+  /**
+   * 品牌编号(唯一标识)
+   */
+  brandNo?: string;
+
+  /**
+   * 品牌中文名称
+   */
+  brandName?: string;
+
+  /**
+   * 品牌首字母缩写(如拼音首字母)
+   */
+  brandInitials?: string;
+
+  /**
+   * 品牌英文名称
+   */
+  brandEnglishName?: string;
+
+  /**
+   * 推荐值(数值越大越靠前)
+   */
+  recommendValue?: number;
+
+  /**
+   * 品牌Logo图片路径或URL
+   */
+  brandLogo?: string;
+
+  /**
+   * 品牌标题(用于展示)
+   */
+  brandTitle?: string;
+
+  /**
+   * 品牌大图(横幅/封面图)
+   */
+  brandBigImage?: string;
+
+  /**
+   * 品牌故事(简介文本)
+   */
+  brandStory?: string;
+
+  /**
+   * 是否显示(1=显示,0=隐藏)
+   */
+  isShow?: number;
+
+  /**
+   * 品牌注册人
+   */
+  brandRegistrant?: string;
+
+  /**
+   * 许可证编号
+   */
+  license?: string;
+
+  /**
+   * 注册证书编号
+   */
+  registrationCertificate?: string;
+
+  /**
+   * 证书/许可过期时间
+   */
+  expireTime?: string;
+
+  /**
+   * 品牌描述(较长文本)
+   */
+  brandDescribe?: string;
+
+  /**
+   * 展示位置(如首页、分类页等)
+   */
+  position?: string;
+
+  /**
+   * 关注度/收藏数(默认为0)
+   */
+  care?: number;
+
+  /**
+   * 数据来源
+   */
+  dataSource?: string;
+
+  /**
+   * 备注
+   */
+  remark?: string;
+
+}
+
+export interface BrandQuery extends PageQuery {
+
+  /**
+   * 品牌编号(唯一标识)
+   */
+  brandNo?: string;
+
+  /**
+   * 品牌中文名称
+   */
+  brandName?: string;
+
+  /**
+   * 品牌首字母缩写(如拼音首字母)
+   */
+  brandInitials?: string;
+
+  /**
+   * 品牌英文名称
+   */
+  brandEnglishName?: string;
+
+  /**
+   * 推荐值(数值越大越靠前)
+   */
+  recommendValue?: number;
+
+  /**
+   * 品牌Logo图片路径或URL
+   */
+  brandLogo?: string;
+
+  /**
+   * 品牌标题(用于展示)
+   */
+  brandTitle?: string;
+
+  /**
+   * 品牌大图(横幅/封面图)
+   */
+  brandBigImage?: string;
+
+  /**
+   * 品牌故事(简介文本)
+   */
+  brandStory?: string;
+
+  /**
+   * 是否显示(1=显示,0=隐藏)
+   */
+  isShow?: number;
+
+  /**
+   * 品牌注册人
+   */
+  brandRegistrant?: string;
+
+  /**
+   * 许可证编号
+   */
+  license?: string;
+
+  /**
+   * 注册证书编号
+   */
+  registrationCertificate?: string;
+
+  /**
+   * 证书/许可过期时间
+   */
+  expireTime?: string;
+
+  /**
+   * 品牌描述(较长文本)
+   */
+  brandDescribe?: string;
+
+  /**
+   * 展示位置(如首页、分类页等)
+   */
+  position?: string;
+
+  /**
+   * 关注度/收藏数(默认为0)
+   */
+  care?: number;
+
+  /**
+   * 数据来源
+   */
+  dataSource?: string;
+
+  /**
+   * 平台标识
+   */
+  platformCode?: string;
+
+    /**
+     * 日期范围参数
+     */
+    params?: any;
+}
+
+
+

+ 74 - 0
src/api/product/category/index.ts

@@ -0,0 +1,74 @@
+import request from '@/utils/request';
+import { AxiosPromise } from 'axios';
+import { CategoryVO, CategoryForm, CategoryQuery } from '@/api/product/category/types';
+
+/**
+ * 查询产品分类列表
+ * @param query
+ * @returns {*}
+ */
+
+export const listCategory = (query?: Partial<CategoryQuery>): AxiosPromise<CategoryVO[]> => {
+  return request({
+    url: '/product/category/list',
+    method: 'get',
+    params: query
+  });
+};
+
+/**
+ * 查询产品分类详细
+ * @param id
+ */
+export const getCategory = (id: string | number): AxiosPromise<CategoryVO> => {
+  return request({
+    url: '/product/category/' + id,
+    method: 'get'
+  });
+};
+
+/**
+ * 新增产品分类
+ * @param data
+ */
+export const addCategory = (data: CategoryForm) => {
+  return request({
+    url: '/product/category',
+    method: 'post',
+    data: data
+  });
+};
+
+/**
+ * 修改产品分类
+ * @param data
+ */
+export const updateCategory = (data: CategoryForm) => {
+  return request({
+    url: '/product/category',
+    method: 'put',
+    data: data
+  });
+};
+
+/**
+ * 删除产品分类
+ * @param id
+ */
+export const delCategory = (id: string | number | Array<string | number>) => {
+  return request({
+    url: '/product/category/' + id,
+    method: 'delete'
+  });
+};
+
+/**
+ * 查询产品分类列表(排除节点)
+ * @param id
+ */
+export const listCategoryExcludeChild = (id: string | number): AxiosPromise<CategoryVO[]> => {
+  return request({
+    url: '/product/category/tree/exclude/' + id,
+    method: 'get'
+  });
+};

+ 402 - 0
src/api/product/category/types.ts

@@ -0,0 +1,402 @@
+export interface CategoryVO {
+  /**
+   * 主键
+   */
+  id: string | number;
+
+  /**
+   * 分类编号
+   */
+  categoryNo: string;
+
+  /**
+   * 分类名称
+   */
+  categoryName: string;
+
+  /**
+   * 父级分类ID
+   */
+  parentId: string | number;
+
+  /**
+   * 父级分类名称
+   */
+  parentName?: string;
+
+  /**
+   * 祖籍列表
+   */
+  ancestors: string;
+
+  /**
+   * 分类层级(1=一级,2=二级, 3三级)
+   */
+  classLevel: number;
+
+  /**
+   * 是否显示(1=显示,0=隐藏)
+   */
+  isShow: number;
+
+  /**
+   * 是否在GPS中显示
+   */
+  isShowGps: number;
+
+  /**
+   * 折扣率(可能为JSON或文本)
+   */
+  discountRate: number;
+
+  /**
+   * 拼音码(用于快速检索)
+   */
+  pyCode: string;
+
+  /**
+   * 分类描述
+   */
+  classDescription: string;
+
+  /**
+   * 数据来源
+   */
+  dataSource: string;
+
+  /**
+   * 自定义标签1
+   */
+  oneLable1: string;
+
+  /**
+   * 自定义标签2
+   */
+  oneLable2: string;
+
+  /**
+   * 自定义链接1
+   */
+  oneLink1: string;
+
+  /**
+   * 自定义链接2
+   */
+  oneLink2: string;
+
+  /**
+   * 排序值,默认为0
+   */
+  sort: number;
+
+  /**
+   * 颜色(如CSS颜色值)
+   */
+  color: string;
+
+  /**
+   * 采购编号
+   */
+  purchaseNo: string;
+
+  /**
+   * 采购名称
+   */
+  purchaseName: string;
+
+  /**
+   * 采购负责人编号
+   */
+  purchaseManagerNo: string;
+
+  /**
+   * 采购负责人姓名
+   */
+  purchaseManagerName: string;
+
+  /**
+   * 所属平台(0=Web, 1=小程序)
+   */
+  platform: number;
+
+  /**
+   * 备注
+   */
+  remark: string;
+
+  /**
+   * 子级分类
+   */
+  children?: CategoryVO[];
+
+  /**
+   * 是否有子节点(用于懒加载)
+   */
+  hasChildren?: boolean;
+}
+
+export interface CategoryForm extends BaseEntity {
+  /**
+   * 主键
+   */
+  id?: string | number;
+
+  /**
+   * 分类编号
+   */
+  categoryNo?: string;
+
+  /**
+   * 分类名称
+   */
+  categoryName?: string;
+
+  /**
+   * 父级分类ID
+   */
+  parentId?: string | number;
+
+  /**
+   * 父级分类名称
+   */
+  parentName?: string;
+
+  /**
+   * 祖籍列表
+   */
+  ancestors?: string;
+
+  /**
+   * 分类层级(1=一级,2=二级, 3三级)
+   */
+  classLevel?: number;
+
+  /**
+   * 是否显示(1=显示,0=隐藏)
+   */
+  isShow?: number;
+
+  /**
+   * 是否在GPS中显示
+   */
+  isShowGps?: number;
+
+  /**
+   * 折扣率(可能为JSON或文本)
+   */
+  discountRate?: number;
+
+  /**
+   * 拼音码(用于快速检索)
+   */
+  pyCode?: string;
+
+  /**
+   * 分类描述
+   */
+  classDescription?: string;
+
+  /**
+   * 数据来源
+   */
+  dataSource?: string;
+
+  /**
+   * 自定义标签1
+   */
+  oneLable1?: string;
+
+  /**
+   * 自定义标签2
+   */
+  oneLable2?: string;
+
+  /**
+   * 自定义链接1
+   */
+  oneLink1?: string;
+
+  /**
+   * 自定义链接2
+   */
+  oneLink2?: string;
+
+  /**
+   * 排序值,默认为0
+   */
+  sort?: number;
+
+  /**
+   * 颜色(如CSS颜色值)
+   */
+  color?: string;
+
+  /**
+   * 采购编号
+   */
+  purchaseNo?: string;
+
+  /**
+   * 采购名称
+   */
+  purchaseName?: string;
+
+  /**
+   * 采购负责人编号
+   */
+  purchaseManagerNo?: string;
+
+  /**
+   * 采购负责人姓名
+   */
+  purchaseManagerName?: string;
+
+  /**
+   * 所属平台(0=Web, 1=小程序)
+   */
+  platform?: number;
+
+  /**
+   * 备注
+   */
+  remark?: string;
+
+}
+
+export interface CategoryQuery extends PageQuery {
+
+  /**
+   * 分类编号
+   */
+  categoryNo?: string;
+
+  /**
+   * 分类名称
+   */
+  categoryName?: string;
+
+  /**
+   * 父级分类ID
+   */
+  parentId?: string | number;
+
+  /**
+   * 祖籍列表
+   */
+  ancestors?: string;
+
+  /**
+   * 分类层级(1=一级,2=二级, 3三级)
+   */
+  classLevel?: number;
+
+  /**
+   * 是否显示(1=显示,0=隐藏)
+   */
+  isShow?: number;
+
+  /**
+   * 是否在GPS中显示
+   */
+  isShowGps?: number;
+
+  /**
+   * 折扣率(可能为JSON或文本)
+   */
+  discountRate?: number;
+
+  /**
+   * 拼音码(用于快速检索)
+   */
+  pyCode?: string;
+
+  /**
+   * 分类描述
+   */
+  classDescription?: string;
+
+  /**
+   * 数据来源
+   */
+  dataSource?: string;
+
+  /**
+   * 自定义标签1
+   */
+  oneLable1?: string;
+
+  /**
+   * 自定义标签2
+   */
+  oneLable2?: string;
+
+  /**
+   * 自定义链接1
+   */
+  oneLink1?: string;
+
+  /**
+   * 自定义链接2
+   */
+  oneLink2?: string;
+
+  /**
+   * 排序值,默认为0
+   */
+  sort?: number;
+
+  /**
+   * 颜色(如CSS颜色值)
+   */
+  color?: string;
+
+  /**
+   * 采购编号
+   */
+  purchaseNo?: string;
+
+  /**
+   * 采购名称
+   */
+  purchaseName?: string;
+
+  /**
+   * 采购负责人编号
+   */
+  purchaseManagerNo?: string;
+
+  /**
+   * 采购负责人姓名
+   */
+  purchaseManagerName?: string;
+
+  /**
+   * 所属平台(0=Web, 1=小程序)
+   */
+  platform?: number;
+
+  /**
+   * 平台标识
+   */
+  platformCode?: string;
+
+    /**
+     * 日期范围参数
+     */
+    params?: any;
+}
+
+/**
+ * 部门类型
+ */
+export interface categoryTreeVO extends BaseEntity {
+  id: number | string;
+  label: string;
+  parentId: number | string;
+  weight: number;
+  children: categoryTreeVO[];
+  isShow: '';
+}
+
+
+

+ 63 - 0
src/api/product/unit/index.ts

@@ -0,0 +1,63 @@
+import request from '@/utils/request';
+import { AxiosPromise } from 'axios';
+import { UnitVO, UnitForm, UnitQuery } from '@/api/product/unit/types';
+
+/**
+ * 查询产品计量单位列表
+ * @param query
+ * @returns {*}
+ */
+
+export const listUnit = (query?: UnitQuery): AxiosPromise<UnitVO[]> => {
+  return request({
+    url: '/product/unit/list',
+    method: 'get',
+    params: query
+  });
+};
+
+/**
+ * 查询产品计量单位详细
+ * @param id
+ */
+export const getUnit = (id: string | number): AxiosPromise<UnitVO> => {
+  return request({
+    url: '/product/unit/' + id,
+    method: 'get'
+  });
+};
+
+/**
+ * 新增产品计量单位
+ * @param data
+ */
+export const addUnit = (data: UnitForm) => {
+  return request({
+    url: '/product/unit',
+    method: 'post',
+    data: data
+  });
+};
+
+/**
+ * 修改产品计量单位
+ * @param data
+ */
+export const updateUnit = (data: UnitForm) => {
+  return request({
+    url: '/product/unit',
+    method: 'put',
+    data: data
+  });
+};
+
+/**
+ * 删除产品计量单位
+ * @param id
+ */
+export const delUnit = (id: string | number | Array<string | number>) => {
+  return request({
+    url: '/product/unit/' + id,
+    method: 'delete'
+  });
+};

+ 101 - 0
src/api/product/unit/types.ts

@@ -0,0 +1,101 @@
+export interface UnitVO {
+  /**
+   * 主键,自增ID
+   */
+  id: string | number;
+
+  /**
+   * 单位编号
+   */
+  unitNo: string;
+
+  /**
+   * 单位名称(如:件、箱、千克等)
+   */
+  unitName: string;
+
+  /**
+   * 数据来源
+   */
+  dataSource: string;
+
+  /**
+   * 是否显示:1=是,0=否
+   */
+  isShow: string;
+
+  /**
+   * 备注
+   */
+  remark: string;
+
+}
+
+export interface UnitForm extends BaseEntity {
+  /**
+   * 主键,自增ID
+   */
+  id?: string | number;
+
+  /**
+   * 单位编号
+   */
+  unitNo?: string;
+
+  /**
+   * 单位名称(如:件、箱、千克等)
+   */
+  unitName?: string;
+
+  /**
+   * 数据来源
+   */
+  dataSource?: string;
+
+  /**
+   * 是否显示:1=是,0=否
+   */
+  isShow?: string;
+
+  /**
+   * 备注
+   */
+  remark?: string;
+
+}
+
+export interface UnitQuery extends PageQuery {
+
+  /**
+   * 单位编号
+   */
+  unitNo?: string;
+
+  /**
+   * 单位名称(如:件、箱、千克等)
+   */
+  unitName?: string;
+
+  /**
+   * 数据来源
+   */
+  dataSource?: string;
+
+  /**
+   * 是否显示:1=是,0=否
+   */
+  isShow?: string;
+
+  /**
+   * 平台标识
+   */
+  platformCode?: string;
+
+    /**
+     * 日期范围参数
+     */
+    params?: any;
+}
+
+
+

+ 63 - 0
src/api/product/warehouseInventory/index.ts

@@ -0,0 +1,63 @@
+import request from '@/utils/request';
+import { AxiosPromise } from 'axios';
+import { WarehouseInventoryVO, WarehouseInventoryForm, WarehouseInventoryQuery } from '@/api/product/warehouseInventory/types';
+
+/**
+ * 查询仓库库存明细列表
+ * @param query
+ * @returns {*}
+ */
+
+export const listWarehouseInventory = (query?: WarehouseInventoryQuery): AxiosPromise<WarehouseInventoryVO[]> => {
+  return request({
+    url: '/product/warehouseInventory/list',
+    method: 'get',
+    params: query
+  });
+};
+
+/**
+ * 查询仓库库存明细详细
+ * @param id
+ */
+export const getWarehouseInventory = (id: string | number): AxiosPromise<WarehouseInventoryVO> => {
+  return request({
+    url: '/product/warehouseInventory/' + id,
+    method: 'get'
+  });
+};
+
+/**
+ * 新增仓库库存明细
+ * @param data
+ */
+export const addWarehouseInventory = (data: WarehouseInventoryForm) => {
+  return request({
+    url: '/product/warehouseInventory',
+    method: 'post',
+    data: data
+  });
+};
+
+/**
+ * 修改仓库库存明细
+ * @param data
+ */
+export const updateWarehouseInventory = (data: WarehouseInventoryForm) => {
+  return request({
+    url: '/product/warehouseInventory',
+    method: 'put',
+    data: data
+  });
+};
+
+/**
+ * 删除仓库库存明细
+ * @param id
+ */
+export const delWarehouseInventory = (id: string | number | Array<string | number>) => {
+  return request({
+    url: '/product/warehouseInventory/' + id,
+    method: 'delete'
+  });
+};

+ 176 - 0
src/api/product/warehouseInventory/types.ts

@@ -0,0 +1,176 @@
+export interface WarehouseInventoryVO {
+  /**
+   * ID
+   */
+  id: string | number;
+
+  /**
+   * 商品ID
+   */
+  productId: string | number;
+
+  /**
+   * SKU ID
+   */
+  skuId: string | number;
+
+  /**
+   * 规格型号
+   */
+  specModel: string;
+
+  /**
+   * 仓库ID
+   */
+  warehouseId: string | number;
+
+  /**
+   * 仓库编号
+   */
+  warehouseNo: string;
+
+  /**
+   * 仓库名称
+   */
+  warehouseName: string;
+
+  /**
+   * 可用库存
+   */
+  nowInventory: number;
+
+  /**
+   * 锁定库存
+   */
+  lockInventory: number;
+
+  /**
+   * 状态(0正常 1停用)
+   */
+  status: string;
+
+  /**
+   * 备注
+   */
+  remark: string;
+
+}
+
+export interface WarehouseInventoryForm extends BaseEntity {
+  /**
+   * ID
+   */
+  id?: string | number;
+
+  /**
+   * 商品ID
+   */
+  productId?: string | number;
+
+  /**
+   * SKU ID
+   */
+  skuId?: string | number;
+
+  /**
+   * 规格型号
+   */
+  specModel?: string;
+
+  /**
+   * 仓库ID
+   */
+  warehouseId?: string | number;
+
+  /**
+   * 仓库编号
+   */
+  warehouseNo?: string;
+
+  /**
+   * 仓库名称
+   */
+  warehouseName?: string;
+
+  /**
+   * 可用库存
+   */
+  nowInventory?: number;
+
+  /**
+   * 锁定库存
+   */
+  lockInventory?: number;
+
+  /**
+   * 状态(0正常 1停用)
+   */
+  status?: string;
+
+  /**
+   * 备注
+   */
+  remark?: string;
+
+}
+
+export interface WarehouseInventoryQuery extends PageQuery {
+
+  /**
+   * 商品ID
+   */
+  productId?: string | number;
+
+  /**
+   * SKU ID
+   */
+  skuId?: string | number;
+
+  /**
+   * 规格型号
+   */
+  specModel?: string;
+
+  /**
+   * 仓库ID
+   */
+  warehouseId?: string | number;
+
+  /**
+   * 仓库编号
+   */
+  warehouseNo?: string;
+
+  /**
+   * 仓库名称
+   */
+  warehouseName?: string;
+
+  /**
+   * 可用库存
+   */
+  nowInventory?: number;
+
+  /**
+   * 锁定库存
+   */
+  lockInventory?: number;
+
+  /**
+   * 状态(0正常 1停用)
+   */
+  status?: string;
+
+  /**
+   * 平台标识
+   */
+  platformCode?: string;
+
+    /**
+     * 日期范围参数
+     */
+    params?: any;
+}
+
+
+

+ 6 - 6
src/api/supplier/address/index.ts

@@ -1,6 +1,6 @@
 import request from '@/utils/request';
 import { AxiosPromise } from 'axios';
-import { AddressVO, AddressForm, AddressQuery } from '@/api/system/address/types';
+import { AddressVO, AddressForm, AddressQuery } from '@/api/supplier/address/types';
 
 /**
  * 查询供应商地址列表
@@ -10,7 +10,7 @@ import { AddressVO, AddressForm, AddressQuery } from '@/api/system/address/types
 
 export const listAddress = (query?: AddressQuery): AxiosPromise<AddressVO[]> => {
   return request({
-    url: '/system/address/list',
+    url: '/customer/supplieraddress/list',
     method: 'get',
     params: query
   });
@@ -22,7 +22,7 @@ export const listAddress = (query?: AddressQuery): AxiosPromise<AddressVO[]> =>
  */
 export const getAddress = (id: string | number): AxiosPromise<AddressVO> => {
   return request({
-    url: '/system/address/' + id,
+    url: '/customer/supplieraddress/' + id,
     method: 'get'
   });
 };
@@ -33,7 +33,7 @@ export const getAddress = (id: string | number): AxiosPromise<AddressVO> => {
  */
 export const addAddress = (data: AddressForm) => {
   return request({
-    url: '/system/address',
+    url: '/customer/supplieraddress',
     method: 'post',
     data: data
   });
@@ -45,7 +45,7 @@ export const addAddress = (data: AddressForm) => {
  */
 export const updateAddress = (data: AddressForm) => {
   return request({
-    url: '/system/address',
+    url: '/customer/supplieraddress',
     method: 'put',
     data: data
   });
@@ -57,7 +57,7 @@ export const updateAddress = (data: AddressForm) => {
  */
 export const delAddress = (id: string | number | Array<string | number>) => {
   return request({
-    url: '/system/address/' + id,
+    url: '/customer/supplieraddress/' + id,
     method: 'delete'
   });
 };

+ 5 - 0
src/api/supplier/address/types.ts

@@ -92,6 +92,11 @@ export interface AddressForm extends BaseEntity {
    */
   supplierNo?: string;
 
+  /**
+   * 供应商ID
+   */
+  supplierId?: string | number;
+
   /**
    * 配送公司名称
    */

+ 6 - 6
src/api/supplier/bank/index.ts

@@ -1,6 +1,6 @@
 import request from '@/utils/request';
 import { AxiosPromise } from 'axios';
-import { BankVO, BankForm, BankQuery } from '@/api/system/bank/types';
+import { BankVO, BankForm, BankQuery } from '@/api/supplier/bank/types';
 
 /**
  * 查询供应商银行账户列表
@@ -10,7 +10,7 @@ import { BankVO, BankForm, BankQuery } from '@/api/system/bank/types';
 
 export const listBank = (query?: BankQuery): AxiosPromise<BankVO[]> => {
   return request({
-    url: '/system/bank/list',
+    url: '/customer/supplierbank/list',
     method: 'get',
     params: query
   });
@@ -22,7 +22,7 @@ export const listBank = (query?: BankQuery): AxiosPromise<BankVO[]> => {
  */
 export const getBank = (id: string | number): AxiosPromise<BankVO> => {
   return request({
-    url: '/system/bank/' + id,
+    url: '/customer/supplierbank/' + id,
     method: 'get'
   });
 };
@@ -33,7 +33,7 @@ export const getBank = (id: string | number): AxiosPromise<BankVO> => {
  */
 export const addBank = (data: BankForm) => {
   return request({
-    url: '/system/bank',
+    url: '/customer/supplierbank',
     method: 'post',
     data: data
   });
@@ -45,7 +45,7 @@ export const addBank = (data: BankForm) => {
  */
 export const updateBank = (data: BankForm) => {
   return request({
-    url: '/system/bank',
+    url: '/customer/supplierbank',
     method: 'put',
     data: data
   });
@@ -57,7 +57,7 @@ export const updateBank = (data: BankForm) => {
  */
 export const delBank = (id: string | number | Array<string | number>) => {
   return request({
-    url: '/system/bank/' + id,
+    url: '/customer/bank/' + id,
     method: 'delete'
   });
 };

+ 15 - 15
src/api/supplier/info/types.ts

@@ -17,17 +17,17 @@ export interface InfoVO {
   /**
    * 人员规模
    */
-  membershipSize: string;
+  membershipSize: string | number;
 
   /**
    * 供应商类型
    */
-  supplierType: string;
+  supplierType: string | number;
 
   /**
    * 合作类型
    */
-  cooperationType: string;
+  cooperationType: string | number;
 
   /**
    * 固定电话
@@ -237,7 +237,7 @@ export interface InfoVO {
   /**
    * 所属行业
    */
-  industrCategory: string;
+  industrCategory: string | number;
 
   /**
    * 类型(可能与supplier_type重复或细分)
@@ -247,7 +247,7 @@ export interface InfoVO {
   /**
    * 所属公司
    */
-  ownedCompany: string;
+  ownedCompany: string | number;
 
   /**
    * 推送状态(0-未推送, 1-已推送...)
@@ -319,17 +319,17 @@ export interface InfoForm extends BaseEntity {
   /**
    * 人员规模
    */
-  membershipSize?: string;
+  membershipSize?: string | number;
 
   /**
    * 供应商类型
    */
-  supplierType?: string;
+  supplierType?: string | number;
 
   /**
    * 合作类型
    */
-  cooperationType?: string;
+  cooperationType?: string | number;
 
   /**
    * 固定电话
@@ -539,7 +539,7 @@ export interface InfoForm extends BaseEntity {
   /**
    * 所属行业
    */
-  industrCategory?: string;
+  industrCategory?: string | number;
 
   /**
    * 类型(可能与supplier_type重复或细分)
@@ -549,7 +549,7 @@ export interface InfoForm extends BaseEntity {
   /**
    * 所属公司
    */
-  ownedCompany?: string;
+  ownedCompany?: string | number;
 
   /**
    * 推送状态(0-未推送, 1-已推送...)
@@ -613,17 +613,17 @@ export interface InfoQuery extends PageQuery {
   /**
    * 人员规模
    */
-  membershipSize?: string;
+  membershipSize?: string | number;
 
   /**
    * 供应商类型
    */
-  supplierType?: string;
+  supplierType?: string | number;
 
   /**
    * 合作类型
    */
-  cooperationType?: string;
+  cooperationType?: string | number;
 
   /**
    * 固定电话
@@ -833,7 +833,7 @@ export interface InfoQuery extends PageQuery {
   /**
    * 所属行业
    */
-  industrCategory?: string;
+  industrCategory?: string | number;
 
   /**
    * 类型(可能与supplier_type重复或细分)
@@ -843,7 +843,7 @@ export interface InfoQuery extends PageQuery {
   /**
    * 所属公司
    */
-  ownedCompany?: string;
+  ownedCompany?: string | number;
 
   /**
    * 推送状态(0-未推送, 1-已推送...)

+ 63 - 0
src/api/supplierAddress/supplieraddress/index.ts

@@ -0,0 +1,63 @@
+import request from '@/utils/request';
+import { AxiosPromise } from 'axios';
+import { SupplieraddressVO, SupplieraddressForm, SupplieraddressQuery } from '@/api/supplierAddress/supplieraddress/types';
+
+/**
+ * 查询供应商地址列表
+ * @param query
+ * @returns {*}
+ */
+
+export const listSupplieraddress = (query?: SupplieraddressQuery): AxiosPromise<SupplieraddressVO[]> => {
+  return request({
+    url: '/supplierAddress/supplieraddress/list',
+    method: 'get',
+    params: query
+  });
+};
+
+/**
+ * 查询供应商地址详细
+ * @param id
+ */
+export const getSupplieraddress = (id: string | number): AxiosPromise<SupplieraddressVO> => {
+  return request({
+    url: '/supplierAddress/supplieraddress/' + id,
+    method: 'get'
+  });
+};
+
+/**
+ * 新增供应商地址
+ * @param data
+ */
+export const addSupplieraddress = (data: SupplieraddressForm) => {
+  return request({
+    url: '/supplierAddress/supplieraddress',
+    method: 'post',
+    data: data
+  });
+};
+
+/**
+ * 修改供应商地址
+ * @param data
+ */
+export const updateSupplieraddress = (data: SupplieraddressForm) => {
+  return request({
+    url: '/supplierAddress/supplieraddress',
+    method: 'put',
+    data: data
+  });
+};
+
+/**
+ * 删除供应商地址
+ * @param id
+ */
+export const delSupplieraddress = (id: string | number | Array<string | number>) => {
+  return request({
+    url: '/supplierAddress/supplieraddress/' + id,
+    method: 'delete'
+  });
+};

+ 236 - 0
src/api/supplierAddress/supplieraddress/types.ts

@@ -0,0 +1,236 @@
+export interface SupplieraddressVO {
+  /**
+   * 主键ID
+   */
+  id: string | number;
+
+  /**
+   * 供应商编号
+   */
+  supplierNo: string;
+
+  /**
+   * 供应商编号ID
+   */
+  supplierId: string | number;
+
+  /**
+   * 配送公司名称
+   */
+  shippingCompany: string;
+
+  /**
+   * 发货人姓名
+   */
+  shipperName: string;
+
+  /**
+   * 发货人电话
+   */
+  shipperPhone: string;
+
+  /**
+   * 邮政编码
+   */
+  shippingPostCode: string;
+
+  /**
+   * 省
+   */
+  shippingProvincial: string;
+
+  /**
+   * 市
+   */
+  shippingCity: string;
+
+  /**
+   * 区/县
+   */
+  shippingCounty: string;
+
+  /**
+   * 详细地址
+   */
+  shippingAddress: string;
+
+  /**
+   * 推送状态(例如:0-未推送, 1-已推送, 16-推送失败)
+   */
+  pushStatus: string;
+
+  /**
+   * 是否为自身地址(1-是, 0-否)
+   */
+  isSelf: string;
+
+  /**
+   * 地址类型(例如:1-注册地址, 2-经营地址, 3-发货地址)
+   */
+  type: string;
+
+  /**
+   * 地址编码
+   */
+  addressNo: string;
+
+}
+
+export interface SupplieraddressForm extends BaseEntity {
+  /**
+   * 主键ID
+   */
+  id?: string | number;
+
+  /**
+   * 供应商编号
+   */
+  supplierNo?: string;
+
+  /**
+   * 供应商编号ID
+   */
+  supplierId?: string | number;
+
+  /**
+   * 配送公司名称
+   */
+  shippingCompany?: string;
+
+  /**
+   * 发货人姓名
+   */
+  shipperName?: string;
+
+  /**
+   * 发货人电话
+   */
+  shipperPhone?: string;
+
+  /**
+   * 邮政编码
+   */
+  shippingPostCode?: string;
+
+  /**
+   * 省
+   */
+  shippingProvincial?: string;
+
+  /**
+   * 市
+   */
+  shippingCity?: string;
+
+  /**
+   * 区/县
+   */
+  shippingCounty?: string;
+
+  /**
+   * 详细地址
+   */
+  shippingAddress?: string;
+
+  /**
+   * 推送状态(例如:0-未推送, 1-已推送, 16-推送失败)
+   */
+  pushStatus?: string;
+
+  /**
+   * 是否为自身地址(1-是, 0-否)
+   */
+  isSelf?: string;
+
+  /**
+   * 地址类型(例如:1-注册地址, 2-经营地址, 3-发货地址)
+   */
+  type?: string;
+
+  /**
+   * 地址编码
+   */
+  addressNo?: string;
+
+}
+
+export interface SupplieraddressQuery extends PageQuery {
+
+  /**
+   * 供应商编号
+   */
+  supplierNo?: string;
+
+  /**
+   * 供应商编号ID
+   */
+  supplierId?: string | number;
+
+  /**
+   * 配送公司名称
+   */
+  shippingCompany?: string;
+
+  /**
+   * 发货人姓名
+   */
+  shipperName?: string;
+
+  /**
+   * 发货人电话
+   */
+  shipperPhone?: string;
+
+  /**
+   * 邮政编码
+   */
+  shippingPostCode?: string;
+
+  /**
+   * 省
+   */
+  shippingProvincial?: string;
+
+  /**
+   * 市
+   */
+  shippingCity?: string;
+
+  /**
+   * 区/县
+   */
+  shippingCounty?: string;
+
+  /**
+   * 详细地址
+   */
+  shippingAddress?: string;
+
+  /**
+   * 推送状态(例如:0-未推送, 1-已推送, 16-推送失败)
+   */
+  pushStatus?: string;
+
+  /**
+   * 是否为自身地址(1-是, 0-否)
+   */
+  isSelf?: string;
+
+  /**
+   * 地址类型(例如:1-注册地址, 2-经营地址, 3-发货地址)
+   */
+  type?: string;
+
+  /**
+   * 地址编码
+   */
+  addressNo?: string;
+
+    /**
+     * 日期范围参数
+     */
+    params?: any;
+}
+
+
+

+ 74 - 0
src/api/system/level/index.ts

@@ -0,0 +1,74 @@
+import request from '@/utils/request';
+import { AxiosPromise } from 'axios';
+import { LevelVO, LevelForm, LevelQuery } from '@/api/system/level/types';
+
+/**
+ * 查询供应商等级列表
+ * @param query
+ * @returns {*}
+ */
+
+export const listLevel = (query?: LevelQuery): AxiosPromise<LevelVO[]> => {
+  return request({
+    url: '/system/level/list',
+    method: 'get',
+    params: query
+  });
+};
+
+/**
+ * 查询供应商等级详细
+ * @param datasource
+ * @param supplierLevelNo
+ */
+export const getLevel = (datasource: string, supplierLevelNo: string): AxiosPromise<LevelVO> => {
+  return request({
+    url: '/system/level/' + datasource + '/' + supplierLevelNo,
+    method: 'get'
+  });
+};
+
+/**
+ * 新增供应商等级
+ * @param data
+ */
+export const addLevel = (data: LevelForm) => {
+  return request({
+    url: '/system/level',
+    method: 'post',
+    data: data
+  });
+};
+
+/**
+ * 修改供应商等级
+ * @param data
+ */
+export const updateLevel = (data: LevelForm) => {
+  return request({
+    url: '/system/level',
+    method: 'put',
+    data: data
+  });
+};
+
+/**
+ * 删除供应商等级
+ * @param supplierLevelNo
+ */
+export const delLevel = (supplierLevelNo: string | Array<string>) => {
+  return request({
+    url: '/system/level/' + supplierLevelNo,
+    method: 'delete'
+  });
+};
+
+/**
+ * 获取数据来源列表
+ */
+export const getDataSourceList = (): AxiosPromise<{ dataSourceNm: string }[]> => {
+  return request({
+    url: '/system/datasource/GetDataSourceList',
+    method: 'get'
+  });
+};

+ 62 - 0
src/api/system/level/types.ts

@@ -0,0 +1,62 @@
+export interface LevelVO {
+  /**
+   * ID
+   */
+  id?: string | number;
+  /**
+   * 编号
+   */
+  supplierLevelNo: string;
+
+  /**
+   * 名称
+   */
+  supplierLevelName: string;
+
+  /**
+   * 是否展示(0不展示 1展示)
+   */
+  isShow: string;
+
+  /**
+   * 数据来源(如手动录入/系统自动评级/第三方导入)
+   */
+  dataSource: string;
+
+}
+
+export interface LevelForm extends BaseEntity {
+  /**
+   * ID
+   */
+  id?: string | number;
+  /**
+   * 名称
+   */
+  supplierLevelName?: string;
+
+  /**
+   * 是否展示(0不展示 1展示)
+   */
+  isShow?: string;
+
+}
+
+export interface LevelQuery extends PageQuery {
+  /**
+   * ID
+   */
+  id?: string | number;
+  /**
+   * 数据来源(如手动录入/系统自动评级/第三方导入)
+   */
+  dataSource?: string;
+
+    /**
+     * 日期范围参数
+     */
+    params?: any;
+}
+
+
+

+ 74 - 0
src/api/system/type/index.ts

@@ -0,0 +1,74 @@
+import request from '@/utils/request';
+import { AxiosPromise } from 'axios';
+import { TypeVO, TypeForm, TypeQuery } from '@/api/system/type/types';
+
+/**
+ * 查询供应商类别列表
+ * @param query
+ * @returns {*}
+ */
+
+export const listType = (query?: TypeQuery): AxiosPromise<TypeVO[]> => {
+  return request({
+    url: '/system/type/list',
+    method: 'get',
+    params: query
+  });
+};
+
+/**
+ * 查询供应商类别详细
+ * @param datasource
+ * @param supplierTypeNo
+ */
+export const getType = (datasource: string, supplierTypeNo: string): AxiosPromise<TypeVO> => {
+  return request({
+    url: '/system/type/' + datasource + '/' + supplierTypeNo,
+    method: 'get'
+  });
+};
+
+/**
+ * 新增供应商类别
+ * @param data
+ */
+export const addType = (data: TypeForm) => {
+  return request({
+    url: '/system/type',
+    method: 'post',
+    data: data
+  });
+};
+
+/**
+ * 修改供应商类别
+ * @param data
+ */
+export const updateType = (data: TypeForm) => {
+  return request({
+    url: '/system/type',
+    method: 'put',
+    data: data
+  });
+};
+
+/**
+ * 删除供应商类别
+ * @param supplierTypeNo
+ */
+export const delType = (supplierTypeNo: string | Array<string>) => {
+  return request({
+    url: '/system/type/' + supplierTypeNo,
+    method: 'delete'
+  });
+};
+
+/**
+ * 获取数据来源列表
+ */
+export const getDataSourceList = (): AxiosPromise<{ dataSourceNm: string }[]> => {
+  return request({
+    url: '/system/datasource/GetDataSourceList',
+    method: 'get'
+  });
+};

+ 62 - 0
src/api/system/type/types.ts

@@ -0,0 +1,62 @@
+export interface TypeVO {
+  /**
+   * ID
+   */
+  id?: string | number;
+  /**
+   * 编号
+   */
+  supplierTypeNo: string;
+
+  /**
+   * 名称
+   */
+  supplierTypeName: string;
+
+  /**
+   * 是否展示
+   */
+  isShow: string;
+
+  /**
+   * 数据来源
+   */
+  dataSource: string;
+
+}
+
+export interface TypeForm extends BaseEntity {
+  /**
+   * ID
+   */
+  id?: string | number;
+  /**
+   * 名称
+   */
+  supplierTypeName?: string;
+
+  /**
+   * 是否展示
+   */
+  isShow?: string;
+
+}
+
+export interface TypeQuery extends PageQuery {
+  /**
+   * ID
+   */
+  id?: string | number;
+  /**
+   * 数据来源
+   */
+  dataSource?: string;
+
+    /**
+     * 日期范围参数
+     */
+    params?: any;
+}
+
+
+

+ 411 - 0
src/components/RegionCascader/index.vue

@@ -0,0 +1,411 @@
+<template>
+  <div class="region-cascader">
+    <div class="region-selector">
+      <!-- 左侧:省份列表 -->
+      <div class="region-list province-list">
+        <div class="list-header">省份</div>
+        <div class="list-body">
+          <div 
+            v-for="province in provinces" 
+            :key="province.value"
+            class="region-item"
+            :class="{ 'is-active': isProvinceSelected(province.value), 'is-checked': isProvinceChecked(province.value) }"
+            @click="handleProvinceClick(province)"
+          >
+            <el-checkbox 
+              v-if="multiple"
+              :model-value="isProvinceChecked(province.value)"
+              @click.stop
+              @change="handleProvinceCheck(province, $event)"
+            >
+              {{ province.label }}
+            </el-checkbox>
+            <span v-else>{{ province.label }}</span>
+            <el-icon v-if="province.children && province.children.length > 0" class="arrow-icon">
+              <ArrowRight />
+            </el-icon>
+          </div>
+        </div>
+      </div>
+      
+      <!-- 中间:城市列表 -->
+      <div class="region-list city-list">
+        <div class="list-header">城市</div>
+        <div class="list-body">
+          <div 
+            v-for="city in currentCities" 
+            :key="city.value"
+            class="region-item"
+            :class="{ 'is-active': isCitySelected(city.value), 'is-checked': isCityChecked(city.value) }"
+            @click="handleCityClick(city)"
+          >
+            <el-checkbox 
+              v-if="multiple"
+              :model-value="isCityChecked(city.value)"
+              @click.stop
+              @change="handleCityCheck(city, $event)"
+            >
+              {{ city.label }}
+            </el-checkbox>
+            <span v-else>{{ city.label }}</span>
+            <el-icon v-if="city.children && city.children.length > 0" class="arrow-icon">
+              <ArrowRight />
+            </el-icon>
+          </div>
+          <div v-if="currentCities.length === 0" class="empty-text">
+            请先选择省份
+          </div>
+        </div>
+      </div>
+      
+      <!-- 右侧:区县列表 -->
+      <div class="region-list district-list">
+        <div class="list-header">区县</div>
+        <div class="list-body">
+          <div 
+            v-for="district in currentDistricts" 
+            :key="district.value"
+            class="region-item"
+            :class="{ 'is-checked': isDistrictChecked(district.value) }"
+            @click="handleDistrictClick(district)"
+          >
+            <el-checkbox 
+              v-if="multiple"
+              :model-value="isDistrictChecked(district.value)"
+              @change="handleDistrictCheck(district, $event)"
+            >
+              {{ district.label }}
+            </el-checkbox>
+            <span v-else>{{ district.label }}</span>
+          </div>
+          <div v-if="currentDistricts.length === 0" class="empty-text">
+            请先选择城市
+          </div>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script setup lang="ts">
+import { ref, computed, watch } from 'vue';
+import { regionData } from 'element-china-area-data';
+import { ArrowRight } from '@element-plus/icons-vue';
+
+interface RegionData {
+  label: string;
+  value: string;
+  children?: RegionData[];
+}
+
+interface Props {
+  modelValue?: string[]; // 选中的区域代码数组
+  multiple?: boolean; // 是否多选模式,默认 true
+}
+
+interface Emits {
+  (e: 'update:modelValue', value: string[]): void;
+}
+
+const props = withDefaults(defineProps<Props>(), {
+  modelValue: () => [],
+  multiple: true
+});
+
+const emit = defineEmits<Emits>();
+
+// 所有省份
+const provinces = ref<RegionData[]>(regionData as RegionData[]);
+
+// 当前选中的省份
+const currentProvince = ref<RegionData | null>(null);
+
+// 当前选中的城市
+const currentCity = ref<RegionData | null>(null);
+
+// 当前省份下的城市列表
+const currentCities = computed(() => {
+  return currentProvince.value?.children || [];
+});
+
+// 当前城市下的区县列表
+const currentDistricts = computed(() => {
+  return currentCity.value?.children || [];
+});
+
+// 选中的区域代码
+const selectedRegions = ref<string[]>(props.modelValue || []);
+
+// 监听 props 变化
+watch(() => props.modelValue, (newVal) => {
+  selectedRegions.value = newVal || [];
+}, { immediate: true });
+
+/** 判断省份是否被选中(显示箭头高亮) */
+const isProvinceSelected = (provinceCode: string) => {
+  return currentProvince.value?.value === provinceCode;
+};
+
+/** 判断省份是否被勾选 */
+const isProvinceChecked = (provinceCode: string) => {
+  const province = provinces.value.find(p => p.value === provinceCode);
+  if (!province || !province.children) return false;
+  
+  // 递归检查该省份下所有区县是否都被选中
+  const allDistrictCodes: string[] = [];
+  province.children.forEach(city => {
+    if (city.children) {
+      city.children.forEach(district => {
+        allDistrictCodes.push(district.value);
+      });
+    }
+  });
+  
+  return allDistrictCodes.length > 0 && allDistrictCodes.every(code => selectedRegions.value.includes(code));
+};
+
+/** 判断城市是否被选中(显示箭头高亮) */
+const isCitySelected = (cityCode: string) => {
+  return currentCity.value?.value === cityCode;
+};
+
+/** 判断城市是否被勾选 */
+const isCityChecked = (cityCode: string) => {
+  const city = currentCities.value.find(c => c.value === cityCode);
+  if (!city || !city.children) return false;
+  
+  // 检查该城市下所有区县是否都被选中
+  return city.children.every(district => selectedRegions.value.includes(district.value));
+};
+
+/** 判断区县是否被勾选 */
+const isDistrictChecked = (districtCode: string) => {
+  return selectedRegions.value.includes(districtCode);
+};
+
+/** 点击省份 */
+const handleProvinceClick = (province: RegionData) => {
+  currentProvince.value = province;
+  currentCity.value = null; // 重置城市选择
+};
+
+/** 点击城市 */
+const handleCityClick = (city: RegionData) => {
+  currentCity.value = city;
+  // 单选模式下不做选中操作
+  if (!props.multiple) {
+    // 单选模式下只展开城市,不自动选择
+  }
+};
+
+/** 点击区县(单选模式) */
+const handleDistrictClick = (district: RegionData) => {
+  if (!props.multiple) {
+    // 单选模式:清空其他选中,只选中当前区县
+    selectedRegions.value = [district.value];
+    emit('update:modelValue', selectedRegions.value);
+  }
+};
+
+/** 勾选/取消省份 */
+const handleProvinceCheck = (province: RegionData, checked: boolean | string | number) => {
+  const isChecked = !!checked;
+  if (!province.children) return;
+  
+  // 获取该省份下所有区县代码
+  const districtCodes: string[] = [];
+  province.children.forEach(city => {
+    if (city.children) {
+      city.children.forEach(district => {
+        districtCodes.push(district.value);
+      });
+    }
+  });
+  
+  if (isChecked) {
+    // 添加该省份下所有区县
+    const newRegions = [...selectedRegions.value];
+    districtCodes.forEach(code => {
+      if (!newRegions.includes(code)) {
+        newRegions.push(code);
+      }
+    });
+    selectedRegions.value = newRegions;
+  } else {
+    // 移除该省份下所有区县
+    selectedRegions.value = selectedRegions.value.filter(code => !districtCodes.includes(code));
+  }
+  
+  emit('update:modelValue', selectedRegions.value);
+};
+
+/** 勾选/取消城市 */
+const handleCityCheck = (city: RegionData, checked: boolean | string | number) => {
+  const isChecked = !!checked;
+  if (!city.children) return;
+  
+  const districtCodes = city.children.map(district => district.value);
+  
+  if (isChecked) {
+    // 添加该城市下所有区县
+    const newRegions = [...selectedRegions.value];
+    districtCodes.forEach(code => {
+      if (!newRegions.includes(code)) {
+        newRegions.push(code);
+      }
+    });
+    selectedRegions.value = newRegions;
+  } else {
+    // 移除该城市下所有区县
+    selectedRegions.value = selectedRegions.value.filter(code => !districtCodes.includes(code));
+  }
+  
+  emit('update:modelValue', selectedRegions.value);
+};
+
+/** 勾选/取消区县 */
+const handleDistrictCheck = (district: RegionData, checked: boolean | string | number) => {
+  const isChecked = !!checked;
+  if (isChecked) {
+    selectedRegions.value.push(district.value);
+  } else {
+    selectedRegions.value = selectedRegions.value.filter(code => code !== district.value);
+  }
+  
+  emit('update:modelValue', selectedRegions.value);
+};
+
+/** 获取选中的区域名称列表 */
+const getSelectedRegionNames = () => {
+  const names: string[] = [];
+  
+  provinces.value.forEach(province => {
+    if (province.children) {
+      province.children.forEach(city => {
+        if (city.children) {
+          city.children.forEach(district => {
+            if (selectedRegions.value.includes(district.value)) {
+              names.push(`${province.label}-${city.label}-${district.label}`);
+            }
+          });
+        }
+      });
+    }
+  });
+  
+  return names;
+};
+
+// 暴露方法给父组件
+defineExpose({
+  getSelectedRegionNames
+});
+</script>
+
+<style scoped>
+.region-cascader {
+  width: 100%;
+}
+
+.region-selector {
+  display: flex;
+  border: 1px solid #dcdfe6;
+  border-radius: 4px;
+  height: 400px;
+  overflow: hidden;
+}
+
+.region-list {
+  flex: 1;
+  display: flex;
+  flex-direction: column;
+  border-right: 1px solid #dcdfe6;
+  min-width: 200px;
+}
+
+.region-list:last-child {
+  border-right: none;
+}
+
+.list-header {
+  padding: 12px 16px;
+  background: #f5f7fa;
+  border-bottom: 1px solid #dcdfe6;
+  font-weight: 500;
+  font-size: 14px;
+  color: #303133;
+}
+
+.list-body {
+  flex: 1;
+  overflow-y: auto;
+  padding: 8px 0;
+}
+
+.region-item {
+  padding: 8px 16px;
+  cursor: pointer;
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  transition: background-color 0.2s;
+}
+
+.region-item:hover {
+  background: #f5f7fa;
+}
+
+.region-item.is-active {
+  background: #ecf5ff;
+  color: #409eff;
+}
+
+.region-item.is-checked {
+  font-weight: 500;
+}
+
+.arrow-icon {
+  color: #909399;
+  font-size: 12px;
+  margin-left: 8px;
+}
+
+.region-item.is-active .arrow-icon {
+  color: #409eff;
+}
+
+.empty-text {
+  padding: 20px;
+  text-align: center;
+  color: #909399;
+  font-size: 14px;
+}
+
+/* 复选框样式调整 */
+.region-item :deep(.el-checkbox) {
+  width: 100%;
+}
+
+.region-item :deep(.el-checkbox__label) {
+  flex: 1;
+  padding-left: 8px;
+}
+
+/* 滚动条样式 */
+.list-body::-webkit-scrollbar {
+  width: 6px;
+}
+
+.list-body::-webkit-scrollbar-thumb {
+  background: #dcdfe6;
+  border-radius: 3px;
+}
+
+.list-body::-webkit-scrollbar-thumb:hover {
+  background: #c0c4cc;
+}
+
+.list-body::-webkit-scrollbar-track {
+  background: transparent;
+}
+</style>

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 835 - 225
src/views/customer/info/detail.vue


+ 34 - 23
src/views/customer/info/index.vue

@@ -12,7 +12,7 @@
             </el-form-item>
             <el-form-item label="供应商类型" prop="supplierType">
               <el-select v-model="queryParams.supplierType" placeholder="请选择供应商类型" clearable>
-                <el-option v-for="item in supplierTypeList" :key="item.typeId" :label="item.typeName" :value="item.typeId" />
+                <el-option v-for="item in supplierTypeList" :key="item.id" :label="item.supplierTypeName" :value="item.supplierTypeName" />
               </el-select>
             </el-form-item>
             <el-form-item label="供应品牌" prop="operatingBrand">
@@ -302,8 +302,10 @@
 </template>
 
 <script setup name="Info" lang="ts">
-import { getInfoList, getInfo, delInfo, addInfo, updateInfo, getComSupTyList, getProductCategoryList, getComStaffList } from '@/api/customer/info';
+import { getInfoList, getInfo, delInfo, addInfo, updateInfo, getProductCategoryList, getComStaffList } from '@/api/customer/info';
 import { InfoVO, InfoQuery, InfoForm } from '@/api/customer/info/types';
+import { listType } from '@/api/system/type';
+import { TypeVO } from '@/api/system/type/types';
 import { getSupplierStatusOptions, getSupplierStatusDisplayName } from '@/enums/supplierStatus';
 import { getSupplierCooperationStatusDisplayName } from '@/enums/supplierCooperationStatus';
 
@@ -321,7 +323,7 @@ const ids = ref<Array<string | number>>([]);
 const single = ref(true);
 const multiple = ref(true);
 const total = ref(0);
-const supplierTypeList = ref<{ typeId: string; typeName: string }[]>([]);
+const supplierTypeList = ref<TypeVO[]>([]);
 const productCategoryList = ref<{ categoryNo: string; categoryName: string; id?: number }[]>([]);
 const comStaffList = ref<{ staffCode: string; staffName: string }[]>([]);
 // 使用枚举获取供应商状态选项,搜索框显示原始名称
@@ -672,21 +674,28 @@ const handleSelectionChange = (selection: InfoVO[]) => {
 
 /** 新增按钮操作 */
 const handleAdd = () => {
-  reset();
-  dialog.visible = true;
-  dialog.title = "添加供应商信息";
-  dialog.readonly = false;
+  // 跳转到详情页(新增模式)
+  const router = proxy?.$router;
+  router?.push({
+    path: '/customer/info/detail',
+    query: {
+      mode: 'add'
+    }
+  });
 }
 
 /** 修改按钮操作 */
 const handleUpdate = async (row?: InfoVO) => {
-  reset();
-  const _id = row?.id || ids.value[0]
-  const res = await getInfo(_id);
-  Object.assign(form.value, res.data);
-  dialog.visible = true;
-  dialog.title = "修改供应商信息";
-  dialog.readonly = false;
+  // 跳转到详情页(编辑模式)
+  const router = proxy?.$router;
+  const _id = row?.id || ids.value[0];
+  router?.push({
+    path: '/customer/info/detail',
+    query: {
+      id: _id,
+      mode: 'edit'
+    }
+  });
 }
 
 /** 提交按钮 */
@@ -747,13 +756,15 @@ const handleExport = () => {
 /** 获取供应商类型列表 */
 const getSupplierTypeList = async () => {
   try {
-    const res = await getComSupTyList();
-    // 根据实际返回格式,可能是 res.data 或直接是 res
-    supplierTypeList.value = res.data || res;
+    const res = await listType({
+      pageNum: 1,
+      pageSize: 1000
+    } as any);
+    supplierTypeList.value = res.data || [];
   } catch (e) {
     console.error('获取供应商类型失败', e);
   }
-}
+};
 
 /** 获取产品分类列表 */
 const getProductCategoryData = async () => {
@@ -780,11 +791,11 @@ const getComStaffData = async () => {
   }
 }
 
-/** 根据typeId获取typeName */
-const getSupplierTypeName = (typeId: string) => {
-  const item = supplierTypeList.value.find(t => t.typeId === typeId);
-  return item ? item.typeName : typeId;
-}
+/** 根据供应商类型名称获取显示名称 */
+const getSupplierTypeName = (typeName: string) => {
+  const item = supplierTypeList.value.find(t => t.supplierTypeName === typeName);
+  return item ? item.supplierTypeName : typeName;
+};
 
 /** 根据categoryNo获取categoryName */
 const getCategoryName = (categoryNo: string) => {

+ 8 - 8
src/views/login.vue

@@ -5,12 +5,12 @@
         <h3 class="title">{{ title }}</h3>
         <lang-select />
       </div>
-      <el-form-item v-if="tenantEnabled" prop="tenantId">
-        <el-select v-model="loginForm.tenantId" filterable :placeholder="proxy.$t('login.selectPlaceholder')" style="width: 100%">
-          <el-option v-for="item in tenantList" :key="item.tenantId" :label="item.companyName" :value="item.tenantId"></el-option>
-          <template #prefix><svg-icon icon-class="company" class="el-input__icon input-icon" /></template>
-        </el-select>
-      </el-form-item>
+<!--      <el-form-item v-if="tenantEnabled" prop="tenantId">-->
+<!--        <el-select v-model="loginForm.tenantId" filterable :placeholder="proxy.$t('login.selectPlaceholder')" style="width: 100%">-->
+<!--          <el-option v-for="item in tenantList" :key="item.tenantId" :label="item.companyName" :value="item.tenantId"></el-option>-->
+<!--          <template #prefix><svg-icon icon-class="company" class="el-input__icon input-icon" /></template>-->
+<!--        </el-select>-->
+<!--      </el-form-item>-->
       <el-form-item prop="username">
         <el-input v-model="loginForm.username" type="text" size="large" auto-complete="off" :placeholder="proxy.$t('login.username')">
           <template #prefix><svg-icon icon-class="user" class="el-input__icon input-icon" /></template>
@@ -96,8 +96,8 @@ const { t } = useI18n();
 
 const loginForm = ref<LoginData>({
   tenantId: '000000',
-  username: 'admin',
-  password: 'admin123',
+  username: 'scmadmin',
+  password: '123456',
   rememberMe: false,
   code: '',
   uuid: ''

+ 25 - 20
src/views/supplier/approve/index.vue

@@ -12,7 +12,7 @@
             </el-form-item>
             <el-form-item label="供应商类型" prop="supplierType">
               <el-select v-model="queryParams.supplierType" placeholder="请选择供应商类型" clearable>
-                <el-option v-for="item in supplierTypeList" :key="item.typeId" :label="item.typeName" :value="item.typeId" />
+                <el-option v-for="item in supplierTypeList" :key="item.id" :label="item.supplierTypeName" :value="item.supplierTypeName" />
               </el-select>
             </el-form-item>
             <el-form-item label="供应品牌" prop="operatingBrand">
@@ -59,20 +59,20 @@
           <el-col :span="1.5" >
            供应商信息列表
           </el-col>
-          
+
           <el-col :span="1.5">
             <el-button type="primary" plain icon="Plus" @click="handleAdd" v-hasPermi="['customer:info:add']">新增供应商</el-button>
           </el-col>
-          
+
         </el-row>
       </template>
 
       <el-table v-loading="loading" border :data="infoList" @selection-change="handleSelectionChange">
-        
+
         <el-table-column type="selection" width="55" align="center" />
         <el-table-column label="供应商编号" align="center" prop="supplierNo" />
         <el-table-column label="供应商名称" align="center" prop="enterpriseName" />
-        
+
         <el-table-column label="企业规模" align="center" prop="membershipSize">
           <template #default="scope">
             <span>{{ getMembershipSizeLabel(scope.row.membershipSize) }}</span>
@@ -88,7 +88,7 @@
         <el-table-column label="供应区域(省)" align="center" prop="province" />
         <el-table-column label="供应区域(市)" align="center" prop="city" />
         <el-table-column label="合同到期时间" align="center" prop="contractEndTime" />
-        
+
         <el-table-column label="合作情况" align="center" prop="cooperative">
           <template #default="scope">
             <span>{{ getCooperationStatusDisplayName(scope.row.cooperative) }}</span>
@@ -98,7 +98,7 @@
           <template #default="scope">
             <span>{{ getStatusDisplayName(scope.row.supplyStatus) }}</span>
           </template>
-        </el-table-column>  
+        </el-table-column>
         <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
           <template #default="scope">
             <el-button link type="primary" @click="handleView(scope.row)" v-hasPermi="['customer:info:query']">查看</el-button>
@@ -308,6 +308,8 @@
 <script setup name="Info" lang="ts">
 import { getApproveList, getInfo, delInfo, addInfo, updateInfo, getComSupTyList, getProductCategoryList, getComStaffList, getDictData } from '@/api/customer/info';
 import { InfoVO, InfoQuery, InfoForm } from '@/api/customer/info/types';
+import { listType } from '@/api/system/type';
+import { TypeVO } from '@/api/system/type/types';
 import { getSupplierStatusOptions, getSupplierStatusDisplayName } from '@/enums/supplierStatus';
 import { getSupplierCooperationStatusDisplayName } from '@/enums/supplierCooperationStatus';
 
@@ -325,7 +327,7 @@ const ids = ref<Array<string | number>>([]);
 const single = ref(true);
 const multiple = ref(true);
 const total = ref(0);
-const supplierTypeList = ref<{ typeId: string; typeName: string }[]>([]);
+const supplierTypeList = ref<TypeVO[]>([]);
 const productCategoryList = ref<{ categoryNo: string; categoryName: string; id?: number }[]>([]);
 const comStaffList = ref<{ staffCode: string; staffName: string }[]>([]);
 const membershipSizeDict = ref<any[]>([]); // 企业规模字典
@@ -802,16 +804,19 @@ const handleExport = () => {
   }, `info_${new Date().getTime()}.xlsx`)
 }
 
+/** 获取供应商类型列表 */
 /** 获取供应商类型列表 */
 const getSupplierTypeList = async () => {
   try {
-    const res = await getComSupTyList();
-    // 根据实际返回格式,可能是 res.data 或直接是 res
-    supplierTypeList.value = res.data || res;
+    const res = await listType({
+      pageNum: 1,
+      pageSize: 1000
+    } as any);
+    supplierTypeList.value = res.data || [];
   } catch (e) {
     console.error('获取供应商类型失败', e);
   }
-}
+};
 
 /** 获取产品分类列表 */
 const getProductCategoryData = async () => {
@@ -838,11 +843,11 @@ const getComStaffData = async () => {
   }
 }
 
-/** 根据typeId获取typeName */
-const getSupplierTypeName = (typeId: string) => {
-  const item = supplierTypeList.value.find(t => t.typeId === typeId);
-  return item ? item.typeName : typeId;
-}
+/** 根据供应商类型名称获取显示名称 */
+const getSupplierTypeName = (typeName: string) => {
+  const item = supplierTypeList.value.find(t => t.supplierTypeName === typeName);
+  return item ? item.supplierTypeName : typeName;
+};
 
 /** 根据categoryNo获取categoryName */
 const getCategoryName = (categoryNo: string) => {
@@ -870,7 +875,7 @@ onMounted(async () => {
   getSupplierTypeList();
   getProductCategoryData();
   getMembershipSizeDict(); // 获取企业规模字典
-  
+
   // 直接调用人员接口测试
   try {
     console.log('开始获取人员数据...');
@@ -883,7 +888,7 @@ onMounted(async () => {
   } catch (e) {
     console.error('人员接口调用失败:', e);
   }
-  
+
   getList();
 });
 </script>
@@ -914,4 +919,4 @@ onMounted(async () => {
 :deep(.el-select .el-input__inner) {
   font-size: 15px;
 }
-</style>
+</style>

Některé soubory nejsou zobrazeny, neboť je v těchto rozdílových datech změněno mnoho souborů