Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
phsl
/
admin
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Members
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
6bccba02
authored
Sep 17, 2025
by
Jony.L
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/develop' into develop
parents
e392c2af
79baa9c2
Show whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
102 additions
and
89 deletions
+102
-89
.env.local
+1
-1
.env.prod
+1
-1
src/api/apihub/api/index.ts
+1
-1
src/views/apihub/api/ApiForm.vue
+3
-3
src/views/apihub/api/index.vue
+6
-6
src/views/apihub/apicalllog/ApiCallLogForm.vue
+8
-0
src/views/apihub/apicalllog/index.vue
+32
-39
src/views/apihub/apiendpoint/ApiEndpointForm.vue
+12
-0
src/views/apihub/apiendpoint/index.vue
+3
-2
src/views/apihub/apiorder/index.vue
+28
-28
src/views/apihub/appcredential/AppCredentialForm.vue
+7
-8
No files found.
.env.local
View file @
6bccba02
...
...
@@ -29,7 +29,7 @@ VITE_BASE_PATH=/
VITE_MALL_H5_DOMAIN='http://localhost:3000'
# 验证码的开关
VITE_APP_CAPTCHA_ENABLE=
tru
e
VITE_APP_CAPTCHA_ENABLE=
fals
e
# GoView域名
VITE_GOVIEW_URL='http://127.0.0.1:3000'
.env.prod
View file @
6bccba02
...
...
@@ -4,7 +4,7 @@ NODE_ENV=production
VITE_DEV=false
# 请求路径
VITE_BASE_URL=
/admin-api
VITE_BASE_URL=
# 文件上传类型:server - 后端上传, client - 前端直连上传,仅支持S3服务
VITE_UPLOAD_TYPE=server
...
...
src/api/apihub/api/index.ts
View file @
6bccba02
...
...
@@ -14,7 +14,7 @@ export interface ApiPackage {
export
interface
Api
{
id
:
number
;
// API ID
name
?:
string
;
//
API
名称
name
?:
string
;
//
应用
名称
description
:
string
;
// API 简介
detail
:
string
;
// API 详细介绍
doc
:
string
;
// 接口文档内容
...
...
src/views/apihub/api/ApiForm.vue
View file @
6bccba02
...
...
@@ -7,8 +7,8 @@
label-width=
"100px"
v-loading=
"formLoading"
>
<el-form-item
label=
"
API
名称"
prop=
"name"
>
<el-input
v-model=
"formData.name"
placeholder=
"
请输入API
名称"
/>
<el-form-item
label=
"
应用
名称"
prop=
"name"
>
<el-input
v-model=
"formData.name"
placeholder=
"
应用
名称"
/>
</el-form-item>
<!-- 分类选择 -->
<el-form-item
label=
"分类"
prop=
"categoryId"
>
...
...
@@ -112,8 +112,8 @@
<thead>
<tr>
<th>
资源包名称
</th>
<th>
数量
</th>
<th>
价格
</th>
<th>
数量
</th>
<th>
有效期
</th>
<th
style=
"width: 140px"
>
操作
</th>
</tr>
...
...
src/views/apihub/api/index.vue
View file @
6bccba02
...
...
@@ -8,10 +8,10 @@
:inline=
"true"
label-width=
"68px"
>
<el-form-item
label=
"
API
名称"
prop=
"name"
>
<el-form-item
label=
"
应用
名称"
prop=
"name"
>
<el-input
v-model=
"queryParams.name"
placeholder=
"请输入
API
名称"
placeholder=
"请输入
应用
名称"
clearable
@
keyup
.
enter=
"handleQuery"
class=
"!w-240px"
...
...
@@ -87,10 +87,10 @@
@
selection-change=
"handleRowCheckboxChange"
>
<el-table-column
type=
"selection"
width=
"55"
/>
<el-table-column
label=
"
API
名称"
align=
"center"
prop=
"name"
/>
<el-table-column
label=
"
API
分类"
align=
"center"
prop=
"categoryName"
/>
<el-table-column
label=
"
API
简介"
align=
"center"
prop=
"description"
/>
<el-table-column
label=
"
API
详细介绍"
align=
"center"
prop=
"detail"
/>
<el-table-column
label=
"
应用
名称"
align=
"center"
prop=
"name"
/>
<el-table-column
label=
"
应用
分类"
align=
"center"
prop=
"categoryName"
/>
<el-table-column
label=
"
应用
简介"
align=
"center"
prop=
"description"
/>
<el-table-column
label=
"
应用
详细介绍"
align=
"center"
prop=
"detail"
/>
<el-table-column
label=
"接口文档内容"
align=
"center"
prop=
"doc"
/>
<el-table-column
label=
"状态"
align=
"center"
prop=
"status"
>
<template
#
default=
"scope"
>
...
...
src/views/apihub/apicalllog/ApiCallLogForm.vue
View file @
6bccba02
...
...
@@ -56,6 +56,10 @@ const formData = ref({
id
:
undefined
,
userId
:
undefined
,
apiId
:
undefined
,
method
:
undefined
,
path
:
undefined
,
responseParams
:
undefined
,
apiEndpointName
:
undefined
,
requestParams
:
undefined
,
responseStatus
:
undefined
,
callTime
:
undefined
,
...
...
@@ -115,8 +119,12 @@ const resetForm = () => {
id
:
undefined
,
userId
:
undefined
,
apiId
:
undefined
,
method
:
undefined
,
path
:
undefined
,
responseParams
:
undefined
,
requestParams
:
undefined
,
responseStatus
:
undefined
,
apiEndpointName
:
undefined
,
callTime
:
undefined
,
remark
:
undefined
}
...
...
src/views/apihub/apicalllog/index.vue
View file @
6bccba02
...
...
@@ -8,34 +8,43 @@
:inline=
"true"
label-width=
"68px"
>
<el-form-item
label=
"调用用户
ID"
prop=
"userId
"
>
<el-form-item
label=
"调用用户
机号"
prop=
"userMobile
"
>
<el-input
v-model=
"queryParams.user
Id
"
placeholder=
"
请输入调用用户ID
"
v-model=
"queryParams.user
Mobile
"
placeholder=
"
调用用户机号
"
clearable
@
keyup
.
enter=
"handleQuery"
class=
"!w-240px"
/>
</el-form-item>
<el-form-item
label=
"
调用的API ID"
prop=
"apiId
"
>
<el-form-item
label=
"
接口名称"
prop=
"apiEndpointName
"
>
<el-input
v-model=
"queryParams.api
Id
"
placeholder=
"
请输入调用的API ID
"
v-model=
"queryParams.api
EndpointName
"
placeholder=
"
调用用户手机
"
clearable
@
keyup
.
enter=
"handleQuery"
class=
"!w-240px"
/>
</el-form-item>
<el-form-item
label=
"响应状态(如200, 500等)"
prop=
"responseStatus"
>
<el-select
v-model=
"queryParams.responseStatus"
placeholder=
"请选择响应状态(如200, 500等)"
clearable
class=
"!w-240px"
>
<el-option
label=
"请选择字典生成"
value=
""
/>
</el-select>
</el-form-item>
<!--
<el-form-item
label=
"调用的API ID"
prop=
"apiId"
>
-->
<!--
<el-input-->
<!-- v-model="queryParams.apiId"-->
<!-- placeholder="请输入调用的API ID"-->
<!-- clearable-->
<!-- @keyup.enter="handleQuery"-->
<!-- class="!w-240px"-->
<!-- />-->
<!--
</el-form-item>
-->
<!--
<el-form-item
label=
"响应状态(如200, 500等)"
prop=
"responseStatus"
>
-->
<!--
<el-select-->
<!-- v-model="queryParams.responseStatus"-->
<!-- placeholder="请选择响应状态(如200, 500等)"-->
<!-- clearable-->
<!-- class="!w-240px"-->
<!-- >-->
<!--
<el-option
label=
"请选择字典生成"
value=
""
/>
-->
<!--
</el-select>
-->
<!--
</el-form-item>
-->
<el-form-item
label=
"调用时间"
prop=
"callTime"
>
<el-date-picker
v-model=
"queryParams.callTime"
...
...
@@ -47,17 +56,6 @@
class=
"!w-220px"
/>
</el-form-item>
<el-form-item
label=
"创建时间"
prop=
"createTime"
>
<el-date-picker
v-model=
"queryParams.createTime"
value-format=
"YYYY-MM-DD HH:mm:ss"
type=
"daterange"
start-placeholder=
"开始日期"
end-placeholder=
"结束日期"
:default-time=
"[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class=
"!w-220px"
/>
</el-form-item>
<el-form-item>
<el-button
@
click=
"handleQuery"
><Icon
icon=
"ep:search"
class=
"mr-5px"
/>
搜索
</el-button>
<el-button
@
click=
"resetQuery"
><Icon
icon=
"ep:refresh"
class=
"mr-5px"
/>
重置
</el-button>
...
...
@@ -102,11 +100,12 @@
@
selection-change=
"handleRowCheckboxChange"
>
<el-table-column
type=
"selection"
width=
"55"
/>
<el-table-column
label=
"调用日志ID"
align=
"center"
prop=
"id"
/>
<el-table-column
label=
"调用用户ID"
align=
"center"
prop=
"userId"
/>
<el-table-column
label=
"调用的API ID"
align=
"center"
prop=
"apiId"
/>
<el-table-column
label=
"接口名称"
align=
"center"
prop=
"apiEndpointName"
/>
<el-table-column
label=
"调用用户手机号"
align=
"center"
prop=
"userMobile"
/>
<el-table-column
label=
"请求方式"
align=
"center"
prop=
"method"
/>
<el-table-column
label=
"请求路径"
align=
"center"
prop=
"path"
/>
<el-table-column
label=
"请求参数"
align=
"center"
prop=
"requestParams"
/>
<el-table-column
label=
"
响应状态(如200, 500等)"
align=
"center"
prop=
"responseStatu
s"
/>
<el-table-column
label=
"
返回结果"
align=
"center"
prop=
"responseParam
s"
/>
<el-table-column
label=
"调用时间"
align=
"center"
...
...
@@ -114,14 +113,6 @@
:formatter=
"dateFormatter"
width=
"180px"
/>
<el-table-column
label=
"备注"
align=
"center"
prop=
"remark"
/>
<el-table-column
label=
"创建时间"
align=
"center"
prop=
"createTime"
:formatter=
"dateFormatter"
width=
"180px"
/>
<el-table-column
label=
"操作"
align=
"center"
min-width=
"120px"
>
<template
#
default=
"scope"
>
<el-button
...
...
@@ -177,6 +168,8 @@ const queryParams = reactive({
pageSize
:
10
,
userId
:
undefined
,
apiId
:
undefined
,
userMobile
:
undefined
,
apiEndpointName
:
undefined
,
responseStatus
:
undefined
,
callTime
:
[],
createTime
:
[]
...
...
src/views/apihub/apiendpoint/ApiEndpointForm.vue
View file @
6bccba02
...
...
@@ -16,6 +16,15 @@
<el-form-item
label=
"请求方式"
prop=
"method"
>
<el-input
v-model=
"formData.method"
placeholder=
"请输入请求方式"
/>
</el-form-item>
<el-form-item
label=
"消费点数"
prop=
"consumptionPoints"
>
<el-input
v-model=
"formData.consumptionPoints"
placeholder=
"请输入消费点数"
type=
"number"
oninput=
"this.value = this.value.replace(/\D/g,'')"
/>
</el-form-item>
<el-form-item
label=
"关联行业应用"
>
<!-- 添加接口按钮独占一行 -->
...
...
@@ -101,6 +110,7 @@ const formData = ref({
name
:
undefined
,
path
:
undefined
,
method
:
undefined
,
consumptionPoints
:
undefined
,
industryApplications
:
[
{
title
:
'AI诗词'
,
image
:
'https://'
,
id
:
null
}
]
...
...
@@ -112,6 +122,7 @@ const formData = ref({
})
const
formRules
=
reactive
({
name
:
[{
required
:
true
,
message
:
'接口名称不能为空'
,
trigger
:
'blur'
}],
consumptionPoints
:
[{
required
:
true
,
message
:
'消耗点数不能为空'
,
trigger
:
'blur'
}],
path
:
[{
required
:
true
,
message
:
'接口路径不能为空'
,
trigger
:
'blur'
}],
method
:
[{
required
:
true
,
message
:
'请求方式: GET/POST/PUT/DELETE不能为空'
,
trigger
:
'blur'
}]
})
...
...
@@ -174,6 +185,7 @@ const resetForm = () => {
name
:
undefined
,
path
:
undefined
,
method
:
undefined
,
consumptionPoints
:
undefined
,
industryApplications
:
[
{
title
:
'AI诗词'
,
image
:
'https://'
,
id
:
null
}
]
...
...
src/views/apihub/apiendpoint/index.vue
View file @
6bccba02
...
...
@@ -137,10 +137,11 @@
>
<el-table-column
type=
"selection"
width=
"55"
/>
<!--
<el-table-column
label=
"接口ID"
align=
"center"
prop=
"id"
/>
-->
<el-table-column
label=
"接口名称"
align=
"center"
prop=
"name"
/>
<el-table-column
label=
"接口名称"
align=
"center"
prop=
"name"
width=
"160px"
/>
<el-table-column
label=
"接口路径"
align=
"center"
prop=
"path"
width=
"460px"
/>
<el-table-column
label=
"请求方式"
align=
"center"
prop=
"method"
/>
<!--
<el-table-column
label=
"参数定义(JSON)"
align=
"center"
prop=
"params"
/>
-->
<el-table-column
label=
"消耗点数"
align=
"center"
prop=
"consumptionPoints"
/>
<!--
<el-table-column
label=
"参数定义(JSON)"
align=
"center"
prop=
"params"
/>
-->
<!--
<el-table-column
label=
"返回结果示例"
align=
"center"
prop=
"response"
/>
-->
<!--
<el-table-column
label=
"鉴权方式,例如 API_KEY/OAUTH"
align=
"center"
prop=
"authType"
/>
-->
<!--
<el-table-column
label=
"接口级限流规则,例如 100 QPS"
align=
"center"
prop=
"rateLimit"
/>
-->
...
...
src/views/apihub/apiorder/index.vue
View file @
6bccba02
...
...
@@ -139,17 +139,17 @@
>
<el-table-column
type=
"selection"
width=
"55"
/>
<!--
<el-table-column
label=
"订单ID"
align=
"center"
prop=
"id"
/>
-->
<el-table-column
label=
"用户手机号"
align=
"center"
prop=
"userMobile"
/>
<el-table-column
label=
"API应用"
align=
"center"
prop=
"apiName"
/>
<el-table-column
label=
"套餐名称"
align=
"center"
prop=
"packageName"
/>
<el-table-column
label=
"订单编号"
align=
"center"
prop=
"orderNo"
/>
<el-table-column
label=
"订单金额
(元)
"
align=
"center"
prop=
"costPrice"
>
<el-table-column
label=
"用户手机号"
align=
"center"
prop=
"userMobile"
width=
"120px"
/>
<el-table-column
label=
"API应用"
align=
"center"
prop=
"apiName"
width=
"100px"
/>
<el-table-column
label=
"套餐名称"
align=
"center"
prop=
"packageName"
width=
"100px"
/>
<el-table-column
label=
"订单编号"
align=
"center"
prop=
"orderNo"
width=
"100px"
/>
<el-table-column
label=
"订单金额"
align=
"center"
prop=
"costPrice"
>
<template
#
default=
"scope"
>
{{
(
scope
.
row
.
costPrice
/
100
).
toFixed
(
2
)
}}
元
</
template
>
</el-table-column>
<el-table-column
label=
"订单状态"
align=
"center"
prop=
"statusName"
/>
<el-table-column
label=
"支付订单编号"
align=
"center"
prop=
"payOrderId"
/
>
<!-- <el-table-column label="支付订单编号" align="center" prop="payOrderId" />--
>
<el-table-column
label=
"订单支付时间"
align=
"center"
...
...
@@ -158,28 +158,28 @@
width=
"180px"
/>
<el-table-column
label=
"支付状态"
align=
"center"
prop=
"payStatusName"
/>
<el-table-column
label=
"订单完成时间"
align=
"center"
prop=
"finishTime"
:formatter=
"dateFormatter"
width=
"180px"
/
>
<el-table-column
label=
"订单取消时间"
align=
"center"
prop=
"cancelTime"
:formatter=
"dateFormatter"
width=
"180px"
/
>
<el-table-column
label=
"备注"
align=
"center"
prop=
"remark"
/
>
<el-table-column
label=
"创建时间"
align=
"center"
prop=
"createTime"
:formatter=
"dateFormatter"
width=
"180px"
/
>
<!-- <el-table-column-->
<!-- label="订单完成时间"-->
<!-- align="center"-->
<!-- prop="finishTime"-->
<!-- :formatter="dateFormatter"-->
<!-- width="180px"-->
<!-- />--
>
<!-- <el-table-column-->
<!-- label="订单取消时间"-->
<!-- align="center"-->
<!-- prop="cancelTime"-->
<!-- :formatter="dateFormatter"-->
<!-- width="180px"-->
<!-- />--
>
<!-- <el-table-column label="备注" align="center" prop="remark" />--
>
<!-- <el-table-column-->
<!-- label="创建时间"-->
<!-- align="center"-->
<!-- prop="createTime"-->
<!-- :formatter="dateFormatter"-->
<!-- width="180px"-->
<!-- />--
>
<el-table-column
label=
"操作"
align=
"center"
min-width=
"120px"
>
<
template
#
default=
"scope"
>
<el-button
...
...
src/views/apihub/appcredential/AppCredentialForm.vue
View file @
6bccba02
...
...
@@ -8,20 +8,20 @@
v-loading=
"formLoading"
>
<el-form-item
label=
"AppId"
prop=
"appId"
>
<el-input
v-model=
"formData.appId"
readonly
/>
<el-input
v-model=
"formData.appId"
/>
</el-form-item>
<el-form-item
label=
"AppSecret"
prop=
"appSecret"
>
<el-input
v-model=
"formData.appSecret"
readonly
/>
<el-input
v-model=
"formData.appSecret"
/>
</el-form-item>
<el-form-item
label=
"用户ID"
prop=
"userId"
>
<el-input
v-model=
"formData.userId"
readonly
/>
<el-input
v-model=
"formData.userId"
/>
</el-form-item>
<el-form-item
label=
"用户手机号"
prop=
"user
Id
"
>
<el-input
v-model=
"formData.userMobile"
readonly
/>
<el-form-item
label=
"用户手机号"
prop=
"user
Mobile
"
>
<el-input
v-model=
"formData.userMobile"
/>
</el-form-item>
</el-form>
<template
#
footer
>
<!--
<el-button
@
click=
"submitForm"
type=
"primary"
:disabled=
"formLoading"
>
确 定
</el-button>
--
>
<el-button
@
click=
"submitForm"
type=
"primary"
:disabled=
"formLoading"
>
确 定
</el-button
>
<el-button
@
click=
"dialogVisible = false"
>
关闭窗口
</el-button>
</
template
>
</Dialog>
...
...
@@ -49,8 +49,7 @@ const formData = ref({
})
const
formRules
=
reactive
({
appId
:
[{
required
:
true
,
message
:
'应用ID,唯一不能为空'
,
trigger
:
'blur'
}],
appSecret
:
[{
required
:
true
,
message
:
'AES加密后的应用密钥不能为空'
,
trigger
:
'blur'
}],
userId
:
[{
required
:
true
,
message
:
'所属用户ID不能为空'
,
trigger
:
'blur'
}]
appSecret
:
[{
required
:
true
,
message
:
'密钥不能为空'
,
trigger
:
'blur'
}],
})
const
formRef
=
ref
()
// 表单 Ref
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment