|
@@ -56,9 +56,10 @@ const LogsTable = () => {
|
|
|
token_name: '',
|
|
token_name: '',
|
|
|
model_name: '',
|
|
model_name: '',
|
|
|
start_timestamp: timestamp2string(0),
|
|
start_timestamp: timestamp2string(0),
|
|
|
- end_timestamp: timestamp2string(now.getTime() / 1000 + 3600)
|
|
|
|
|
|
|
+ end_timestamp: timestamp2string(now.getTime() / 1000 + 3600),
|
|
|
|
|
+ channel: ''
|
|
|
});
|
|
});
|
|
|
- const { username, token_name, model_name, start_timestamp, end_timestamp } = inputs;
|
|
|
|
|
|
|
+ const { username, token_name, model_name, start_timestamp, end_timestamp, channel } = inputs;
|
|
|
|
|
|
|
|
const [stat, setStat] = useState({
|
|
const [stat, setStat] = useState({
|
|
|
quota: 0,
|
|
quota: 0,
|
|
@@ -84,7 +85,7 @@ const LogsTable = () => {
|
|
|
const getLogStat = async () => {
|
|
const getLogStat = async () => {
|
|
|
let localStartTimestamp = Date.parse(start_timestamp) / 1000;
|
|
let localStartTimestamp = Date.parse(start_timestamp) / 1000;
|
|
|
let localEndTimestamp = Date.parse(end_timestamp) / 1000;
|
|
let localEndTimestamp = Date.parse(end_timestamp) / 1000;
|
|
|
- let res = await API.get(`/api/log/stat?type=${logType}&username=${username}&token_name=${token_name}&model_name=${model_name}&start_timestamp=${localStartTimestamp}&end_timestamp=${localEndTimestamp}`);
|
|
|
|
|
|
|
+ let res = await API.get(`/api/log/stat?type=${logType}&username=${username}&token_name=${token_name}&model_name=${model_name}&start_timestamp=${localStartTimestamp}&end_timestamp=${localEndTimestamp}&channel=${channel}`);
|
|
|
const { success, message, data } = res.data;
|
|
const { success, message, data } = res.data;
|
|
|
if (success) {
|
|
if (success) {
|
|
|
setStat(data);
|
|
setStat(data);
|
|
@@ -109,7 +110,7 @@ const LogsTable = () => {
|
|
|
let localStartTimestamp = Date.parse(start_timestamp) / 1000;
|
|
let localStartTimestamp = Date.parse(start_timestamp) / 1000;
|
|
|
let localEndTimestamp = Date.parse(end_timestamp) / 1000;
|
|
let localEndTimestamp = Date.parse(end_timestamp) / 1000;
|
|
|
if (isAdminUser) {
|
|
if (isAdminUser) {
|
|
|
- url = `/api/log/?p=${startIdx}&type=${logType}&username=${username}&token_name=${token_name}&model_name=${model_name}&start_timestamp=${localStartTimestamp}&end_timestamp=${localEndTimestamp}`;
|
|
|
|
|
|
|
+ url = `/api/log/?p=${startIdx}&type=${logType}&username=${username}&token_name=${token_name}&model_name=${model_name}&start_timestamp=${localStartTimestamp}&end_timestamp=${localEndTimestamp}&channel=${channel}`;
|
|
|
} else {
|
|
} else {
|
|
|
url = `/api/log/self/?p=${startIdx}&type=${logType}&token_name=${token_name}&model_name=${model_name}&start_timestamp=${localStartTimestamp}&end_timestamp=${localEndTimestamp}`;
|
|
url = `/api/log/self/?p=${startIdx}&type=${logType}&token_name=${token_name}&model_name=${model_name}&start_timestamp=${localStartTimestamp}&end_timestamp=${localEndTimestamp}`;
|
|
|
}
|
|
}
|
|
@@ -205,16 +206,9 @@ const LogsTable = () => {
|
|
|
</Header>
|
|
</Header>
|
|
|
<Form>
|
|
<Form>
|
|
|
<Form.Group>
|
|
<Form.Group>
|
|
|
- {
|
|
|
|
|
- isAdminUser && (
|
|
|
|
|
- <Form.Input fluid label={'用户名称'} width={2} value={username}
|
|
|
|
|
- placeholder={'可选值'} name='username'
|
|
|
|
|
- onChange={handleInputChange} />
|
|
|
|
|
- )
|
|
|
|
|
- }
|
|
|
|
|
- <Form.Input fluid label={'令牌名称'} width={isAdminUser ? 2 : 3} value={token_name}
|
|
|
|
|
|
|
+ <Form.Input fluid label={'令牌名称'} width={3} value={token_name}
|
|
|
placeholder={'可选值'} name='token_name' onChange={handleInputChange} />
|
|
placeholder={'可选值'} name='token_name' onChange={handleInputChange} />
|
|
|
- <Form.Input fluid label='模型名称' width={isAdminUser ? 2 : 3} value={model_name} placeholder='可选值'
|
|
|
|
|
|
|
+ <Form.Input fluid label='模型名称' width={3} value={model_name} placeholder='可选值'
|
|
|
name='model_name'
|
|
name='model_name'
|
|
|
onChange={handleInputChange} />
|
|
onChange={handleInputChange} />
|
|
|
<Form.Input fluid label='起始时间' width={4} value={start_timestamp} type='datetime-local'
|
|
<Form.Input fluid label='起始时间' width={4} value={start_timestamp} type='datetime-local'
|
|
@@ -225,6 +219,19 @@ const LogsTable = () => {
|
|
|
onChange={handleInputChange} />
|
|
onChange={handleInputChange} />
|
|
|
<Form.Button fluid label='操作' width={2} onClick={refresh}>查询</Form.Button>
|
|
<Form.Button fluid label='操作' width={2} onClick={refresh}>查询</Form.Button>
|
|
|
</Form.Group>
|
|
</Form.Group>
|
|
|
|
|
+ {
|
|
|
|
|
+ isAdminUser && <>
|
|
|
|
|
+ <Form.Group>
|
|
|
|
|
+ <Form.Input fluid label={'渠道 ID'} width={3} value={channel}
|
|
|
|
|
+ placeholder='可选值' name='channel'
|
|
|
|
|
+ onChange={handleInputChange} />
|
|
|
|
|
+ <Form.Input fluid label={'用户名称'} width={3} value={username}
|
|
|
|
|
+ placeholder={'可选值'} name='username'
|
|
|
|
|
+ onChange={handleInputChange} />
|
|
|
|
|
+
|
|
|
|
|
+ </Form.Group>
|
|
|
|
|
+ </>
|
|
|
|
|
+ }
|
|
|
</Form>
|
|
</Form>
|
|
|
<Table basic compact size='small'>
|
|
<Table basic compact size='small'>
|
|
|
<Table.Header>
|
|
<Table.Header>
|
|
@@ -238,6 +245,17 @@ const LogsTable = () => {
|
|
|
>
|
|
>
|
|
|
时间
|
|
时间
|
|
|
</Table.HeaderCell>
|
|
</Table.HeaderCell>
|
|
|
|
|
+ {
|
|
|
|
|
+ isAdminUser && <Table.HeaderCell
|
|
|
|
|
+ style={{ cursor: 'pointer' }}
|
|
|
|
|
+ onClick={() => {
|
|
|
|
|
+ sortLog('channel');
|
|
|
|
|
+ }}
|
|
|
|
|
+ width={1}
|
|
|
|
|
+ >
|
|
|
|
|
+ 渠道
|
|
|
|
|
+ </Table.HeaderCell>
|
|
|
|
|
+ }
|
|
|
{
|
|
{
|
|
|
isAdminUser && <Table.HeaderCell
|
|
isAdminUser && <Table.HeaderCell
|
|
|
style={{ cursor: 'pointer' }}
|
|
style={{ cursor: 'pointer' }}
|
|
@@ -299,16 +317,16 @@ const LogsTable = () => {
|
|
|
onClick={() => {
|
|
onClick={() => {
|
|
|
sortLog('quota');
|
|
sortLog('quota');
|
|
|
}}
|
|
}}
|
|
|
- width={2}
|
|
|
|
|
|
|
+ width={1}
|
|
|
>
|
|
>
|
|
|
- 消耗额度
|
|
|
|
|
|
|
+ 额度
|
|
|
</Table.HeaderCell>
|
|
</Table.HeaderCell>
|
|
|
<Table.HeaderCell
|
|
<Table.HeaderCell
|
|
|
style={{ cursor: 'pointer' }}
|
|
style={{ cursor: 'pointer' }}
|
|
|
onClick={() => {
|
|
onClick={() => {
|
|
|
sortLog('content');
|
|
sortLog('content');
|
|
|
}}
|
|
}}
|
|
|
- width={isAdminUser ? 4 : 5}
|
|
|
|
|
|
|
+ width={isAdminUser ? 4 : 6}
|
|
|
>
|
|
>
|
|
|
详情
|
|
详情
|
|
|
</Table.HeaderCell>
|
|
</Table.HeaderCell>
|
|
@@ -326,6 +344,11 @@ const LogsTable = () => {
|
|
|
return (
|
|
return (
|
|
|
<Table.Row key={log.id}>
|
|
<Table.Row key={log.id}>
|
|
|
<Table.Cell>{renderTimestamp(log.created_at)}</Table.Cell>
|
|
<Table.Cell>{renderTimestamp(log.created_at)}</Table.Cell>
|
|
|
|
|
+ {
|
|
|
|
|
+ isAdminUser && (
|
|
|
|
|
+ <Table.Cell>{log.channel ? <Label basic>{log.channel}</Label> : ''}</Table.Cell>
|
|
|
|
|
+ )
|
|
|
|
|
+ }
|
|
|
{
|
|
{
|
|
|
isAdminUser && (
|
|
isAdminUser && (
|
|
|
<Table.Cell>{log.username ? <Label>{log.username}</Label> : ''}</Table.Cell>
|
|
<Table.Cell>{log.username ? <Label>{log.username}</Label> : ''}</Table.Cell>
|
|
@@ -345,7 +368,7 @@ const LogsTable = () => {
|
|
|
|
|
|
|
|
<Table.Footer>
|
|
<Table.Footer>
|
|
|
<Table.Row>
|
|
<Table.Row>
|
|
|
- <Table.HeaderCell colSpan={'9'}>
|
|
|
|
|
|
|
+ <Table.HeaderCell colSpan={'10'}>
|
|
|
<Select
|
|
<Select
|
|
|
placeholder='选择明细分类'
|
|
placeholder='选择明细分类'
|
|
|
options={LOG_OPTIONS}
|
|
options={LOG_OPTIONS}
|