增加团队管理页面
This commit is contained in:
parent
4a4da47253
commit
01e702dfa2
@ -163,15 +163,15 @@ const EnvironmentList: React.FC = () => {
|
||||
</CardHeader>
|
||||
<CardContent>
|
||||
<div className="rounded-md border">
|
||||
<Table>
|
||||
<Table minWidth="950px">
|
||||
<TableHeader>
|
||||
<TableRow>
|
||||
<TableHead className="w-[120px]">环境编码</TableHead>
|
||||
<TableHead className="w-[150px]">环境名称</TableHead>
|
||||
<TableHead className="w-[300px]">环境描述</TableHead>
|
||||
<TableHead className="w-[80px]">排序</TableHead>
|
||||
<TableHead className="w-[100px]">状态</TableHead>
|
||||
<TableHead className="w-[200px]">操作</TableHead>
|
||||
<TableHead width="120px">环境编码</TableHead>
|
||||
<TableHead width="150px">环境名称</TableHead>
|
||||
<TableHead width="300px">环境描述</TableHead>
|
||||
<TableHead width="80px">排序</TableHead>
|
||||
<TableHead width="100px">状态</TableHead>
|
||||
<TableHead width="200px" sticky>操作</TableHead>
|
||||
</TableRow>
|
||||
</TableHeader>
|
||||
<TableBody>
|
||||
@ -185,16 +185,16 @@ const EnvironmentList: React.FC = () => {
|
||||
list.map((item) => {
|
||||
return (
|
||||
<TableRow key={item.id}>
|
||||
<TableCell className="font-medium">{item.envCode}</TableCell>
|
||||
<TableCell>{item.envName}</TableCell>
|
||||
<TableCell className="text-muted-foreground">{item.envDesc || '-'}</TableCell>
|
||||
<TableCell>{item.sort}</TableCell>
|
||||
<TableCell>
|
||||
<TableCell width="120px" className="font-medium">{item.envCode}</TableCell>
|
||||
<TableCell width="150px">{item.envName}</TableCell>
|
||||
<TableCell width="300px" className="text-muted-foreground">{item.envDesc || '-'}</TableCell>
|
||||
<TableCell width="80px">{item.sort}</TableCell>
|
||||
<TableCell width="100px">
|
||||
<Badge variant={item.enabled ? "default" : "secondary"} className="inline-flex">
|
||||
{item.enabled ? '启用' : '禁用'}
|
||||
</Badge>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<TableCell width="200px" sticky>
|
||||
<div className="flex items-center gap-2">
|
||||
<Button
|
||||
variant="ghost"
|
||||
|
||||
30
frontend/src/pages/Deploy/External/index.tsx
vendored
30
frontend/src/pages/Deploy/External/index.tsx
vendored
@ -229,16 +229,16 @@ const ExternalPage: React.FC = () => {
|
||||
</CardHeader>
|
||||
<CardContent>
|
||||
<div className="rounded-md border">
|
||||
<Table>
|
||||
<Table minWidth="1120px">
|
||||
<TableHeader>
|
||||
<TableRow>
|
||||
<TableHead className="w-[150px]">系统名称</TableHead>
|
||||
<TableHead className="w-[100px]">系统类型</TableHead>
|
||||
<TableHead className="w-[250px]">系统地址</TableHead>
|
||||
<TableHead className="w-[120px]">认证方式</TableHead>
|
||||
<TableHead className="w-[150px]">最后连接时间</TableHead>
|
||||
<TableHead className="w-[100px]">状态</TableHead>
|
||||
<TableHead className="w-[250px]">操作</TableHead>
|
||||
<TableHead width="150px">系统名称</TableHead>
|
||||
<TableHead width="100px">系统类型</TableHead>
|
||||
<TableHead width="250px">系统地址</TableHead>
|
||||
<TableHead width="120px">认证方式</TableHead>
|
||||
<TableHead width="150px">最后连接时间</TableHead>
|
||||
<TableHead width="100px">状态</TableHead>
|
||||
<TableHead width="250px" sticky>操作</TableHead>
|
||||
</TableRow>
|
||||
</TableHeader>
|
||||
<TableBody>
|
||||
@ -251,13 +251,13 @@ const ExternalPage: React.FC = () => {
|
||||
) : (
|
||||
list.map((item) => (
|
||||
<TableRow key={item.id}>
|
||||
<TableCell className="font-medium">{item.name}</TableCell>
|
||||
<TableCell>
|
||||
<TableCell width="150px" className="font-medium">{item.name}</TableCell>
|
||||
<TableCell width="100px">
|
||||
<Badge variant={getSystemTypeLabel(item.type).variant}>
|
||||
{getSystemTypeLabel(item.type).label}
|
||||
</Badge>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<TableCell width="250px">
|
||||
<a
|
||||
href={item.url}
|
||||
target="_blank"
|
||||
@ -268,17 +268,17 @@ const ExternalPage: React.FC = () => {
|
||||
{item.url}
|
||||
</a>
|
||||
</TableCell>
|
||||
<TableCell>{getAuthTypeLabel(item.authType)}</TableCell>
|
||||
<TableCell className="text-muted-foreground">
|
||||
<TableCell width="120px">{getAuthTypeLabel(item.authType)}</TableCell>
|
||||
<TableCell width="150px" className="text-muted-foreground">
|
||||
{item.lastConnectTime || '-'}
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<TableCell width="100px">
|
||||
<Switch
|
||||
checked={item.enabled}
|
||||
onCheckedChange={(checked) => handleStatusChange(item.id, checked)}
|
||||
/>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<TableCell width="250px" sticky>
|
||||
<div className="flex items-center gap-2">
|
||||
<Button
|
||||
variant="ghost"
|
||||
|
||||
@ -463,20 +463,20 @@ const GitManager: React.FC = () => {
|
||||
<p className="text-sm">请同步 Git 实例数据</p>
|
||||
</div>
|
||||
) : (
|
||||
<Table>
|
||||
<Table minWidth="900px">
|
||||
<TableHeader>
|
||||
<TableRow>
|
||||
<TableHead className="w-[200px]">名称</TableHead>
|
||||
<TableHead className="w-[200px]">路径</TableHead>
|
||||
<TableHead className="w-[100px]">可见性</TableHead>
|
||||
<TableHead>描述</TableHead>
|
||||
<TableHead className="w-[200px]">操作</TableHead>
|
||||
<TableHead width="200px">名称</TableHead>
|
||||
<TableHead width="200px">路径</TableHead>
|
||||
<TableHead width="100px">可见性</TableHead>
|
||||
<TableHead width="200px">描述</TableHead>
|
||||
<TableHead width="200px" sticky>操作</TableHead>
|
||||
</TableRow>
|
||||
</TableHeader>
|
||||
<TableBody>
|
||||
{filteredGroups.map((group) => (
|
||||
<TableRow key={group.id}>
|
||||
<TableCell className="font-medium">
|
||||
<TableCell width="200px" className="font-medium">
|
||||
<Button
|
||||
variant="link"
|
||||
className="p-0 h-auto font-medium text-base hover:underline"
|
||||
@ -485,7 +485,7 @@ const GitManager: React.FC = () => {
|
||||
{group.name}
|
||||
</Button>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<TableCell width="200px">
|
||||
<div className="flex items-center gap-2">
|
||||
<code className="text-xs bg-muted px-2 py-1 rounded">
|
||||
{group.path}
|
||||
@ -499,13 +499,13 @@ const GitManager: React.FC = () => {
|
||||
</Button>
|
||||
</div>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<TableCell width="100px">
|
||||
{renderVisibilityBadge(group.visibility)}
|
||||
</TableCell>
|
||||
<TableCell className="max-w-xs truncate" title={group.description}>
|
||||
<TableCell width="200px" className="max-w-[200px] truncate" title={group.description}>
|
||||
{group.description || '-'}
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<TableCell width="200px" sticky>
|
||||
<div className="flex items-center gap-2">
|
||||
<Button variant="ghost" size="sm" onClick={handleSyncProjects}>
|
||||
<RefreshCw className="mr-1 h-3 w-3" />
|
||||
@ -598,22 +598,22 @@ const GitManager: React.FC = () => {
|
||||
<p className="text-sm">请同步 Git 实例数据</p>
|
||||
</div>
|
||||
) : (
|
||||
<Table>
|
||||
<Table minWidth="990px">
|
||||
<TableHeader>
|
||||
<TableRow>
|
||||
<TableHead className="w-[200px]">名称</TableHead>
|
||||
<TableHead className="w-[200px]">路径</TableHead>
|
||||
<TableHead className="w-[100px]">可见性</TableHead>
|
||||
<TableHead className="w-[120px]">默认分支</TableHead>
|
||||
<TableHead>最后活动时间</TableHead>
|
||||
<TableHead className="w-[220px]">操作</TableHead>
|
||||
<TableHead width="200px">名称</TableHead>
|
||||
<TableHead width="200px">路径</TableHead>
|
||||
<TableHead width="100px">可见性</TableHead>
|
||||
<TableHead width="120px">默认分支</TableHead>
|
||||
<TableHead width="150px">最后活动时间</TableHead>
|
||||
<TableHead width="220px" sticky>操作</TableHead>
|
||||
</TableRow>
|
||||
</TableHeader>
|
||||
<TableBody>
|
||||
{filteredProjects.map((project) => (
|
||||
<TableRow key={project.id}>
|
||||
<TableCell className="font-medium">{project.name}</TableCell>
|
||||
<TableCell>
|
||||
<TableCell width="200px" className="font-medium">{project.name}</TableCell>
|
||||
<TableCell width="200px">
|
||||
<div className="flex items-center gap-2">
|
||||
<code className="text-xs bg-muted px-2 py-1 rounded">
|
||||
{project.path}
|
||||
@ -627,19 +627,19 @@ const GitManager: React.FC = () => {
|
||||
</Button>
|
||||
</div>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<TableCell width="100px">
|
||||
{renderVisibilityBadge(project.visibility)}
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<TableCell width="120px">
|
||||
<Badge variant="outline" className="inline-flex items-center gap-1">
|
||||
<GitBranch className="h-3 w-3" />
|
||||
{project.isDefaultBranch}
|
||||
</Badge>
|
||||
</TableCell>
|
||||
<TableCell className="text-sm text-muted-foreground">
|
||||
<TableCell width="150px" className="text-sm text-muted-foreground">
|
||||
{formatTime(project.lastActivityAt)}
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<TableCell width="220px" sticky>
|
||||
<div className="flex items-center gap-2">
|
||||
<Button variant="ghost" size="sm" onClick={handleSyncBranches}>
|
||||
<RefreshCw className="mr-1 h-3 w-3" />
|
||||
|
||||
@ -451,16 +451,16 @@ const JenkinsManagerList: React.FC = () => {
|
||||
</CardHeader>
|
||||
<CardContent>
|
||||
<div className="rounded-md border">
|
||||
<Table>
|
||||
<Table minWidth="1170px">
|
||||
<TableHeader>
|
||||
<TableRow>
|
||||
<TableHead className="w-[250px]">Job 名称</TableHead>
|
||||
<TableHead className="w-[300px]">描述</TableHead>
|
||||
<TableHead className="w-[100px]">最后构建</TableHead>
|
||||
<TableHead className="w-[120px]">状态</TableHead>
|
||||
<TableHead className="w-[120px]">健康度</TableHead>
|
||||
<TableHead className="w-[180px]">构建时间</TableHead>
|
||||
<TableHead className="w-[100px]">操作</TableHead>
|
||||
<TableHead width="250px">Job 名称</TableHead>
|
||||
<TableHead width="300px">描述</TableHead>
|
||||
<TableHead width="100px">最后构建</TableHead>
|
||||
<TableHead width="120px">状态</TableHead>
|
||||
<TableHead width="120px">健康度</TableHead>
|
||||
<TableHead width="180px">构建时间</TableHead>
|
||||
<TableHead width="100px" sticky>操作</TableHead>
|
||||
</TableRow>
|
||||
</TableHeader>
|
||||
<TableBody>
|
||||
@ -478,24 +478,24 @@ const JenkinsManagerList: React.FC = () => {
|
||||
const statusInfo = getBuildStatusInfo(job.lastBuildStatus);
|
||||
return (
|
||||
<TableRow key={job.id}>
|
||||
<TableCell className="font-medium">
|
||||
<TableCell width="250px" className="font-medium">
|
||||
<div className="flex items-center gap-2">
|
||||
<span className="truncate">{job.jobName}</span>
|
||||
</div>
|
||||
</TableCell>
|
||||
<TableCell className="text-muted-foreground text-sm">
|
||||
<TableCell width="300px" className="text-muted-foreground text-sm">
|
||||
{job.description || '-'}
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<TableCell width="100px">
|
||||
<span className="text-sm">#{job.lastBuildNumber}</span>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<TableCell width="120px">
|
||||
<Badge variant={statusInfo.variant} className="inline-flex items-center gap-1">
|
||||
{statusInfo.icon}
|
||||
{statusInfo.label}
|
||||
</Badge>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<TableCell width="120px">
|
||||
<div className="space-y-1">
|
||||
<Progress
|
||||
value={job.healthReportScore}
|
||||
@ -505,10 +505,10 @@ const JenkinsManagerList: React.FC = () => {
|
||||
<span className="text-xs text-muted-foreground">{job.healthReportScore}%</span>
|
||||
</div>
|
||||
</TableCell>
|
||||
<TableCell className="text-sm text-muted-foreground">
|
||||
<TableCell width="180px" className="text-sm text-muted-foreground">
|
||||
{formatTime(job.lastBuildTime)}
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<TableCell width="100px" sticky>
|
||||
<Button
|
||||
variant="ghost"
|
||||
size="sm"
|
||||
|
||||
@ -291,17 +291,17 @@ const FormDataList: React.FC = () => {
|
||||
|
||||
{/* 表格 */}
|
||||
<div className="rounded-md border">
|
||||
<Table>
|
||||
<Table minWidth="1230px">
|
||||
<TableHeader>
|
||||
<TableRow>
|
||||
<TableHead className="w-[240px]">表单标识</TableHead>
|
||||
<TableHead className="w-[120px]">分类</TableHead>
|
||||
<TableHead className="w-[100px]">业务类型</TableHead>
|
||||
<TableHead className="w-[150px]">业务标识</TableHead>
|
||||
<TableHead className="w-[100px]">提交人</TableHead>
|
||||
<TableHead className="w-[180px]">提交时间</TableHead>
|
||||
<TableHead className="w-[140px]">状态</TableHead>
|
||||
<TableHead className="text-right">操作</TableHead>
|
||||
<TableHead width="240px">表单标识</TableHead>
|
||||
<TableHead width="120px">分类</TableHead>
|
||||
<TableHead width="100px">业务类型</TableHead>
|
||||
<TableHead width="150px">业务标识</TableHead>
|
||||
<TableHead width="100px">提交人</TableHead>
|
||||
<TableHead width="180px">提交时间</TableHead>
|
||||
<TableHead width="140px">状态</TableHead>
|
||||
<TableHead width="200px" sticky>操作</TableHead>
|
||||
</TableRow>
|
||||
</TableHeader>
|
||||
<TableBody>
|
||||
@ -319,12 +319,12 @@ const FormDataList: React.FC = () => {
|
||||
const categoryInfo = getCategoryInfo(record.categoryId);
|
||||
return (
|
||||
<TableRow key={record.id} className="hover:bg-muted/50">
|
||||
<TableCell>
|
||||
<TableCell width="240px">
|
||||
<code className="relative rounded bg-muted px-[0.3rem] py-[0.2rem] font-mono text-sm font-semibold">
|
||||
{record.formKey}
|
||||
</code>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<TableCell width="120px">
|
||||
{categoryInfo ? (
|
||||
<Badge variant="outline" className="flex items-center gap-1 w-fit">
|
||||
{categoryInfo.icon && <Folder className="h-3 w-3" />}
|
||||
@ -334,20 +334,20 @@ const FormDataList: React.FC = () => {
|
||||
<Badge variant="outline">未分类</Badge>
|
||||
)}
|
||||
</TableCell>
|
||||
<TableCell>{getBusinessTypeBadge(record.businessType)}</TableCell>
|
||||
<TableCell>
|
||||
<TableCell width="100px">{getBusinessTypeBadge(record.businessType)}</TableCell>
|
||||
<TableCell width="150px">
|
||||
<span className="text-sm">{record.businessKey || '-'}</span>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<TableCell width="100px">
|
||||
<span className="text-sm">{record.submitter || '匿名'}</span>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<TableCell width="180px">
|
||||
<span className="text-sm">
|
||||
{record.submitTime ? dayjs(record.submitTime).format('YYYY-MM-DD HH:mm:ss') : '-'}
|
||||
</span>
|
||||
</TableCell>
|
||||
<TableCell>{getStatusBadge(record.status)}</TableCell>
|
||||
<TableCell className="text-right">
|
||||
<TableCell width="140px">{getStatusBadge(record.status)}</TableCell>
|
||||
<TableCell width="200px" sticky>
|
||||
<div className="flex justify-end gap-2">
|
||||
<Button
|
||||
variant="ghost"
|
||||
|
||||
@ -260,17 +260,17 @@ const CategoryManageDialog: React.FC<CategoryManageDialogProps> = ({
|
||||
</div>
|
||||
|
||||
{/* 表格 */}
|
||||
<div className="overflow-x-auto">
|
||||
<Table>
|
||||
<div className="rounded-md border">
|
||||
<Table minWidth="770px">
|
||||
<TableHeader>
|
||||
<TableRow>
|
||||
<TableHead className="w-[160px]">分类名称</TableHead>
|
||||
<TableHead className="w-[140px]">分类代码</TableHead>
|
||||
<TableHead className="w-[60px]">图标</TableHead>
|
||||
<TableHead className="w-[80px]">排序</TableHead>
|
||||
<TableHead className="w-[80px]">状态</TableHead>
|
||||
<TableHead className="min-w-[150px]">描述</TableHead>
|
||||
<TableHead className="w-[100px] sticky right-0 bg-background shadow-[-2px_0_4px_rgba(0,0,0,0.05)]">操作</TableHead>
|
||||
<TableHead width="160px">分类名称</TableHead>
|
||||
<TableHead width="140px">分类代码</TableHead>
|
||||
<TableHead width="60px">图标</TableHead>
|
||||
<TableHead width="80px" className="text-center">排序</TableHead>
|
||||
<TableHead width="80px">状态</TableHead>
|
||||
<TableHead width="150px">描述</TableHead>
|
||||
<TableHead width="100px" sticky>操作</TableHead>
|
||||
</TableRow>
|
||||
</TableHeader>
|
||||
<TableBody>
|
||||
@ -286,15 +286,15 @@ const CategoryManageDialog: React.FC<CategoryManageDialogProps> = ({
|
||||
) : data?.content && data.content.length > 0 ? (
|
||||
data.content.map((record) => (
|
||||
<TableRow key={record.id}>
|
||||
<TableCell className="font-medium">
|
||||
<TableCell width="160px" className="font-medium">
|
||||
{record.name}
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<TableCell width="140px">
|
||||
<code className="text-xs bg-muted px-2 py-0.5 rounded whitespace-nowrap">
|
||||
{record.code}
|
||||
</code>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<TableCell width="60px">
|
||||
{record.icon ? (
|
||||
<div className="flex items-center justify-center">
|
||||
<DynamicIcon name={record.icon} className="h-5 w-5" />
|
||||
@ -303,18 +303,18 @@ const CategoryManageDialog: React.FC<CategoryManageDialogProps> = ({
|
||||
<span className="text-muted-foreground text-sm">-</span>
|
||||
)}
|
||||
</TableCell>
|
||||
<TableCell className="text-center">{record.sort}</TableCell>
|
||||
<TableCell>
|
||||
<TableCell width="80px" className="text-center">{record.sort}</TableCell>
|
||||
<TableCell width="80px">
|
||||
{record.enabled ? (
|
||||
<CheckCircle2 className="h-4 w-4 text-green-500" />
|
||||
) : (
|
||||
<XCircle className="h-4 w-4 text-gray-400" />
|
||||
)}
|
||||
</TableCell>
|
||||
<TableCell className="max-w-[200px] truncate" title={record.description}>
|
||||
<TableCell width="150px" className="max-w-[150px] truncate" title={record.description}>
|
||||
{record.description || '-'}
|
||||
</TableCell>
|
||||
<TableCell className="sticky right-0 bg-background shadow-[-2px_0_4px_rgba(0,0,0,0.05)]">
|
||||
<TableCell width="100px" sticky>
|
||||
<div className="flex items-center justify-end gap-1">
|
||||
<Button
|
||||
variant="ghost"
|
||||
|
||||
@ -369,16 +369,16 @@ const FormDefinitionList: React.FC = () => {
|
||||
|
||||
{/* 表格 */}
|
||||
<div className="rounded-md border">
|
||||
<Table>
|
||||
<Table minWidth="1180px">
|
||||
<TableHeader>
|
||||
<TableRow>
|
||||
<TableHead className="w-[250px]">表单名称</TableHead>
|
||||
<TableHead className="w-[200px]">表单标识</TableHead>
|
||||
<TableHead className="w-[150px]">分类</TableHead>
|
||||
<TableHead className="w-[80px]">版本</TableHead>
|
||||
<TableHead className="w-[120px]">状态</TableHead>
|
||||
<TableHead className="w-[180px]">更新时间</TableHead>
|
||||
<TableHead className="w-[100px] text-right">操作</TableHead>
|
||||
<TableHead width="250px">表单名称</TableHead>
|
||||
<TableHead width="200px">表单标识</TableHead>
|
||||
<TableHead width="150px">分类</TableHead>
|
||||
<TableHead width="80px">版本</TableHead>
|
||||
<TableHead width="120px">状态</TableHead>
|
||||
<TableHead width="180px">更新时间</TableHead>
|
||||
<TableHead width="200px" sticky>操作</TableHead>
|
||||
</TableRow>
|
||||
</TableHeader>
|
||||
<TableBody>
|
||||
@ -396,7 +396,7 @@ const FormDefinitionList: React.FC = () => {
|
||||
const categoryInfo = getCategoryInfo(record.categoryId);
|
||||
return (
|
||||
<TableRow key={record.id} className="hover:bg-muted/50">
|
||||
<TableCell>
|
||||
<TableCell width="250px">
|
||||
<div>
|
||||
<div className="font-medium">{record.name}</div>
|
||||
{record.description && (
|
||||
@ -406,10 +406,10 @@ const FormDefinitionList: React.FC = () => {
|
||||
)}
|
||||
</div>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<TableCell width="200px">
|
||||
<code className="text-xs bg-muted px-2 py-1 rounded">{record.key}</code>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<TableCell width="150px">
|
||||
{categoryInfo ? (
|
||||
<div className="flex items-center gap-2">
|
||||
<Folder className="h-4 w-4 text-muted-foreground" />
|
||||
@ -419,16 +419,16 @@ const FormDefinitionList: React.FC = () => {
|
||||
<span className="text-sm text-muted-foreground">-</span>
|
||||
)}
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<TableCell width="80px">
|
||||
<Badge variant="outline" className="font-mono">
|
||||
v{record.formVersion}
|
||||
</Badge>
|
||||
</TableCell>
|
||||
<TableCell>{getStatusBadge(record.status)}</TableCell>
|
||||
<TableCell className="text-sm text-muted-foreground">
|
||||
<TableCell width="120px">{getStatusBadge(record.status)}</TableCell>
|
||||
<TableCell width="180px" className="text-sm text-muted-foreground">
|
||||
{record.updateTime || record.createTime}
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<TableCell width="200px" sticky>
|
||||
<div className="flex items-center justify-end gap-2">
|
||||
<Button
|
||||
variant="ghost"
|
||||
|
||||
@ -150,7 +150,7 @@ const DepartmentPage: React.FC = () => {
|
||||
// 当前部门行
|
||||
rows.push(
|
||||
<TableRow key={dept.id} className="hover:bg-muted/50">
|
||||
<TableCell>
|
||||
<TableCell width="250px">
|
||||
<div className="flex items-center gap-2" style={{ paddingLeft: `${level * 24}px` }}>
|
||||
{hasChildren ? (
|
||||
<button
|
||||
@ -169,16 +169,16 @@ const DepartmentPage: React.FC = () => {
|
||||
<span className="font-medium">{dept.name}</span>
|
||||
</div>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<TableCell width="150px">
|
||||
<code className="text-sm bg-muted px-2 py-0.5 rounded">{dept.code}</code>
|
||||
</TableCell>
|
||||
<TableCell className="text-sm max-w-[200px] truncate" title={dept.description}>
|
||||
<TableCell width="200px" className="text-sm max-w-[200px] truncate" title={dept.description}>
|
||||
{dept.description || '-'}
|
||||
</TableCell>
|
||||
<TableCell className="text-center">{dept.sort}</TableCell>
|
||||
<TableCell>{dept.leaderName || '-'}</TableCell>
|
||||
<TableCell>{getStatusBadge(dept.enabled)}</TableCell>
|
||||
<TableCell className="text-right">
|
||||
<TableCell width="100px" className="text-center">{dept.sort}</TableCell>
|
||||
<TableCell width="120px">{dept.leaderName || '-'}</TableCell>
|
||||
<TableCell width="100px">{getStatusBadge(dept.enabled)}</TableCell>
|
||||
<TableCell width="200px" sticky>
|
||||
<div className="flex justify-end gap-2">
|
||||
<Button
|
||||
variant="ghost"
|
||||
@ -291,16 +291,16 @@ const DepartmentPage: React.FC = () => {
|
||||
<CardContent>
|
||||
{/* 表格 */}
|
||||
<div className="rounded-md border">
|
||||
<Table>
|
||||
<Table minWidth="1120px">
|
||||
<TableHeader>
|
||||
<TableRow>
|
||||
<TableHead className="w-[250px]">部门名称</TableHead>
|
||||
<TableHead className="w-[150px]">部门编码</TableHead>
|
||||
<TableHead className="w-[200px]">部门描述</TableHead>
|
||||
<TableHead className="w-[100px] text-center">排序</TableHead>
|
||||
<TableHead className="w-[120px]">负责人</TableHead>
|
||||
<TableHead className="w-[100px]">状态</TableHead>
|
||||
<TableHead className="text-right">操作</TableHead>
|
||||
<TableHead width="250px">部门名称</TableHead>
|
||||
<TableHead width="150px">部门编码</TableHead>
|
||||
<TableHead width="200px">部门描述</TableHead>
|
||||
<TableHead width="100px" className="text-center">排序</TableHead>
|
||||
<TableHead width="120px">负责人</TableHead>
|
||||
<TableHead width="100px">状态</TableHead>
|
||||
<TableHead width="200px" sticky>操作</TableHead>
|
||||
</TableRow>
|
||||
</TableHeader>
|
||||
<TableBody>
|
||||
|
||||
@ -147,7 +147,7 @@ const MenuPage: React.FC = () => {
|
||||
// 当前菜单行
|
||||
rows.push(
|
||||
<TableRow key={menu.id} className="hover:bg-muted/50">
|
||||
<TableCell>
|
||||
<TableCell width="250px">
|
||||
<div className="flex items-center gap-2" style={{ paddingLeft: `${level * 24}px` }}>
|
||||
{hasChildren ? (
|
||||
<button
|
||||
@ -166,20 +166,20 @@ const MenuPage: React.FC = () => {
|
||||
<span className="font-medium">{menu.name}</span>
|
||||
</div>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<TableCell width="80px">
|
||||
{menu.icon && (
|
||||
<div className="flex items-center">
|
||||
{getIconComponent(menu.icon)}
|
||||
</div>
|
||||
)}
|
||||
</TableCell>
|
||||
<TableCell className="text-sm">{menu.path || '-'}</TableCell>
|
||||
<TableCell className="text-sm max-w-[200px] truncate" title={menu.component}>
|
||||
<TableCell width="200px" className="text-sm">{menu.path || '-'}</TableCell>
|
||||
<TableCell width="200px" className="text-sm max-w-[200px] truncate" title={menu.component}>
|
||||
{menu.component || '-'}
|
||||
</TableCell>
|
||||
<TableCell>{getTypeBadge(menu.type)}</TableCell>
|
||||
<TableCell className="text-center">{menu.sort}</TableCell>
|
||||
<TableCell className="text-right">
|
||||
<TableCell width="100px">{getTypeBadge(menu.type)}</TableCell>
|
||||
<TableCell width="100px" className="text-center">{menu.sort}</TableCell>
|
||||
<TableCell width="200px" sticky>
|
||||
<div className="flex justify-end gap-2">
|
||||
<Button
|
||||
variant="ghost"
|
||||
@ -304,16 +304,16 @@ const MenuPage: React.FC = () => {
|
||||
<CardContent>
|
||||
{/* 表格 */}
|
||||
<div className="rounded-md border">
|
||||
<Table>
|
||||
<Table minWidth="1130px">
|
||||
<TableHeader>
|
||||
<TableRow>
|
||||
<TableHead className="w-[250px]">菜单名称</TableHead>
|
||||
<TableHead className="w-[80px]">图标</TableHead>
|
||||
<TableHead className="w-[200px]">路由地址</TableHead>
|
||||
<TableHead className="w-[200px]">组件路径</TableHead>
|
||||
<TableHead className="w-[100px]">菜单类型</TableHead>
|
||||
<TableHead className="w-[100px] text-center">显示排序</TableHead>
|
||||
<TableHead className="text-right">操作</TableHead>
|
||||
<TableHead width="250px">菜单名称</TableHead>
|
||||
<TableHead width="80px">图标</TableHead>
|
||||
<TableHead width="200px">路由地址</TableHead>
|
||||
<TableHead width="200px">组件路径</TableHead>
|
||||
<TableHead width="100px">菜单类型</TableHead>
|
||||
<TableHead width="100px" className="text-center">显示排序</TableHead>
|
||||
<TableHead width="200px" sticky>操作</TableHead>
|
||||
</TableRow>
|
||||
</TableHeader>
|
||||
<TableBody>
|
||||
|
||||
@ -161,12 +161,12 @@ const TagDialog: React.FC<TagDialogProps> = ({
|
||||
</Button>
|
||||
</div>
|
||||
<div className="rounded-md border">
|
||||
<Table>
|
||||
<Table minWidth="650px">
|
||||
<TableHeader>
|
||||
<TableRow>
|
||||
<TableHead className="w-[200px]">标签名称</TableHead>
|
||||
<TableHead>描述</TableHead>
|
||||
<TableHead className="w-[150px] text-right">操作</TableHead>
|
||||
<TableHead width="200px">标签名称</TableHead>
|
||||
<TableHead width="300px">描述</TableHead>
|
||||
<TableHead width="150px" sticky>操作</TableHead>
|
||||
</TableRow>
|
||||
</TableHeader>
|
||||
<TableBody>
|
||||
@ -182,7 +182,7 @@ const TagDialog: React.FC<TagDialogProps> = ({
|
||||
) : tags.length > 0 ? (
|
||||
tags.map((tag) => (
|
||||
<TableRow key={tag.id}>
|
||||
<TableCell>
|
||||
<TableCell width="200px">
|
||||
<Badge
|
||||
variant="outline"
|
||||
style={{ backgroundColor: tag.color, color: '#fff' }}
|
||||
@ -190,10 +190,10 @@ const TagDialog: React.FC<TagDialogProps> = ({
|
||||
{tag.name}
|
||||
</Badge>
|
||||
</TableCell>
|
||||
<TableCell className="max-w-[300px] truncate" title={tag.description}>
|
||||
<TableCell width="300px" className="max-w-[300px] truncate" title={tag.description}>
|
||||
{tag.description || '-'}
|
||||
</TableCell>
|
||||
<TableCell className="text-right">
|
||||
<TableCell width="150px" sticky>
|
||||
<div className="flex justify-end gap-2">
|
||||
<Button
|
||||
variant="ghost"
|
||||
|
||||
@ -246,16 +246,16 @@ const RolePage: React.FC = () => {
|
||||
|
||||
{/* 表格 */}
|
||||
<div className="rounded-md border">
|
||||
<Table>
|
||||
<Table minWidth="1180px">
|
||||
<TableHeader>
|
||||
<TableRow>
|
||||
<TableHead className="w-[150px]">角色编码</TableHead>
|
||||
<TableHead className="w-[150px]">角色名称</TableHead>
|
||||
<TableHead className="w-[200px]">标签</TableHead>
|
||||
<TableHead className="w-[100px]">排序</TableHead>
|
||||
<TableHead className="w-[200px]">描述</TableHead>
|
||||
<TableHead className="w-[180px]">创建时间</TableHead>
|
||||
<TableHead className="text-right">操作</TableHead>
|
||||
<TableHead width="150px">角色编码</TableHead>
|
||||
<TableHead width="150px">角色名称</TableHead>
|
||||
<TableHead width="200px">标签</TableHead>
|
||||
<TableHead width="100px">排序</TableHead>
|
||||
<TableHead width="200px">描述</TableHead>
|
||||
<TableHead width="180px">创建时间</TableHead>
|
||||
<TableHead width="200px" sticky>操作</TableHead>
|
||||
</TableRow>
|
||||
</TableHeader>
|
||||
<TableBody>
|
||||
@ -273,11 +273,11 @@ const RolePage: React.FC = () => {
|
||||
const isAdmin = record.code === 'admin';
|
||||
return (
|
||||
<TableRow key={record.id} className="hover:bg-muted/50">
|
||||
<TableCell className="font-medium">
|
||||
<TableCell width="150px" className="font-medium">
|
||||
<code className="text-sm">{record.code}</code>
|
||||
</TableCell>
|
||||
<TableCell>{record.name}</TableCell>
|
||||
<TableCell>
|
||||
<TableCell width="150px">{record.name}</TableCell>
|
||||
<TableCell width="200px">
|
||||
<div className="flex flex-wrap gap-1">
|
||||
{record.tags && record.tags.length > 0 ? (
|
||||
record.tags.map(tag => (
|
||||
@ -295,14 +295,14 @@ const RolePage: React.FC = () => {
|
||||
)}
|
||||
</div>
|
||||
</TableCell>
|
||||
<TableCell>{record.sort}</TableCell>
|
||||
<TableCell className="text-sm max-w-[200px] truncate" title={record.description}>
|
||||
<TableCell width="100px">{record.sort}</TableCell>
|
||||
<TableCell width="200px" className="text-sm max-w-[200px] truncate" title={record.description}>
|
||||
{record.description || '-'}
|
||||
</TableCell>
|
||||
<TableCell className="text-sm">
|
||||
<TableCell width="180px" className="text-sm">
|
||||
{record.createTime ? dayjs(record.createTime).format('YYYY-MM-DD HH:mm') : '-'}
|
||||
</TableCell>
|
||||
<TableCell className="text-right">
|
||||
<TableCell width="200px" sticky>
|
||||
<div className="flex justify-end gap-2">
|
||||
<Button
|
||||
variant="ghost"
|
||||
|
||||
@ -315,18 +315,18 @@ const UserPage: React.FC = () => {
|
||||
|
||||
{/* 表格 */}
|
||||
<div className="rounded-md border">
|
||||
<Table>
|
||||
<Table minWidth="1340px">
|
||||
<TableHeader>
|
||||
<TableRow>
|
||||
<TableHead className="w-[120px]">用户名</TableHead>
|
||||
<TableHead className="w-[150px]">昵称</TableHead>
|
||||
<TableHead className="w-[200px]">邮箱</TableHead>
|
||||
<TableHead className="w-[120px]">手机号</TableHead>
|
||||
<TableHead className="w-[120px]">部门</TableHead>
|
||||
<TableHead className="w-[150px]">角色</TableHead>
|
||||
<TableHead className="w-[100px]">状态</TableHead>
|
||||
<TableHead className="w-[180px]">创建时间</TableHead>
|
||||
<TableHead className="text-right">操作</TableHead>
|
||||
<TableHead width="120px">用户名</TableHead>
|
||||
<TableHead width="150px">昵称</TableHead>
|
||||
<TableHead width="200px">邮箱</TableHead>
|
||||
<TableHead width="120px">手机号</TableHead>
|
||||
<TableHead width="120px">部门</TableHead>
|
||||
<TableHead width="150px">角色</TableHead>
|
||||
<TableHead width="100px">状态</TableHead>
|
||||
<TableHead width="180px">创建时间</TableHead>
|
||||
<TableHead width="200px" sticky>操作</TableHead>
|
||||
</TableRow>
|
||||
</TableHeader>
|
||||
<TableBody>
|
||||
@ -344,14 +344,14 @@ const UserPage: React.FC = () => {
|
||||
const isAdmin = record.username === 'admin';
|
||||
return (
|
||||
<TableRow key={record.id} className="hover:bg-muted/50">
|
||||
<TableCell className="font-medium">
|
||||
<TableCell width="120px" className="font-medium">
|
||||
{record.username}
|
||||
</TableCell>
|
||||
<TableCell>{record.nickname || '-'}</TableCell>
|
||||
<TableCell className="text-sm">{record.email || '-'}</TableCell>
|
||||
<TableCell className="text-sm">{record.phone || '-'}</TableCell>
|
||||
<TableCell>{record.departmentName || '-'}</TableCell>
|
||||
<TableCell>
|
||||
<TableCell width="150px">{record.nickname || '-'}</TableCell>
|
||||
<TableCell width="200px" className="text-sm">{record.email || '-'}</TableCell>
|
||||
<TableCell width="120px" className="text-sm">{record.phone || '-'}</TableCell>
|
||||
<TableCell width="120px">{record.departmentName || '-'}</TableCell>
|
||||
<TableCell width="150px">
|
||||
<div className="flex flex-wrap gap-1">
|
||||
{record.roles && record.roles.length > 0 ? (
|
||||
record.roles.map(role => (
|
||||
@ -364,11 +364,11 @@ const UserPage: React.FC = () => {
|
||||
)}
|
||||
</div>
|
||||
</TableCell>
|
||||
<TableCell>{getStatusBadge(record.enabled)}</TableCell>
|
||||
<TableCell className="text-sm">
|
||||
<TableCell width="100px">{getStatusBadge(record.enabled)}</TableCell>
|
||||
<TableCell width="180px" className="text-sm">
|
||||
{record.createTime ? dayjs(record.createTime).format('YYYY-MM-DD HH:mm') : '-'}
|
||||
</TableCell>
|
||||
<TableCell className="text-right">
|
||||
<TableCell width="200px" sticky>
|
||||
<div className="flex justify-end gap-2">
|
||||
<Button
|
||||
variant="ghost"
|
||||
|
||||
@ -299,18 +299,18 @@ const CategoryManageDialog: React.FC<CategoryManageDialogProps> = ({
|
||||
</div>
|
||||
|
||||
{/* 分类列表 */}
|
||||
<div className="rounded-md border overflow-x-auto">
|
||||
<Table>
|
||||
<div className="rounded-md border">
|
||||
<Table minWidth="910px">
|
||||
<TableHeader>
|
||||
<TableRow>
|
||||
<TableHead className="w-[160px]">分类名称</TableHead>
|
||||
<TableHead className="w-[140px]">分类代码</TableHead>
|
||||
<TableHead className="w-[60px]">图标</TableHead>
|
||||
<TableHead className="w-[240px]">支持触发方式</TableHead>
|
||||
<TableHead className="w-[80px] text-center">排序</TableHead>
|
||||
<TableHead className="w-[80px]">状态</TableHead>
|
||||
<TableHead className="min-w-[150px]">描述</TableHead>
|
||||
<TableHead className="w-[100px] text-right sticky right-0 bg-background shadow-[-2px_0_4px_rgba(0,0,0,0.05)]">操作</TableHead>
|
||||
<TableHead width="160px">分类名称</TableHead>
|
||||
<TableHead width="140px">分类代码</TableHead>
|
||||
<TableHead width="60px">图标</TableHead>
|
||||
<TableHead width="240px">支持触发方式</TableHead>
|
||||
<TableHead width="80px" className="text-center">排序</TableHead>
|
||||
<TableHead width="80px">状态</TableHead>
|
||||
<TableHead width="150px">描述</TableHead>
|
||||
<TableHead width="100px" sticky>操作</TableHead>
|
||||
</TableRow>
|
||||
</TableHeader>
|
||||
<TableBody>
|
||||
@ -323,13 +323,13 @@ const CategoryManageDialog: React.FC<CategoryManageDialogProps> = ({
|
||||
) : data?.content && data.content.length > 0 ? (
|
||||
data.content.map((record) => (
|
||||
<TableRow key={record.id}>
|
||||
<TableCell className="font-medium text-sm">{record.name}</TableCell>
|
||||
<TableCell>
|
||||
<TableCell width="160px" className="font-medium text-sm">{record.name}</TableCell>
|
||||
<TableCell width="140px">
|
||||
<code className="text-xs bg-muted px-2 py-0.5 rounded whitespace-nowrap">
|
||||
{record.code}
|
||||
</code>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<TableCell width="60px">
|
||||
{record.icon ? (
|
||||
<div className="flex items-center justify-center">
|
||||
<DynamicIcon name={record.icon} className="h-5 w-5" />
|
||||
@ -338,11 +338,11 @@ const CategoryManageDialog: React.FC<CategoryManageDialogProps> = ({
|
||||
<span className="text-muted-foreground text-sm">-</span>
|
||||
)}
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<TableCell width="240px">
|
||||
{renderTriggers(record.supportedTriggers)}
|
||||
</TableCell>
|
||||
<TableCell className="text-center">{record.sort}</TableCell>
|
||||
<TableCell>
|
||||
<TableCell width="80px" className="text-center">{record.sort}</TableCell>
|
||||
<TableCell width="80px">
|
||||
<Badge
|
||||
variant={record.enabled ? "success" : "secondary"}
|
||||
className="inline-flex items-center gap-1 text-xs whitespace-nowrap"
|
||||
@ -360,10 +360,10 @@ const CategoryManageDialog: React.FC<CategoryManageDialogProps> = ({
|
||||
)}
|
||||
</Badge>
|
||||
</TableCell>
|
||||
<TableCell className="max-w-[200px] truncate text-sm" title={record.description}>
|
||||
<TableCell width="150px" className="max-w-[150px] truncate text-sm" title={record.description}>
|
||||
{record.description || '-'}
|
||||
</TableCell>
|
||||
<TableCell className="sticky right-0 bg-background shadow-[-2px_0_4px_rgba(0,0,0,0.05)]">
|
||||
<TableCell width="100px" sticky>
|
||||
<div className="flex items-center justify-end gap-1">
|
||||
<Button
|
||||
variant="ghost"
|
||||
|
||||
@ -392,16 +392,16 @@ const WorkflowDefinitionList: React.FC = () => {
|
||||
|
||||
{/* 表格 */}
|
||||
<div className="rounded-md border">
|
||||
<Table>
|
||||
<Table minWidth="1000px">
|
||||
<TableHeader>
|
||||
<TableRow>
|
||||
<TableHead className="w-[200px]">流程名称</TableHead>
|
||||
<TableHead className="w-[150px]">流程标识</TableHead>
|
||||
<TableHead className="w-[120px]">分类</TableHead>
|
||||
<TableHead className="w-[80px]">版本</TableHead>
|
||||
<TableHead className="w-[120px]">状态</TableHead>
|
||||
<TableHead>描述</TableHead>
|
||||
<TableHead className="text-right">操作</TableHead>
|
||||
<TableHead width="200px">流程名称</TableHead>
|
||||
<TableHead width="150px">流程标识</TableHead>
|
||||
<TableHead width="120px">分类</TableHead>
|
||||
<TableHead width="80px">版本</TableHead>
|
||||
<TableHead width="120px">状态</TableHead>
|
||||
<TableHead width="150px">描述</TableHead>
|
||||
<TableHead width="180px" sticky>操作</TableHead>
|
||||
</TableRow>
|
||||
</TableHeader>
|
||||
<TableBody>
|
||||
@ -420,27 +420,27 @@ const WorkflowDefinitionList: React.FC = () => {
|
||||
const isDraft = record.status === 'DRAFT';
|
||||
return (
|
||||
<TableRow key={record.id} className="hover:bg-muted/50">
|
||||
<TableCell className="font-medium">{record.name}</TableCell>
|
||||
<TableCell>
|
||||
<TableCell width="200px" className="font-medium">{record.name}</TableCell>
|
||||
<TableCell width="150px">
|
||||
<code className="relative rounded bg-muted px-[0.3rem] py-[0.2rem] font-mono text-sm font-semibold">
|
||||
{record.key}
|
||||
</code>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<TableCell width="120px">
|
||||
{categoryInfo ? (
|
||||
<Badge variant="outline">{categoryInfo.name}</Badge>
|
||||
) : (
|
||||
<Badge variant="outline">未分类</Badge>
|
||||
)}
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<TableCell width="80px">
|
||||
<span className="font-mono text-sm">{record.flowVersion || 1}</span>
|
||||
</TableCell>
|
||||
<TableCell>{getStatusBadge(record.status || 'DRAFT')}</TableCell>
|
||||
<TableCell>
|
||||
<TableCell width="120px">{getStatusBadge(record.status || 'DRAFT')}</TableCell>
|
||||
<TableCell width="150px">
|
||||
<span className="text-sm line-clamp-1">{record.description || '-'}</span>
|
||||
</TableCell>
|
||||
<TableCell className="text-right">
|
||||
<TableCell width="180px" sticky>
|
||||
<div className="flex justify-end gap-2">
|
||||
{isDraft ? (
|
||||
<>
|
||||
|
||||
@ -90,24 +90,24 @@ const HistoryModal: React.FC<HistoryModalProps> = ({ visible, onCancel, workflow
|
||||
) : (
|
||||
<>
|
||||
<div className="border rounded-lg">
|
||||
<Table>
|
||||
<Table minWidth="760px">
|
||||
<TableHeader>
|
||||
<TableRow>
|
||||
<TableHead className="w-[200px]">业务标识</TableHead>
|
||||
<TableHead className="w-[100px]">状态</TableHead>
|
||||
<TableHead className="w-[180px]">开始时间</TableHead>
|
||||
<TableHead className="w-[180px]">结束时间</TableHead>
|
||||
<TableHead className="w-[100px] text-right">操作</TableHead>
|
||||
<TableHead width="200px">业务标识</TableHead>
|
||||
<TableHead width="100px">状态</TableHead>
|
||||
<TableHead width="180px">开始时间</TableHead>
|
||||
<TableHead width="180px">结束时间</TableHead>
|
||||
<TableHead width="100px" sticky>操作</TableHead>
|
||||
</TableRow>
|
||||
</TableHeader>
|
||||
<TableBody>
|
||||
{data.map((record) => (
|
||||
<TableRow key={record.id}>
|
||||
<TableCell className="font-medium">{record.businessKey}</TableCell>
|
||||
<TableCell>{getStatusBadge(record.status)}</TableCell>
|
||||
<TableCell>{record.startTime}</TableCell>
|
||||
<TableCell>{record.endTime || '暂无'}</TableCell>
|
||||
<TableCell className="text-right">
|
||||
<TableCell width="200px" className="font-medium">{record.businessKey}</TableCell>
|
||||
<TableCell width="100px">{getStatusBadge(record.status)}</TableCell>
|
||||
<TableCell width="180px">{record.startTime}</TableCell>
|
||||
<TableCell width="180px">{record.endTime || '暂无'}</TableCell>
|
||||
<TableCell width="100px" sticky>
|
||||
<Button
|
||||
variant="link"
|
||||
size="sm"
|
||||
|
||||
@ -213,14 +213,14 @@ const WorkflowInstanceList: React.FC = () => {
|
||||
|
||||
{/* 表格 */}
|
||||
<div className="rounded-md border">
|
||||
<Table>
|
||||
<Table minWidth="850px">
|
||||
<TableHeader>
|
||||
<TableRow>
|
||||
<TableHead className="w-[200px]">流程名称</TableHead>
|
||||
<TableHead className="w-[150px]">业务标识</TableHead>
|
||||
<TableHead className="w-[180px]">最后执行时间</TableHead>
|
||||
<TableHead className="w-[120px]">执行状态</TableHead>
|
||||
<TableHead className="text-right">操作</TableHead>
|
||||
<TableHead width="200px">流程名称</TableHead>
|
||||
<TableHead width="150px">业务标识</TableHead>
|
||||
<TableHead width="180px">最后执行时间</TableHead>
|
||||
<TableHead width="120px">执行状态</TableHead>
|
||||
<TableHead width="200px" sticky>操作</TableHead>
|
||||
</TableRow>
|
||||
</TableHeader>
|
||||
<TableBody>
|
||||
@ -236,8 +236,8 @@ const WorkflowInstanceList: React.FC = () => {
|
||||
) : data?.content && data.content.length > 0 ? (
|
||||
data.content.map((record) => (
|
||||
<TableRow key={record.id} className="hover:bg-muted/50">
|
||||
<TableCell className="font-medium">{record.name}</TableCell>
|
||||
<TableCell>
|
||||
<TableCell width="200px" className="font-medium">{record.name}</TableCell>
|
||||
<TableCell width="150px">
|
||||
{record.businessKey ? (
|
||||
<code className="relative rounded bg-muted px-[0.3rem] py-[0.2rem] font-mono text-sm font-semibold">
|
||||
{record.businessKey}
|
||||
@ -246,15 +246,15 @@ const WorkflowInstanceList: React.FC = () => {
|
||||
<span className="text-muted-foreground">-</span>
|
||||
)}
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<TableCell width="180px">
|
||||
<span className="text-sm">
|
||||
{record.lastExecutionTime
|
||||
? dayjs(record.lastExecutionTime).format('YYYY-MM-DD HH:mm:ss')
|
||||
: '-'}
|
||||
</span>
|
||||
</TableCell>
|
||||
<TableCell>{getStatusBadge(record.lastExecutionStatus)}</TableCell>
|
||||
<TableCell className="text-right">
|
||||
<TableCell width="120px">{getStatusBadge(record.lastExecutionStatus)}</TableCell>
|
||||
<TableCell width="200px" sticky>
|
||||
<div className="flex justify-end gap-2">
|
||||
<Button
|
||||
variant="ghost"
|
||||
|
||||
@ -255,13 +255,14 @@ const NodeDesignList: React.FC = () => {
|
||||
</CardHeader>
|
||||
<CardContent>
|
||||
<div className="rounded-md border">
|
||||
<Table>
|
||||
<Table minWidth="930px">
|
||||
<TableHeader>
|
||||
<TableRow>
|
||||
{columns.map((column) => (
|
||||
<TableHead
|
||||
key={column.accessorKey || column.id}
|
||||
style={{width: column.size}}
|
||||
width={`${column.size}px`}
|
||||
sticky={column.id === 'actions'}
|
||||
>
|
||||
{column.header}
|
||||
</TableHead>
|
||||
@ -274,6 +275,8 @@ const NodeDesignList: React.FC = () => {
|
||||
{columns.map((column) => (
|
||||
<TableCell
|
||||
key={column.accessorKey || column.id}
|
||||
width={`${column.size}px`}
|
||||
sticky={column.id === 'actions'}
|
||||
>
|
||||
{column.cell
|
||||
? column.cell({row: {original: item}})
|
||||
|
||||
Loading…
Reference in New Issue
Block a user