feat: 完善标签编辑

This commit is contained in:
CalciumIon
2024-11-30 16:57:44 +08:00
parent 1774be8536
commit 3053d94170
3 changed files with 36 additions and 6 deletions

View File

@@ -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"`
} }

View File

@@ -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;
} }
}); });
} }

View File

@@ -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);
}; };