Răsfoiți Sursa

feat(api): 添加公司管理和产品管理相关API接口

- 新增公司信息管理相关API接口(list、get、add、update、del)
- 新增供应商银行账户管理相关API接口
- 新增企业规模和所属行业分类管理相关API接口
- 新增产品属性、品牌、分类、计量单位管理相关API接口
- 新增产品基础信息管理相关API接口,包含审核和上下架功能
- 新增仓库库存明细管理相关API接口
- 新增供应商等级和类别管理相关API接口
- 更新客户信息模块中的供应商类型查询逻辑
- 修改登录页面默认用户名密码并注释租户选择功能
- 为产品基础信息模块添加分类树和相关查询接口
- 修复供应商银行账户API接口路径错误问题
肖路 2 luni în urmă
părinte
comite
a85ce47d7b
36 a modificat fișierele cu 4718 adăugiri și 237 ștergeri
  1. 1 0
      package.json
  2. 75 0
      src/api/company/company/index.ts
  3. 410 0
      src/api/company/company/types.ts
  4. 63 0
      src/api/customer/bank/index.ts
  5. 146 0
      src/api/customer/bank/types.ts
  6. 63 0
      src/api/customer/customerCategory/enterpriseScale/index.ts
  7. 75 0
      src/api/customer/customerCategory/enterpriseScale/types.ts
  8. 63 0
      src/api/customer/customerCategory/industryCategory/index.ts
  9. 75 0
      src/api/customer/customerCategory/industryCategory/types.ts
  10. 12 0
      src/api/customer/info/index.ts
  11. 3 3
      src/api/customer/info/types.ts
  12. 63 0
      src/api/product/attributes/index.ts
  13. 171 0
      src/api/product/attributes/types.ts
  14. 181 0
      src/api/product/base/index.ts
  15. 771 0
      src/api/product/base/types.ts
  16. 63 0
      src/api/product/brand/index.ts
  17. 315 0
      src/api/product/brand/types.ts
  18. 74 0
      src/api/product/category/index.ts
  19. 402 0
      src/api/product/category/types.ts
  20. 63 0
      src/api/product/unit/index.ts
  21. 101 0
      src/api/product/unit/types.ts
  22. 63 0
      src/api/product/warehouseInventory/index.ts
  23. 176 0
      src/api/product/warehouseInventory/types.ts
  24. 1 1
      src/api/supplier/address/index.ts
  25. 6 6
      src/api/supplier/bank/index.ts
  26. 15 15
      src/api/supplier/info/types.ts
  27. 63 0
      src/api/supplierAddress/supplieraddress/index.ts
  28. 236 0
      src/api/supplierAddress/supplieraddress/types.ts
  29. 74 0
      src/api/system/level/index.ts
  30. 62 0
      src/api/system/level/types.ts
  31. 74 0
      src/api/system/type/index.ts
  32. 62 0
      src/api/system/type/types.ts
  33. 637 169
      src/views/customer/info/detail.vue
  34. 34 23
      src/views/customer/info/index.vue
  35. 8 8
      src/views/login.vue
  36. 17 12
      src/views/supplier/approve/index.vue

+ 1 - 0
package.json

@@ -29,6 +29,7 @@
     "axios": "1.8.4",
     "crypto-js": "4.2.0",
     "echarts": "5.6.0",
+    "element-china-area-data": "^6.1.0",
     "element-plus": "2.9.8",
     "file-saver": "2.0.5",
     "highlight.js": "11.9.0",

+ 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/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;
+}

+ 12 - 0
src/api/customer/info/index.ts

@@ -228,3 +228,15 @@ export const getAuthorizeDetailList = (supplierId: string | number) => {
     params: { supplierId }
   });
 };
+
+/**
+ * 保存供应商采购信息(产品经理和采购员)
+ * @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
+  });
+};

+ 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;
+}
+
+
+

+ 181 - 0
src/api/product/base/index.ts

@@ -0,0 +1,181 @@
+import request from '@/utils/request';
+import { AxiosPromise } from 'axios';
+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';
+
+/**
+ * 查询产品基础信息列表
+ * @param query
+ * @returns {*}
+ */
+
+export const listBase = (query?: BaseQuery): AxiosPromise<BaseVO[]> => {
+  return request({
+    url: '/product/base/list',
+    method: 'get',
+    params: query
+  });
+};
+
+/**
+ * 查询产品基础信息详细
+ * @param id
+ */
+export const getBase = (id: string | number): AxiosPromise<BaseVO> => {
+  return request({
+    url: '/product/base/' + id,
+    method: 'get'
+  });
+};
+
+/**
+ * 新增产品基础信息
+ * @param data
+ */
+export const addBase = (data: BaseForm) => {
+  return request({
+    url: '/product/base',
+    method: 'post',
+    data: data
+  });
+};
+
+/**
+ * 修改产品基础信息
+ * @param data
+ */
+export const updateBase = (data: BaseForm) => {
+  return request({
+    url: '/product/base',
+    method: 'put',
+    data: data
+  });
+};
+
+/**
+ * 删除产品基础信息
+ * @param id
+ */
+export const delBase = (id: string | number | Array<string | number>) => {
+  return request({
+    url: '/product/base/' + id,
+    method: 'delete'
+  });
+};
+
+/**
+ * 获取产品分类树
+ * @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
+  });
+};
+

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

@@ -0,0 +1,771 @@
+export interface BaseVO {
+  /**
+   * 主键,自增ID
+   */
+  id: string | number;
+
+  /**
+   * 产品编号
+   */
+  productNo: string;
+
+  /**
+   * 项目名称
+   */
+  itemName: string;
+
+  /**
+   * 品牌id
+   */
+  brandId: string | number;
+
+  /**
+   * 顶级分类id
+   */
+  topCategoryId: string | number;
+
+  /**
+   * 中级分类id
+   */
+  mediumCategoryId: string | number;
+
+  /**
+   * 底层分类id
+   */
+  bottomCategoryId: string | number;
+
+  /**
+   * 单位id
+   */
+  unitId: string | number;
+
+  /**
+   * 产品图片URL
+   */
+  productImage: string;
+
+  /**
+   * 产品图片URLUrl
+   */
+  productImageUrl: string;
+  /**
+   * 是否自营(1=是,0=否)
+   */
+  isSelf: string;
+
+  /**
+   * 商品类型 1=默认类型,2精选商品,3=停售商品
+   * */
+  productCategory?: number;
+
+  /**
+   * 产品审核状态 0=待采购审核,1=审核通过,2=驳回,3=待营销审核
+   */
+  productReviewStatus: string;
+
+  /**
+   * 首页推荐:1=推荐,0=不推荐
+   */
+  homeRecommended: string;
+
+  /**
+   * 分类推荐:1=推荐,0=不推荐
+   */
+  categoryRecommendation: string;
+
+  /**
+   * 购物车推荐:1=推荐,0=不推荐
+   */
+  cartRecommendation: string;
+
+  /**
+   * 推荐产品顺序
+   */
+  recommendedProductOrder: number;
+
+  /**
+   * 是否热门:1=是,0=否
+   */
+  isPopular: string;
+
+  /**
+   * 是否新品:1=是,0=否
+   */
+  isNew: string;
+
+  /**
+   * 商品状态:1=已上架,0=下架,2=上架中
+   */
+  productStatus: string;
+
+  /**
+   * 数据来源
+   */
+  dataSource: string;
+
+  /**
+   * 市场价
+   */
+  marketPrice: number;
+
+  /**
+   * 会员价格
+   */
+  memberPrice: number;
+
+  /**
+   * 最低销售价格
+   */
+  minSellingPrice: number;
+
+  /**
+   * 采购价格
+   */
+  purchasingPrice: number;
+
+  /**
+   * 暂估毛利率
+   */
+  tempGrossMargin: number;
+
+  /**
+   * 备注
+   */
+  remark: string;
+
+  /**
+   * 主库简介
+   */
+  mainLibraryIntro?: string;
+
+  /**
+   * 售后服务
+   */
+  afterSalesService?: string;
+
+  /**
+   * 服务保障 支持多选,分隔 (存储服务保障ID列表,如: "1,2,3")
+   */
+  serviceGuarantee?: string;
+
+  /**
+   * 安装服务 - 免费安装
+   */
+  freeInstallation?: string;
+
+  /**
+   * 市场价
+   */
+  midRangePrice?: number;
+
+  /**
+   * 平档价
+   */
+  standardPrice?: number;
+
+  /**
+   * 最低售价
+   */
+  certificatePrice?: number;
+
+  /**
+   * 售价验证量
+   */
+  priceVerificationQuantity?: string;
+
+  /**
+   * 采购价
+   */
+  purchasePrice?: number;
+
+  /**
+   * 暂估采购价
+   */
+  estimatedPurchasePrice?: number;
+
+  /**
+   * 产品性质
+   */
+  productNature?: string;
+
+  /**
+   * 采购人员
+   */
+  purchasingPersonnel?: string;
+
+  /**
+   * 旧属性类型
+   */
+  oldAttributeType?: string;
+
+  /**
+   * 录入套数
+   */
+  entrySetCount?: string;
+
+  /**
+   * 商品主图
+   */
+  mainImage?: string;
+
+  /**
+   * 商品详情 - 电脑端
+   */
+  pcDetail?: string;
+
+  /**
+   * 商品详情 - 移动端
+   */
+  mobileDetail?: string;
+
+  /**
+   * 税率
+   */
+  taxRate?: number;
+
+  /**
+   * 币种
+   */
+  currency?: string;
+
+  /**
+   * 最低起订量
+   */
+  minOrderQuantity?: number;
+
+  /**
+   * 审核意见
+   */
+  reviewComments?: string;
+
+  /**
+   * 商品属性值(JSON字符串)
+   */
+  attributesList?: string;
+
+  /**
+   * 品牌名称
+   */
+  brandName?: string;
+
+  /**
+   * 分类名称
+   */
+  categoryName?: string;
+
+  /**
+   * 单位名称
+   */
+  unitName?: string;
+
+  /**
+   * 可用库存数
+   */
+  availableStock?: number;
+
+  /**
+   * 实际库存
+   */
+  actualStock?: number;
+
+  /**
+   * 虚拟库存
+   */
+  virtualStock?: number;
+
+  /**
+   * 对接状态
+   */
+  connectStatus?: string;
+
+}
+
+export interface BaseForm extends BaseEntity {
+  /**
+   * 主键,自增ID
+   */
+  id?: string | number;
+
+  /**
+   * 产品编号
+   */
+  productNo?: string;
+
+  /**
+   * 项目名称
+   */
+  itemName?: string;
+
+  /**
+   * 品牌id
+   */
+  brandId?: string | number;
+
+  /**
+   * 顶级分类id
+   */
+  topCategoryId?: string | number;
+
+  /**
+   * 中级分类id
+   */
+  mediumCategoryId?: string | number;
+
+  /**
+   * 底层分类id
+   */
+  bottomCategoryId?: string | number;
+
+  /**
+   * 单位id
+   */
+  unitId?: string | number;
+
+  /**
+   * 产品图片URL
+   */
+  productImage?: string;
+
+  /**
+   * 是否自营(1=是,0=否)
+   */
+  isSelf?: number;
+
+  /**
+   * 商品类型 1=默认类型,2精选商品,3=停售商品
+   * */
+  productCategory?: number;
+
+  /**
+   * 产品审核状态 0=待采购审核,1=审核通过,2=驳回,3=待营销审核
+   */
+  productReviewStatus?: number;
+
+  /**
+   * 首页推荐:1=推荐,0=不推荐
+   */
+  homeRecommended?: number;
+
+  /**
+   * 分类推荐:1=推荐,0=不推荐
+   */
+  categoryRecommendation?: number;
+
+  /**
+   * 购物车推荐:1=推荐,0=不推荐
+   */
+  cartRecommendation?: number;
+
+  /**
+   * 推荐产品顺序
+   */
+  recommendedProductOrder?: number;
+
+  /**
+   * 是否热门:1=是,0=否
+   */
+  isPopular?: number;
+
+  /**
+   * 是否新品:1=是,0=否
+   */
+  isNew?: number;
+
+  /**
+   * 商品状态:1=已上架,0=下架,2=上架中
+   */
+  productStatus?: string;
+
+  /**
+   * 数据来源
+   */
+  dataSource?: string;
+
+  /**
+   * 备注
+   */
+  remark?: string;
+
+  /**
+   * 款号
+   */
+  styleNo?: string;
+
+  /**
+   * A10产品名称
+   */
+  a10ProductName?: string;
+
+  /**
+   * 规格型号
+   */
+  specification?: string;
+
+  /**
+   * UPC(S)条码
+   */
+  upcBarcode?: string;
+
+  /**
+   * 发票名称
+   */
+  invoiceName?: string;
+
+  /**
+   * 发票规格
+   */
+  invoiceSpec?: string;
+
+  /**
+   * 产品品牌
+   */
+  productBrand?: string;
+
+  /**
+   * 段号
+   */
+  sectionNo?: string;
+
+  /**
+   * 包装规格
+   */
+  packagingSpec?: string;
+
+  /**
+   * 采用基准
+   */
+  adoptionStandard?: string;
+
+  /**
+   * 采品性质
+   */
+  purchaseNature?: string;
+
+  /**
+   * 参考链接
+   */
+  referenceLink?: string;
+
+  /**
+   * 商品重量
+   */
+  weight?: string;
+
+  /**
+   * 重量单位
+   */
+  weightUnit?: string;
+
+  /**
+   * 商品体积
+   */
+  volume?: string;
+
+  /**
+   * 体积单位
+   */
+  volumeUnit?: string;
+
+  /**
+   * 主库简介
+   */
+  mainLibraryIntro?: string;
+
+  /**
+   * 售后服务
+   */
+  afterSalesService?: string;
+
+  /**
+   * 服务保障 支持多选,分隔 (存储服务保障ID列表,如: "1,2,3")
+   */
+  serviceGuarantee?: string;
+
+  /**
+   * 安装服务 - 免费安装
+   */
+  freeInstallation?: string;
+
+  /**
+   * 市场价
+   */
+  midRangePrice?: number;
+
+  /**
+   * 平档价
+   */
+  standardPrice?: number;
+
+  /**
+   * 最低售价
+   */
+  certificatePrice?: number;
+
+  /**
+   * 售价验证量
+   */
+  priceVerificationQuantity?: string;
+
+  /**
+   * 采购价
+   */
+  purchasePrice?: number;
+
+  /**
+   * 暂估采购价
+   */
+  estimatedPurchasePrice?: number;
+
+  /**
+   * 产品性质
+   */
+  productNature?: string;
+
+  /**
+   * 采购人员
+   */
+  purchasingPersonnel?: string;
+
+  /**
+   * 旧属性类型
+   */
+  oldAttributeType?: string;
+
+  /**
+   * 录入套数
+   */
+  entrySetCount?: string;
+
+  /**
+   * 商品主图
+   */
+  mainImage?: string;
+
+  /**
+   * 商品详情 - 电脑端
+   */
+  pcDetail?: string;
+
+  /**
+   * 商品详情 - 移动端
+   */
+  mobileDetail?: string;
+
+  /**
+   * 税率
+   */
+  taxRate?: number;
+
+  /**
+   * 币种
+   */
+  currency?: string;
+
+  /**
+   * 最低起订量
+   */
+  minOrderQuantity?: number;
+
+  /**
+   * 是否可定制
+   */
+  customizable?: boolean;
+
+  /**
+   * 定制方式(逗号分隔)
+   */
+  customizedStyle?: string;
+
+  /**
+   * 定制工艺(逗号分隔)
+   */
+  customizedCraft?: string;
+
+  /**
+   * 定制说明
+   */
+  customDescription?: string;
+
+  /**
+   * 定制详情列表(JSON字符串)
+   */
+  customDetailsJson?: string;
+
+  /**
+   * 销售量/销量人气
+   */
+  salesVolume?: number;
+
+  /**
+   * 商品属性值(JSON字符串)
+   */
+  attributesList?: string;
+
+  /**
+   * 审核意见
+   */
+  reviewComments?: string;
+
+  /**
+   * 上下架审核意见
+   */
+  shelfComments?: string;
+
+}
+
+export interface BaseQuery extends PageQuery {
+
+  /**
+   * 搜索文本(商品名称/商品编号)
+   */
+  searchText?: string;
+
+  /**
+   * 产品编号
+   */
+  productNo?: string;
+
+  /**
+   * 项目名称
+   */
+  itemName?: string;
+
+  /**
+   * 品牌id
+   */
+  brandId?: string | number;
+
+  /**
+   * 商品品牌名称
+   */
+  brandName?: string;
+
+  /**
+   * 顶级分类id
+   */
+  topCategoryId?: string | number;
+
+  /**
+   * 中级分类id
+   */
+  mediumCategoryId?: string | number;
+
+  /**
+   * 底层分类id
+   */
+  bottomCategoryId?: string | number;
+
+  /**
+   * 单位id
+   */
+  unitId?: string | number;
+
+  /**
+   * 产品图片URL
+   */
+  productImage?: string;
+
+  /**
+   * 是否自营(1=是,0=否)
+   */
+  isSelf?: number;
+
+  /**
+   * 商品类型 1=默认类型,2精选商品,3=停售商品
+   * */
+  productCategory?: number;
+
+  /**
+   * 产品审核状态 0=待采购审核,1=审核通过,2=驳回,3=待营销审核
+   */
+  productReviewStatus?: number;
+
+  /**
+   * 首页推荐:1=推荐,0=不推荐
+   */
+  homeRecommended?: number;
+
+  /**
+   * 分类推荐:1=推荐,0=不推荐
+   */
+  categoryRecommendation?: number;
+
+  /**
+   * 购物车推荐:1=推荐,0=不推荐
+   */
+  cartRecommendation?: number;
+
+  /**
+   * 推荐产品顺序
+   */
+  recommendedProductOrder?: number;
+
+  /**
+   * 是否热门:1=是,0=否
+   */
+  isPopular?: number;
+
+  /**
+   * 是否新品:1=是,0=否
+   */
+  isNew?: number;
+
+  /**
+   * 商品状态:1=已上架,0=下架,2=上架中
+   */
+  productStatus?: number;
+
+  /**
+   * 平台标识
+   */
+  platformCode?: string;
+
+  /**
+   * 商品标签
+   */
+  productTag?: string;
+
+  /**
+   * 采购性质
+   */
+  purchaseNature?: string;
+
+  /**
+   * 供应商类型
+   */
+  supplierType?: string;
+
+  /**
+   * 供应商性质
+   */
+  supplierNature?: string;
+
+  /**
+   * 项目组织
+   */
+  projectOrg?: string;
+
+  /**
+   * 游标分页 - 上次看到的ID
+   */
+  lastSeenId?: string | number;
+
+  /**
+   * 游标分页 - 第一个ID(用于上一页)
+   */
+  firstSeenId?: string | number;
+
+  /**
+   * 游标分页方向 0=上一页,1=下一页
+   */
+  way?: number;
+
+    /**
+     * 日期范围参数
+     */
+    params?: any;
+}
+
+
+
+

+ 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;
+}
+
+
+

+ 1 - 1
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';
 
 /**
  * 查询供应商地址列表

+ 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;
+}
+
+
+

Fișier diff suprimat deoarece este prea mare
+ 637 - 169
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: ''

+ 17 - 12
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">
@@ -302,8 +302,10 @@
 </template>
 
 <script setup name="Info" lang="ts">
-import { getApproveList, getInfo, delInfo, addInfo, updateInfo, getComSupTyList, getProductCategoryList, getComStaffList } from '@/api/customer/info';
+import { getApproveList, 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 }[]>([]);
 // 使用枚举获取供应商状态选项,搜索框显示原始名称
@@ -744,16 +746,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 () => {
@@ -780,11 +785,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) => {

Unele fișiere nu au fost afișate deoarece prea multe fișiere au fost modificate în acest diff