Merge pull request 'dev add main' (#1) from dev into main
continuous-integration/drone/push Build is passing Details

Reviewed-on: #1
main
Kelvin 3 years ago
commit f4aaf18015

@ -50,3 +50,27 @@ export function flushApiToken(id) {
method: 'get' method: 'get'
}) })
} }
//生成用户KEY
export function generateKey(){
return request({
url: '/cert/apiToken/generateKey',
method: 'get'
})
}
//获取当前用户KEY列表
export function getKeyList(){
return request({
url: '/cert/apiToken/getKeyList',
method: 'get'
})
}
//删除用户KEY
export function delKey(key){
return request({
url: '/cert/apiToken/deleteKey/'+key,
method: 'delete'
})
}

@ -15,7 +15,7 @@
<el-row :gutter="20" class="info"> <el-row :gutter="20" class="info">
<el-col :span="8">帐户余额<el-text class="mx-1" >{{ NumFilter(userBalance) }}</el-text></el-col> <el-col :span="8">帐户余额<el-text class="mx-1" >{{ NumFilter(userBalance) }}</el-text></el-col>
<el-col :span="8">本月消费<el-text class="mx-1" >{{ NumFilter(userBalanceMonth) }}</el-text></el-col> <el-col :span="8">本月消费<el-text class="mx-1" >{{ NumFilter(userBalanceMonth) }}</el-text></el-col>
<el-col :span="8">帐户等级<el-tag class="ml-2" type="success">1</el-tag></el-col> <el-col :span="8">当日消费<el-text class="mx-1" >{{ NumFilter(userBalanceDay) }}</el-text></el-col>
</el-row> </el-row>
</el-card> </el-card>
<div class="main2" v-if="pushSwitch == 'Y'"> <div class="main2" v-if="pushSwitch == 'Y'">
@ -38,6 +38,11 @@
<template #header> <template #header>
<div class="card-header"> <div class="card-header">
<span>服务信息</span> <span>服务信息</span>
<div>
<router-link to="/key">
<el-button type="primary">KEY管理</el-button>
</router-link>
</div>
</div> </div>
</template> </template>
<div style="margin-top: 10px; margin-bottom: 10px;"> <div style="margin-top: 10px; margin-bottom: 10px;">
@ -49,7 +54,6 @@
</el-input> </el-input>
</div> </div>
<div style="margin-top: 10px; margin-bottom: 10px;"> <div style="margin-top: 10px; margin-bottom: 10px;">
<el-input v-model="userKey" size="large" readonly @click.stop="handleCopy(userKey)"> <el-input v-model="userKey" size="large" readonly @click.stop="handleCopy(userKey)">
<template #prepend>Api Key:</template> <template #prepend>Api Key:</template>
<template #append> <template #append>
@ -112,6 +116,7 @@ const serverUrl2 = ref("");
const userKey = ref(""); const userKey = ref("");
const userBalance = ref(0); const userBalance = ref(0);
const userBalanceMonth = ref(0); const userBalanceMonth = ref(0);
const userBalanceDay = ref(0);
const pushUrl = ref(""); const pushUrl = ref("");
const pushSwitch = ref("N") const pushSwitch = ref("N")
const rewardDesc = ref("") const rewardDesc = ref("")
@ -138,6 +143,7 @@ function getIndex() {
userKey.value = response.data.userKey userKey.value = response.data.userKey
userBalance.value = response.data.userBalance userBalance.value = response.data.userBalance
userBalanceMonth.value = response.data.userBalanceMonth userBalanceMonth.value = response.data.userBalanceMonth
userBalanceDay.value = response.data.userBalanceDay
pushUrl.value = response.data.pushUrl pushUrl.value = response.data.pushUrl
modelList.value = response.data.modelList modelList.value = response.data.modelList
}) })

@ -116,6 +116,7 @@
<el-table v-loading="loading" :data="orderList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" :data="orderList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center" />
<el-table-column label="订单号" align="center" prop="orderNo" /> <el-table-column label="订单号" align="center" prop="orderNo" />
<el-table-column label="用户ID" align="center" prop="userId" />
<el-table-column label="支付方式" align="center" prop="paymentWay"> <el-table-column label="支付方式" align="center" prop="paymentWay">
<template #default="scope"> <template #default="scope">
<dict-tag :options="order_payment_way" :value="scope.row.paymentWay"/> <dict-tag :options="order_payment_way" :value="scope.row.paymentWay"/>

@ -0,0 +1,101 @@
<template>
<div class="main">
<el-card class="box-card">
<template #header>
<div class="card-header">
<span>KEY 管理</span>
<div><el-button type="success" style="margin-right: 10px;" @click="handleAdd()"></el-button></div>
</div>
</template>
<div style="margin-top: 10px; margin-bottom: 10px;" v-for="(obj,index) in keyList" :obj="obj" :index="index" :key="obj.id">
<el-input :value="'AK-'+ obj.id" size="large" readonly @click.stop="handleCopy('AK-'+obj.id)">
<template #prepend>Api KEY{{ index + 1 }}:</template>
<template #append>
<el-button @click="handleDel(obj.id)"></el-button>
</template>
</el-input>
</div>
</el-card>
</div>
</template>
<script setup name="key">
import { ref } from 'vue';
import { delKey,getKeyList,generateKey } from "@/api/cert/apiToken";
const { proxy } = getCurrentInstance();
const keyList = ref([]);
function Init(){
getKeyList().then(response => {
keyList.value = response.data
})
}
function handleAdd(){
generateKey().then(response => {
proxy.$modal.msgSuccess("添加成功");
Init();
})
}
function handleDel(key){
console.log(keyList.value.length);
if(keyList.value.length < 2){
proxy.$modal.msgError("请至少保留一个KEY");
return;
}
proxy.$modal.confirm('是否确认删除KEY:AK-'+key+'').then(function() {
return delKey(key);
}).then(() => {
Init();
proxy.$modal.msgSuccess("删除成功");
}).catch(() => {});
}
function handleCopy(id){
//
const text = id;
// input
const input = document.createElement("input");
input.value = text;
document.body.appendChild(input);
//
input.select();
document.execCommand("copy");
// input
document.body.removeChild(input);
proxy.$modal.msgSuccess("复制成功");
}
Init();
</script>
<style scoped lang="scss">
.main {
padding: 20px;
}
.card-header {
display: flex;
justify-content: space-between;
align-items: center;
}
.text {
font-size: 14px;
}
.item {
margin-bottom: 18px;
}
.info {
font-size: 15px;
color: #606266;
}
</style>

@ -40,13 +40,18 @@
</el-table-column> </el-table-column>
</el-table> </el-table>
<pagination <div style="margin-top: 20px;">
<el-pagination
v-model:current-page="queryParams.pageNum"
v-model:page-size="queryParams.pageSize"
layout="total, sizes, prev, pager, next, jumper"
v-show="total>0" v-show="total>0"
:background="true"
:total="total" :total="total"
v-model:page="queryParams.pageNum" @size-change="getList"
v-model:limit="queryParams.pageSize" @current-change="getList"
@pagination="getList"
/> />
</div>
</el-card> </el-card>
</div> </div>
<el-dialog title="请使用支付宝扫码充值" v-model="open" width="500px" :before-close="cancel" append-to-body> <el-dialog title="请使用支付宝扫码充值" v-model="open" width="500px" :before-close="cancel" append-to-body>
@ -184,5 +189,8 @@ getList()
.main2 { .main2 {
margin-top: 20px; margin-top: 20px;
} }
.el-pagination {
justify-content: center;
}
</style> </style>

@ -19,6 +19,16 @@
</el-space> </el-space>
</el-card> </el-card>
<el-card class="box-card" style="margin-top: 20px;">
<template #header>
<div class="card-header">
<span>使用文档</span>
</div>
</template>
<div class="info">
请先参考<a href="https://www.api2gpt.com/helper.html" target="_blank">api2gpt 文档</a>
</div>
</el-card>
</div> </div>
</template> </template>

@ -37,14 +37,18 @@
<el-table-column label="total" align="center" prop="totalTokens" /> <el-table-column label="total" align="center" prop="totalTokens" />
<el-table-column label="费用" align="center" prop="fee" /> <el-table-column label="费用" align="center" prop="fee" />
</el-table> </el-table>
<div style="margin-top: 20px;">
<pagination <el-pagination
v-model:current-page="queryParams.pageNum"
v-model:page-size="queryParams.pageSize"
layout="total, sizes, prev, pager, next, jumper"
v-show="total>0" v-show="total>0"
:background="true"
:total="total" :total="total"
v-model:page="queryParams.pageNum" @size-change="getList"
v-model:limit="queryParams.pageSize" @current-change="getList"
@pagination="getList"
/> />
</div>
</el-card> </el-card>
</div> </div>
</template> </template>
@ -100,6 +104,10 @@ getList()
.main { .main {
padding: 20px; padding: 20px;
} }
.el-pagination {
justify-content: center;
}
</style> </style>
Loading…
Cancel
Save