Quellcode durchsuchen

feat:完善功能

叶静 vor 1 Monat
Ursprung
Commit
b77181a106

+ 0 - 867
doc/order.json

@@ -1,867 +0,0 @@
-{
-  "openapi": "3.0.1",
-  "info": {
-    "title": "默认模块",
-    "description": "",
-    "version": "1.0.0"
-  },
-  "tags": [],
-  "paths": {
-    "/admin/payOrder/page": {
-      "post": {
-        "summary": "分页查询列表",
-        "deprecated": false,
-        "description": "",
-        "tags": [],
-        "parameters": [],
-        "requestBody": {
-          "content": {
-            "application/json": {
-              "schema": {
-                "$ref": "#/components/schemas/PayOrderPageDTO",
-                "description": "参数集"
-              }
-            }
-          }
-        },
-        "responses": {
-          "200": {
-            "description": "",
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/RIPagePayOrder",
-                  "description": "用户集合"
-                },
-                "example": {
-                  "ok": false,
-                  "code": 0,
-                  "msg": "",
-                  "data": {}
-                }
-              }
-            },
-            "headers": {}
-          }
-        },
-        "security": []
-      }
-    },
-    "/admin/payOrder/statistics": {
-      "post": {
-        "summary": "代付列表统计",
-        "deprecated": false,
-        "description": "",
-        "tags": [],
-        "parameters": [],
-        "requestBody": {
-          "content": {
-            "application/json": {
-              "schema": {
-                "$ref": "#/components/schemas/PayOrderPageDTO",
-                "description": "参数集"
-              }
-            }
-          }
-        },
-        "responses": {
-          "200": {
-            "description": "",
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/RPayOrderStatisticsRO",
-                  "description": "用户集合"
-                },
-                "example": {
-                  "ok": false,
-                  "code": 0,
-                  "msg": "",
-                  "data": {}
-                }
-              }
-            },
-            "headers": {}
-          }
-        },
-        "security": []
-      }
-    },
-    "/admin/withdrawOrder/page": {
-      "post": {
-        "summary": "分页查询列表",
-        "deprecated": false,
-        "description": "",
-        "tags": [],
-        "parameters": [],
-        "requestBody": {
-          "content": {
-            "application/json": {
-              "schema": {
-                "$ref": "#/components/schemas/WithdrawOrderPageDTO",
-                "description": "参数集"
-              }
-            }
-          }
-        },
-        "responses": {
-          "200": {
-            "description": "",
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/RIPageWithdrawOrder",
-                  "description": "用户集合"
-                },
-                "example": {
-                  "ok": false,
-                  "code": 0,
-                  "msg": "",
-                  "data": {}
-                }
-              }
-            },
-            "headers": {}
-          }
-        },
-        "security": []
-      }
-    }
-  },
-  "components": {
-    "schemas": {
-      "PayOrder": {
-        "type": "object",
-        "properties": {
-          "id": {
-            "type": "integer",
-            "description": "",
-            "format": "int64"
-          },
-          "createTime": {
-            "type": "string",
-            "description": "创建时间"
-          },
-          "updateTime": {
-            "type": "string",
-            "description": "修改时间"
-          },
-          "appId": {
-            "type": "string",
-            "description": "appId"
-          },
-          "mchOrderNo": {
-            "type": "string",
-            "description": "商户订单号"
-          },
-          "orderStatus": {
-            "type": "string",
-            "description": "订单状态",
-            "enum": [
-              "CREATE_ORDER",
-              "PAY_SUCCESS",
-              "PAY_FAIL",
-              "CANCEL_ORDER",
-              "PAY_TIMEOUT"
-            ]
-          },
-          "currency": {
-            "type": "string",
-            "description": "币种"
-          },
-          "amount": {
-            "type": "number",
-            "description": "订单原始金额"
-          },
-          "clientIp": {
-            "type": "string",
-            "description": "客户端IP"
-          },
-          "device": {
-            "type": "string",
-            "description": "设备"
-          },
-          "returnUrl": {
-            "type": "string",
-            "description": "支付结果前端跳转URL"
-          },
-          "notifyUrl": {
-            "type": "string",
-            "description": "支付结果后台回调URL"
-          },
-          "subject": {
-            "type": "string",
-            "description": "主题"
-          },
-          "body": {
-            "type": "string",
-            "description": "内容不能为空"
-          },
-          "extra": {
-            "type": "string",
-            "description": "扩展参数"
-          },
-          "reqTime": {
-            "type": "string",
-            "description": "请求时间"
-          },
-          "merchantUserId": {
-            "type": "integer",
-            "description": "商户id",
-            "format": "int64"
-          },
-          "agentUserId": {
-            "type": "integer",
-            "description": "代理商id",
-            "format": "int64"
-          },
-          "paymentTypeId": {
-            "type": "integer",
-            "description": "通道类型id",
-            "format": "int64"
-          },
-          "paymentChannelId": {
-            "type": "integer",
-            "description": "支付通道id",
-            "format": "int64"
-          },
-          "paymentChannelName": {
-            "type": "string",
-            "description": "支付通道名称"
-          },
-          "feeStatus": {
-            "type": "boolean",
-            "description": "获取通道费率成功标识"
-          },
-          "mFeeType": {
-            "type": "string",
-            "description": "平台手续费类型",
-            "enum": [
-              "PERCENTAGE",
-              "FIXED",
-              "MIXED"
-            ]
-          },
-          "mFeeRate": {
-            "type": "number",
-            "description": "平台手续费比例(百分比)"
-          },
-          "mFeeEvery": {
-            "type": "number",
-            "description": "平台手续费固定金额"
-          },
-          "mFee": {
-            "type": "number",
-            "description": "平台手续费"
-          },
-          "aFeeType": {
-            "type": "string",
-            "description": "代理商手续费类型",
-            "enum": [
-              "PERCENTAGE",
-              "FIXED",
-              "MIXED"
-            ]
-          },
-          "aFeeRate": {
-            "type": "number",
-            "description": "代理商手续费比例(百分比)"
-          },
-          "aFeeEvery": {
-            "type": "number",
-            "description": "代理商手续费固定金额"
-          },
-          "aFee": {
-            "type": "number",
-            "description": "代理商手续"
-          },
-          "noticeDatetime": {
-            "type": "string",
-            "description": "支付完成时间"
-          },
-          "noticeAmount": {
-            "type": "number",
-            "description": "实际支付金额"
-          },
-          "noticeMFee": {
-            "type": "number",
-            "description": "实际平台手续费"
-          },
-          "noticeAFee": {
-            "type": "number",
-            "description": "实际平台手续费"
-          },
-          "transactionId": {
-            "type": "string",
-            "description": "上游三方支付流水号"
-          }
-        }
-      },
-      "WithdrawOrder": {
-        "type": "object",
-        "properties": {
-          "id": {
-            "type": "integer",
-            "description": "",
-            "format": "int64"
-          },
-          "createTime": {
-            "type": "string",
-            "description": "创建时间"
-          },
-          "updateTime": {
-            "type": "string",
-            "description": "修改时间"
-          },
-          "appId": {
-            "type": "string",
-            "description": "appId"
-          },
-          "mchOrderNo": {
-            "type": "string",
-            "description": "商户订单号"
-          },
-          "orderStatus": {
-            "type": "string",
-            "description": "订单状态",
-            "enum": [
-              "CREATE_ORDER",
-              "WITHDRAW_SUCCESS",
-              "WITHDRAW_FAIL"
-            ]
-          },
-          "currencyType": {
-            "type": "string",
-            "description": "币种"
-          },
-          "amount": {
-            "type": "number",
-            "description": "订单原始金额"
-          },
-          "notifyUrl": {
-            "type": "string",
-            "description": "支付结果后台回调URL"
-          },
-          "subject": {
-            "type": "string",
-            "description": "主题"
-          },
-          "payUsername": {
-            "type": "string",
-            "description": "用户姓名"
-          },
-          "payBankNumber": {
-            "type": "string",
-            "description": "银行账号"
-          },
-          "payBankName": {
-            "type": "string",
-            "description": "银行名称"
-          },
-          "payAttach": {
-            "type": "string",
-            "description": "扩展参数"
-          },
-          "payEmail": {
-            "type": "string",
-            "description": "用户邮箱"
-          },
-          "payMobile": {
-            "type": "string",
-            "description": "用户电话"
-          },
-          "reqTime": {
-            "type": "string",
-            "description": "请求时间"
-          },
-          "merchantUserId": {
-            "type": "integer",
-            "description": "商户id",
-            "format": "int64"
-          },
-          "paymentTypeId": {
-            "type": "integer",
-            "description": "通道类型id",
-            "format": "int64"
-          },
-          "paymentChannelId": {
-            "type": "integer",
-            "description": "支付通道id",
-            "format": "int64"
-          },
-          "feeStatus": {
-            "type": "boolean",
-            "description": "获取通道费率成功标识"
-          },
-          "mFeeType": {
-            "type": "string",
-            "description": "平台手续费类型",
-            "enum": [
-              "PERCENTAGE",
-              "FIXED",
-              "MIXED"
-            ]
-          },
-          "mFeeRate": {
-            "type": "number",
-            "description": "平台手续费比例(百分比)"
-          },
-          "mFeeEvery": {
-            "type": "number",
-            "description": "平台手续费固定金额"
-          },
-          "mFee": {
-            "type": "number",
-            "description": "平台手续费"
-          },
-          "aFeeType": {
-            "type": "string",
-            "description": "代理商手续费类型",
-            "enum": [
-              "PERCENTAGE",
-              "FIXED",
-              "MIXED"
-            ]
-          },
-          "aFeeRate": {
-            "type": "number",
-            "description": "代理商手续费比例(百分比)"
-          },
-          "aFeeEvery": {
-            "type": "number",
-            "description": "代理商手续费固定金额"
-          },
-          "aFee": {
-            "type": "number",
-            "description": "代理商手续"
-          },
-          "noticeDatetime": {
-            "type": "string",
-            "description": "支付完成时间"
-          },
-          "noticeAmount": {
-            "type": "number",
-            "description": "实际支付金额"
-          },
-          "noticeMFee": {
-            "type": "number",
-            "description": "实际平台手续费"
-          },
-          "noticeAFee": {
-            "type": "number",
-            "description": "实际平台手续费"
-          },
-          "transactionId": {
-            "type": "string",
-            "description": "上游三方支付流水号"
-          }
-        }
-      },
-      "": {
-        "type": "object",
-        "properties": {}
-      },
-      "IPagePayOrder": {
-        "type": "object",
-        "properties": {
-          "records": {
-            "type": "array",
-            "items": {
-              "$ref": "#/components/schemas/PayOrder",
-              "description": ""
-            },
-            "description": ""
-          },
-          "total": {
-            "type": "integer",
-            "description": "",
-            "format": "int64"
-          },
-          "size": {
-            "type": "integer",
-            "description": "",
-            "format": "int64"
-          },
-          "current": {
-            "type": "integer",
-            "description": "",
-            "format": "int64"
-          },
-          "orders": {
-            "type": "array",
-            "items": {
-              "$ref": "#/components/schemas/OrderItem",
-              "description": "com.baomidou.mybatisplus.core.metadata.OrderItem"
-            },
-            "description": ""
-          },
-          "optimizeCountSql": {
-            "type": "boolean",
-            "description": ""
-          },
-          "searchCount": {
-            "type": "boolean",
-            "description": ""
-          },
-          "optimizeJoinOfCountSql": {
-            "type": "boolean",
-            "description": ""
-          },
-          "maxLimit": {
-            "type": "integer",
-            "description": "",
-            "format": "int64"
-          },
-          "countId": {
-            "type": "string",
-            "description": ""
-          },
-          "pages": {
-            "type": "integer",
-            "format": "int64"
-          }
-        }
-      },
-      "IPageWithdrawOrder": {
-        "type": "object",
-        "properties": {
-          "records": {
-            "type": "array",
-            "items": {
-              "$ref": "#/components/schemas/WithdrawOrder",
-              "description": ""
-            },
-            "description": ""
-          },
-          "total": {
-            "type": "integer",
-            "description": "",
-            "format": "int64"
-          },
-          "size": {
-            "type": "integer",
-            "description": "",
-            "format": "int64"
-          },
-          "current": {
-            "type": "integer",
-            "description": "",
-            "format": "int64"
-          },
-          "orders": {
-            "type": "array",
-            "items": {
-              "$ref": "#/components/schemas/OrderItem",
-              "description": "com.baomidou.mybatisplus.core.metadata.OrderItem"
-            },
-            "description": ""
-          },
-          "optimizeCountSql": {
-            "type": "boolean",
-            "description": ""
-          },
-          "searchCount": {
-            "type": "boolean",
-            "description": ""
-          },
-          "optimizeJoinOfCountSql": {
-            "type": "boolean",
-            "description": ""
-          },
-          "maxLimit": {
-            "type": "integer",
-            "description": "",
-            "format": "int64"
-          },
-          "countId": {
-            "type": "string",
-            "description": ""
-          },
-          "pages": {
-            "type": "integer",
-            "format": "int64"
-          }
-        }
-      },
-      "PayOrderPageDTO": {
-        "type": "object",
-        "properties": {
-          "records": {
-            "type": "array",
-            "items": {
-              "$ref": "#/components/schemas/1"
-            },
-            "description": ""
-          },
-          "total": {
-            "type": "integer",
-            "description": "",
-            "format": "int64"
-          },
-          "size": {
-            "type": "integer",
-            "description": "",
-            "format": "int64"
-          },
-          "current": {
-            "type": "integer",
-            "description": "",
-            "format": "int64"
-          },
-          "orders": {
-            "type": "array",
-            "items": {
-              "$ref": "#/components/schemas/OrderItem",
-              "description": "com.baomidou.mybatisplus.core.metadata.OrderItem"
-            },
-            "description": ""
-          },
-          "optimizeCountSql": {
-            "type": "boolean",
-            "description": ""
-          },
-          "searchCount": {
-            "type": "boolean",
-            "description": ""
-          },
-          "optimizeJoinOfCountSql": {
-            "type": "boolean",
-            "description": ""
-          },
-          "maxLimit": {
-            "type": "integer",
-            "description": "",
-            "format": "int64"
-          },
-          "countId": {
-            "type": "string",
-            "description": ""
-          },
-          "mchOrderNo": {
-            "type": "string",
-            "description": "商户单号"
-          },
-          "transactionId": {
-            "type": "string",
-            "description": "支付单号"
-          },
-          "orderStatus": {
-            "type": "string",
-            "description": "订单状态",
-            "enum": [
-              "CREATE_ORDER",
-              "PAY_SUCCESS",
-              "PAY_FAIL",
-              "CANCEL_ORDER",
-              "PAY_TIMEOUT"
-            ]
-          },
-          "startTime": {
-            "type": "string",
-            "description": "开始时间"
-          },
-          "endTime": {
-            "type": "string",
-            "description": "结束时间"
-          },
-          "paymentChannelId": {
-            "type": "integer",
-            "description": "支付通道id",
-            "format": "int64"
-          }
-        }
-      },
-      "WithdrawOrderPageDTO": {
-        "type": "object",
-        "properties": {
-          "records": {
-            "type": "array",
-            "items": {
-              "$ref": "#/components/schemas/1"
-            },
-            "description": ""
-          },
-          "total": {
-            "type": "integer",
-            "description": "",
-            "format": "int64"
-          },
-          "size": {
-            "type": "integer",
-            "description": "",
-            "format": "int64"
-          },
-          "current": {
-            "type": "integer",
-            "description": "",
-            "format": "int64"
-          },
-          "orders": {
-            "type": "array",
-            "items": {
-              "$ref": "#/components/schemas/OrderItem",
-              "description": "com.baomidou.mybatisplus.core.metadata.OrderItem"
-            },
-            "description": ""
-          },
-          "optimizeCountSql": {
-            "type": "boolean",
-            "description": ""
-          },
-          "searchCount": {
-            "type": "boolean",
-            "description": ""
-          },
-          "optimizeJoinOfCountSql": {
-            "type": "boolean",
-            "description": ""
-          },
-          "maxLimit": {
-            "type": "integer",
-            "description": "",
-            "format": "int64"
-          },
-          "countId": {
-            "type": "string",
-            "description": ""
-          },
-          "mchOrderNo": {
-            "type": "string",
-            "description": "商户单号"
-          },
-          "transactionId": {
-            "type": "string",
-            "description": "支付单号"
-          },
-          "orderStatus": {
-            "type": "string",
-            "description": "订单状态",
-            "enum": [
-              "CREATE_ORDER",
-              "WITHDRAW_SUCCESS",
-              "WITHDRAW_FAIL"
-            ]
-          },
-          "startTime": {
-            "type": "string",
-            "description": "开始时间"
-          },
-          "endTime": {
-            "type": "string",
-            "description": "结束时间"
-          }
-        }
-      },
-      "RIPagePayOrder": {
-        "type": "object",
-        "properties": {
-          "ok": {
-            "type": "boolean"
-          },
-          "code": {
-            "type": "integer",
-            "description": "返回标记:成功标记=0,失败标记=1"
-          },
-          "msg": {
-            "type": "string",
-            "description": "返回信息"
-          },
-          "data": {
-            "$ref": "#/components/schemas/IPagePayOrder",
-            "description": "数据"
-          }
-        }
-      },
-      "RIPageWithdrawOrder": {
-        "type": "object",
-        "properties": {
-          "ok": {
-            "type": "boolean"
-          },
-          "code": {
-            "type": "integer",
-            "description": "返回标记:成功标记=0,失败标记=1"
-          },
-          "msg": {
-            "type": "string",
-            "description": "返回信息"
-          },
-          "data": {
-            "$ref": "#/components/schemas/IPageWithdrawOrder",
-            "description": "数据"
-          }
-        }
-      },
-      "OrderItem": {
-        "type": "object",
-        "properties": {
-          "column": {
-            "type": "string",
-            "description": ""
-          },
-          "asc": {
-            "type": "boolean",
-            "description": ""
-          }
-        }
-      },
-      "PayOrderStatisticsRO": {
-        "type": "object",
-        "properties": {
-          "numberOrders": {
-            "type": "integer",
-            "description": "提交订单数"
-          },
-          "totalOrderAmount": {
-            "type": "number",
-            "description": "订单总金额"
-          },
-          "paidOrders": {
-            "type": "integer",
-            "description": "已付订单数"
-          },
-          "totalAmountPaid": {
-            "type": "number",
-            "description": "已付总金额"
-          },
-          "totalMerchantAmount": {
-            "type": "number",
-            "description": "商户总收入"
-          },
-          "totalAgentAmount": {
-            "type": "number",
-            "description": "代理商总收入"
-          },
-          "unpaidOrders": {
-            "type": "integer",
-            "description": "未付订单数"
-          },
-          "totalAmountUnpaid": {
-            "type": "number",
-            "description": "未付总金额"
-          }
-        }
-      },
-      "RPayOrderStatisticsRO": {
-        "type": "object",
-        "properties": {
-          "code": {
-            "type": "integer",
-            "description": "返回标记:成功标记=0,失败标记=1"
-          },
-          "msg": {
-            "type": "string",
-            "description": "返回信息"
-          },
-          "data": {
-            "$ref": "#/components/schemas/PayOrderStatisticsRO",
-            "description": "数据"
-          }
-        }
-      }
-    },
-    "securitySchemes": {}
-  },
-  "servers": [],
-  "security": []
-}

+ 942 - 0
doc/txjs.json

@@ -0,0 +1,942 @@
+{
+	"openapi": "3.0.1",
+	"info": {
+		"title": "默认模块",
+		"description": "",
+		"version": "1.0.0"
+	},
+	"tags": [],
+	"paths": {
+		"/agentWithdraw/page": {
+			"post": {
+				"summary": "分页 agentWithdraw_admin",
+				"deprecated": false,
+				"description": "",
+				"tags": [],
+				"parameters": [],
+				"requestBody": {
+					"content": {
+						"application/json": {
+							"schema": {
+								"$ref": "#/components/schemas/AgentWithdrawDTO",
+								"description": ""
+							}
+						}
+					}
+				},
+				"responses": {
+					"200": {
+						"description": "",
+						"content": {
+							"application/json": {
+								"schema": {
+									"$ref": "#/components/schemas/RPageAgentWithdrawPageVO"
+								},
+								"examples": {
+									"1": {
+										"summary": "成功示例",
+										"value": {
+											"code": 0,
+											"msg": "",
+											"data": {
+												"records": [
+													{
+														"id": 0,
+														"agentId": 0,
+														"agentName": "",
+														"amount": 0,
+														"type": 0,
+														"bankName": "",
+														"bankAccount": "",
+														"realName": "",
+														"applyTime": "",
+														"auditStatus": 0,
+														"transferStatus": 0,
+														"failReason": "",
+														"createdTime": "",
+														"updatedTime": ""
+													}
+												],
+												"total": 0,
+												"size": 0,
+												"current": 0,
+												"orders": [
+													{
+														"column": "",
+														"asc": false
+													}
+												],
+												"optimizeCountSql": false,
+												"searchCount": false,
+												"optimizeJoinOfCountSql": false,
+												"maxLimit": 0,
+												"countId": ""
+											}
+										}
+									},
+									"2": {
+										"summary": "成功示例",
+										"value": {
+											"code": 0,
+											"msg": "",
+											"data": {
+												"records": [
+													{
+														"id": 0,
+														"agentId": 0,
+														"agentName": "",
+														"amount": 0,
+														"type": 0,
+														"bankName": "",
+														"bankAccount": "",
+														"realName": "",
+														"applyTime": "",
+														"auditStatus": 0,
+														"transferStatus": 0,
+														"failReason": "",
+														"createdTime": "",
+														"updatedTime": ""
+													}
+												],
+												"total": 0,
+												"size": 0,
+												"current": 0,
+												"orders": [
+													{
+														"column": "",
+														"asc": false
+													}
+												],
+												"optimizeCountSql": false,
+												"searchCount": false,
+												"optimizeJoinOfCountSql": false,
+												"maxLimit": 0,
+												"countId": ""
+											}
+										}
+									},
+									"3": {
+										"summary": "成功示例",
+										"value": {
+											"code": 0,
+											"msg": "",
+											"data": {
+												"records": [
+													{
+														"id": 0,
+														"agentId": 0,
+														"agentName": "",
+														"amount": 0,
+														"type": 0,
+														"bankName": "",
+														"bankAccount": "",
+														"realName": "",
+														"applyTime": "",
+														"auditStatus": 0,
+														"transferStatus": 0,
+														"failReason": "",
+														"createdTime": "",
+														"updatedTime": ""
+													}
+												],
+												"total": 0,
+												"size": 0,
+												"current": 0,
+												"orders": [
+													{
+														"column": "",
+														"asc": false
+													}
+												],
+												"optimizeCountSql": false,
+												"searchCount": false,
+												"optimizeJoinOfCountSql": false,
+												"maxLimit": 0,
+												"countId": ""
+											}
+										}
+									},
+									"4": {
+										"summary": "成功示例",
+										"value": {
+											"code": 0,
+											"msg": "",
+											"data": {
+												"records": [
+													{
+														"id": 0,
+														"agentId": 0,
+														"agentName": "",
+														"amount": 0,
+														"type": 0,
+														"bankName": "",
+														"bankAccount": "",
+														"realName": "",
+														"applyTime": "",
+														"auditStatus": 0,
+														"transferStatus": 0,
+														"failReason": "",
+														"createdTime": "",
+														"updatedTime": ""
+													}
+												],
+												"total": 0,
+												"size": 0,
+												"current": 0,
+												"orders": [
+													{
+														"column": "",
+														"asc": false
+													}
+												],
+												"optimizeCountSql": false,
+												"searchCount": false,
+												"optimizeJoinOfCountSql": false,
+												"maxLimit": 0,
+												"countId": ""
+											}
+										}
+									}
+								}
+							}
+						}
+					}
+				},
+				"security": [
+					{
+						"bearer": []
+					}
+				]
+			}
+		},
+		"/agentWithdraw/audit": {
+			"post": {
+				"summary": "审核提现 agentWithdraw_audit_admin",
+				"deprecated": false,
+				"description": "",
+				"tags": [],
+				"parameters": [],
+				"requestBody": {
+					"content": {
+						"application/json": {
+							"schema": {
+								"$ref": "#/components/schemas/UpdateAgentWithdrawDTO",
+								"description": ""
+							}
+						}
+					}
+				},
+				"responses": {
+					"200": {
+						"description": "",
+						"content": {
+							"application/json": {
+								"schema": {
+									"$ref": "#/components/schemas/R",
+									"description": "响应信息主体"
+								},
+								"examples": {
+									"1": {
+										"summary": "成功示例",
+										"value": {
+											"ok": false,
+											"code": 0,
+											"msg": "",
+											"data": {}
+										}
+									},
+									"2": {
+										"summary": "成功示例",
+										"value": {
+											"ok": false,
+											"code": 0,
+											"msg": "",
+											"data": {}
+										}
+									},
+									"3": {
+										"summary": "成功示例",
+										"value": {
+											"ok": false,
+											"code": 0,
+											"msg": "",
+											"data": {}
+										}
+									},
+									"4": {
+										"summary": "成功示例",
+										"value": {
+											"ok": false,
+											"code": 0,
+											"msg": "",
+											"data": {}
+										}
+									}
+								}
+							}
+						}
+					}
+				},
+				"security": [
+					{
+						"bearer": []
+					}
+				]
+			}
+		},
+		"/merchantWithdraw/page": {
+			"post": {
+				"summary": "分页 merchantWithdraw_admin",
+				"deprecated": false,
+				"description": "",
+				"tags": [],
+				"parameters": [],
+				"requestBody": {
+					"content": {
+						"application/json": {
+							"schema": {
+								"$ref": "#/components/schemas/AgentWithdrawDTO",
+								"description": ""
+							}
+						}
+					}
+				},
+				"responses": {
+					"200": {
+						"description": "",
+						"content": {
+							"application/json": {
+								"schema": {
+									"$ref": "#/components/schemas/RPageMerchantWithdrawPageVO"
+								},
+								"examples": {
+									"1": {
+										"summary": "成功示例",
+										"value": {
+											"code": 0,
+											"msg": "",
+											"data": {
+												"records": [
+													{
+														"id": 0,
+														"merchantId": 0,
+														"merchantName": "",
+														"amount": 0,
+														"type": 0,
+														"bankName": "",
+														"bankAccount": "",
+														"realName": "",
+														"applyTime": "",
+														"auditStatus": 0,
+														"transferStatus": 0,
+														"failReason": "",
+														"createdTime": "",
+														"updatedTime": ""
+													}
+												],
+												"total": 0,
+												"size": 0,
+												"current": 0,
+												"orders": [
+													{
+														"column": "",
+														"asc": false
+													}
+												],
+												"optimizeCountSql": false,
+												"searchCount": false,
+												"optimizeJoinOfCountSql": false,
+												"maxLimit": 0,
+												"countId": ""
+											}
+										}
+									},
+									"2": {
+										"summary": "成功示例",
+										"value": {
+											"code": 0,
+											"msg": "",
+											"data": {
+												"records": [
+													{
+														"id": 0,
+														"merchantId": 0,
+														"merchantName": "",
+														"amount": 0,
+														"type": 0,
+														"bankName": "",
+														"bankAccount": "",
+														"realName": "",
+														"applyTime": "",
+														"auditStatus": 0,
+														"transferStatus": 0,
+														"failReason": "",
+														"createdTime": "",
+														"updatedTime": ""
+													}
+												],
+												"total": 0,
+												"size": 0,
+												"current": 0,
+												"orders": [
+													{
+														"column": "",
+														"asc": false
+													}
+												],
+												"optimizeCountSql": false,
+												"searchCount": false,
+												"optimizeJoinOfCountSql": false,
+												"maxLimit": 0,
+												"countId": ""
+											}
+										}
+									},
+									"3": {
+										"summary": "成功示例",
+										"value": {
+											"code": 0,
+											"msg": "",
+											"data": {
+												"records": [
+													{
+														"id": 0,
+														"merchantId": 0,
+														"merchantName": "",
+														"amount": 0,
+														"type": 0,
+														"bankName": "",
+														"bankAccount": "",
+														"realName": "",
+														"applyTime": "",
+														"auditStatus": 0,
+														"transferStatus": 0,
+														"failReason": "",
+														"createdTime": "",
+														"updatedTime": ""
+													}
+												],
+												"total": 0,
+												"size": 0,
+												"current": 0,
+												"orders": [
+													{
+														"column": "",
+														"asc": false
+													}
+												],
+												"optimizeCountSql": false,
+												"searchCount": false,
+												"optimizeJoinOfCountSql": false,
+												"maxLimit": 0,
+												"countId": ""
+											}
+										}
+									}
+								}
+							}
+						}
+					}
+				},
+				"security": [
+					{
+						"bearer": []
+					}
+				]
+			}
+		},
+		"/merchantWithdraw/audit": {
+			"post": {
+				"summary": "审核提现 merchantWithdraw_audit_admin",
+				"deprecated": false,
+				"description": "",
+				"tags": [],
+				"parameters": [],
+				"requestBody": {
+					"content": {
+						"application/json": {
+							"schema": {
+								"$ref": "#/components/schemas/UpdateAgentWithdrawDTO",
+								"description": ""
+							}
+						}
+					}
+				},
+				"responses": {
+					"200": {
+						"description": "",
+						"content": {
+							"application/json": {
+								"schema": {
+									"$ref": "#/components/schemas/R",
+									"description": "响应信息主体"
+								},
+								"examples": {
+									"1": {
+										"summary": "成功示例",
+										"value": {
+											"ok": false,
+											"code": 0,
+											"msg": "",
+											"data": {}
+										}
+									},
+									"2": {
+										"summary": "成功示例",
+										"value": {
+											"ok": false,
+											"code": 0,
+											"msg": "",
+											"data": {}
+										}
+									},
+									"3": {
+										"summary": "成功示例",
+										"value": {
+											"ok": false,
+											"code": 0,
+											"msg": "",
+											"data": {}
+										}
+									}
+								}
+							}
+						}
+					}
+				},
+				"security": [
+					{
+						"bearer": []
+					}
+				]
+			}
+		}
+	},
+	"components": {
+		"schemas": {
+			"AgentWithdrawPageVO": {
+				"type": "object",
+				"properties": {
+					"id": {
+						"type": "integer",
+						"description": "",
+						"format": "int64"
+					},
+					"agentId": {
+						"type": "integer",
+						"description": "代理商ID",
+						"format": "int64"
+					},
+					"agentName": {
+						"type": "string",
+						"description": "代理商明显"
+					},
+					"amount": {
+						"type": "number",
+						"description": "提现金额"
+					},
+					"type": {
+						"type": "integer",
+						"description": "提现类型:1 银行卡 2 U"
+					},
+					"bankName": {
+						"type": "string",
+						"description": "银行名称"
+					},
+					"bankAccount": {
+						"type": "string",
+						"description": "银行卡账号"
+					},
+					"realName": {
+						"type": "string",
+						"description": "姓名"
+					},
+					"applyTime": {
+						"type": "string",
+						"description": "审核时间"
+					},
+					"auditStatus": {
+						"type": "integer",
+						"description": "0待审核 1通过 2拒绝"
+					},
+					"transferStatus": {
+						"type": "integer",
+						"description": "0待打款 1成功 2失败"
+					},
+					"failReason": {
+						"type": "string",
+						"description": "拒绝原因"
+					},
+					"createdTime": {
+						"type": "string",
+						"description": "添加时间"
+					},
+					"updatedTime": {
+						"type": "string",
+						"description": "更新时间"
+					}
+				}
+			},
+			"MerchantWithdrawPageVO": {
+				"type": "object",
+				"properties": {
+					"id": {
+						"type": "integer",
+						"description": "",
+						"format": "int64"
+					},
+					"merchantId": {
+						"type": "integer",
+						"description": "代理商ID",
+						"format": "int64"
+					},
+					"merchantName": {
+						"type": "string",
+						"description": "代理商明显"
+					},
+					"amount": {
+						"type": "number",
+						"description": "提现金额"
+					},
+					"type": {
+						"type": "integer",
+						"description": "提现类型:1 银行卡 2 U"
+					},
+					"bankName": {
+						"type": "string",
+						"description": "银行名称"
+					},
+					"bankAccount": {
+						"type": "string",
+						"description": "银行卡账号"
+					},
+					"realName": {
+						"type": "string",
+						"description": "姓名"
+					},
+					"applyTime": {
+						"type": "string",
+						"description": "审核时间"
+					},
+					"auditStatus": {
+						"type": "integer",
+						"description": "0待审核 1通过 2拒绝"
+					},
+					"transferStatus": {
+						"type": "integer",
+						"description": "0待打款 1成功 2失败"
+					},
+					"failReason": {
+						"type": "string",
+						"description": "拒绝原因"
+					},
+					"createdTime": {
+						"type": "string",
+						"description": "添加时间"
+					},
+					"updatedTime": {
+						"type": "string",
+						"description": "更新时间"
+					}
+				}
+			},
+			"": {
+				"type": "object",
+				"properties": {}
+			},
+			"PageAgentWithdrawPageVO": {
+				"type": "object",
+				"properties": {
+					"records": {
+						"type": "array",
+						"items": {
+							"$ref": "#/components/schemas/AgentWithdrawPageVO",
+							"description": "com.mw.bridging.admin.api.vo.agent.AgentWithdrawPageVO"
+						},
+						"description": ""
+					},
+					"total": {
+						"type": "integer",
+						"description": "",
+						"format": "int64"
+					},
+					"size": {
+						"type": "integer",
+						"description": "",
+						"format": "int64"
+					},
+					"current": {
+						"type": "integer",
+						"description": "",
+						"format": "int64"
+					},
+					"orders": {
+						"type": "array",
+						"items": {
+							"$ref": "#/components/schemas/OrderItem",
+							"description": "com.baomidou.mybatisplus.core.metadata.OrderItem"
+						},
+						"description": ""
+					},
+					"optimizeCountSql": {
+						"type": "boolean",
+						"description": ""
+					},
+					"searchCount": {
+						"type": "boolean",
+						"description": ""
+					},
+					"optimizeJoinOfCountSql": {
+						"type": "boolean",
+						"description": ""
+					},
+					"maxLimit": {
+						"type": "integer",
+						"description": "",
+						"format": "int64"
+					},
+					"countId": {
+						"type": "string",
+						"description": ""
+					}
+				}
+			},
+			"PageMerchantWithdrawPageVO": {
+				"type": "object",
+				"properties": {
+					"records": {
+						"type": "array",
+						"items": {
+							"$ref": "#/components/schemas/MerchantWithdrawPageVO",
+							"description": "com.mw.bridging.admin.api.vo.merchant.MerchantWithdrawPageVO"
+						},
+						"description": ""
+					},
+					"total": {
+						"type": "integer",
+						"description": "",
+						"format": "int64"
+					},
+					"size": {
+						"type": "integer",
+						"description": "",
+						"format": "int64"
+					},
+					"current": {
+						"type": "integer",
+						"description": "",
+						"format": "int64"
+					},
+					"orders": {
+						"type": "array",
+						"items": {
+							"$ref": "#/components/schemas/OrderItem",
+							"description": "com.baomidou.mybatisplus.core.metadata.OrderItem"
+						},
+						"description": ""
+					},
+					"optimizeCountSql": {
+						"type": "boolean",
+						"description": ""
+					},
+					"searchCount": {
+						"type": "boolean",
+						"description": ""
+					},
+					"optimizeJoinOfCountSql": {
+						"type": "boolean",
+						"description": ""
+					},
+					"maxLimit": {
+						"type": "integer",
+						"description": "",
+						"format": "int64"
+					},
+					"countId": {
+						"type": "string",
+						"description": ""
+					}
+				}
+			},
+			"RPageAgentWithdrawPageVO": {
+				"type": "object",
+				"properties": {
+					"code": {
+						"type": "integer",
+						"description": "返回标记:成功标记=0,失败标记=1"
+					},
+					"msg": {
+						"type": "string",
+						"description": "返回信息"
+					},
+					"data": {
+						"$ref": "#/components/schemas/PageAgentWithdrawPageVO",
+						"description": "数据"
+					}
+				}
+			},
+			"RPageMerchantWithdrawPageVO": {
+				"type": "object",
+				"properties": {
+					"code": {
+						"type": "integer",
+						"description": "返回标记:成功标记=0,失败标记=1"
+					},
+					"msg": {
+						"type": "string",
+						"description": "返回信息"
+					},
+					"data": {
+						"$ref": "#/components/schemas/PageMerchantWithdrawPageVO",
+						"description": "数据"
+					}
+				}
+			},
+			"R": {
+				"type": "object",
+				"properties": {
+					"ok": {
+						"type": "boolean"
+					},
+					"code": {
+						"type": "integer",
+						"description": "返回标记:成功标记=0,失败标记=1"
+					},
+					"msg": {
+						"type": "string",
+						"description": "返回信息"
+					},
+					"data": {
+						"type": "object",
+						"properties": {},
+						"description": "数据"
+					}
+				}
+			},
+			"AgentWithdrawDTO": {
+				"type": "object",
+				"properties": {
+					"records": {
+						"type": "array",
+						"items": {
+							"$ref": "#/components/schemas/1"
+						},
+						"description": ""
+					},
+					"total": {
+						"type": "integer",
+						"description": "",
+						"format": "int64"
+					},
+					"size": {
+						"type": "integer",
+						"description": "",
+						"format": "int64"
+					},
+					"current": {
+						"type": "integer",
+						"description": "",
+						"format": "int64"
+					},
+					"orders": {
+						"type": "array",
+						"items": {
+							"$ref": "#/components/schemas/OrderItem",
+							"description": "com.baomidou.mybatisplus.core.metadata.OrderItem"
+						},
+						"description": ""
+					},
+					"optimizeCountSql": {
+						"type": "boolean",
+						"description": ""
+					},
+					"searchCount": {
+						"type": "boolean",
+						"description": ""
+					},
+					"optimizeJoinOfCountSql": {
+						"type": "boolean",
+						"description": ""
+					},
+					"maxLimit": {
+						"type": "integer",
+						"description": "",
+						"format": "int64"
+					},
+					"countId": {
+						"type": "string",
+						"description": ""
+					},
+					"auditStatus": {
+						"type": "integer",
+						"description": "0待审核 1通过 2拒绝"
+					},
+					"transferStatus": {
+						"type": "integer",
+						"description": "0待打款 1成功 2失败"
+					},
+					"bankAccount": {
+						"type": "string",
+						"description": "银行卡账号"
+					},
+					"realName": {
+						"type": "string",
+						"description": "姓名"
+					},
+					"startTime": {
+						"type": "string",
+						"description": "开始时间"
+					},
+					"endTime": {
+						"type": "string",
+						"description": "结束时间"
+					}
+				}
+			},
+			"OrderItem": {
+				"type": "object",
+				"properties": {
+					"column": {
+						"type": "string",
+						"description": ""
+					},
+					"asc": {
+						"type": "boolean",
+						"description": ""
+					}
+				}
+			},
+			"UpdateAgentWithdrawDTO": {
+				"type": "object",
+				"properties": {
+					"id": {
+						"type": "integer",
+						"description": "id",
+						"format": "int64"
+					},
+					"auditStatus": {
+						"type": "integer",
+						"description": "0待审核 1通过 2拒绝"
+					},
+					"transferStatus": {
+						"type": "integer",
+						"description": "0待打款 1成功 2失败"
+					},
+					"failReason": {
+						"type": "string",
+						"description": "拒绝原因"
+					}
+				}
+			}
+		},
+		"responses": {},
+		"securitySchemes": {
+			"bearer": {
+				"type": "http",
+				"scheme": "bearer"
+			}
+		}
+	},
+	"servers": [],
+	"security": []
+}

+ 0 - 172
doc/tz.json

@@ -1,172 +0,0 @@
-{
-  "openapi": "3.0.1",
-  "info": {
-    "title": "默认模块",
-    "description": "",
-    "version": "1.0.0"
-  },
-  "tags": [],
-  "paths": {
-    "/admin/payNotify/page": {
-      "get": {
-        "summary": "分页查询列表",
-        "deprecated": false,
-        "description": "",
-        "tags": [],
-        "parameters": [
-          {
-            "name": "appId",
-            "in": "query",
-            "description": "",
-            "required": true,
-            "schema": {
-              "type": "string"
-            }
-          },
-          {
-            "name": "orderId",
-            "in": "query",
-            "description": "",
-            "required": true,
-            "schema": {
-              "type": "string"
-            }
-          }
-        ],
-        "responses": {
-          "200": {
-            "description": "",
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/RPayNotifyRO",
-                  "description": "通知记录"
-                },
-                "example": {
-                  "code": 0,
-                  "msg": "",
-                  "data": {
-                    "id": 0,
-                    "orderId": "",
-                    "status": 0,
-                    "nextNotifyTime": "",
-                    "lastExecuteTime": "",
-                    "notifyTimes": 0,
-                    "maxNotifyTimes": 0,
-                    "notifyUrl": "",
-                    "errorMsg": "",
-                    "payNotifyLogs": [
-                      {
-                        "notifyTimes": 0,
-                        "response": "",
-                        "status": 0,
-                        "createTime": ""
-                      }
-                    ]
-                  }
-                }
-              }
-            },
-            "headers": {}
-          }
-        },
-        "security": []
-      }
-    }
-  },
-  "components": {
-    "schemas": {
-      "PayNotifyLogRO": {
-        "type": "object",
-        "properties": {
-          "notifyTimes": {
-            "type": "integer",
-            "description": "第几次被通知\n\n对应到{@link MchPayNotifyTask#getNotifyTimes()}"
-          },
-          "response": {
-            "type": "string",
-            "description": "HTTP 响应结果"
-          },
-          "status": {
-            "type": "integer",
-            "description": "支付通知状态\n\n枚举{@link PayNotifyStatusEnum}"
-          },
-          "createTime": {
-            "type": "string",
-            "description": "创建时间"
-          }
-        }
-      },
-      "PayNotifyRO": {
-        "type": "object",
-        "properties": {
-          "id": {
-            "type": "integer",
-            "description": "",
-            "format": "int64"
-          },
-          "orderId": {
-            "type": "string",
-            "description": "平台订单ID"
-          },
-          "status": {
-            "type": "integer",
-            "description": "通知状态\n\n枚举{@link PayNotifyStatusEnum}"
-          },
-          "nextNotifyTime": {
-            "type": "string",
-            "description": "下一次通知时间"
-          },
-          "lastExecuteTime": {
-            "type": "string",
-            "description": "最后一次执行时间"
-          },
-          "notifyTimes": {
-            "type": "integer",
-            "description": "当前通知次数"
-          },
-          "maxNotifyTimes": {
-            "type": "integer",
-            "description": "最大可通知次数"
-          },
-          "notifyUrl": {
-            "type": "string",
-            "description": "通知地址"
-          },
-          "errorMsg": {
-            "type": "string",
-            "description": "失败原因"
-          },
-          "payNotifyLogs": {
-            "type": "array",
-            "items": {
-              "$ref": "#/components/schemas/PayNotifyLogRO",
-              "description": "com.mw.bridging.open.ro.PayNotifyLogRO"
-            },
-            "description": "通知日志"
-          }
-        }
-      },
-      "RPayNotifyRO": {
-        "type": "object",
-        "properties": {
-          "code": {
-            "type": "integer",
-            "description": "返回标记:成功标记=0,失败标记=1"
-          },
-          "msg": {
-            "type": "string",
-            "description": "返回信息"
-          },
-          "data": {
-            "$ref": "#/components/schemas/PayNotifyRO",
-            "description": "数据"
-          }
-        }
-      }
-    },
-    "securitySchemes": {}
-  },
-  "servers": [],
-  "security": []
-}

+ 1 - 11
index.html

@@ -4,21 +4,11 @@
 		<meta charset="utf-8" />
 		<meta http-equiv="X-UA-Compatible" content="IE=edge" />
 		<meta name="viewport" content="width=device-width, initial-scale=1.0" />
-		<meta
-			name="keywords"
-			content="
-		微服务,pig开发平台,oauth2,微服务框架,java微服务框架,微服务开发框架,微服务治理框架,开源微服务框架,微服务器框架,微服务框架图,微服务快速开发框架,微服务java框架,微服务开源框架,微服务开源框架,微服务架构框架,微服务基础框架,微服务常见框架,主流微服务框架,微服务框架搭建,java主流微服务框架,java微服务开发框架,微服务前端框架,Spring
-		Boot,Spring Cloud,Spring"
-		/>
 
-		<meta
-			name="description"
-			content="PIG应用微服务、容器、DevOps等云原生技术,封装了大量技术开发包、技术应用组件、技术场景实现能力,并支持SaaS模式应用,提供了一个可支持企业各业务系统或产品快速开发实现的微服务应用数字化融合平台,富含各类开箱即用的组件、微服务业务系统,助力企业跨越Cloud(IaaS/PaaS)与自身数字化的鸿沟,共享业务服务的组合重用,为企业服务化中台整合、数字化转型提供强力支撑,也为企业提供了最佳架构实践。"
-		/>
 		<!--避免微信管理防盗链机制-->
 		<meta name="referrer" content="no-referrer" />
 		<link rel="icon" href="/favicon.ico" />
-		<title>PIGX 微服务快速开发平台</title>
+		<title>支付系统-运营端</title>
 	</head>
 
 	<body>

+ 36 - 0
src/api/order/index.ts

@@ -40,3 +40,39 @@ export function fetchPayNotifyLog(appId: string, orderId: string) {
 		},
 	});
 }
+
+// ==================== 商户结算相关 API ====================
+
+export function fetchMerchantWithdrawList(query?: Object) {
+	return request({
+		url: '/admin/merchantWithdraw/page',
+		method: 'post',
+		data: query,
+	});
+}
+
+export function auditMerchantWithdraw(data: any) {
+	return request({
+		url: '/admin/merchantWithdraw/audit',
+		method: 'post',
+		data,
+	});
+}
+
+// ==================== 代理结算相关 API ====================
+
+export function fetchAgentWithdrawList(query?: Object) {
+	return request({
+		url: '/admin/agentWithdraw/page',
+		method: 'post',
+		data: query,
+	});
+}
+
+export function auditAgentWithdraw(data: any) {
+	return request({
+		url: '/admin/agentWithdraw/audit',
+		method: 'post',
+		data,
+	});
+}

+ 66 - 39
src/views/admin/system/user/personal.vue

@@ -2,12 +2,16 @@
 	<el-drawer v-model="visible" :title="$t('personal.name')" size="40%">
 		<el-tabs style="height: 200px" class="demo-tabs">
 			<el-tab-pane label="基本信息" v-loading="loading">
-        <template #label>
-          <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="size-4">
-            <path stroke-linecap="round" stroke-linejoin="round" d="M17.982 18.725A7.488 7.488 0 0 0 12 15.75a7.488 7.488 0 0 0-5.982 2.975m11.963 0a9 9 0 1 0-11.963 0m11.963 0A8.966 8.966 0 0 1 12 21a8.966 8.966 0 0 1-5.982-2.275M15 9.75a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z" />
-          </svg>
-          基本信息
-        </template>
+				<template #label>
+					<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="size-4">
+						<path
+							stroke-linecap="round"
+							stroke-linejoin="round"
+							d="M17.982 18.725A7.488 7.488 0 0 0 12 15.75a7.488 7.488 0 0 0-5.982 2.975m11.963 0a9 9 0 1 0-11.963 0m11.963 0A8.966 8.966 0 0 1 12 21a8.966 8.966 0 0 1-5.982-2.275M15 9.75a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z"
+						/>
+					</svg>
+					基本信息
+				</template>
 				<el-form :model="formData" :rules="ruleForm" label-width="100px" class="mt30" ref="formdataRef">
 					<el-row :gutter="20">
 						<el-col :span="24" class="mb20">
@@ -55,26 +59,36 @@
 				</el-form>
 			</el-tab-pane>
 			<el-tab-pane label="安全信息">
-        <template #label>
-          <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="size-4">
-            <path stroke-linecap="round" stroke-linejoin="round" d="M9 12.75 11.25 15 15 9.75m-3-7.036A11.959 11.959 0 0 1 3.598 6 11.99 11.99 0 0 0 3 9.749c0 5.592 3.824 10.29 9 11.623 5.176-1.332 9-6.03 9-11.622 0-1.31-.21-2.571-.598-3.751h-.152c-3.196 0-6.1-1.248-8.25-3.285Z" />
-          </svg>
-          安全信息
-        </template>
+				<template #label>
+					<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="size-4">
+						<path
+							stroke-linecap="round"
+							stroke-linejoin="round"
+							d="M9 12.75 11.25 15 15 9.75m-3-7.036A11.959 11.959 0 0 1 3.598 6 11.99 11.99 0 0 0 3 9.749c0 5.592 3.824 10.29 9 11.623 5.176-1.332 9-6.03 9-11.622 0-1.31-.21-2.571-.598-3.751h-.152c-3.196 0-6.1-1.248-8.25-3.285Z"
+						/>
+					</svg>
+					安全信息
+				</template>
 				<el-form :model="passwordFormData" :rules="passwordRuleForm" label-width="100px" class="mt30" ref="passwordFormdataRef">
 					<el-row :gutter="20">
 						<el-col :span="24" class="mb20">
 							<el-form-item label="原密码" prop="password">
-								<el-input v-model="passwordFormData.password"  :type="showPassword ? 'text' : 'password'" placeholder="请输入密码" clearable type="password">
-                  <template #suffix>
-                    <i
-                        class="iconfont el-input__icon login-content-password"
-                        :class="showPassword ? 'icon-yincangmima' : 'icon-xianshimima'"
-                        @click="showPassword = !showPassword"
-                    >
-                    </i>
-                  </template>
-                </el-input>
+								<el-input
+									v-model="passwordFormData.password"
+									:type="showPassword ? 'text' : 'password'"
+									placeholder="请输入密码"
+									clearable
+									type="password"
+								>
+									<template #suffix>
+										<i
+											class="iconfont el-input__icon login-content-password"
+											:class="showPassword ? 'icon-yincangmima' : 'icon-xianshimima'"
+											@click="showPassword = !showPassword"
+										>
+										</i>
+									</template>
+								</el-input>
 							</el-form-item>
 						</el-col>
 						<el-col :span="24" class="mb20">
@@ -103,13 +117,17 @@
 				</el-form>
 			</el-tab-pane>
 			<el-tab-pane label="第三方账号">
-        <template #label>
-          <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="size-4">
-            <path stroke-linecap="round" stroke-linejoin="round" d="M7.864 4.243A7.5 7.5 0 0 1 19.5 10.5c0 2.92-.556 5.709-1.568 8.268M5.742 6.364A7.465 7.465 0 0 0 4.5 10.5a7.464 7.464 0 0 1-1.15 3.993m1.989 3.559A11.209 11.209 0 0 0 8.25 10.5a3.75 3.75 0 1 1 7.5 0c0 .527-.021 1.049-.064 1.565M12 10.5a14.94 14.94 0 0 1-3.6 9.75m6.633-4.596a18.666 18.666 0 0 1-2.485 5.33" />
-          </svg>
-
-          社交登录
-        </template>
+				<template #label>
+					<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="size-4">
+						<path
+							stroke-linecap="round"
+							stroke-linejoin="round"
+							d="M7.864 4.243A7.5 7.5 0 0 1 19.5 10.5c0 2.92-.556 5.709-1.568 8.268M5.742 6.364A7.465 7.465 0 0 0 4.5 10.5a7.464 7.464 0 0 1-1.15 3.993m1.989 3.559A11.209 11.209 0 0 0 8.25 10.5a3.75 3.75 0 1 1 7.5 0c0 .527-.021 1.049-.064 1.565M12 10.5a14.94 14.94 0 0 1-3.6 9.75m6.633-4.596a18.666 18.666 0 0 1-2.485 5.33"
+						/>
+					</svg>
+
+					社交登录
+				</template>
 				<el-table :data="socialList" class="mt10">
 					<el-table-column type="index" label="序号" width="80"></el-table-column>
 					<el-table-column prop="name" label="平台"></el-table-column>
@@ -132,14 +150,14 @@
 </template>
 
 <script setup lang="ts" name="personal">
-import {useUserInfo} from '/@/stores/userInfo';
-import {editInfo, getObj, password, unbindingUser} from '/@/api/admin/user';
-import {useMessage} from '/@/hooks/message';
-import {rule, validateNull} from '/@/utils/validate';
+import { useUserInfo } from '/@/stores/userInfo';
+import { editInfo, getObj, password, unbindingUser } from '/@/api/admin/user';
+import { useMessage } from '/@/hooks/message';
+import { rule, validateNull } from '/@/utils/validate';
 import other from '/@/utils/other';
-import {Session} from '/@/utils/storage';
-import {useI18n} from 'vue-i18n';
-import {getLoginAppList} from "/@/api/admin/social";
+import { Session } from '/@/utils/storage';
+import { useI18n } from 'vue-i18n';
+import { getLoginAppList } from '/@/api/admin/social';
 import { SocialLoginEnum } from '/@/api/login';
 
 const { t } = useI18n();
@@ -177,9 +195,18 @@ const ruleForm = reactive({
 		{ required: true, message: '手机号不能为空', trigger: 'blur' },
 		{ validator: rule.validatePhone, trigger: 'blur' },
 	],
-	nickname: [{ validator: rule.overLength, trigger: 'blur' },{ required: true, message: '昵称不能为空', trigger: 'blur' }],
-	email: [{ validator: rule.overLength, trigger: 'blur' },{ required: true, message: '邮箱不能为空', trigger: 'blur' }],
-	name: [{ validator: rule.overLength, trigger: 'blur' },{ required: true, message: '姓名不能为空', trigger: 'blur' }],
+	nickname: [
+		{ validator: rule.overLength, trigger: 'blur' },
+		{ required: true, message: '昵称不能为空', trigger: 'blur' },
+	],
+	email: [
+		{ validator: rule.overLength, trigger: 'blur' },
+		{ required: true, message: '邮箱不能为空', trigger: 'blur' },
+	],
+	name: [
+		{ validator: rule.overLength, trigger: 'blur' },
+		{ required: true, message: '姓名不能为空', trigger: 'blur' },
+	],
 });
 const validatorPassword2 = (rule: any, value: any, callback: any) => {
 	if (value !== passwordFormData.newpassword1) {

+ 30 - 0
src/views/agent/list/form.vue

@@ -67,6 +67,28 @@
 					</el-form-item>
 				</el-col> -->
 
+				<el-col :span="12" class="mb20">
+					<el-form-item label="结算周期" prop="settlementDays">
+						<el-input-number
+							placeholder="请输入结算周期天数"
+							v-model="form.settlementDays"
+							:min="0"
+							:precision="0"
+							:disabled="readonly"
+							style="width: 100%"
+						>
+							<template #prefix>
+								<span style="color: #606266; font-weight: 500">T+</span>
+							</template>
+							<template #append>天</template>
+						</el-input-number>
+						<div style="color: #909399; font-size: 12px; margin-top: 4px">
+							当前设置: <span style="color: #409eff; font-weight: 500">T+{{ form.settlementDays || 0 }}</span>
+							({{ form.settlementDays === 0 ? '当天结算' : `${form.settlementDays}天后结算` }})
+						</div>
+					</el-form-item>
+				</el-col>
+
 				<el-col :span="12" class="mb20">
 					<el-form-item :label="$t('agentUser.status')" prop="status">
 						<el-radio-group v-model="form.status" :disabled="readonly || !!form.userId">
@@ -154,6 +176,7 @@ const form = reactive({
 	email: '',
 	offlineRechargeRate: 0,
 	status: true,
+	settlementDays: 0,
 	bankName: '',
 	bankBranch: '',
 	accountName: '',
@@ -201,6 +224,9 @@ const openDialog = (id: string, isReadonly = false) => {
 	if (id) {
 		form.userId = id;
 		getAgentUserData(id);
+	} else {
+		// 新增时确保settlementDays为0
+		form.settlementDays = 0;
 	}
 };
 
@@ -237,6 +263,10 @@ const getAgentUserData = async (id: string): Promise<void> => {
 	try {
 		const res = await getObj(id); // 执行查询操作
 		Object.assign(form, res.data); // 将查询到的数据合并到表单中
+		// 确保settlementDays有默认值
+		if (form.settlementDays === null || form.settlementDays === undefined) {
+			form.settlementDays = 0;
+		}
 	} catch (err) {
 		useMessage().error('操作失败'); // 如果查询失败,则显示错误提示信息
 	} finally {

+ 5 - 0
src/views/agent/list/index.vue

@@ -55,6 +55,11 @@
 						{{ scope.row.withdrawnAmount ? `¥${scope.row.withdrawnAmount.toFixed(2)}` : '¥0.00' }}
 					</template>
 				</el-table-column>
+				<el-table-column label="结算周期" prop="settlementDays" show-overflow-tooltip>
+					<template #default="scope">
+						<el-tag type="info" size="small">T+{{ scope.row.settlementDays || 0 }}</el-tag>
+					</template>
+				</el-table-column>
 				<el-table-column :label="$t('agentUser.status')" prop="status" show-overflow-tooltip>
 					<template #default="scope">
 						<el-switch

+ 30 - 0
src/views/merchant/list/form.vue

@@ -87,6 +87,28 @@
 					</el-form-item>
 				</el-col> -->
 
+				<el-col :span="12" class="mb20">
+					<el-form-item label="结算周期" prop="settlementDays">
+						<el-input-number
+							placeholder="请输入结算周期天数"
+							v-model="form.settlementDays"
+							:min="0"
+							:precision="0"
+							:disabled="readonly"
+							style="width: 100%"
+						>
+							<template #prefix>
+								<span style="color: #606266; font-weight: 500">T+</span>
+							</template>
+							<template #append>天</template>
+						</el-input-number>
+						<div style="color: #909399; font-size: 12px; margin-top: 4px">
+							当前设置: <span style="color: #409eff; font-weight: 500">T+{{ form.settlementDays || 0 }}</span>
+							({{ form.settlementDays === 0 ? '当天结算' : `${form.settlementDays}天后结算` }})
+						</div>
+					</el-form-item>
+				</el-col>
+
 				<el-col :span="12" class="mb20">
 					<el-form-item :label="$t('merchantUser.status')" prop="status">
 						<el-radio-group v-model="form.status" :disabled="readonly || !!form.userId">
@@ -164,6 +186,7 @@ const form = reactive({
 	offlineRechargeRate: 0,
 	status: true,
 	agentId: undefined as number | undefined,
+	settlementDays: 0,
 });
 
 // 定义校验规则(根据接口文档,必填字段:username, merchantName, phone, email)
@@ -204,6 +227,9 @@ const openDialog = (id: string, isReadonly = false) => {
 	if (id) {
 		form.userId = id;
 		getMerchantUserData(id);
+	} else {
+		// 新增时确保settlementDays为0
+		form.settlementDays = 0;
 	}
 };
 
@@ -223,6 +249,10 @@ const getMerchantUserData = (id: string) => {
 	getObj(id)
 		.then((res: any) => {
 			Object.assign(form, res.data);
+			// 确保settlementDays有默认值
+			if (form.settlementDays === null || form.settlementDays === undefined) {
+				form.settlementDays = 0;
+			}
 		})
 		.finally(() => {
 			loading.value = false;

+ 5 - 0
src/views/merchant/list/index.vue

@@ -56,6 +56,11 @@
 						{{ scope.row.withdrawnAmount ? `¥${scope.row.withdrawnAmount.toFixed(2)}` : '¥0.00' }}
 					</template>
 				</el-table-column>
+				<el-table-column label="结算周期" prop="settlementDays" show-overflow-tooltip>
+					<template #default="scope">
+						<el-tag type="info" size="small">T+{{ scope.row.settlementDays || 0 }}</el-tag>
+					</template>
+				</el-table-column>
 				<el-table-column :label="$t('merchantUser.status')" prop="status" show-overflow-tooltip>
 					<template #default="scope">
 						<el-switch

+ 38 - 7
src/views/order/payOrder/index.vue

@@ -9,6 +9,12 @@
 					<el-form-item label="平台订单号" prop="transactionId">
 						<el-input placeholder="请输入平台订单号" style="max-width: 180px" v-model="state.queryForm.transactionId" clearable />
 					</el-form-item>
+					<el-form-item label="商户名称" prop="merchantName">
+						<el-input placeholder="请输入商户名称" style="max-width: 180px" v-model="state.queryForm.merchantName" clearable />
+					</el-form-item>
+					<el-form-item label="代理名称" prop="agentName">
+						<el-input placeholder="请输入代理名称" style="max-width: 180px" v-model="state.queryForm.agentName" clearable />
+					</el-form-item>
 					<el-form-item label="订单状态" prop="orderStatus">
 						<el-select v-model="state.queryForm.orderStatus" placeholder="请选择订单状态" style="max-width: 180px" clearable>
 							<el-option label="创建订单" value="CREATE_ORDER" />
@@ -18,9 +24,6 @@
 							<el-option label="支付超时" value="PAY_TIMEOUT" />
 						</el-select>
 					</el-form-item>
-					<el-form-item label="支付通道" prop="paymentChannelId">
-						<el-input placeholder="请输入支付通道ID" style="max-width: 180px" v-model="state.queryForm.paymentChannelId" clearable />
-					</el-form-item>
 					<el-form-item>
 						<el-button @click="getDataList" icon="search" type="primary">查询</el-button>
 						<el-button @click="resetQuery" icon="Refresh">重置</el-button>
@@ -85,9 +88,31 @@
 				:header-cell-style="tableStyle.headerCellStyle"
 			>
 				<el-table-column align="center" type="selection" width="40" />
-				<el-table-column label="商户订单号" prop="mchOrderNo" show-overflow-tooltip />
-				<el-table-column label="平台订单号" prop="transactionId" show-overflow-tooltip />
-				<el-table-column label="通道编码" prop="paymentChannelId" show-overflow-tooltip />
+				<el-table-column label="商户订单号" prop="mchOrderNo" show-overflow-tooltip>
+					<template #default="scope">
+						{{ scope.row.mchOrderNo || '--' }}
+					</template>
+				</el-table-column>
+				<el-table-column label="平台订单号" prop="transactionId" show-overflow-tooltip>
+					<template #default="scope">
+						{{ scope.row.transactionId || '--' }}
+					</template>
+				</el-table-column>
+				<el-table-column label="商户名称" prop="merchantName" show-overflow-tooltip>
+					<template #default="scope">
+						{{ scope.row.merchantName || '--' }}
+					</template>
+				</el-table-column>
+				<el-table-column label="代理名称" prop="agentName" show-overflow-tooltip>
+					<template #default="scope">
+						{{ scope.row.agentName || '--' }}
+					</template>
+				</el-table-column>
+				<el-table-column label="通道名称" prop="paymentChannelName" show-overflow-tooltip>
+					<template #default="scope">
+						{{ scope.row.paymentChannelName || '--' }}
+					</template>
+				</el-table-column>
 				<el-table-column label="金额" prop="amount" show-overflow-tooltip>
 					<template #default="scope">
 						<span style="color: #f56c6c; font-weight: bold">¥{{ scope.row.amount ? scope.row.amount.toFixed(2) : '0.00' }}</span>
@@ -100,6 +125,11 @@
 						</el-tag>
 					</template>
 				</el-table-column>
+				<el-table-column label="创建时间" prop="createTime" show-overflow-tooltip width="180">
+					<template #default="scope">
+						{{ scope.row.createTime || '--' }}
+					</template>
+				</el-table-column>
 				<el-table-column label="操作">
 					<template #default="scope">
 						<!-- <el-button icon="View" @click="handleView(scope.row)" text type="primary" size="small">查看</el-button> -->
@@ -145,8 +175,9 @@ const state: BasicTableProps = reactive<BasicTableProps>({
 	queryForm: {
 		mchOrderNo: '',
 		transactionId: '',
+		merchantName: '',
+		agentName: '',
 		orderStatus: '',
-		paymentChannelId: '',
 	},
 	pageList: fetchPayOrderList,
 	descs: ['create_time'],

+ 38 - 3
src/views/order/withdrawOrder/index.vue

@@ -9,6 +9,12 @@
 					<el-form-item label="平台订单号" prop="transactionId">
 						<el-input placeholder="请输入平台订单号" style="max-width: 180px" v-model="state.queryForm.transactionId" clearable />
 					</el-form-item>
+					<el-form-item label="商户名称" prop="merchantName">
+						<el-input placeholder="请输入商户名称" style="max-width: 180px" v-model="state.queryForm.merchantName" clearable />
+					</el-form-item>
+					<el-form-item label="代理名称" prop="agentName">
+						<el-input placeholder="请输入代理名称" style="max-width: 180px" v-model="state.queryForm.agentName" clearable />
+					</el-form-item>
 					<el-form-item label="订单状态" prop="orderStatus">
 						<el-select v-model="state.queryForm.orderStatus" placeholder="请选择订单状态" style="max-width: 180px" clearable>
 							<el-option label="创建订单" value="CREATE_ORDER" />
@@ -44,9 +50,31 @@
 				:header-cell-style="tableStyle.headerCellStyle"
 			>
 				<el-table-column align="center" type="selection" width="40" />
-				<el-table-column label="商户订单号" prop="mchOrderNo" show-overflow-tooltip />
-				<el-table-column label="平台订单号" prop="transactionId" show-overflow-tooltip />
-				<el-table-column label="通道编码" prop="paymentChannelId" show-overflow-tooltip />
+				<el-table-column label="商户订单号" prop="mchOrderNo" show-overflow-tooltip>
+					<template #default="scope">
+						{{ scope.row.mchOrderNo || '--' }}
+					</template>
+				</el-table-column>
+				<el-table-column label="平台订单号" prop="transactionId" show-overflow-tooltip>
+					<template #default="scope">
+						{{ scope.row.transactionId || '--' }}
+					</template>
+				</el-table-column>
+				<el-table-column label="商户名称" prop="merchantName" show-overflow-tooltip>
+					<template #default="scope">
+						{{ scope.row.merchantName || '--' }}
+					</template>
+				</el-table-column>
+				<el-table-column label="代理名称" prop="agentName" show-overflow-tooltip>
+					<template #default="scope">
+						{{ scope.row.agentName || '--' }}
+					</template>
+				</el-table-column>
+				<el-table-column label="通道名称" prop="paymentChannelName" show-overflow-tooltip>
+					<template #default="scope">
+						{{ scope.row.paymentChannelName || '--' }}
+					</template>
+				</el-table-column>
 				<el-table-column label="金额" prop="amount" show-overflow-tooltip>
 					<template #default="scope">
 						<span style="color: #f56c6c; font-weight: bold">¥{{ scope.row.amount ? scope.row.amount.toFixed(2) : '0.00' }}</span>
@@ -59,6 +87,11 @@
 						</el-tag>
 					</template>
 				</el-table-column>
+				<el-table-column label="创建时间" prop="createTime" show-overflow-tooltip width="180">
+					<template #default="scope">
+						{{ scope.row.createTime || '--' }}
+					</template>
+				</el-table-column>
 				<el-table-column label="操作">
 					<template #default="scope">
 						<!-- <el-button icon="View" @click="handleView(scope.row)" text type="primary" size="small">查看</el-button> -->
@@ -100,6 +133,8 @@ const state: BasicTableProps = reactive<BasicTableProps>({
 	queryForm: {
 		mchOrderNo: '',
 		transactionId: '',
+		merchantName: '',
+		agentName: '',
 		orderStatus: '',
 	},
 	pageList: fetchWithdrawOrderList,

+ 135 - 0
src/views/settlement/agentWithdraw/audit.vue

@@ -0,0 +1,135 @@
+<template>
+	<el-dialog v-model="visible" title="审核结算" width="600px" :close-on-click-modal="false" draggable>
+		<el-form ref="formRef" :model="form" :rules="rules" label-width="100px" v-loading="loading">
+			<el-row :gutter="20">
+				<el-col :span="24" class="mb20">
+					<el-form-item label="代理名称">
+						<el-input v-model="form.agentName" disabled />
+					</el-form-item>
+				</el-col>
+				<el-col :span="24" class="mb20">
+					<el-form-item label="提现金额">
+						<el-input v-model="form.amount" disabled>
+							<template #prepend>¥</template>
+						</el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="24" class="mb20">
+					<el-form-item label="提现类型">
+						<el-input :value="form.type === 1 ? '银行卡' : 'U'" disabled />
+					</el-form-item>
+				</el-col>
+				<el-col :span="24" class="mb20">
+					<el-form-item label="银行名称">
+						<el-input v-model="form.bankName" disabled />
+					</el-form-item>
+				</el-col>
+				<el-col :span="24" class="mb20">
+					<el-form-item label="银行账号">
+						<el-input v-model="form.bankAccount" disabled />
+					</el-form-item>
+				</el-col>
+				<el-col :span="24" class="mb20">
+					<el-form-item label="真实姓名">
+						<el-input v-model="form.realName" disabled />
+					</el-form-item>
+				</el-col>
+				<el-col :span="24" class="mb20">
+					<el-form-item label="审核状态" prop="auditStatus">
+						<el-radio-group v-model="form.auditStatus">
+							<el-radio :label="1">通过</el-radio>
+							<el-radio :label="2">拒绝</el-radio>
+						</el-radio-group>
+					</el-form-item>
+				</el-col>
+				<el-col :span="24" class="mb20" v-if="form.auditStatus === 2">
+					<el-form-item label="拒绝原因" prop="failReason">
+						<el-input v-model="form.failReason" type="textarea" :rows="3" placeholder="请输入拒绝原因" maxlength="200" show-word-limit />
+					</el-form-item>
+				</el-col>
+			</el-row>
+		</el-form>
+		<template #footer>
+			<span class="dialog-footer">
+				<el-button @click="visible = false">取消</el-button>
+				<el-button type="primary" @click="handleSubmit" :loading="loading">确定</el-button>
+			</span>
+		</template>
+	</el-dialog>
+</template>
+
+<script lang="ts" name="settlementAgentWithdrawAudit" setup>
+import { auditAgentWithdraw } from '/@/api/order';
+import { useMessage } from '/@/hooks/message';
+
+const emit = defineEmits(['refresh']);
+
+const visible = ref(false);
+const loading = ref(false);
+const formRef = ref();
+
+const form = reactive({
+	id: 0,
+	agentName: '',
+	amount: 0,
+	type: 1,
+	bankName: '',
+	bankAccount: '',
+	realName: '',
+	auditStatus: 1,
+	failReason: '',
+});
+
+const rules = reactive({
+	auditStatus: [{ required: true, message: '请选择审核状态', trigger: 'change' }],
+	failReason: [{ required: true, message: '请输入拒绝原因', trigger: 'blur' }],
+});
+
+// 打开弹窗
+const openDialog = (row: any) => {
+	form.id = row.id;
+	form.agentName = row.agentName;
+	form.amount = row.amount;
+	form.type = row.type;
+	form.bankName = row.bankName;
+	form.bankAccount = row.bankAccount;
+	form.realName = row.realName;
+	form.auditStatus = 1;
+	form.failReason = '';
+	visible.value = true;
+};
+
+// 提交审核
+const handleSubmit = async () => {
+	try {
+		await formRef.value.validate();
+		loading.value = true;
+
+		const submitData: any = {
+			id: form.id,
+			auditStatus: form.auditStatus,
+		};
+
+		if (form.auditStatus === 2) {
+			submitData.failReason = form.failReason;
+		}
+
+		await auditAgentWithdraw(submitData);
+		useMessage().success('审核成功');
+		visible.value = false;
+		emit('refresh');
+	} catch (err: any) {
+		if (err !== 'cancel') {
+			useMessage().error(err.msg || '审核失败');
+		}
+	} finally {
+		loading.value = false;
+	}
+};
+
+defineExpose({
+	openDialog,
+});
+</script>
+
+<style scoped></style>

+ 200 - 0
src/views/settlement/agentWithdraw/index.vue

@@ -0,0 +1,200 @@
+<template>
+	<div class="layout-padding">
+		<div class="layout-padding-auto layout-padding-view">
+			<el-row class="ml10" v-show="showSearch">
+				<el-form :inline="true" :model="state.queryForm" @keyup.enter="getDataList" ref="queryRef">
+					<el-form-item label="代理名称" prop="agentName">
+						<el-input placeholder="请输入代理名称" style="max-width: 180px" v-model="state.queryForm.agentName" clearable />
+					</el-form-item>
+					<el-form-item label="银行账号" prop="bankAccount">
+						<el-input placeholder="请输入银行账号" style="max-width: 180px" v-model="state.queryForm.bankAccount" clearable />
+					</el-form-item>
+					<el-form-item label="真实姓名" prop="realName">
+						<el-input placeholder="请输入真实姓名" style="max-width: 180px" v-model="state.queryForm.realName" clearable />
+					</el-form-item>
+					<el-form-item label="审核状态" prop="auditStatus">
+						<el-select v-model="state.queryForm.auditStatus" placeholder="请选择审核状态" style="max-width: 180px" clearable>
+							<el-option label="待审核" :value="0" />
+							<el-option label="通过" :value="1" />
+							<el-option label="拒绝" :value="2" />
+						</el-select>
+					</el-form-item>
+					<el-form-item label="申请时间" prop="dateRange">
+						<el-date-picker
+							v-model="dateRange"
+							type="datetimerange"
+							range-separator="至"
+							start-placeholder="开始时间"
+							end-placeholder="结束时间"
+							value-format="YYYY-MM-DD HH:mm:ss"
+							style="max-width: 360px"
+							@change="handleDateChange"
+						/>
+					</el-form-item>
+					<el-form-item>
+						<el-button @click="getDataList" icon="search" type="primary">查询</el-button>
+						<el-button @click="resetQuery" icon="Refresh">重置</el-button>
+					</el-form-item>
+				</el-form>
+			</el-row>
+			<el-row>
+				<div class="mb8" style="width: 100%">
+					<right-toolbar
+						@queryTable="getDataList"
+						class="ml10"
+						style="float: right; margin-right: 20px"
+						v-model:showSearch="showSearch"
+					></right-toolbar>
+				</div>
+			</el-row>
+
+			<el-table
+				:data="state.dataList"
+				@selection-change="handleSelectionChange"
+				@sort-change="sortChangeHandle"
+				style="width: 100%"
+				v-loading="state.loading"
+				border
+				:cell-style="tableStyle.cellStyle"
+				:header-cell-style="tableStyle.headerCellStyle"
+			>
+				<el-table-column align="center" type="selection" width="40" />
+				<el-table-column label="代理名称" prop="agentName" show-overflow-tooltip>
+					<template #default="scope">
+						{{ scope.row.agentName || '--' }}
+					</template>
+				</el-table-column>
+				<el-table-column label="提现金额" prop="amount" show-overflow-tooltip>
+					<template #default="scope">
+						<span style="color: #f56c6c; font-weight: bold">¥{{ scope.row.amount ? scope.row.amount.toFixed(2) : '0.00' }}</span>
+					</template>
+				</el-table-column>
+				<el-table-column label="提现类型" prop="type" show-overflow-tooltip>
+					<template #default="scope">
+						<el-tag :type="scope.row.type === 1 ? 'primary' : 'success'" size="small">
+							{{ scope.row.type === 1 ? '银行卡' : 'U' }}
+						</el-tag>
+					</template>
+				</el-table-column>
+				<el-table-column label="银行名称" prop="bankName" show-overflow-tooltip>
+					<template #default="scope">
+						{{ scope.row.bankName || '--' }}
+					</template>
+				</el-table-column>
+				<el-table-column label="银行账号" prop="bankAccount" show-overflow-tooltip>
+					<template #default="scope">
+						{{ scope.row.bankAccount || '--' }}
+					</template>
+				</el-table-column>
+				<el-table-column label="真实姓名" prop="realName" show-overflow-tooltip>
+					<template #default="scope">
+						{{ scope.row.realName || '--' }}
+					</template>
+				</el-table-column>
+				<el-table-column label="申请时间" prop="applyTime" show-overflow-tooltip width="180">
+					<template #default="scope">
+						{{ scope.row.applyTime || '--' }}
+					</template>
+				</el-table-column>
+				<el-table-column label="审核状态" prop="auditStatus" show-overflow-tooltip>
+					<template #default="scope">
+						<el-tag :type="auditStatusMap[scope.row.auditStatus]?.type || 'info'" size="small">
+							{{ auditStatusMap[scope.row.auditStatus]?.label || '--' }}
+						</el-tag>
+					</template>
+				</el-table-column>
+				<el-table-column label="拒绝原因" prop="failReason" show-overflow-tooltip>
+					<template #default="scope">
+						{{ scope.row.failReason || '--' }}
+					</template>
+				</el-table-column>
+				<el-table-column label="创建时间" prop="createdTime" show-overflow-tooltip width="180">
+					<template #default="scope">
+						{{ scope.row.createdTime || '--' }}
+					</template>
+				</el-table-column>
+				<el-table-column label="操作" fixed="right" width="150">
+					<template #default="scope">
+						<el-button v-if="scope.row.auditStatus === 0" @click="handleAudit(scope.row)" text type="primary" size="small"> 审核 </el-button>
+					</template>
+				</el-table-column>
+			</el-table>
+			<pagination @current-change="currentChangeHandle" @size-change="sizeChangeHandle" v-bind="state.pagination" />
+		</div>
+
+		<!-- 审核弹窗 -->
+		<audit-dialog ref="auditDialogRef" @refresh="getDataList" />
+	</div>
+</template>
+
+<script lang="ts" name="settlementAgentWithdraw" setup>
+import { BasicTableProps, useTable } from '/@/hooks/table';
+import { fetchAgentWithdrawList } from '/@/api/order';
+
+// 引入组件
+const AuditDialog = defineAsyncComponent(() => import('./audit.vue'));
+
+// 审核状态映射
+const auditStatusMap: Record<number, { label: string; type: any }> = {
+	0: { label: '待审核', type: 'warning' },
+	1: { label: '通过', type: 'success' },
+	2: { label: '拒绝', type: 'danger' },
+};
+
+// 定义变量内容
+const auditDialogRef = ref();
+const queryRef = ref();
+const showSearch = ref(true);
+const selectObjs = ref([]);
+const multiple = ref(true);
+const dateRange = ref<any>([]);
+
+// 定义表格查询、变更
+const state: BasicTableProps = reactive<BasicTableProps>({
+	queryForm: {
+		agentName: '',
+		bankAccount: '',
+		realName: '',
+		auditStatus: undefined,
+		startTime: '',
+		endTime: '',
+	},
+	pageList: fetchAgentWithdrawList,
+	descs: ['created_time'],
+});
+
+const { getDataList, currentChangeHandle, sizeChangeHandle, sortChangeHandle, tableStyle } = useTable(state);
+
+// 处理日期范围变化
+const handleDateChange = (val: any) => {
+	if (val && val.length === 2) {
+		state.queryForm.startTime = val[0];
+		state.queryForm.endTime = val[1];
+	} else {
+		state.queryForm.startTime = '';
+		state.queryForm.endTime = '';
+	}
+};
+
+// 重置查询
+const resetQuery = () => {
+	queryRef.value?.resetFields();
+	dateRange.value = [];
+	state.queryForm.startTime = '';
+	state.queryForm.endTime = '';
+	getDataList();
+};
+
+// 多选事件
+const handleSelectionChange = (objs: any) => {
+	selectObjs.value = objs.map((val: any) => val.id);
+	multiple.value = !objs.length;
+};
+
+// 审核
+const handleAudit = (row: any) => {
+	auditDialogRef.value.openDialog(row);
+};
+</script>
+
+<style scoped></style>

+ 135 - 0
src/views/settlement/merchantWithdraw/audit.vue

@@ -0,0 +1,135 @@
+<template>
+	<el-dialog v-model="visible" title="审核结算" width="600px" :close-on-click-modal="false" draggable>
+		<el-form ref="formRef" :model="form" :rules="rules" label-width="100px" v-loading="loading">
+			<el-row :gutter="20">
+				<el-col :span="24" class="mb20">
+					<el-form-item label="商户名称">
+						<el-input v-model="form.merchantName" disabled />
+					</el-form-item>
+				</el-col>
+				<el-col :span="24" class="mb20">
+					<el-form-item label="提现金额">
+						<el-input v-model="form.amount" disabled>
+							<template #prepend>¥</template>
+						</el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="24" class="mb20">
+					<el-form-item label="提现类型">
+						<el-input :value="form.type === 1 ? '银行卡' : 'U'" disabled />
+					</el-form-item>
+				</el-col>
+				<el-col :span="24" class="mb20">
+					<el-form-item label="银行名称">
+						<el-input v-model="form.bankName" disabled />
+					</el-form-item>
+				</el-col>
+				<el-col :span="24" class="mb20">
+					<el-form-item label="银行账号">
+						<el-input v-model="form.bankAccount" disabled />
+					</el-form-item>
+				</el-col>
+				<el-col :span="24" class="mb20">
+					<el-form-item label="真实姓名">
+						<el-input v-model="form.realName" disabled />
+					</el-form-item>
+				</el-col>
+				<el-col :span="24" class="mb20">
+					<el-form-item label="审核状态" prop="auditStatus">
+						<el-radio-group v-model="form.auditStatus">
+							<el-radio :label="1">通过</el-radio>
+							<el-radio :label="2">拒绝</el-radio>
+						</el-radio-group>
+					</el-form-item>
+				</el-col>
+				<el-col :span="24" class="mb20" v-if="form.auditStatus === 2">
+					<el-form-item label="拒绝原因" prop="failReason">
+						<el-input v-model="form.failReason" type="textarea" :rows="3" placeholder="请输入拒绝原因" maxlength="200" show-word-limit />
+					</el-form-item>
+				</el-col>
+			</el-row>
+		</el-form>
+		<template #footer>
+			<span class="dialog-footer">
+				<el-button @click="visible = false">取消</el-button>
+				<el-button type="primary" @click="handleSubmit" :loading="loading">确定</el-button>
+			</span>
+		</template>
+	</el-dialog>
+</template>
+
+<script lang="ts" name="settlementMerchantWithdrawAudit" setup>
+import { auditMerchantWithdraw } from '/@/api/order';
+import { useMessage } from '/@/hooks/message';
+
+const emit = defineEmits(['refresh']);
+
+const visible = ref(false);
+const loading = ref(false);
+const formRef = ref();
+
+const form = reactive({
+	id: 0,
+	merchantName: '',
+	amount: 0,
+	type: 1,
+	bankName: '',
+	bankAccount: '',
+	realName: '',
+	auditStatus: 1,
+	failReason: '',
+});
+
+const rules = reactive({
+	auditStatus: [{ required: true, message: '请选择审核状态', trigger: 'change' }],
+	failReason: [{ required: true, message: '请输入拒绝原因', trigger: 'blur' }],
+});
+
+// 打开弹窗
+const openDialog = (row: any) => {
+	form.id = row.id;
+	form.merchantName = row.merchantName;
+	form.amount = row.amount;
+	form.type = row.type;
+	form.bankName = row.bankName;
+	form.bankAccount = row.bankAccount;
+	form.realName = row.realName;
+	form.auditStatus = 1;
+	form.failReason = '';
+	visible.value = true;
+};
+
+// 提交审核
+const handleSubmit = async () => {
+	try {
+		await formRef.value.validate();
+		loading.value = true;
+
+		const submitData: any = {
+			id: form.id,
+			auditStatus: form.auditStatus,
+		};
+
+		if (form.auditStatus === 2) {
+			submitData.failReason = form.failReason;
+		}
+
+		await auditMerchantWithdraw(submitData);
+		useMessage().success('审核成功');
+		visible.value = false;
+		emit('refresh');
+	} catch (err: any) {
+		if (err !== 'cancel') {
+			useMessage().error(err.msg || '审核失败');
+		}
+	} finally {
+		loading.value = false;
+	}
+};
+
+defineExpose({
+	openDialog,
+});
+</script>
+
+<style scoped></style>

+ 210 - 0
src/views/settlement/merchantWithdraw/index.vue

@@ -0,0 +1,210 @@
+<template>
+	<div class="layout-padding">
+		<div class="layout-padding-auto layout-padding-view">
+			<el-row class="ml10" v-show="showSearch">
+				<el-form :inline="true" :model="state.queryForm" @keyup.enter="getDataList" ref="queryRef">
+					<el-form-item label="商户名称" prop="merchantName">
+						<el-input placeholder="请输入商户名称" style="max-width: 180px" v-model="state.queryForm.merchantName" clearable />
+					</el-form-item>
+					<el-form-item label="银行账号" prop="bankAccount">
+						<el-input placeholder="请输入银行账号" style="max-width: 180px" v-model="state.queryForm.bankAccount" clearable />
+					</el-form-item>
+					<el-form-item label="真实姓名" prop="realName">
+						<el-input placeholder="请输入真实姓名" style="max-width: 180px" v-model="state.queryForm.realName" clearable />
+					</el-form-item>
+					<el-form-item label="审核状态" prop="auditStatus">
+						<el-select v-model="state.queryForm.auditStatus" placeholder="请选择审核状态" style="max-width: 180px" clearable>
+							<el-option label="待审核" :value="0" />
+							<el-option label="通过" :value="1" />
+							<el-option label="拒绝" :value="2" />
+						</el-select>
+					</el-form-item>
+					<el-form-item label="申请时间" prop="dateRange">
+						<el-date-picker
+							v-model="dateRange"
+							type="datetimerange"
+							range-separator="至"
+							start-placeholder="开始时间"
+							end-placeholder="结束时间"
+							value-format="YYYY-MM-DD HH:mm:ss"
+							style="max-width: 360px"
+							@change="handleDateChange"
+						/>
+					</el-form-item>
+					<el-form-item>
+						<el-button @click="getDataList" icon="search" type="primary">查询</el-button>
+						<el-button @click="resetQuery" icon="Refresh">重置</el-button>
+					</el-form-item>
+				</el-form>
+			</el-row>
+			<el-row>
+				<div class="mb8" style="width: 100%">
+					<right-toolbar
+						@queryTable="getDataList"
+						class="ml10"
+						style="float: right; margin-right: 20px"
+						v-model:showSearch="showSearch"
+					></right-toolbar>
+				</div>
+			</el-row>
+
+			<el-table
+				:data="state.dataList"
+				@selection-change="handleSelectionChange"
+				@sort-change="sortChangeHandle"
+				style="width: 100%"
+				v-loading="state.loading"
+				border
+				:cell-style="tableStyle.cellStyle"
+				:header-cell-style="tableStyle.headerCellStyle"
+			>
+				<el-table-column align="center" type="selection" width="40" />
+				<el-table-column label="商户名称" prop="merchantName" show-overflow-tooltip>
+					<template #default="scope">
+						{{ scope.row.merchantName || '--' }}
+					</template>
+				</el-table-column>
+				<el-table-column label="提现金额" prop="amount" show-overflow-tooltip>
+					<template #default="scope">
+						<span style="color: #f56c6c; font-weight: bold">¥{{ scope.row.amount ? scope.row.amount.toFixed(2) : '0.00' }}</span>
+					</template>
+				</el-table-column>
+				<el-table-column label="提现类型" prop="type" show-overflow-tooltip>
+					<template #default="scope">
+						<el-tag :type="scope.row.type === 1 ? 'primary' : 'success'" size="small">
+							{{ scope.row.type === 1 ? '银行卡' : 'U' }}
+						</el-tag>
+					</template>
+				</el-table-column>
+				<el-table-column label="银行名称" prop="bankName" show-overflow-tooltip>
+					<template #default="scope">
+						{{ scope.row.bankName || '--' }}
+					</template>
+				</el-table-column>
+				<el-table-column label="银行账号" prop="bankAccount" show-overflow-tooltip>
+					<template #default="scope">
+						{{ scope.row.bankAccount || '--' }}
+					</template>
+				</el-table-column>
+				<el-table-column label="真实姓名" prop="realName" show-overflow-tooltip>
+					<template #default="scope">
+						{{ scope.row.realName || '--' }}
+					</template>
+				</el-table-column>
+				<el-table-column label="申请时间" prop="applyTime" show-overflow-tooltip width="180">
+					<template #default="scope">
+						{{ scope.row.applyTime || '--' }}
+					</template>
+				</el-table-column>
+				<el-table-column label="审核状态" prop="auditStatus" show-overflow-tooltip>
+					<template #default="scope">
+						<el-tag :type="auditStatusMap[scope.row.auditStatus]?.type || 'info'" size="small">
+							{{ auditStatusMap[scope.row.auditStatus]?.label || '--' }}
+						</el-tag>
+					</template>
+				</el-table-column>
+				<el-table-column label="拒绝原因" prop="failReason" show-overflow-tooltip>
+					<template #default="scope">
+						{{ scope.row.failReason || '--' }}
+					</template>
+				</el-table-column>
+				<el-table-column label="创建时间" prop="createdTime" show-overflow-tooltip width="180">
+					<template #default="scope">
+						{{ scope.row.createdTime || '--' }}
+					</template>
+				</el-table-column>
+				<el-table-column label="操作" fixed="right" width="150">
+					<template #default="scope">
+						<el-button
+							v-if="scope.row.auditStatus === 0"
+							icon="Check"
+							@click="handleAudit(scope.row)"
+							text
+							type="primary"
+							size="small"
+						>
+							审核
+						</el-button>
+					</template>
+				</el-table-column>
+			</el-table>
+			<pagination @current-change="currentChangeHandle" @size-change="sizeChangeHandle" v-bind="state.pagination" />
+		</div>
+
+		<!-- 审核弹窗 -->
+		<audit-dialog ref="auditDialogRef" @refresh="getDataList" />
+	</div>
+</template>
+
+<script lang="ts" name="settlementMerchantWithdraw" setup>
+import { BasicTableProps, useTable } from '/@/hooks/table';
+import { fetchMerchantWithdrawList } from '/@/api/order';
+
+// 引入组件
+const AuditDialog = defineAsyncComponent(() => import('./audit.vue'));
+
+// 审核状态映射
+const auditStatusMap: Record<number, { label: string; type: any }> = {
+	0: { label: '待审核', type: 'warning' },
+	1: { label: '通过', type: 'success' },
+	2: { label: '拒绝', type: 'danger' },
+};
+
+
+// 定义变量内容
+const auditDialogRef = ref();
+const queryRef = ref();
+const showSearch = ref(true);
+const selectObjs = ref([]);
+const multiple = ref(true);
+const dateRange = ref<any>([]);
+
+// 定义表格查询、变更
+const state: BasicTableProps = reactive<BasicTableProps>({
+	queryForm: {
+		merchantName: '',
+		bankAccount: '',
+		realName: '',
+		auditStatus: undefined,
+		startTime: '',
+		endTime: '',
+	},
+	pageList: fetchMerchantWithdrawList,
+	descs: ['created_time'],
+});
+
+const { getDataList, currentChangeHandle, sizeChangeHandle, sortChangeHandle, tableStyle } = useTable(state);
+
+// 处理日期范围变化
+const handleDateChange = (val: any) => {
+	if (val && val.length === 2) {
+		state.queryForm.startTime = val[0];
+		state.queryForm.endTime = val[1];
+	} else {
+		state.queryForm.startTime = '';
+		state.queryForm.endTime = '';
+	}
+};
+
+// 重置查询
+const resetQuery = () => {
+	queryRef.value?.resetFields();
+	dateRange.value = [];
+	state.queryForm.startTime = '';
+	state.queryForm.endTime = '';
+	getDataList();
+};
+
+// 多选事件
+const handleSelectionChange = (objs: any) => {
+	selectObjs.value = objs.map((val: any) => val.id);
+	multiple.value = !objs.length;
+};
+
+// 审核
+const handleAudit = (row: any) => {
+	auditDialogRef.value.openDialog(row);
+};
+</script>
+
+<style scoped></style>