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

pull/1/head
lvxiu_ext 3 years ago
commit 73412e377f

@ -43,6 +43,15 @@ export function updateConfig(data) {
})
}
// 修改参数配置
export function updateConfigByKey(data) {
return request({
url: '/system/config/byKey',
method: 'put',
data: data
})
}
// 删除参数配置
export function delConfig(configId) {
return request({

@ -93,7 +93,7 @@
<el-table v-loading="loading" :data="usageRecordList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="序号" align="center" prop="id" />
<el-table-column label="时间" align="center" prop="createTime" />
<el-table-column label="状态" align="center" prop="status">
<template #default="scope">
<dict-tag :options="sys_normal_disable" :value="scope.row.status"/>
@ -102,10 +102,11 @@
<el-table-column label="用户ID" align="center" prop="userId" />
<el-table-column label="Key" align="center" prop="secretKey" />
<el-table-column label="模型" align="center" prop="model" />
<el-table-column label="问题tokens" align="center" prop="promptTokens" />
<el-table-column label="回复tokens" align="center" prop="completionTokens" />
<el-table-column label="总tokens" align="center" prop="totalTokens" />
<el-table-column label="prompt" align="center" prop="promptTokens" />
<el-table-column label="completion" align="center" prop="completionTokens" />
<el-table-column label="total" align="center" prop="totalTokens" />
<el-table-column label="消息ID" align="center" prop="msgId" />
<el-table-column label="费用" align="center" prop="fee" />
<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:usageRecord:edit']"></el-button>

@ -7,31 +7,65 @@
</div>
</template>
<el-space direction="vertical" alignment="start" :size="30">
<div>
<el-input v-model="apiServer" size="large" style="width:500px">
<template #prepend>Api Server:</template>
</el-input>
</div>
<div>
<el-input v-model="apiKey" size="large" style="width:500px">
<template #prepend>Api Key:</template>
</el-input>
</div>
<div>
<el-input v-model="apiServer2" size="large" style="width:500px">
<template #prepend>Api Server备用:</template>
</el-input>
</div>
<el-form ref="configRef" :model="form" :rules="rules" label-width="150px">
<el-form-item label="Api Server:" prop="apiServer">
<el-input v-model="form.apiServer" style="width: 500px;"></el-input>
</el-form-item>
<el-form-item label="Api Key:" prop="apiKey">
<el-input v-model="form.apiKey"></el-input>
</el-form-item>
<el-form-item label="Api Server备用:" prop="apiServer2">
<el-input v-model="form.apiServer2"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="submitForm"> </el-button>
</el-form-item>
</el-form>
</el-space>
</el-card>
</div>
</template>
<script setup name="developer">
import { updateConfigByKey, getConfigKey } from "@/api/system/config";
const { proxy } = getCurrentInstance();
const data = reactive({
form: {},
rules: {
apiServer: [{ required: true, message: "参数名称不能为空", trigger: "blur" }],
apiKey: [{ required: true, message: "参数键名不能为空", trigger: "blur" }],
apiServer2: [{ required: true, message: "参数键值不能为空", trigger: "blur" }]
}
});
const { form, rules } = toRefs(data);
function getConfig () {
getConfigKey("api2gpt.server.url").then(response => {
form.value.apiServer = response.msg
})
getConfigKey("api2gpt.server.key").then(response => {
form.value.apiKey = response.msg
})
getConfigKey("api2gpt.server.backup").then(response => {
form.value.apiServer2 = response.msg
})
}
function submitForm() {
proxy.$refs["configRef"].validate(valid => {
if (valid) {
updateConfigByKey({
"api2gpt.server.url": form.value.apiServer,
"api2gpt.server.key": form.value.apiKey,
"api2gpt.server.backup": form.value.apiServer2
}).then(response => {
proxy.$modal.msgSuccess("修改成功");
});
}
})
}
const apiServer = 'https://api.api2gpt.com'
const apiKey = 'aaaaaaaaaaaaaaaaaaaaaaa'
const apiServer2 = 'https://oa.api2gpt.com'
getConfig()
</script>
<style scoped lang="scss">

@ -6,31 +6,101 @@
<span>调用记录</span>
</div>
</template>
<el-table :data="tableData" height="250" style="width: 100%">
<el-table-column prop="requestTime" label="调用时间" />
<el-table-column prop="msgId" label="调用ID" />
<el-table-column prop="model" label="模型" />
<el-table-column prop="promptTotkens" label="prompt" />
<el-table-column prop="completionTokens" label="completion" />
<el-table-column prop="totalTokens" label="total" />
<el-table-column prop="price" label="花费" />
<el-form :model="queryParams" ref="queryRef" :inline="true" label-width="68px">
<el-form-item label="Key" prop="secretKey">
<el-input
v-model="queryParams.secretKey"
placeholder="请输入Key"
clearable
@keyup.enter="handleQuery"
/>
</el-form-item>
<el-form-item label="模型" prop="model">
<el-input
v-model="queryParams.model"
placeholder="请输入模型"
clearable
@keyup.enter="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="Search" @click="handleQuery"></el-button>
<el-button icon="Refresh" @click="resetQuery"></el-button>
</el-form-item>
</el-form>
<el-table v-loading="loading" :data="usageRecordList" @selection-change="handleSelectionChange">
<el-table-column label="调用时间" align="center" prop="createTime" />
<el-table-column label="调用ID" align="center" prop="secretKey" />
<el-table-column label="模型" align="center" prop="model" />
<el-table-column label="prompt" align="center" prop="promptTokens" />
<el-table-column label="completion" align="center" prop="completionTokens" />
<el-table-column label="total" align="center" prop="totalTokens" />
<el-table-column label="费用" align="center" prop="fee" />
</el-table>
<pagination
v-show="total>0"
:total="total"
v-model:page="queryParams.pageNum"
v-model:limit="queryParams.pageSize"
@pagination="getList"
/>
</el-card>
</div>
</template>
<script setup name="usage">
const tableData = [
{
requestTime: '2022-01-01 12:00:00',
msgId: '069e1032-8a68-4b27-ac8f-9ad8401d4df3',
model: 'gpt-3.5-turbo',
promptTotkens: 60,
completionTokens: 80,
totalTokens: 140,
price: 10
import { listUsageRecord } from "@/api/cert/usageRecord";
import { getUserProfile } from "@/api/system/user";
const { proxy } = getCurrentInstance();
const usageRecordList = ref([]);
const loading = ref(true);
const total = ref(0);
const data = reactive({
queryParams: {
pageNum: 1,
userId: null,
pageSize: 10,
secretKey: null,
model: null,
msgId: null
},
]
});
const { queryParams } = toRefs(data);
function getUser() {
getUserProfile().then(response => {
queryParams.value.userId = response.data.userId
getList()
});
};
/** 查询使用记录列表 */
function getList() {
loading.value = true;
listUsageRecord(queryParams.value).then(response => {
usageRecordList.value = response.rows;
total.value = response.total;
loading.value = false;
});
}
/** 搜索按钮操作 */
function handleQuery() {
queryParams.value.pageNum = 1;
getList();
}
/** 重置按钮操作 */
function resetQuery() {
proxy.resetForm("queryRef");
handleQuery();
}
getUser()
</script>
<style scoped lang="scss">

Loading…
Cancel
Save