Skip to content

Commit

Permalink
merge: 0316
Browse files Browse the repository at this point in the history
  • Loading branch information
dolphin0618 committed Jun 27, 2024
1 parent 7b06cdf commit 5a2068f
Show file tree
Hide file tree
Showing 21 changed files with 70 additions and 48 deletions.
2 changes: 1 addition & 1 deletion src/frontend/public/locales/zh/bs.json
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
"app": "会 话",
"skills": "构 建",
"knowledge": "知 识",
"evaluation": "评测",
"evaluation": "评 测",
"models": "模 型",
"system": "系 统",
"log": "审 计",
Expand Down

This file was deleted.

11 changes: 6 additions & 5 deletions src/frontend/src/components/bs-icons/index.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
export { AddToIcon } from './addTo';
export { ApplicationIcon } from './application';
export { ApplicationIcon } from './menu/application';
export { AssistantIcon } from './assistant';
export { AvatarIcon } from './avatar';
export { BookOpenIcon } from './bookOpen';
Expand All @@ -12,7 +12,7 @@ export { GithubIcon } from './github';
export { GoIcon } from './go';
export { KnowledgeIcon } from './knowledge';
export { LoadIcon } from './loading';
export { ModelIcon } from './model';
export { ModelIcon } from './menu/model';
export { MoonIcon } from './moon';
export { MoveOneIcon } from './moveOne';
export { NewApplicationIcon } from './newApplication';
Expand All @@ -26,14 +26,15 @@ export { SearchIcon } from './search';
export { SendIcon } from './send';
export { SettingIcon } from './setting';
export { SkillIcon } from './skill';
export { SystemIcon } from './system';
export { SystemIcon } from './menu/system';
export { TabIcon } from './tab';
export { TechnologyIcon } from './technology';
export { TechnologyIcon } from './menu/technology';
export { ThunmbIcon } from './thumbs';
export { TipIcon } from './tip';
export { ToastIcon } from './toast';
export { ToolIcon } from './tool';
export { UploadIcon } from './upload';
export { UserIcon } from './user';
export { LogIcon } from './log';
export { LogIcon } from './menu/log';
export { EvaluatingIcon } from './menu/evaluation';
export { DropDownIcon } from './down'
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import React, { forwardRef } from "react";
import { ReactComponent as Knowledge } from "./Evaluation.svg";
import { ReactComponent as Icon } from "./Evaluation.svg";

export const EvaluatingIcon = forwardRef<
SVGSVGElement & { className: any },
React.PropsWithChildren<{ className?: string }>
>(({className,...props}, ref) => {
return <Knowledge ref={ref} {...props} className={className || ''}/>;
>(({ className, ...props }, ref) => {
return <Icon ref={ref} {...props} className={className || ''} />;
});
14 changes: 9 additions & 5 deletions src/frontend/src/layout/MainLayout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@ import {
ModelIcon,
QuitIcon,
SystemIcon,
TechnologyIcon
TechnologyIcon,
EvaluatingIcon
} from "@/components/bs-icons";
import { EvaluatingIcon } from "@/components/bs-icons/evaluation";
import { SelectHover, SelectHoverItem } from "@/components/bs-ui/select/hover";
import { locationContext } from "@/contexts/locationContext";
import { LockClosedIcon } from "@radix-ui/react-icons";
Expand Down Expand Up @@ -135,9 +135,13 @@ export default function MainLayout() {
<ModelIcon className="h-6 w-6 my-[12px]" /><span className="mx-[14px] max-w-[48px] text-[14px] leading-[48px]">{t('menu.models')}</span>
</NavLink>
}
<NavLink to='/evaluation' className={`navlink inline-flex rounded-lg w-full px-6 hover:bg-nav-hover h-12 mb-[3.5px]`}>
<EvaluatingIcon className="h-6 w-6 my-[12px]" /><span className="mx-[14px] max-w-[48px] text-[14px] leading-[48px]">{t('menu.evaluation')}</span>
</NavLink>
{/* {
中英
isMenu('evaluation') &&
<NavLink to='/evaluation' className={`navlink inline-flex rounded-lg w-full px-6 hover:bg-nav-hover h-12 mb-[3.5px]`}>
<EvaluatingIcon className="h-6 w-6 my-[12px]" /><span className="mx-[14px] max-w-[48px] text-[14px] leading-[48px]">{t('menu.evaluation')}</span>
</NavLink>
} */}
{
isAdmin && <>
<NavLink to='/sys' className={`navlink inline-flex rounded-lg w-full px-6 hover:bg-nav-hover h-12 mb-[3.5px]`}>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ export default function ForcePrompt({ id }) {
<div className="absolute top-0 left-0 w-full h-full z-50 bg-[rgba(0,0,0,0.1)] flex items-center justify-center">
<div className="w-[600px] max-w-[80%] bg-[#fff] shadow-md text-center p-10 rounded-md">
<div className="text-left break-all mb-10">
<p className="text-gray-950 mb-5">{t('chatTipsTitle')}</p>
<p className="text-gray-950 mb-5 text-center">{t('chatTipsTitle')}</p>
{t('chatTips').split('\n').map((line, index) => (
<p className="text-md mb-1 text-gray-600" key={index}>{line}</p>
))}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -90,13 +90,13 @@ const ResultPanne = ({ chatId, words, data, onClose, onAdd, children }: { chatId
{/* left */}
<div className="w-[300px] bg-gray-100 rounded-md py-4 px-2 h-full overflow-y-auto no-scrollbar">
{/* label */}
<div className="mb-4 text-sm font-bold">
{/* 中英 */}
{/* <div className="mb-4 text-sm font-bold">
{t('chat.filterLabel')}
<div className="tooltip fixed" data-tip={t('chat.tooltipText')}><span data-theme="light" className="badge cursor-pointer">?</span></div>
</div>
<div className="flex flex-wrap gap-2">
{words.map((str, i) => <div key={str} className="badge badge-info h-[auto] gap-2 text-gray-600 bg-[rgba(53,126,249,.15)]">{str}<span className="cursor-pointer" onClick={() => onClose(i)}>x</span></div>)}
{/* 自定义 */}
{
editCustomKey ? <div className="badge badge-info gap-2 cursor-pointer bg-[rgba(53,126,249,.15)]"><input ref={inputRef} id="taginput" className="w-20 h-4 py-0 border-none outline-none bg-gray-50"
onKeyDown={(event) => {
Expand All @@ -109,7 +109,7 @@ const ResultPanne = ({ chatId, words, data, onClose, onAdd, children }: { chatId
}}></input></div> :
<div className="badge badge-info gap-2 cursor-pointer bg-[rgba(53,126,249,.86)] text-gray-50" onClick={handleOpenInput}><span>{t('chat.addCustomLabel')}</span></div>
}
</div>
</div> */}
{/* files */}
<div className="mt-4">
<p className="mb-4 text-sm font-bold">{t('chat.sourceDocumentsLabel')}</p>
Expand Down
10 changes: 9 additions & 1 deletion src/frontend/src/pages/SystemPage/components/EditRole.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,8 @@ const SearchPanne = ({ groupId, title, type, children }) => {
const enum MenuType {
BUILD = 'build',
KNOWLEDGE = 'knowledge',
MODEL = 'model'
MODEL = 'model',
EVALUATION = 'evaluation'
}
// -1 id表示新增
export default function EditRole({ id, name, groupId, onChange, onBeforeChange }) {
Expand Down Expand Up @@ -198,6 +199,13 @@ export default function EditRole({ id, name, groupId, onChange, onBeforeChange }
<Switch checked={form.useMenu.includes(MenuType.MODEL)} onCheckedChange={(bln) => switchDataChange(MenuType.MODEL, 'useMenu', bln)} />
</TableCell>
</TableRow>
{/* 中英 */}
{/* <TableRow>
<TableCell className="font-medium">评测</TableCell>
<TableCell className="text-right">
<Switch checked={form.useMenu.includes(MenuType.EVALUATION)} onCheckedChange={(bln) => switchDataChange(MenuType.EVALUATION, 'useMenu', bln)} />
</TableCell>
</TableRow> */}
</TableBody>
</Table>
</div>
Expand Down
10 changes: 5 additions & 5 deletions src/frontend/src/pages/SystemPage/components/Roles.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ export default function Roles() {
inputDom.value = '';
}
try {
const data:any = await getRolesByGroupApi('', [state.group]);
const data: any = await getRolesByGroupApi('', [state.group]);
dispatch({ type: 'SET_ROLES', payload: data });
allRolesRef.current = data;
} catch (error) {
Expand All @@ -80,7 +80,7 @@ export default function Roles() {
}, [state.group]);

useEffect(() => {
getUserGroupsApi().then((res:any) => {
getUserGroupsApi().then((res: any) => {
const groups = res.records.map(ug => ({ label: ug.group_name, value: ug.id }))
// 获取最近修改用户组
dispatch({ type: 'SET_GROUP', payload: groups[0].value });
Expand Down Expand Up @@ -153,8 +153,8 @@ export default function Roles() {
<SelectValue placeholder={t('system.defaultGroup')} />
</SelectTrigger>
<SelectContent className="max-w-[180px] break-all">
<SearchInput inputClassName="h-8 mb-2" placeholder={t('log.selectUserGroup')}
onChange={e => setKeyWord(e.target.value)} onKeyDown={e => e.stopPropagation()} iconClassName="w-4 h-4" />
<SearchInput inputClassName="h-8 mb-2" placeholder={t('log.selectUserGroup')}
onChange={e => setKeyWord(e.target.value)} onKeyDown={e => e.stopPropagation()} iconClassName="w-4 h-4" />
<SelectGroup>
{options.map(el => (
<SelectItem key={el.value} value={el.value}>{el.label}</SelectItem>
Expand Down Expand Up @@ -187,7 +187,7 @@ export default function Roles() {
<TableCell className="font-medium">{el.role_name}</TableCell>
<TableCell>{el.create_time.replace('T', ' ')}</TableCell>
<TableCell className="text-right">
<Button variant="link" onClick={() => dispatch({ type: 'SET_ROLE', payload: el })} className="px-0 pl-6">{t('edit')}</Button>
<Button variant="link" disabled={el.id === 1} onClick={() => dispatch({ type: 'SET_ROLE', payload: el })} className="px-0 pl-6">{t('edit')}</Button>
<Button variant="link" disabled={[1, 2].includes(el.id)} onClick={() => handleDelete(el)} className="text-red-500 px-0 pl-6">{t('delete')}</Button>
</TableCell>
</TableRow>
Expand Down
44 changes: 27 additions & 17 deletions src/frontend/src/pages/SystemPage/components/Users.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -116,13 +116,13 @@ export default function Users(params) {
// 获取用户组类型数据
const [userGroups, setUserGroups] = useState([])
const getUserGoups = async () => {
const res:any = await getUserGroupsApi()
const res: any = await getUserGroupsApi()
setUserGroups(res.records)
}
// 获取角色类型数据
const [roles, setRoles] = useState([])
const getRoles = async () => {
const res:any = await getRolesApi()
const res: any = await getRolesApi()
setRoles(res)
}

Expand All @@ -132,6 +132,29 @@ export default function Users(params) {
return () => { setUserGroups([]); setRoles([]) }
}, [])

const operations = (el) => {
const isSuperAdmin = el.roles.some(role => role.id === 1)
// 禁止编辑admin用户
if (isSuperAdmin) return <div>
<Button variant="link" disabled className="px-0">{t('edit')}</Button>
<Button variant="link" disabled className="px-0 pl-4">{t('system.resetPwd')}</Button>
<Button variant="link" disabled className="text-red-500 px-0 pl-4">{t('disable')}</Button>
</div>

return <div>
{/* 编辑 */}
<Button variant="link" disabled={user.user_id === el.user_id} onClick={() => setCurrentUser(el)} className="px-0">{t('edit')}</Button>
{/* 重置密码 */}
{(user.role === 'admin' || user.role === 'group_admin') &&
<Button variant="link" className="px-0 pl-4" onClick={() => userPwdModalRef.current.open(el.user_id)}>{t('system.resetPwd')}</Button>}
{/* 禁用 */}
{
el.delete === 1 ? <Button variant="link" onClick={() => handleEnableUser(el)} className="text-green-500 px-0 pl-4">{t('enable')}</Button> :
<Button variant="link" disabled={user.user_id === el.user_id} onClick={() => handleDelete(el)} className="text-red-500 px-0 pl-4">{t('disable')}</Button>
}
</div>
}

return <div className="relative">
<div className="h-[calc(100vh-136px)] overflow-y-auto pb-10">
<div className="flex justify-end">
Expand Down Expand Up @@ -171,27 +194,14 @@ export default function Users(params) {
</TableRow>
</TableHeader>
<TableBody>
{users.map((el:any) => (
{users.map((el: any) => (
<TableRow key={el.id}>
<TableCell className="font-medium max-w-md truncate">{el.user_name}</TableCell>
{/* <TableCell>{el.role}</TableCell> */}
<TableCell className="break-all">{(el.groups || []).map(el => el.name).join(',')}</TableCell>
<TableCell className="break-all">{(el.roles || []).map(el => el.name).join(',')}</TableCell>
<TableCell>{el.update_time.replace('T', ' ')}</TableCell>
<TableCell className="text-right">
{/* 编辑 */}
{user.user_id === el.user_id ? <Button variant="link" className="text-gray-400 px-0">{t('edit')}</Button> :
<Button variant="link" onClick={() => setCurrentUser(el)} className="px-0">{t('edit')}</Button>}
{/* 重置密码 */}
{(user.role === 'admin' || user.role === 'group_admin') &&
<Button variant="link" className="px-0 pl-4" onClick={() => userPwdModalRef.current.open(el.user_id)}>{t('system.resetPwd')}</Button>}
{/* 禁用 */}
{
el.delete === 1 ? <Button variant="link" onClick={() => handleEnableUser(el)} className="text-green-500 px-0 pl-4">{t('enable')}</Button> :
user.user_id === el.user_id ? <Button variant="link" className="text-gray-400 px-0 pl-4">{t('disable')}</Button> :
<Button variant="link" onClick={() => handleDelete(el)} className="text-red-500 px-0 pl-4">{t('disable')}</Button>
}
</TableCell>
<TableCell className="text-right">{operations(el)}</TableCell>
</TableRow>
))}
</TableBody>
Expand Down

0 comments on commit 5a2068f

Please sign in to comment.