diff --git a/controller/channel.go b/controller/channel.go
index 329be93a..dae961d5 100644
--- a/controller/channel.go
+++ b/controller/channel.go
@@ -311,7 +311,7 @@ type ChannelTag struct {
NewTag *string `json:"new_tag"`
Priority *int64 `json:"priority"`
Weight *uint `json:"weight"`
- ModelMapping *string `json:"map_mapping"`
+ ModelMapping *string `json:"model_mapping"`
Models *string `json:"models"`
Groups *string `json:"groups"`
}
diff --git a/web/src/components/ChannelsTable.js b/web/src/components/ChannelsTable.js
index e0bc332d..55816940 100644
--- a/web/src/components/ChannelsTable.js
+++ b/web/src/components/ChannelsTable.js
@@ -31,7 +31,7 @@ import {
Typography
} from '@douyinfe/semi-ui';
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 EditTagModal from '../pages/Channel/EditTagModal.js';
@@ -56,6 +56,20 @@ function renderType(type) {
);
}
+function renderTagType(type) {
+ return (
+ }
+ size='large'
+ shape='circle'
+ type='light'
+ >
+ 标签聚合
+
+ );
+}
+
const ChannelsTable = () => {
const columns = [
// {
@@ -90,7 +104,11 @@ const ChannelsTable = () => {
title: '类型',
dataIndex: 'type',
render: (text, record, index) => {
- return
{renderType(text)}
;
+ if (record.children === undefined) {
+ return <>{renderType(text)}>;
+ } else {
+ return <>{renderTagType(0)}>;
+ }
}
},
{
@@ -441,7 +459,8 @@ const ChannelsTable = () => {
let channelGroupsStr = channels[i].group;
channelGroupsStr.split(',').forEach((item, index) => {
if (tagChannelDates.group.indexOf(item) === -1) {
- tagChannelDates.group += item + ',';
+ // join
+ tagChannelDates.group += ',' + item;
}
});
}
diff --git a/web/src/pages/Channel/EditTagModal.js b/web/src/pages/Channel/EditTagModal.js
index 474d4252..6f2ecbab 100644
--- a/web/src/pages/Channel/EditTagModal.js
+++ b/web/src/pages/Channel/EditTagModal.js
@@ -1,5 +1,5 @@
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 TextInput from '../../components/TextInput.js';
import { getChannelModels } from '../../components/utils.js';
@@ -122,7 +122,12 @@ const EditTagModal = (props) => {
let data = {
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
}
if (inputs.groups.length > 0) {
@@ -132,6 +137,12 @@ const EditTagModal = (props) => {
data.models = inputs.models.join(',');
}
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);
setLoading(false);
};