1
0

2 Commits

Author SHA1 Message Date
80a24513ab feat(web): 添加资源 ID 并优化相关功能
- 在 WareController 中添加 resourceId 字段
- 更新前端市场页面,将 targetId映射为 resourceId
- 修改权限管理页面图标
- 移除不必要的 console.log 语句
2024-12-18 10:49:37 +08:00
608ab5f37e feat(web): 更新数据市场展示逻辑
- 公开数据采用卡片模式展示,增加申请授权功能
- 后端增加 icon 字段,用于展示数据资源图标
2024-12-18 09:49:58 +08:00
4 changed files with 108 additions and 82 deletions

View File

@@ -7,81 +7,7 @@ import {
permissionStateMapping,
timeField
} from "../../components/constants.js";
function listColumns() {
return {
columns: [
{
name: 'name',
label: '名称',
width: 200,
},
{
name: 'description',
label: '描述',
},
{
visibleOn: '${!public}',
...mappingField('state', '状态', permissionStateMapping)
},
timeField('createdTime', '创建时间'),
operationField('操作', undefined, [
{
type: 'action',
label: '查看',
level: 'link',
...wareDetailDialog(),
},
{
visibleOn: "${state === 'CHECKING'}",
type: 'action',
label: '撤销',
level: 'link',
confirmTitle: '确认撤销',
confirmText: '确认撤销名称为「${name}」的确权申请吗?',
actionType: 'ajax',
api: apiGet('${base}/ware/retract/${id}'),
},
{
visibleOn: "${state === 'DRAFT' || state === 'REJECT'}",
type: 'action',
label: '提交',
level: 'link',
confirmTitle: '确认提交',
confirmText: '确认提交名称为「${name}」的确权申请吗?',
actionType: 'ajax',
api: apiGet('${base}/ware/submit/${id}'),
},
{
visibleOn: "${!public}",
type: 'dropdown-button',
level: 'link',
icon: 'fa fa-ellipsis-h',
hideCaret: true,
trigger: 'hover',
buttons: [
{
disabledOn: "${state !== 'DRAFT'}",
type: 'action',
label: '编辑',
level: 'link',
...wareEditeDialog(),
},
{
disabledOn: "${state === 'CHECKING'}",
type: 'action',
label: "删除",
confirmTitle: '确认删除',
confirmText: '确认删除名称为「${name}」的确权申请吗?删除后对应的数据资源处于未确权状态。',
actionType: 'ajax',
api: apiGet('${base}/ware/remove/${id}'),
},
]
},
]),
]
}
}
import {authenticationAddDialog} from "../../components/permission/dialog-permission.js";
export function tabMarket() {
return {
@@ -96,15 +22,44 @@ export function tabMarket() {
title: '公开数据',
body: {
type: 'crud',
api: apiGet('${base}/ware/list_public'),
api: {
...apiGet('${base}/ware/list_public'),
adaptor: (payload, response, api, context) => {
payload.data = payload.data.map(i => {
return {
...i,
targetId: i.resourceId,
}
})
return payload
}
},
...crudCommonOptions(),
headerToolbar: [
'reload',
],
data: {
public: true
mode: 'cards',
card: {
header: {
title: '${name}',
subTitle: '${createdTime}',
description: '${description}',
avatar: '${icon}',
avatarClassName: 'pull-left thumb-md avatar b-3x m-r'
},
actions: [
{
type: 'action',
label: '查看',
...wareDetailDialog(),
},
{
type: 'action',
label: '申请授权',
...authenticationAddDialog(),
}
]
},
...listColumns(),
}
},
{
@@ -122,7 +77,73 @@ export function tabMarket() {
...wareAddDialog()
},
],
...listColumns(),
columns: [
{
name: 'name',
label: '名称',
width: 200,
},
{
name: 'description',
label: '描述',
},
mappingField('state', '状态', permissionStateMapping),
timeField('createdTime', '创建时间'),
operationField('操作', undefined, [
{
type: 'action',
label: '查看',
level: 'link',
...wareDetailDialog(),
},
{
visibleOn: "${state === 'CHECKING'}",
type: 'action',
label: '撤销',
level: 'link',
confirmTitle: '确认撤销',
confirmText: '确认撤销名称为「${name}」的确权申请吗?',
actionType: 'ajax',
api: apiGet('${base}/ware/retract/${id}'),
},
{
visibleOn: "${state === 'DRAFT' || state === 'REJECT'}",
type: 'action',
label: '提交',
level: 'link',
confirmTitle: '确认提交',
confirmText: '确认提交名称为「${name}」的确权申请吗?',
actionType: 'ajax',
api: apiGet('${base}/ware/submit/${id}'),
},
{
visibleOn: "${!public}",
type: 'dropdown-button',
level: 'link',
icon: 'fa fa-ellipsis-h',
hideCaret: true,
trigger: 'hover',
buttons: [
{
disabledOn: "${state !== 'DRAFT'}",
type: 'action',
label: '编辑',
level: 'link',
...wareEditeDialog(),
},
{
disabledOn: "${state === 'CHECKING'}",
type: 'action',
label: "删除",
confirmTitle: '确认删除',
confirmText: '确认删除名称为「${name}」的确权申请吗?删除后对应的数据资源处于未确权状态。',
actionType: 'ajax',
api: apiGet('${base}/ware/remove/${id}'),
},
]
},
]),
]
}
},
]

View File

@@ -27,7 +27,7 @@ export function tabPermissions() {
return {
visibleOn: userOnly,
title: '权属管理',
icon: 'fa fa-user-shield',
icon: 'fa fa-key',
reload: true,
body: {
type: 'tabs',

View File

@@ -43,7 +43,7 @@ public class WareController extends SimpleControllerSupport<Ware, WareController
}
@GetMapping(LIST + "_public")
public AmisResponse<ImmutableList<ListItem>> listPublic() throws Exception {
public AmisResponse<ImmutableList<ListItem>> listPublic() {
return AmisResponse.responseSuccess(wareService.listPublic().collect(this::toListItem));
}
@@ -77,7 +77,9 @@ public class WareController extends SimpleControllerSupport<Ware, WareController
item.setId(entity.getId());
item.setName(entity.getName());
item.setDescription(entity.getDescription());
item.setIcon(StrUtil.format("{}/upload/download/{}", hostConfiguration.getPrefix(), entity.getIcon().getId()));
item.setState(entity.getState().name());
item.setResourceId(entity.getResource().getId());
item.setCreatedTime(entity.getCreatedTime());
item.setCreatedUsername(entity.getCreatedUser().getUsername());
return item;
@@ -117,6 +119,8 @@ public class WareController extends SimpleControllerSupport<Ware, WareController
private String name;
private String description;
private String state;
private String icon;
private Long resourceId;
}
@Data

View File

@@ -39,6 +39,7 @@ import org.springframework.data.jpa.domain.support.AuditingEntityListener;
@DynamicUpdate
@Table(name = Constants.TABLE_PREFIX + "ware")
@NamedEntityGraph(name = "ware.list", attributeNodes = {
@NamedAttributeNode(value = "icon"),
@NamedAttributeNode(value = "createdUser"),
})
@NamedEntityGraph(name = "ware.detail", attributeNodes = {