Merge branch 'main' of https://gogs.yxxurl.com/Kelvin/api2gpt-web
continuous-integration/drone/push Build is passing Details

pull/1/head
franktrue 3 years ago
commit 58868ba228

@ -42,3 +42,11 @@ export function delApiToken(id) {
method: 'delete'
})
}
// 刷新令牌管理
export function flushApiToken(id) {
return request({
url: '/cert/apiToken/flush/' + id,
method: 'get'
})
}

@ -42,3 +42,11 @@ export function delUserBalance(id) {
method: 'delete'
})
}
//刷新服务器缓存
export function refreshUserBalance(id) {
return request({
url: '/cert/userBalance/refresh/',
method: 'get'
})
}

@ -1,14 +1,6 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="Key" prop="id">
<el-input
v-model="queryParams.id"
placeholder="请输入Key"
clearable
@keyup.enter="handleQuery"
/>
</el-form-item>
<el-form-item label="用户名" prop="name">
<el-input
v-model="queryParams.name"
@ -25,8 +17,40 @@
@keyup.enter="handleQuery"
/>
</el-form-item>
<el-form-item label="是否默认" prop="isDefault">
<el-select v-model="queryParams.isDefault" placeholder="请选择是否默认" clearable>
<el-form-item label="服务器ID" prop="serverId">
<el-input
v-model="queryParams.serverId"
placeholder="请输入服务器ID"
clearable
@keyup.enter="handleQuery"
/>
</el-form-item>
<el-form-item label="开始时间" prop="startDate">
<el-date-picker clearable
v-model="queryParams.startDate"
type="date"
value-format="YYYY-MM-DD"
placeholder="请选择开始时间">
</el-date-picker>
</el-form-item>
<el-form-item label="结束时间" prop="endDate">
<el-date-picker clearable
v-model="queryParams.endDate"
type="date"
value-format="YYYY-MM-DD"
placeholder="请选择结束时间">
</el-date-picker>
</el-form-item>
<el-form-item label="最后使用时间" prop="lastUsed">
<el-date-picker clearable
v-model="queryParams.lastUsed"
type="date"
value-format="YYYY-MM-DD"
placeholder="请选择最后使用时间">
</el-date-picker>
</el-form-item>
<el-form-item label="默认" prop="isDefault">
<el-select v-model="queryParams.isDefault" placeholder="请选择默认" clearable>
<el-option
v-for="dict in sys_yes_no"
:key="dict.value"
@ -90,14 +114,24 @@
v-hasPermi="['cert:apiToken:export']"
>导出</el-button>
</el-col>
<el-col :span="1.5">
<el-button
plain
icon="Refresh"
:disabled="multiple"
@click="handleFlush"
v-hasPermi="['cert:apiToken:remove']"
>刷新TOKEN</el-button>
</el-col>
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="apiTokenList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="Key" align="center" prop="id" />
<el-table-column label="id" align="center" prop="id" />
<el-table-column label="用户名" align="center" prop="name" />
<el-table-column label="用户ID" align="center" prop="userId" />
<el-table-column label="服务器ID" align="center" prop="serverId" />
<el-table-column label="开始时间" align="center" prop="startDate" width="180">
<template #default="scope">
<span>{{ parseTime(scope.row.startDate, '{y}-{m}-{d}') }}</span>
@ -108,12 +142,12 @@
<span>{{ parseTime(scope.row.endDate, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="最后使用" align="center" prop="lastUsed" width="180">
<el-table-column label="最后使用时间" align="center" prop="lastUsed" width="180">
<template #default="scope">
<span>{{ parseTime(scope.row.lastUsed, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="是否默认" align="center" prop="isDefault">
<el-table-column label="默认" align="center" prop="isDefault">
<template #default="scope">
<dict-tag :options="sys_yes_no" :value="scope.row.isDefault"/>
</template>
@ -123,6 +157,7 @@
<dict-tag :options="sys_normal_disable" :value="scope.row.status"/>
</template>
</el-table-column>
<el-table-column label="备注" align="center" prop="remark" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template #default="scope">
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['cert:apiToken:edit']"></el-button>
@ -148,6 +183,9 @@
<el-form-item label="用户ID" prop="userId">
<el-input v-model="form.userId" placeholder="请输入用户ID" />
</el-form-item>
<el-form-item label="服务器ID" prop="serverId">
<el-input v-model="form.serverId" placeholder="请输入服务器ID" />
</el-form-item>
<el-form-item label="开始时间" prop="startDate">
<el-date-picker clearable
v-model="form.startDate"
@ -164,15 +202,15 @@
placeholder="请选择结束时间">
</el-date-picker>
</el-form-item>
<el-form-item label="最后使用" prop="lastUsed">
<el-form-item label="最后使用时间" prop="lastUsed">
<el-date-picker clearable
v-model="form.lastUsed"
type="date"
value-format="YYYY-MM-DD"
placeholder="请选择最后使用">
placeholder="请选择最后使用时间">
</el-date-picker>
</el-form-item>
<el-form-item label="是否默认" prop="isDefault">
<el-form-item label="默认" prop="isDefault">
<el-radio-group v-model="form.isDefault">
<el-radio
v-for="dict in sys_yes_no"
@ -214,7 +252,7 @@
</template>
<script setup name="ApiToken">
import { listApiToken, getApiToken, delApiToken, addApiToken, updateApiToken } from "@/api/cert/apiToken";
import { listApiToken, getApiToken, delApiToken, addApiToken, updateApiToken, flushApiToken } from "@/api/cert/apiToken";
const { proxy } = getCurrentInstance();
const { sys_del_flag, sys_yes_no, sys_normal_disable } = proxy.useDict('sys_del_flag', 'sys_yes_no', 'sys_normal_disable');
@ -234,9 +272,12 @@ const data = reactive({
queryParams: {
pageNum: 1,
pageSize: 10,
id: null,
name: null,
userId: null,
serverId: null,
startDate: null,
endDate: null,
lastUsed: null,
isDefault: null,
status: null,
},
@ -247,8 +288,11 @@ const data = reactive({
userId: [
{ required: true, message: "用户ID不能为空", trigger: "blur" }
],
serverId: [
{ required: true, message: "服务器ID不能为空", trigger: "blur" }
],
isDefault: [
{ required: true, message: "是否默认不能为空", trigger: "change" }
{ required: true, message: "默认不能为空", trigger: "change" }
],
status: [
{ required: true, message: "状态不能为空", trigger: "change" }
@ -256,12 +300,6 @@ const data = reactive({
delFlag: [
{ required: true, message: "删除标志不能为空", trigger: "change" }
],
createBy: [
{ required: true, message: "不能为空", trigger: "blur" }
],
updateBy: [
{ required: true, message: "不能为空", trigger: "blur" }
],
}
});
@ -289,17 +327,18 @@ function reset() {
id: null,
name: null,
userId: null,
serverId: null,
startDate: null,
endDate: null,
lastUsed: null,
isDefault: null,
status: null,
delFlag: null,
remark: null,
createBy: null,
createTime: null,
updateBy: null,
updateTime: null,
remark: null
updateTime: null
};
proxy.resetForm("apiTokenRef");
}
@ -373,6 +412,16 @@ function handleDelete(row) {
}).catch(() => {});
}
function handleFlush (row) {
const _ids = row.id || ids.value;
proxy.$modal.confirm('是否确认刷新令牌管理编号为"' + _ids + '"的数据项?').then(function() {
return flushApiToken(_ids);
}).then(() => {
getList();
proxy.$modal.msgSuccess("刷新成功");
}).catch(() => {});
}
/** 导出按钮操作 */
function handleExport() {
proxy.download('cert/apiToken/export', {

@ -54,6 +54,14 @@
v-hasPermi="['cert:userBalance:export']"
>导出</el-button>
</el-col>
<el-col :span="1.5">
<el-button
plain
icon="Refresh"
@click="handleRefresh"
v-hasPermi="['cert:userBalance:refresh']"
>刷新余额</el-button>
</el-col>
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
@ -99,7 +107,7 @@
</template>
<script setup name="UserBalance">
import { listUserBalance, getUserBalance, delUserBalance, addUserBalance, updateUserBalance } from "@/api/cert/userBalance";
import { listUserBalance, getUserBalance, delUserBalance, addUserBalance, updateUserBalance,refreshUserBalance } from "@/api/cert/userBalance";
const { proxy } = getCurrentInstance();
@ -225,6 +233,16 @@
}).catch(() => {});
}
/** 刷新缓存 */
function handleRefresh() {
proxy.$modal.confirm('是否确认刷新?').then(function() {
refreshUserBalance();
}).then(() => {
proxy.$modal.msgSuccess("刷新成功");
getList();
}).catch(() => {});
}
/** 导出按钮操作 */
function handleExport() {
proxy.download('cert/userBalance/export', {

@ -11,7 +11,7 @@
微信客服请添加
</div>
<div class="info">
TG群组
TG群组https://t.me/api2gpt
</div>
<div class="info">
充值订单问题请发送邮件至客服邮箱: service@api2gpt.com

Loading…
Cancel
Save