feat: 完善标签编辑
This commit is contained in:
@@ -311,7 +311,7 @@ type ChannelTag struct {
|
|||||||
NewTag *string `json:"new_tag"`
|
NewTag *string `json:"new_tag"`
|
||||||
Priority *int64 `json:"priority"`
|
Priority *int64 `json:"priority"`
|
||||||
Weight *uint `json:"weight"`
|
Weight *uint `json:"weight"`
|
||||||
ModelMapping *string `json:"map_mapping"`
|
ModelMapping *string `json:"model_mapping"`
|
||||||
Models *string `json:"models"`
|
Models *string `json:"models"`
|
||||||
Groups *string `json:"groups"`
|
Groups *string `json:"groups"`
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ import {
|
|||||||
Typography
|
Typography
|
||||||
} from '@douyinfe/semi-ui';
|
} from '@douyinfe/semi-ui';
|
||||||
import EditChannel from '../pages/Channel/EditChannel';
|
import EditChannel from '../pages/Channel/EditChannel';
|
||||||
import { IconTreeTriangleDown } from '@douyinfe/semi-icons';
|
import { IconList, IconTreeTriangleDown } from '@douyinfe/semi-icons';
|
||||||
import { loadChannelModels } from './utils.js';
|
import { loadChannelModels } from './utils.js';
|
||||||
import EditTagModal from '../pages/Channel/EditTagModal.js';
|
import EditTagModal from '../pages/Channel/EditTagModal.js';
|
||||||
|
|
||||||
@@ -56,6 +56,20 @@ function renderType(type) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function renderTagType(type) {
|
||||||
|
return (
|
||||||
|
<Tag
|
||||||
|
color='light-blue'
|
||||||
|
prefixIcon={<IconList />}
|
||||||
|
size='large'
|
||||||
|
shape='circle'
|
||||||
|
type='light'
|
||||||
|
>
|
||||||
|
标签聚合
|
||||||
|
</Tag>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
const ChannelsTable = () => {
|
const ChannelsTable = () => {
|
||||||
const columns = [
|
const columns = [
|
||||||
// {
|
// {
|
||||||
@@ -90,7 +104,11 @@ const ChannelsTable = () => {
|
|||||||
title: '类型',
|
title: '类型',
|
||||||
dataIndex: 'type',
|
dataIndex: 'type',
|
||||||
render: (text, record, index) => {
|
render: (text, record, index) => {
|
||||||
return <div>{renderType(text)}</div>;
|
if (record.children === undefined) {
|
||||||
|
return <>{renderType(text)}</>;
|
||||||
|
} else {
|
||||||
|
return <>{renderTagType(0)}</>;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -441,7 +459,8 @@ const ChannelsTable = () => {
|
|||||||
let channelGroupsStr = channels[i].group;
|
let channelGroupsStr = channels[i].group;
|
||||||
channelGroupsStr.split(',').forEach((item, index) => {
|
channelGroupsStr.split(',').forEach((item, index) => {
|
||||||
if (tagChannelDates.group.indexOf(item) === -1) {
|
if (tagChannelDates.group.indexOf(item) === -1) {
|
||||||
tagChannelDates.group += item + ',';
|
// join
|
||||||
|
tagChannelDates.group += ',' + item;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import React, { useState, useEffect } from 'react';
|
import React, { useState, useEffect } from 'react';
|
||||||
import { API, showError, showSuccess } from '../../helpers';
|
import { API, showError, showInfo, showSuccess, showWarning, verifyJSON } from '../../helpers';
|
||||||
import { SideSheet, Space, Button, Input, Typography, Spin, Modal, Select, Banner, TextArea } from '@douyinfe/semi-ui';
|
import { SideSheet, Space, Button, Input, Typography, Spin, Modal, Select, Banner, TextArea } from '@douyinfe/semi-ui';
|
||||||
import TextInput from '../../components/TextInput.js';
|
import TextInput from '../../components/TextInput.js';
|
||||||
import { getChannelModels } from '../../components/utils.js';
|
import { getChannelModels } from '../../components/utils.js';
|
||||||
@@ -122,7 +122,12 @@ const EditTagModal = (props) => {
|
|||||||
let data = {
|
let data = {
|
||||||
tag: tag,
|
tag: tag,
|
||||||
}
|
}
|
||||||
if (inputs.model_mapping !== null) {
|
if (inputs.model_mapping !== null && inputs.model_mapping !== '') {
|
||||||
|
if (inputs.model_mapping !== '' && !verifyJSON(inputs.model_mapping)) {
|
||||||
|
showInfo('模型映射必须是合法的 JSON 格式!');
|
||||||
|
setLoading(false);
|
||||||
|
return;
|
||||||
|
}
|
||||||
data.model_mapping = inputs.model_mapping
|
data.model_mapping = inputs.model_mapping
|
||||||
}
|
}
|
||||||
if (inputs.groups.length > 0) {
|
if (inputs.groups.length > 0) {
|
||||||
@@ -132,6 +137,12 @@ const EditTagModal = (props) => {
|
|||||||
data.models = inputs.models.join(',');
|
data.models = inputs.models.join(',');
|
||||||
}
|
}
|
||||||
data.newTag = inputs.newTag;
|
data.newTag = inputs.newTag;
|
||||||
|
// check have any change
|
||||||
|
if (data.model_mapping === undefined && data.groups === undefined && data.models === undefined && data.newTag === undefined) {
|
||||||
|
showWarning('没有任何修改!');
|
||||||
|
setLoading(false);
|
||||||
|
return;
|
||||||
|
}
|
||||||
await submit(data);
|
await submit(data);
|
||||||
setLoading(false);
|
setLoading(false);
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user