获取令牌Token

POST /Base_Manage/Home/SubmitLogin

认证说明: 除标注为 [AllowAnonymous] 的接口外,其他接口均需要在请求头中添加 Authorization: Bearer <token> 进行JWT认证。
获取令牌Token
POST /Base_Manage/Home/SubmitLogin
特殊说明: 此接口标注为 [AllowAnonymous],无需在请求头中添加 Authorization Token。
接口说明

用户登录获取JWT访问令牌,用于后续接口调用的身份认证。

请求参数
参数名类型必填说明
userNamestring是用户名
passwordstring是密码
sourcestring否登录来源
返回结果

直接返回JWT Token字符串。

调用示例
curl -X POST '/Base_Manage/Home/SubmitLogin' \
-H 'Content-Type: application/json' \
-d '{
  "userName": "admin",
  "password": "123456",
  "source": "web"
}'
货单列表
POST /BO/BIlling/GetBillOfLadingListDataList
接口说明

功能描述:分页获取货单列表,支持条件搜索和状态筛选。

主要特性:

  • 支持分页查询,可自定义每页显示数量
  • 支持按销售单号、客户名称、创建时间等条件进行模糊搜索
  • 支持按货单状态进行精确筛选(草稿、已提交、已审核、已发货、已完成、已取消)
  • 支持按创建日期范围进行时间筛选
  • 支持多租户模式,可按公司ID进行数据隔离
  • 返回完整的分页信息和货单详细数据
请求参数

分页参数(必填):

参数名类型必填说明示例值备注
PageIndexint是当前页码,从1开始1最小值:1
PageRowsint是每页显示数量20建议范围:1-100

搜索条件(可选):

参数名类型必填说明示例值备注
Search.Conditionstring否搜索字段"SalesOrder"SalesOrder/CustomerName/CreateTime
Search.Keywordstring否搜索关键字"SO2025"配合Condition使用,支持模糊匹配

状态筛选(可选):

参数名类型必填说明示例值可选值
Statusint否货单状态筛选10-草稿,1-已提交,2-已审核,3-已发货,4-已完成,5-已取消

其他筛选条件(可选):

参数名类型必填说明示例值备注
CompanyIdstring否公司ID"company_123"多租户场景下的数据隔离
StartDatestring否开始日期"2025-01-01"格式:YYYY-MM-DD,筛选创建时间
EndDatestring否结束日期"2025-01-31"格式:YYYY-MM-DD,筛选创建时间
返回结果说明

操作状态信息:

字段名类型说明示例值备注
Successboolean操作是否成功truetrue-成功,false-失败
Msgstring返回消息"查询成功"成功时返回操作信息,失败时返回错误信息

数据列表信息:

字段名类型说明示例值备注
DataArray货单列表数据数组见下方Data字段详情包含当前页的所有货单记录

分页信息:

字段名类型说明示例值备注
Totalint满足条件的总记录数156用于计算总页数
PageIndexint当前页码1与请求参数一致
PageRowsint每页数量20与请求参数一致
TotalPagesint总页数8根据Total和PageRows计算得出
Data字段详情(货单列表项)

基础信息:

字段名类型说明示例值备注
Idstring货单唯一标识"bill_20250101001"系统自动生成,全局唯一
SalesOrderstring销售单号"SO202501010001"业务单号,用户可见
CustomerIdstring客户ID"customer_123"关联客户表的主键
CustomerNamestring客户名称"示例客户公司"客户的显示名称

金额统计信息:

字段名类型说明示例值备注
TotalSumdecimal货单总金额15800.50单位:元,保留2位小数
TotalWeightdecimal总重量250.8单位:千克(KG)
TotalQuantityint商品总数量120所有商品数量汇总

状态信息:

字段名类型说明示例值备注
Statusint货单状态码10-草稿,1-已提交,2-已审核,3-已发货,4-已完成,5-已取消
StatusNamestring状态显示名称"已提交"状态的中文描述

时间及操作人信息:

字段名类型说明示例值备注
CreateTimedatetime创建时间"2025-01-01T10:30:00"ISO 8601格式
CreateUserNamestring创建人姓名"张三"创建该货单的用户
AuditTimedatetime审核时间"2025-01-01T14:20:00"未审核时为null
AuditUserNamestring审核人姓名"李四"审核该货单的用户,未审核时为null
调用示例

1. 基础分页查询(获取第1页,每页显示20条):

curl -X POST '/BO/BIlling/GetBillOfLadingListDataList' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...' \
-d '{
  "PageIndex": 1,
  "PageRows": 20
}'

2. 按销售单号进行模糊搜索:

curl -X POST '/BO/BIlling/GetBillOfLadingListDataList' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...' \
-d '{
  "PageIndex": 1,
  "PageRows": 20,
  "Search": {
    "Condition": "SalesOrder",
    "Keyword": "SO2025"
  }
}'

3. 按客户名称搜索:

curl -X POST '/BO/BIlling/GetBillOfLadingListDataList' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...' \
-d '{
  "PageIndex": 1,
  "PageRows": 30,
  "Search": {
    "Condition": "CustomerName",
    "Keyword": "示例公司"
  }
}'

4. 按状态筛选(查询已审核的货单):

curl -X POST '/BO/BIlling/GetBillOfLadingListDataList' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...' \
-d '{
  "PageIndex": 1,
  "PageRows": 50,
  "Status": 2
}'

5. 综合条件查询(状态 + 日期范围 + 公司ID):

curl -X POST '/BO/BIlling/GetBillOfLadingListDataList' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...' \
-d '{
  "PageIndex": 1,
  "PageRows": 50,
  "Status": 2,
  "StartDate": "2025-01-01",
  "EndDate": "2025-01-31",
  "CompanyId": "company_123"
}'

JavaScript调用示例:

// 使用fetch API调用
const getBillingList = async (params) => {
  try {
    const response = await fetch('/BO/BIlling/GetBillOfLadingListDataList', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
        'Authorization': 'Bearer ' + localStorage.getItem('token')
      },
      body: JSON.stringify({
        PageIndex: params.pageIndex || 1,
        PageRows: params.pageSize || 20,
        Search: {
          Condition: params.searchField,
          Keyword: params.searchKeyword
        },
        Status: params.status,
        StartDate: params.startDate,
        EndDate: params.endDate
      })
    });
    
    const result = await response.json();
    if (result.Success) {
      console.log('获取货单列表成功:', result.Data);
      console.log('总记录数:', result.Total);
      return result;
    } else {
      console.error('获取货单列表失败:', result.Msg);
    }
  } catch (error) {
    console.error('请求失败:', error);
  }
};

// 调用示例
getBillingList({
  pageIndex: 1,
  pageSize: 20,
  searchField: 'SalesOrder',
  searchKeyword: 'SO2025',
  status: 1
});
返回示例

成功返回示例(包含多条货单数据):

{
  "Success": true,
  "Msg": "查询成功",
  "Total": 156,
  "PageIndex": 1,
  "PageRows": 20,
  "TotalPages": 8,
  "Data": [
    {
      "Id": "bill_20250101001",
      "SalesOrder": "SO202501010001",
      "CustomerName": "示例客户公司",
      "CustomerId": "customer_123",
      "TotalSum": 15800.50,
      "TotalWeight": 250.8,
      "TotalQuantity": 120,
      "Status": 1,
      "StatusName": "已提交",
      "CreateTime": "2025-01-01T10:30:00",
      "CreateUserName": "张三",
      "AuditTime": null,
      "AuditUserName": null
    },
    {
      "Id": "bill_20250101002",
      "SalesOrder": "SO202501010002",
      "CustomerName": "另一个客户",
      "CustomerId": "customer_456",
      "TotalSum": 28900.00,
      "TotalWeight": 180.5,
      "TotalQuantity": 85,
      "Status": 2,
      "StatusName": "已审核",
      "CreateTime": "2025-01-01T11:15:00",
      "CreateUserName": "王五",
      "AuditTime": "2025-01-01T14:20:00",
      "AuditUserName": "李四"
    }
  ]
}

无数据返回示例:

{
  "Success": true,
  "Msg": "查询成功",
  "Total": 0,
  "PageIndex": 1,
  "PageRows": 20,
  "TotalPages": 0,
  "Data": []
}

失败返回示例(参数错误):

{
  "Success": false,
  "Msg": "参数错误:PageIndex必须大于0",
  "Total": 0,
  "PageIndex": 0,
  "PageRows": 0,
  "TotalPages": 0,
  "Data": null
}
错误码说明

HTTP状态码:

状态码说明可能原因解决方案
200请求成功接口正常处理检查返回Success字段确定业务结果
400请求参数错误PageIndex≤ 0、PageRows超出范围、日期格式错误等检查请求参数的类型和取值范围
401未授权访问Token缺失、过期或格式错误重新获取Token或检查Authorization请求头
403权限不足当前用户无货单查看权限联系管理员分配相应权限
500服务器内部错误数据库连接失败、服务异常等稍后重试或联系系统管理员

业务错误码(Success=false时):

错误类型Msg示例可能原因解决方案
参数验证失败"参数错误:PageIndex必须大于0"参数值不符合预期检查并修正请求参数
数据访问错误"公司信息不存在"提供了无效的CompanyId确认CompanyId的有效性
权限限制"当前用户不属于该公司"跨公司数据访问检查用户所属公司或使用正确的CompanyId
系统异常"数据库连接失败"后端服务不可用稍后重试或联系技术支持

常见问题排查:

  • 返回空数据:检查搜索条件是否过于严格,或者确认是否存在满足条件的数据
  • 分页信息不正确:检查PageIndex是否超出了TotalPages范围
  • 搜索结果不准确:确认Search.Condition和Search.Keyword的匹配关系,支持模糊匹配
  • 状态筛选异常:确认Status值在有效范围内(0-5)
货单保存
POST /BO/BIlling/SaveBillOfLadingData
接口说明

保存货单数据,支持新增和修改操作。新增时不传Id,修改时必须传入有效的货单Id。支持批量保存商品明细,自动计算总金额、总重量等信息。

请求参数
参数名类型必填说明示例值
Idstring否货单ID,修改时必填,新增时不传"bill_20250101001"
SalesOrderstring是销售单号,必须唯一"SO202501010001"
CustomerIdstring是客户ID,必须为有效的客户"customer_123"
CompanyIdstring是公司ID,多租户模式下必须"company_456"
Contentstring否商品明细JSON数据,包含商品列表见下方Content格式
TotalSumdecimal否应收总金额,系统可自动计算15800.50
TotalWeightdecimal否总重量(KG)250.8
TotalQuantityint否总数量120
Remarkstring否备注信息"紧急订单,需要加急处理"
DeliveryDatedatetime否要求交货日期"2025-01-05"
Content字段格式说明

Content字段为JSON字符串,包含商品明细信息:

[
  {
    "InventoryId": "inv_001",
    "InventoryName": "商品A",
    "Specification": "500g/盒",
    "Unit": "盒",
    "Quantity": 50,
    "UnitPrice": 125.00,
    "Amount": 6250.00,
    "Weight": 25.0,
    "Remark": "特殊包装"
  },
  {
    "InventoryId": "inv_002",
    "InventoryName": "商品B",
    "Specification": "1kg/袋",
    "Unit": "袋",
    "Quantity": 70,
    "UnitPrice": 136.50,
    "Amount": 9555.00,
    "Weight": 70.0,
    "Remark": ""
  }
]
返回结果
字段名类型说明示例值
Successboolean操作是否成功true
Msgstring返回消息"保存成功"
Datastring保存成功的货单ID"bill_20250101001"
调用示例

新增货单:

curl -X POST '/BO/BIlling/SaveBillOfLadingData' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...' \
-d '{
  "SalesOrder": "SO202501010001",
  "CustomerId": "customer_123",
  "CompanyId": "company_456",
  "Content": "[{\"InventoryId\":\"inv_001\",\"InventoryName\":\"商品A\",\"Quantity\":50,\"UnitPrice\":125.00,\"Amount\":6250.00}]",
  "TotalSum": 15800.50,
  "TotalWeight": 250.8,
  "TotalQuantity": 120,
  "Remark": "紧急订单",
  "DeliveryDate": "2025-01-05"
}'

修改货单:

curl -X POST '/BO/BIlling/SaveBillOfLadingData' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...' \
-d '{
  "Id": "bill_20250101001",
  "SalesOrder": "SO202501010001",
  "CustomerId": "customer_123",
  "CompanyId": "company_456",
  "TotalSum": 16500.00,
  "Remark": "已修改总金额"
}'
货单审核
POST /BO/BIlling/BillingExamine
接口说明

对提交的货单进行审核操作,只有审核通过的货单才能生成电子回执。审核人必须具有相应的审核权限,审核拒绝时需要填写拒绝原因。

请求参数
参数名类型必填说明示例值
billingIdstring是货单ID,必须为有效的货单"bill_20250101001"
examineResultint是审核结果:0-拒绝,1-通过1
examineRemarkstring否审核备注,拒绝时建议填写原因"商品信息核对无误,审核通过"
返回结果
字段名类型说明示例值
Successboolean操作是否成功true
Msgstring返回消息"审核成功"
Dataobject审核后的货单状态信息见下方示例
调用示例

审核通过:

curl -X POST '/BO/BIlling/BillingExamine' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...' \
-d '{
  "billingId": "bill_20250101001",
  "examineResult": 1,
  "examineRemark": "商品信息核对无误,审核通过"
}'

审核拒绝:

curl -X POST '/BO/BIlling/BillingExamine' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...' \
-d '{
  "billingId": "bill_20250101001",
  "examineResult": 0,
  "examineRemark": "商品价格信息错误,需要重新核对"
}'
返回示例
{
  "Success": true,
  "Msg": "审核成功",
  "Data": {
    "BillingId": "bill_20250101001",
    "Status": 2,
    "StatusName": "已审核",
    "ExamineTime": "2025-01-01T14:30:00",
    "ExamineUserName": "李四",
    "ExamineResult": 1,
    "ExamineRemark": "商品信息核对无误,审核通过"
  }
}
生成电子回执
POST /BO/BIlling/SaveBillingToBillList
接口说明

根据已审核通过的货单生成电子回执单。只有状态为"已审核"的货单才能生成电子回执。电子回执生成后将包含唯一的回执编号和二维码,用于签收确认。

请求参数
参数名类型必填说明示例值
billingIdstring是已审核的货单ID"bill_20250101001"
receiptTypeint否回执类型:1-普通回执,2-加急回执1
templateIdstring否回执模板ID,不传使用默认模板"template_001"
返回结果
字段名类型说明示例值
Successboolean操作是否成功true
Msgstring返回消息"电子回执生成成功"
Dataobject生成的电子回执信息见下方示例
调用示例
curl -X POST '/BO/BIlling/SaveBillingToBillList' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...' \
-d '{
  "billingId": "bill_20250101001",
  "receiptType": 1,
  "templateId": "template_001"
}'
返回示例
{
  "Success": true,
  "Msg": "电子回执生成成功",
  "Data": {
    "ReceiptId": "receipt_20250101001",
    "ReceiptCode": "RC202501010001",
    "BillingId": "bill_20250101001",
    "QrCode": "https://api.example.com/receipt/view?id=receipt_20250101001",
    "Status": 0,
    "StatusName": "未签收",
    "CreateTime": "2025-01-01T15:00:00",
    "ExpireTime": "2025-01-08T15:00:00"
  }
}
获取电子回执详情
POST /BO/BillList/GetTheBllliModelData
接口说明

功能描述:根据电子回执ID获取回执的详细信息,包括回执基本信息、关联货单信息、签收状态等完整数据。

主要特性:

  • 返回回执的完整详细信息
  • 包含关联货单的基本信息
  • 提供签收人信息和签收时间
  • 支持查看回执状态变更历史
  • 返回二维码信息用于移动端签收
请求参数
参数名类型必填说明示例值备注
Idstring是电子回执唯一标识"receipt_20250101001"系统生成的回执ID
返回结果说明

操作状态信息:

字段名类型说明示例值备注
Successboolean操作是否成功truetrue-成功,false-失败
Msgstring返回消息"查询成功"成功/失败信息

Data字段详情(电子回执详细信息):

字段名类型说明示例值备注
Idstring回执唯一标识"receipt_20250101001"系统生成
BillIdstring关联货单ID"bill_20250101001"对应的货单ID
Titlestring回执标题"货物签收回执"回执单标题
Customerstring客户名称"示例客户公司"收货客户
CustomerIdstring客户ID"customer_123"关联客户表
Addressstring收货地址"北京市朝阳区示例路123号"详细收货地址
Phonestring联系电话"010-12345678"客户联系电话
Statusint回执状态00-未签收,1-已签收,2-已作废
StatusNamestring状态显示名称"未签收"状态的中文描述
CreateTimedatetime创建时间"2025-01-01T15:00:00"ISO 8601格式
SigningDatedatetime签收时间"2025-01-02T10:30:00"未签收时为null
FullNamestring签收人姓名"张三"实际签收人
ReceiptPhonestring签收人手机"138****8888"签收人联系方式
QrCodestring二维码地址"https://api.example.com/receipt/view?id=receipt_20250101001"用于移动端扫码签收
ExpireTimedatetime过期时间"2025-01-08T15:00:00"回执有效期

关联货单信息:

字段名类型说明示例值备注
BillInfo.SalesOrderstring销售单号"SO202501010001"对应货单的销售单号
BillInfo.TotalSumdecimal货单总金额15800.50单位:元
BillInfo.TotalWeightdecimal总重量250.8单位:千克(KG)
BillInfo.TotalQuantityint商品总数量120所有商品数量汇总
调用示例
curl -X POST '/BO/BillList/GetTheBllliModelData' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...' \
-d '{
  "Id": "receipt_20250101001"
}'

JavaScript调用示例:

// 获取电子回执详情
const getReceiptDetail = async (receiptId) => {
  try {
    const response = await fetch('/BO/BillList/GetTheBllliModelData', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
        'Authorization': 'Bearer ' + localStorage.getItem('token')
      },
      body: JSON.stringify({
        Id: receiptId
      })
    });
    
    const result = await response.json();
    if (result.Success) {
      console.log('获取回执详情成功:', result.Data);
      return result.Data;
    } else {
      console.error('获取回执详情失败:', result.Msg);
    }
  } catch (error) {
    console.error('请求失败:', error);
  }
};

// 调用示例
getReceiptDetail('receipt_20250101001');
返回示例

成功返回示例:

{
  "Success": true,
  "Msg": "查询成功",
  "Data": {
    "Id": "receipt_20250101001",
    "BillId": "bill_20250101001",
    "Title": "货物签收回执",
    "Customer": "示例客户公司",
    "CustomerId": "customer_123",
    "Address": "北京市朝阳区示例路123号",
    "Phone": "010-12345678",
    "Status": 1,
    "StatusName": "已签收",
    "CreateTime": "2025-01-01T15:00:00",
    "SigningDate": "2025-01-02T10:30:00",
    "FullName": "张三",
    "ReceiptPhone": "138****8888",
    "QrCode": "https://api.example.com/receipt/view?id=receipt_20250101001",
    "ExpireTime": "2025-01-08T15:00:00",
    "BillInfo": {
      "SalesOrder": "SO202501010001",
      "TotalSum": 15800.50,
      "TotalWeight": 250.8,
      "TotalQuantity": 120
    }
  }
}

失败返回示例(回执不存在):

{
  "Success": false,
  "Msg": "电子回执不存在",
  "Data": null
}
错误码说明
错误码说明可能原因解决方案
400请求参数错误Id参数缺失或格式错误检查Id参数是否正确传递
401未授权访问Token缺失或无效重新获取Token
403权限不足当前用户无查看权限联系管理员分配权限
404回执不存在提供的Id对应的回执不存在确认Id的正确性
500服务器内部错误服务异常稍后重试或联系技术支持
作废电子回执
POST /BO/BillList/ToVoid
接口说明

功能描述:将指定的电子回执设置为作废状态,作废后的回执不能再进行签收操作。

主要特性:

  • 只有未签收状态的回执才能被作废
  • 作废操作不可逆,需要谨慎操作
  • 作废时需要填写作废原因
  • 作废后会记录操作人和操作时间
  • 支持批量作废操作
请求参数
参数名类型必填说明示例值备注
Idsarray是要作废的回执ID数组["receipt_001", "receipt_002"]支持单个或多个ID
VoidReasonstring是作废原因"客户取消订单"必须填写作废原因
返回结果说明
字段名类型说明示例值备注
Successboolean操作是否成功truetrue-成功,false-失败
Msgstring返回消息"作废成功"操作结果信息
Dataobject作废结果详情见下方示例包含成功和失败的数量
调用示例

单个回执作废:

curl -X POST '/BO/BillList/ToVoid' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...' \
-d '{
  "Ids": ["receipt_20250101001"],
  "VoidReason": "客户取消订单"
}'

批量回执作废:

curl -X POST '/BO/BillList/ToVoid' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...' \
-d '{
  "Ids": ["receipt_20250101001", "receipt_20250101002", "receipt_20250101003"],
  "VoidReason": "系统维护需要重新生成回执"
}'
返回示例

成功返回示例:

{
  "Success": true,
  "Msg": "作废成功",
  "Data": {
    "SuccessCount": 2,
    "FailCount": 0,
    "VoidTime": "2025-01-01T16:30:00",
    "VoidUserName": "管理员",
    "VoidReason": "客户取消订单"
  }
}

部分失败返回示例:

{
  "Success": false,
  "Msg": "部分回执作废失败",
  "Data": {
    "SuccessCount": 1,
    "FailCount": 1,
    "FailReasons": [
      {
        "Id": "receipt_20250101002",
        "Reason": "回执已签收,无法作废"
      }
    ]
  }
}
错误码说明
错误码说明可能原因解决方案
400请求参数错误Ids为空或VoidReason未填写检查必填参数
401未授权访问Token无效或过期重新获取Token
403权限不足当前用户无作废权限联系管理员分配权限
409状态冲突回执已签收或已作废确认回执状态后重试
500服务器内部错误服务异常稍后重试
电子回执列表
POST /BO/BillList/GetDataListByDate
接口说明

功能描述:分页获取电子回执列表,支持按日期范围、状态、关键字等条件进行筛选查询。

主要特性:

  • 支持分页查询,提高数据加载性能
  • 支持按创建日期范围进行时间筛选
  • 支持按回执状态进行筛选(未签收、已签收、已作废等)
  • 支持按回执单号、客户名称等关键字进行模糊搜索
  • 支持多租户模式,按公司ID进行数据隔离
  • 返回完整的回执信息和分页数据
请求参数

分页参数(必填):

参数名类型必填说明示例值备注
PageIndexint是当前页码,从1开始1最小值:1
PageRowsint是每页显示数量20建议范围:1-100

搜索条件(可选):

参数名类型必填说明示例值备注
Search.Conditionstring否搜索字段"BillId"BillId/Title/Address等
Search.Keywordstring否搜索关键字"RC2025"配合Condition使用,支持模糊匹配
Search.CompanyIdstring否公司ID"company_123"多租户场景下的数据隔离
返回结果说明

操作状态信息:

字段名类型说明示例值备注
Successboolean操作是否成功truetrue-成功,false-失败
Msgstring返回消息"查询成功"成功/失败信息

分页信息:

字段名类型说明示例值备注
Totalint满足条件的总记录数89用于计算总页数
PageIndexint当前页码1与请求参数一致
PageRowsint每页数量20与请求参数一致
TotalPagesint总页数5根据Total和PageRows计算

Data字段详情(电子回执列表项):

字段名类型说明示例值备注
Idstring电子回执唯一标识"receipt_20250101001"系统自动生成
BillIdstring关联的货单ID"bill_20250101001"对应货单的ID
Titlestring回执标题"货物签收回执"回执单标题
Customerstring客户名称"示例客户公司"收货客户名称
CustomerIdstring客户ID"customer_123"关联客户表
Statusint回执状态00-未签收,1-已签收,2-已作废
CreateTimedatetime创建时间"2025-01-01T15:00:00"ISO 8601格式
SigningDatedatetime签收时间"2025-01-02T10:30:00"未签收时为null
FullNamestring签收人姓名"张三"实际签收人
ReceiptPhonestring签收人手机"138****8888"签收人联系方式
调用示例

1. 基础分页查询:

curl -X POST '/BO/BillList/GetDataListByDate' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...' \
-d '{
  "PageIndex": 1,
  "PageRows": 20
}'

2. 按回执单号搜索:

curl -X POST '/BO/BillList/GetDataListByDate' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...' \
-d '{
  "PageIndex": 1,
  "PageRows": 20,
  "Search": {
    "Condition": "BillId",
    "Keyword": "RC2025",
    "CompanyId": "company_123"
  }
}'
返回示例
{
  "Success": true,
  "Msg": "查询成功",
  "Total": 89,
  "PageIndex": 1,
  "PageRows": 20,
  "TotalPages": 5,
  "Data": [
    {
      "Id": "receipt_20250101001",
      "BillId": "bill_20250101001",
      "Title": "货物签收回执",
      "Customer": "示例客户公司",
      "CustomerId": "customer_123",
      "Status": 1,
      "CreateTime": "2025-01-01T15:00:00",
      "SigningDate": "2025-01-02T10:30:00",
      "FullName": "张三",
      "ReceiptPhone": "138****8888"
    }
  ]
}
错误码说明
错误码说明解决方案
400请求参数错误检查分页参数格式
401未授权访问检查Token是否有效
403权限不足联系管理员分配权限
500服务器内部错误稍后重试或联系技术支持
电子回执查看
POST /BO/BillList/GetBillDetailByGreen
接口说明

功能描述:根据回执唯一标识获取电子回执的完整展示信息,适用于移动端扫码查看和签收操作。

主要特性:

  • 支持二维码扫码访问,无需登录
  • 返回适合移动端展示的回执信息
  • 包含完整的货单和客户信息
  • 支持在线签收功能
  • 展示回执状态和签收历史
请求参数
参数名类型必填说明示例值备注
idstring是电子回执唯一标识"receipt_20250101001"可以是回执ID或二维码参数
返回结果说明
字段名类型说明示例值
Successboolean操作是否成功true
Msgstring返回消息"查询成功"
Dataobject回执展示信息见下方示例
调用示例
curl -X POST '/BO/BillList/GetBillDetailByGreen' \
-H 'Content-Type: application/json' \
-d '{
  "id": "receipt_20250101001"
}'

特殊说明:此接口为公开接口,无需Token认证,主要用于移动端扫码查看。

返回示例
{
  "Success": true,
  "Msg": "查询成功",
  "Data": {
    "ReceiptInfo": {
      "Id": "receipt_20250101001",
      "Title": "货物签收回执",
      "Status": 0,
      "StatusName": "未签收",
      "CreateTime": "2025-01-01T15:00:00",
      "ExpireTime": "2025-01-08T15:00:00"
    },
    "CustomerInfo": {
      "Name": "示例客户公司",
      "Address": "北京市朝阳区示例路123号",
      "Phone": "010-12345678",
      "Contact": "张经理"
    },
    "BillInfo": {
      "SalesOrder": "SO202501010001",
      "TotalSum": 15800.50,
      "TotalWeight": 250.8,
      "TotalQuantity": 120,
      "CreateTime": "2025-01-01T10:30:00"
    },
    "CanSign": true
  }
}
下载签收文件
GET /Base_Manage/Home/ExportPageToPdf
接口说明

功能描述:将已签收的电子回执导出PDF文件,用于打印或存档。

主要特性:

  • 支持导出已签收的回执为PDF格式
  • 包含完整的签收信息和货单详情
  • 支持水印和数字签名
  • 生成的PDF文件具有法律效力
  • 支持自定义模板格式
请求参数
参数名类型必填说明示例值备注
receiptIdstring是已签收的回执ID"receipt_20250101001"只能下载已签收的回执
templateTypestring否模板类型"standard"standard-标准模板,simple-简化模板
withWatermarkboolean否是否添加水印true默认true,添加官方水印
返回结果说明
字段名类型说明备注
Content-Typestringapplication/pdfPDF文件流
Content-Dispositionstringattachment; filename="receipt_xxx.pdf"文件下载名称
Content-Lengthstring文件大小字节数用于显示下载进度
调用示例

1. 基本下载:

curl -X GET '/Base_Manage/Home/ExportPageToPdf?receiptId=receipt_20250101001' \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...' \
-o receipt_20250101001.pdf

2. 自定义模板下载:

curl -X GET '/Base_Manage/Home/ExportPageToPdf?receiptId=receipt_20250101001&templateType=simple&withWatermark=false' \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...' \
-o receipt_simple.pdf

JavaScript下载示例:

// 下载签收PDF文件
const downloadReceiptPDF = async (receiptId, options = {}) => {
  try {
    const params = new URLSearchParams({
      receiptId: receiptId,
      templateType: options.templateType || 'standard',
      withWatermark: options.withWatermark !== false
    });
    
    const response = await fetch('/Base_Manage/Home/ExportPageToPdf?' + params, {
      method: 'GET',
      headers: {
        'Authorization': 'Bearer ' + localStorage.getItem('token')
      }
    });
    
    if (response.ok) {
      const blob = await response.blob();
      const url = window.URL.createObjectURL(blob);
      const a = document.createElement('a');
      a.href = url;
      a.download = `receipt_${receiptId}.pdf`;
      document.body.appendChild(a);
      a.click();
      document.body.removeChild(a);
      window.URL.revokeObjectURL(url);
    } else {
      console.error('下载失败:', response.statusText);
    }
  } catch (error) {
    console.error('下载错误:', error);
  }
};

// 调用示例
downloadReceiptPDF('receipt_20250101001', {
  templateType: 'standard',
  withWatermark: true
});
错误码说明
错误码说明可能原因解决方案
400请求参数错误receiptId参数缺失检查receiptId参数
401未授权访问Token无效或过期重新获取Token
403权限不足当前用户无下载权限联系管理员分配权限
404回执不存在回执不存在或未签收确认回执ID和状态
500PDF生成失败模板或服务异常稍后重试或联系技术支持
客户列表
POST /BO/CustomerInfo/GetDataList
接口说明

功能描述:分页获取客户信息列表,支持按客户名称、联系电话等条件进行查询。

主要特性:

  • 支持分页查询,提高数据加载性能
  • 支持按客户名称、联系人、电话等条件模糊查询
  • 支持按客户状态进行筛选(正常、禁用)
  • 支持多租户模式,按公司ID进行数据隔离
  • 返回完整的客户详细信息和联系方式
请求参数

分页参数(必填):

参数名类型必填说明示例值备注
PageIndexint是当前页码,从1开始1最小值:1
PageRowsint是每页显示数量20建议范围:1-100

搜索条件(可选):

参数名类型必填说明示例值备注
Search.Conditionstring否搜索字段"CustomerName"CustomerName/ContactPerson/Phone/Address
Search.Keywordstring否搜索关键字"示例公司"配合Condition使用,支持模糊匹配
Search.CompanyIdstring否公司ID"company_123"多租户场景下的数据隔离

状态筛选(可选):

参数名类型必填说明示例值可选值
Statusint否客户状态筛选10-禁用,1-正常
返回结果说明

操作状态信息:

字段名类型说明示例值
Successboolean操作是否成功true
Msgstring返回消息"查询成功"

Data字段详情(客户列表项):

字段名类型说明示例值
Idstring客户唯一标识"customer_123"
CustomerNamestring客户名称"示例客户公司"
ContactPersonstring联系人"张经理"
Phonestring联系电话"010-12345678"
Addressstring地址"北京市朝阳区示例路123号"
Statusint客户状态1
CreateTimedatetime创建时间"2025-01-01T10:00:00"
调用示例
curl -X POST '/BO/CustomerInfo/GetDataList' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...' \
-d '{
  "PageIndex": 1,
  "PageRows": 20,
  "Search": {
    "Condition": "CustomerName",
    "Keyword": "示例公司",
    "CompanyId": "company_123"
  },
  "Status": 1
}'
返回示例
{
  "Success": true,
  "Msg": "查询成功",
  "Total": 45,
  "PageIndex": 1,
  "PageRows": 20,
  "TotalPages": 3,
  "Data": [
    {
      "Id": "customer_123",
      "CustomerName": "示例客户公司",
      "ContactPerson": "张经理",
      "Phone": "010-12345678",
      "Address": "北京市朝阳区示例路123号",
      "Status": 1,
      "CreateTime": "2025-01-01T10:00:00"
    }
  ]
}
客户保存
POST /BO/CustomerInfo/SaveData
接口说明

功能描述:保存客户信息,支持新增和修改操作。新增时不传Id,修改时必须传入有效的客户Id。

请求参数
参数名类型必填说明示例值
Idstring否客户ID,修改时必填"customer_123"
CustomerNamestring是客户名称"示例客户公司"
ContactPersonstring是联系人姓名"张经理"
Phonestring是联系电话"010-12345678"
Addressstring是详细地址"北京市朝阳区示例路123号"
CompanyIdstring是公司ID"company_456"
返回结果说明
字段名类型说明示例值
Successboolean操作是否成功true
Msgstring返回消息"保存成功"
Datastring客户ID"customer_123"
调用示例
curl -X POST '/BO/CustomerInfo/SaveData' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...' \
-d '{
  "CustomerName": "新客户公司",
  "ContactPerson": "李经理",
  "Phone": "010-87654321",
  "Address": "上海市浦东新区世纪大道456号",
  "CompanyId": "company_456"
}'
客户删除
POST /BO/CustomerInfo/DeleteCustomerInfo
接口说明

功能描述:删除指定的客户信息。为了数据安全,只有没有关联货单的客户才能被删除。

请求参数
参数名类型必填说明示例值
Idsarray是要删除的客户ID数组["customer_123"]
返回结果说明
字段名类型说明示例值
Successboolean操作是否成功true
Msgstring返回消息"删除成功"
Dataobject删除结果统计见下方示例
调用示例
curl -X POST '/BO/CustomerInfo/DeleteCustomerInfo' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...' \
-d '{
  "Ids": ["customer_123"]
}'
返回示例
{
  "Success": true,
  "Msg": "删除成功",
  "Data": {
    "SuccessCount": 1,
    "FailCount": 0
  }
}
客户导入模板
GET /BO/CustomerInfo/ExportToExcel
接口说明

功能描述:下载客户信息导入模板文件,用于批量导入客户数据。

请求参数

特殊说明:此接口为GET请求,无需请求参数。

返回结果说明
字段名类型说明
Content-Typestringapplication/vnd.openxmlformats-officedocument.spreadsheetml.sheet
Content-Dispositionstringattachment; filename="customer_template.xlsx"
调用示例
curl -X GET '/BO/CustomerInfo/ExportToExcel' \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...' \
-o customer_template.xlsx
客户导入
POST /BO/CustomerInfo/Import
接口说明

功能描述:批量导入客户信息,支持Excel文件上传。

请求参数
参数名类型必填说明
filefile是Excel文件
返回结果说明
字段名类型说明示例值
Successboolean操作是否成功true
Msgstring返回消息"导入成功"
Dataobject导入结果统计见下方示例
调用示例
curl -X POST '/BO/CustomerInfo/Import' \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...' \
-F 'file=@customer_data.xlsx'
返回示例
{
  "Success": true,
  "Msg": "导入成功",
  "Data": {
    "TotalCount": 50,
    "SuccessCount": 45,
    "FailCount": 5,
    "ImportTime": "2025-01-01T14:30:00"
  }
}