dashboard-shell-shell 3.0.5-test.12 → 3.0.5-test.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/icons/iconfont.css +4 -1
- package/assets/images/pl/dark/logo.png +0 -0
- package/assets/styles/global/_select.scss +1 -1
- package/assets/styles/global/_tooltip.scss +5 -1
- package/assets/translations/zh-hans.yaml +5 -4
- package/components/Drawer/ResourceDetailDrawer/ConfigTab.vue +22 -19
- package/components/ExplorerMembers.vue +10 -1
- package/components/GlobalRoleBindings.vue +1 -58
- package/components/Resource/Detail/TitleBar/index.vue +26 -23
- package/components/ResourceDetail/Masthead/index.vue +1 -1
- package/components/ResourceDetail/Masthead/latest.vue +1 -1
- package/components/ResourceDetail/Masthead/legacy.vue +4 -4
- package/components/SortableTable/index.vue +2 -2
- package/components/Tabbed/index.vue +5 -1
- package/components/auth/Principal.vue +8 -3
- package/components/auth/RoleDetailEdit.vue +1 -1
- package/components/form/ArrayList.vue +163 -147
- package/components/form/Command.vue +4 -5
- package/components/form/Footer.vue +1 -0
- package/components/form/HealthCheck.vue +0 -2
- package/components/form/HookOption.vue +83 -58
- package/components/form/InputWithSelect.vue +8 -7
- package/components/form/KeyValue.vue +16 -2
- package/components/form/Labels.vue +1 -1
- package/components/form/MatchExpressions.vue +3 -4
- package/components/form/NameNsDescription.vue +1 -1
- package/components/form/Networking.vue +0 -1
- package/components/form/NodeAffinity.vue +29 -28
- package/components/form/PodAffinity.vue +19 -21
- package/components/form/Probe.vue +15 -11
- package/components/form/ResourceQuota/NamespaceRow.vue +1 -1
- package/components/form/ResourceQuota/Project.vue +1 -1
- package/components/form/ResourceQuota/ProjectRow.vue +1 -1
- package/components/form/ResourceSelector.vue +1 -1
- package/components/form/ServiceNameSelect.vue +1 -3
- package/components/form/ServicePorts.vue +149 -75
- package/components/form/Tolerations.vue +12 -9
- package/components/form/ValueFromResource.vue +110 -96
- package/components/nav/NamespaceFilter.vue +14 -19
- package/components/nav/TopLevelMenu.vue +98 -125
- package/config/router/navigation-guards/index.js +52 -3
- package/edit/autoscaling.horizontalpodautoscaler/external-metric.vue +1 -1
- package/edit/autoscaling.horizontalpodautoscaler/index.vue +3 -1
- package/edit/autoscaling.horizontalpodautoscaler/metric-identifier.vue +2 -2
- package/edit/autoscaling.horizontalpodautoscaler/metric-object-reference.vue +7 -5
- package/edit/autoscaling.horizontalpodautoscaler/metric-target.vue +5 -3
- package/edit/autoscaling.horizontalpodautoscaler/metrics-row.vue +2 -2
- package/edit/autoscaling.horizontalpodautoscaler/object-metric.vue +2 -2
- package/edit/autoscaling.horizontalpodautoscaler/pod-metric.vue +1 -1
- package/edit/autoscaling.horizontalpodautoscaler/resource-metric.vue +2 -2
- package/edit/networking.k8s.io.ingress/Certificate.vue +7 -5
- package/edit/networking.k8s.io.ingress/DefaultBackend.vue +2 -2
- package/edit/networking.k8s.io.ingress/Rule.vue +5 -11
- package/edit/networking.k8s.io.ingress/RulePath.vue +105 -96
- package/edit/networking.k8s.io.networkpolicy/PolicyRule.vue +3 -3
- package/edit/networking.k8s.io.networkpolicy/PolicyRulePort.vue +4 -2
- package/edit/networking.k8s.io.networkpolicy/PolicyRuleTarget.vue +12 -11
- package/edit/networking.k8s.io.networkpolicy/index.vue +1 -1
- package/edit/secret/index.vue +2 -2
- package/edit/service.vue +4 -1
- package/edit/storage.k8s.io.storageclass/index.vue +10 -8
- package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/aws-ebs.vue +34 -27
- package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/gce-pd.vue +15 -13
- package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/vsphere-volume.vue +41 -39
- package/edit/workload/Job.vue +27 -29
- package/edit/workload/Upgrading.vue +3 -3
- package/edit/workload/index.vue +2 -2
- package/edit/workload/storage/Mount.vue +1 -0
- package/edit/workload/storage/awsElasticBlockStore.vue +9 -7
- package/edit/workload/storage/azureDisk.vue +14 -10
- package/edit/workload/storage/azureFile.vue +9 -7
- package/edit/workload/storage/csi/index.vue +6 -9
- package/edit/workload/storage/emptyDir.vue +7 -5
- package/edit/workload/storage/gcePersistentDisk.vue +9 -7
- package/edit/workload/storage/hostPath.vue +7 -5
- package/edit/workload/storage/nfs.vue +8 -6
- package/edit/workload/storage/persistentVolumeClaim/index.vue +12 -10
- package/edit/workload/storage/persistentVolumeClaim/persistentvolumeclaim.vue +18 -15
- package/edit/workload/storage/secret.vue +9 -6
- package/edit/workload/storage/vsphereVolume.vue +11 -7
- package/initialize/app-extended.js +7 -1
- package/package.json +1 -1
- package/pages/account/index.vue +90 -56
- package/pages/home.vue +3 -4
- package/rancher-components/Banner/Banner.vue +4 -1
- package/rancher-components/LabeledTooltip/LabeledTooltip.vue +31 -2
- package/store/i18n.js +1 -0
- package/utils/errorTranslate.json +82 -2
|
Binary file
|
|
@@ -147,7 +147,7 @@
|
|
|
147
147
|
}
|
|
148
148
|
|
|
149
149
|
.v-popper__popper.v-popper--theme-dropdown {
|
|
150
|
-
border-radius:
|
|
150
|
+
border-radius: 0px;
|
|
151
151
|
z-index: z-index('tooltip');
|
|
152
152
|
border: 1px solid #d9d9d9 !important;
|
|
153
153
|
|
|
@@ -157,6 +157,10 @@
|
|
|
157
157
|
}
|
|
158
158
|
}
|
|
159
159
|
}
|
|
160
|
+
.v-popper__popper .v-popper__arrow-container {
|
|
161
|
+
display: none;
|
|
162
|
+
}
|
|
163
|
+
|
|
160
164
|
|
|
161
165
|
.v-popper {
|
|
162
166
|
display: inline;
|
|
@@ -216,7 +216,7 @@ product:
|
|
|
216
216
|
backup: Rancher 备份
|
|
217
217
|
cis: CIS Benchmark
|
|
218
218
|
ecm: Cluster Manager
|
|
219
|
-
explorer:
|
|
219
|
+
explorer: 控制台
|
|
220
220
|
fleet: 持续交付
|
|
221
221
|
longhorn: Longhorn
|
|
222
222
|
manager: 集群管理
|
|
@@ -5642,6 +5642,7 @@ tableHeaders:
|
|
|
5642
5642
|
volume: 卷
|
|
5643
5643
|
volumeMode: 卷模式
|
|
5644
5644
|
weight: 权重
|
|
5645
|
+
action: 操作
|
|
5645
5646
|
target:
|
|
5646
5647
|
router:
|
|
5647
5648
|
label: 路由
|
|
@@ -6161,7 +6162,7 @@ workload:
|
|
|
6161
6162
|
replicas: 副本数量
|
|
6162
6163
|
showTabs: '显示高级选项'
|
|
6163
6164
|
scheduling:
|
|
6164
|
-
activeDeadlineSeconds: 判定
|
|
6165
|
+
activeDeadlineSeconds: 判定Pod是否活跃的截止时间
|
|
6165
6166
|
activeDeadlineSecondsTip: 系统将 Pod 判定为失败,并终止其关联容器前的等待时长
|
|
6166
6167
|
affinity:
|
|
6167
6168
|
addNodeSelector: 添加节点选择器
|
|
@@ -6331,7 +6332,7 @@ workload:
|
|
|
6331
6332
|
pod: Pod 是你可以在 Kubernetes 中创建和管理的最小可部署计算单元。Pod 是一个或多个容器,具有共享的存储和网络资源以及运行容器的规范。
|
|
6332
6333
|
upgrading:
|
|
6333
6334
|
activeDeadlineSeconds:
|
|
6334
|
-
label: 判定
|
|
6335
|
+
label: 判定Pod是否活跃的截止时间
|
|
6335
6336
|
tip: 系统将 Pod 判定为失败,并终止其关联容器前的等待时长
|
|
6336
6337
|
concurrencyPolicy:
|
|
6337
6338
|
label: 并发
|
|
@@ -6482,7 +6483,7 @@ typeDescription:
|
|
|
6482
6483
|
kubevirt.io.virtualmachine: 云虚拟机是一种安全可靠、弹性可伸缩的云计算服务器,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。
|
|
6483
6484
|
harvesterhci.io.volume: 虚拟磁盘具有高性能和低时延的特点,支持随机读写,可以像使用物理硬盘一样,在虚拟机上进行格式化并建立文件系统来使用块存储。
|
|
6484
6485
|
harvesterhci.io.volumesnapshot: 虚拟磁盘快照功能通过捕获虚拟磁盘在特定时间点的状态,生成增量副本,支持快速回滚磁盘状态,为测试验证、容灾恢复提供高效解决方案
|
|
6485
|
-
harvesterhci.io.virtualmachinebackup:
|
|
6486
|
+
harvesterhci.io.virtualmachinebackup: 虚拟机备份恢复功能通过创建包含磁盘数据、配置信息的完整副本,支持跨环境恢复及长期数据保护,为系统故障或灾难提供可靠容灾方案。
|
|
6486
6487
|
harvesterhci.io.schedulevmbackup: 虚拟机备份策略功能通过创建定时任务,对虚拟机进行完整备份或增量快照,为用户提供自动化的数据备份和容灾方案。
|
|
6487
6488
|
harvesterhci.io.vmsnapshot: 虚拟机快照功能通过捕获特定时间点的系统状态,支持快速恢复虚拟机状态,为数据备份与系统调试提供灵活解决方案。
|
|
6488
6489
|
harvesterhci.io.keypair: SSH密钥对是一种安全便捷的登录认证方式,您可以实现免密码远程登录,并在无需人工干预的情况下进行安全的自动化操作,实现服务器配置和应用程序部署的自动化。
|
|
@@ -16,25 +16,19 @@ const store = useStore();
|
|
|
16
16
|
const i18n = useI18n(store);
|
|
17
17
|
</script>
|
|
18
18
|
<template>
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
:
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
:initial-value="props.resource"
|
|
33
|
-
:use-tabbed-hash="false /* Have to disable hashing on child components or it modifies the url and closes the drawer */"
|
|
34
|
-
as="config"
|
|
35
|
-
/>
|
|
36
|
-
</div>
|
|
37
|
-
</Tab>
|
|
19
|
+
<div class="container">
|
|
20
|
+
<component
|
|
21
|
+
:is="props.component"
|
|
22
|
+
:value="props.resource"
|
|
23
|
+
:liveValue="props.resource"
|
|
24
|
+
:resourceType="props.resourceType"
|
|
25
|
+
:mode="_VIEW"
|
|
26
|
+
:real-mode="_VIEW"
|
|
27
|
+
:initial-value="props.resource"
|
|
28
|
+
:use-tabbed-hash="false /* Have to disable hashing on child components or it modifies the url and closes the drawer */"
|
|
29
|
+
as="config"
|
|
30
|
+
/>
|
|
31
|
+
</div>
|
|
38
32
|
</template>
|
|
39
33
|
|
|
40
34
|
<style lang="scss" scoped>
|
|
@@ -45,6 +39,15 @@ const i18n = useI18n(store);
|
|
|
45
39
|
max-width: 100%;
|
|
46
40
|
width: 100%;
|
|
47
41
|
position: relative;
|
|
42
|
+
// Handle the loading indicator
|
|
43
|
+
:deep() .overlay-content-mode {
|
|
44
|
+
left: 0;
|
|
45
|
+
top: 0;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
:deep() .cru-resource-footer {
|
|
49
|
+
display: none;
|
|
50
|
+
}
|
|
48
51
|
}
|
|
49
52
|
.config-tab {
|
|
50
53
|
|
|
@@ -115,6 +115,10 @@ export default {
|
|
|
115
115
|
labelKey: 'tableHeaders.role',
|
|
116
116
|
value: 'roleTemplate.nameDisplay'
|
|
117
117
|
},
|
|
118
|
+
{
|
|
119
|
+
name: '操作',
|
|
120
|
+
labelKey: 'tableHeaders.action',
|
|
121
|
+
},
|
|
118
122
|
],
|
|
119
123
|
loadingProjectBindings: true,
|
|
120
124
|
loadingClusterBindings: true
|
|
@@ -361,12 +365,13 @@ export default {
|
|
|
361
365
|
v-trim-whitespace
|
|
362
366
|
class="group-tab"
|
|
363
367
|
>
|
|
368
|
+
|
|
364
369
|
<div
|
|
365
370
|
v-clean-html="getProjectLabel(group)"
|
|
366
371
|
class="project-name"
|
|
367
372
|
/>
|
|
368
373
|
</div>
|
|
369
|
-
<div class="right">
|
|
374
|
+
<div class="right" style="margin-right: 80px;">
|
|
370
375
|
<button
|
|
371
376
|
v-if="canEditProjectMembers"
|
|
372
377
|
type="button"
|
|
@@ -460,8 +465,12 @@ export default {
|
|
|
460
465
|
& :deep() .group-bar{
|
|
461
466
|
display: flex;
|
|
462
467
|
justify-content: space-between;
|
|
468
|
+
align-items: center;
|
|
463
469
|
}
|
|
464
470
|
}
|
|
471
|
+
.role-secondary.btn-sm:focus, .role-secondary.btn-sm.focused{
|
|
472
|
+
border: 1px solid #d7d7d7;
|
|
473
|
+
}
|
|
465
474
|
.cluster-add {
|
|
466
475
|
justify-content: flex-end;
|
|
467
476
|
}
|
|
@@ -333,7 +333,7 @@ export default {
|
|
|
333
333
|
|
|
334
334
|
<div v-else>
|
|
335
335
|
<form v-if="selectedRoles">
|
|
336
|
-
<template
|
|
336
|
+
<template>
|
|
337
337
|
<div
|
|
338
338
|
v-for="(sortedRole, roleType) in sortedRoles"
|
|
339
339
|
:key="roleType"
|
|
@@ -389,63 +389,6 @@ export default {
|
|
|
389
389
|
</Card>
|
|
390
390
|
</div>
|
|
391
391
|
</template>
|
|
392
|
-
|
|
393
|
-
<template v-else>
|
|
394
|
-
<div
|
|
395
|
-
v-for="(sortedRole, roleType) in { global: sortedRoles['global'] }"
|
|
396
|
-
:key="roleType"
|
|
397
|
-
class="role-group mb-10"
|
|
398
|
-
>
|
|
399
|
-
<Card
|
|
400
|
-
v-if="Object.keys(sortedRole).length"
|
|
401
|
-
:show-highlight-border="false"
|
|
402
|
-
:show-actions="false"
|
|
403
|
-
>
|
|
404
|
-
<template v-slot:title>
|
|
405
|
-
<div class="type-title">
|
|
406
|
-
<h3>{{ t(`rbac.globalRoles.types.${roleType}.label`) }}</h3>
|
|
407
|
-
<div class="type-description">
|
|
408
|
-
{{ t(`rbac.globalRoles.types.${roleType}.description`, { isUser }) }}
|
|
409
|
-
</div>
|
|
410
|
-
</div>
|
|
411
|
-
</template>
|
|
412
|
-
<template v-slot:body>
|
|
413
|
-
<div
|
|
414
|
-
class="checkbox-section"
|
|
415
|
-
:class="'checkbox-section--' + roleType"
|
|
416
|
-
>
|
|
417
|
-
<div
|
|
418
|
-
v-for="(role, i) in sortedRoles[roleType]"
|
|
419
|
-
:key="i"
|
|
420
|
-
class="checkbox mb-10 mr-10"
|
|
421
|
-
>
|
|
422
|
-
<Checkbox
|
|
423
|
-
v-model:value="selectedRoles"
|
|
424
|
-
:value-when-true="role.id"
|
|
425
|
-
:disabled="!!assignOnlyRoles[role.id]"
|
|
426
|
-
:label="role.nameDisplay"
|
|
427
|
-
:description="role.descriptionDisplay"
|
|
428
|
-
:mode="mode"
|
|
429
|
-
:data-testId="'grb-checkbox-' + role.id"
|
|
430
|
-
@update:value="checkboxChanged"
|
|
431
|
-
>
|
|
432
|
-
<template #label>
|
|
433
|
-
<div class="checkbox-label-slot">
|
|
434
|
-
<span class="checkbox-label">{{ role.nameDisplay }}</span>
|
|
435
|
-
<i
|
|
436
|
-
v-if="!!assignOnlyRoles[role.id]"
|
|
437
|
-
v-clean-tooltip="t('rbac.globalRoles.assignOnlyRole')"
|
|
438
|
-
class="checkbox-info icon icon-info icon-lg"
|
|
439
|
-
/>
|
|
440
|
-
</div>
|
|
441
|
-
</template>
|
|
442
|
-
</Checkbox>
|
|
443
|
-
</div>
|
|
444
|
-
</div>
|
|
445
|
-
</template>
|
|
446
|
-
</Card>
|
|
447
|
-
</div>
|
|
448
|
-
</template>
|
|
449
392
|
</form>
|
|
450
393
|
</div>
|
|
451
394
|
</template>
|
|
@@ -38,7 +38,6 @@ export interface TitleBarProps {
|
|
|
38
38
|
showViewOptions?: boolean;
|
|
39
39
|
|
|
40
40
|
onShowConfiguration?: (returnFocusSelector: string) => void;
|
|
41
|
-
value?: any;
|
|
42
41
|
parentRouteOverride?: string;
|
|
43
42
|
}
|
|
44
43
|
|
|
@@ -47,9 +46,10 @@ const showConfigurationIcon = require(`@shell/assets/images/icons/document.svg`)
|
|
|
47
46
|
|
|
48
47
|
<script setup lang="ts">
|
|
49
48
|
const {
|
|
50
|
-
parentRouteOverride,
|
|
49
|
+
parentRouteOverride, resource, resourceTypeLabel, resourceTo, resourceName, description, badge, showViewOptions, onShowConfiguration,
|
|
51
50
|
} = defineProps<TitleBarProps>();
|
|
52
51
|
|
|
52
|
+
|
|
53
53
|
const store = useStore();
|
|
54
54
|
const i18n = useI18n(store);
|
|
55
55
|
const router = useRouter();
|
|
@@ -61,8 +61,6 @@ const showConfigurationReturnFocusSelector = computed(() => `[data-testid="${ sh
|
|
|
61
61
|
|
|
62
62
|
const configTabProps = useDefaultConfigTabProps(resource);
|
|
63
63
|
|
|
64
|
-
console.log(configTabProps, ' configTabProps---------------------------------1');
|
|
65
|
-
|
|
66
64
|
|
|
67
65
|
const currentView = ref(router?.currentRoute?.value?.query?.as || _CONFIG);
|
|
68
66
|
const viewOptions = computed(() => {
|
|
@@ -84,39 +82,32 @@ const viewOptions = computed(() => {
|
|
|
84
82
|
|
|
85
83
|
const Svg = require('~shell/assets/images/API.svg')
|
|
86
84
|
|
|
87
|
-
const parent = computed(() =>{
|
|
88
|
-
|
|
85
|
+
const parent = computed(() => {
|
|
86
|
+
|
|
89
87
|
const product = store.getters['currentProduct'].name;
|
|
90
88
|
|
|
91
89
|
const defaultLocation = {
|
|
92
|
-
name:
|
|
90
|
+
name: 'c-cluster-product-resource',
|
|
93
91
|
params: {
|
|
94
|
-
resource
|
|
92
|
+
resource,
|
|
95
93
|
product,
|
|
96
94
|
}
|
|
97
95
|
};
|
|
98
96
|
|
|
99
|
-
const location =
|
|
97
|
+
const location = resource?.parentLocationOverride || defaultLocation;
|
|
100
98
|
|
|
101
99
|
if (parentRouteOverride) {
|
|
102
100
|
location.name = parentRouteOverride;
|
|
103
101
|
}
|
|
104
102
|
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
};
|
|
108
|
-
|
|
109
|
-
return out;
|
|
110
|
-
})
|
|
103
|
+
return { location };
|
|
104
|
+
});
|
|
111
105
|
|
|
112
106
|
const menuIcon = computed(() => {
|
|
113
107
|
const product = store.getters['productId'];
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
return store.getters['type-map/groupsForVirTypes'](product, resources);
|
|
118
|
-
})
|
|
119
|
-
|
|
108
|
+
const resources = parent.value.location?.params?.resource || '';
|
|
109
|
+
return store.getters['type-map/groupsForVirTypes'](product, resources) || 'default menuIcon';
|
|
110
|
+
});
|
|
120
111
|
|
|
121
112
|
watch(
|
|
122
113
|
() => currentView.value,
|
|
@@ -131,7 +122,7 @@ watch(
|
|
|
131
122
|
<breadcrumb :resource="resource"/>
|
|
132
123
|
<Top>
|
|
133
124
|
<Title class="title">
|
|
134
|
-
<span
|
|
125
|
+
<span class="detailIcon-span">
|
|
135
126
|
<img
|
|
136
127
|
v-if="parentRouteOverride === 'account' && resource=== 'token'"
|
|
137
128
|
:src="Svg"
|
|
@@ -189,7 +180,7 @@ watch(
|
|
|
189
180
|
:options="viewOptions"
|
|
190
181
|
/>
|
|
191
182
|
<RcButton
|
|
192
|
-
v-if="onShowConfiguration"
|
|
183
|
+
v-if="onShowConfiguration && configTabProps"
|
|
193
184
|
:data-testid="showConfigurationDataTestId"
|
|
194
185
|
class="show-configuration"
|
|
195
186
|
:primary="true"
|
|
@@ -222,6 +213,7 @@ watch(
|
|
|
222
213
|
</template>
|
|
223
214
|
|
|
224
215
|
<style lang="scss" scoped>
|
|
216
|
+
|
|
225
217
|
.detailIcon-span{
|
|
226
218
|
width: 24px;
|
|
227
219
|
height: 24px;
|
|
@@ -230,6 +222,17 @@ watch(
|
|
|
230
222
|
background: var(--primary);
|
|
231
223
|
margin-right: 10px;
|
|
232
224
|
}
|
|
225
|
+
.detailIcon{
|
|
226
|
+
position: absolute;
|
|
227
|
+
color: #fff;
|
|
228
|
+
font-size: 38px;
|
|
229
|
+
left: 4px;
|
|
230
|
+
top: -2px;
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
.detailIcon-span-title{
|
|
234
|
+
font-weight: bold;
|
|
235
|
+
}
|
|
233
236
|
.resourceTypeLabelCls {
|
|
234
237
|
font-weight: 700;
|
|
235
238
|
}
|
|
@@ -254,7 +254,7 @@ export default {
|
|
|
254
254
|
},
|
|
255
255
|
|
|
256
256
|
parent() {
|
|
257
|
-
|
|
257
|
+
let displayName = this.value?.parentNameOverride || this.$store.getters['type-map/labelFor'](this.schema);
|
|
258
258
|
const product = this.$store.getters['currentProduct'].name;
|
|
259
259
|
|
|
260
260
|
const defaultLocation = {
|
|
@@ -443,7 +443,7 @@ export default {
|
|
|
443
443
|
|
|
444
444
|
const resources = this.location?.params?.resource || ''
|
|
445
445
|
|
|
446
|
-
return this.$store.getters['type-map/groupsForVirTypes'](product, resources);
|
|
446
|
+
return this.$store.getters['type-map/groupsForVirTypes'](product, resources) || 'default menuIcon';
|
|
447
447
|
},
|
|
448
448
|
|
|
449
449
|
location() {
|
|
@@ -506,7 +506,7 @@ export default {
|
|
|
506
506
|
<span>/</span>
|
|
507
507
|
</span>
|
|
508
508
|
<span class="excram-last-name">
|
|
509
|
-
{{ (realMode === 'view'? '查看': realMode === 'edit' ? '编辑':'创建') + parent
|
|
509
|
+
{{ (realMode === 'view'? '查看': realMode === 'edit' ? '编辑':'创建') + parent?.displayName }}
|
|
510
510
|
</span>
|
|
511
511
|
</div>
|
|
512
512
|
<header>
|
|
@@ -530,7 +530,7 @@ export default {
|
|
|
530
530
|
:class="'icon-'+ menuIcon + ' detailIcon'"
|
|
531
531
|
/>
|
|
532
532
|
</span>
|
|
533
|
-
<span class="detailIcon-span-title">{{ realMode=== 'create'? '创建': '' }}{{ parent
|
|
533
|
+
<span class="detailIcon-span-title">{{ realMode=== 'create'? '创建': '' }}{{ parent?.displayName }}{{ realMode=== 'create'? '': '名称:' }}</span>
|
|
534
534
|
<span v-if="realMode !== 'create'">
|
|
535
535
|
<span v-if="value.detailPageHeaderActionOverride && value.detailPageHeaderActionOverride(realMode)">{{ value.detailPageHeaderActionOverride(realMode) }}</span>
|
|
536
536
|
<t
|
|
@@ -1841,7 +1841,7 @@ export default {
|
|
|
1841
1841
|
class="paging"
|
|
1842
1842
|
>
|
|
1843
1843
|
<div style="height: 100%; align-content: center;">
|
|
1844
|
-
共 {{ filteredRows.length }} 条
|
|
1844
|
+
共 {{ filteredRows ? filteredRows.length : 0 }} 条
|
|
1845
1845
|
</div>
|
|
1846
1846
|
|
|
1847
1847
|
<button
|
|
@@ -2217,7 +2217,7 @@ export default {
|
|
|
2217
2217
|
|
|
2218
2218
|
tbody {
|
|
2219
2219
|
tr {
|
|
2220
|
-
border-bottom: 1px solid var(--sortable-table-top-divider);
|
|
2220
|
+
border-bottom: 1px solid var(--sortable-table-top-divider) !important;
|
|
2221
2221
|
background-color: var(--sortable-table-row-bg);
|
|
2222
2222
|
|
|
2223
2223
|
&.main-row.has-sub-row {
|
|
@@ -384,7 +384,7 @@ export default {
|
|
|
384
384
|
|
|
385
385
|
&.horizontal {
|
|
386
386
|
border: solid thin var(--border);
|
|
387
|
-
border-bottom: 0;
|
|
387
|
+
// border-bottom: 0;
|
|
388
388
|
display: flex;
|
|
389
389
|
flex-direction: row;
|
|
390
390
|
|
|
@@ -504,6 +504,8 @@ margin: 0px -20px;
|
|
|
504
504
|
display: flex;
|
|
505
505
|
border-bottom:1px solid #d7d7d7;
|
|
506
506
|
padding: 0 0 0 20px;
|
|
507
|
+
overflow: auto;
|
|
508
|
+
overflow-y: hidden;
|
|
507
509
|
/* flex: 1 0; */
|
|
508
510
|
/* flex-direction: column; */
|
|
509
511
|
|
|
@@ -571,6 +573,8 @@ margin: 0px -20px;
|
|
|
571
573
|
li {
|
|
572
574
|
display: flex;
|
|
573
575
|
flex: 1;
|
|
576
|
+
border-left: 1px solid var(--border);
|
|
577
|
+
border-right: 1px solid var(--border);
|
|
574
578
|
|
|
575
579
|
.btn {
|
|
576
580
|
flex: 1 1;
|
|
@@ -20,7 +20,11 @@ export default {
|
|
|
20
20
|
isShowPass: {
|
|
21
21
|
type: Boolean,
|
|
22
22
|
default: false,
|
|
23
|
-
}
|
|
23
|
+
},
|
|
24
|
+
userLogoSize: {
|
|
25
|
+
type: Number,
|
|
26
|
+
default: 20,
|
|
27
|
+
},
|
|
24
28
|
},
|
|
25
29
|
|
|
26
30
|
async fetch() {
|
|
@@ -90,8 +94,9 @@ export default {
|
|
|
90
94
|
</template>
|
|
91
95
|
|
|
92
96
|
<template v-else-if="principal">
|
|
93
|
-
<div class="avatar">
|
|
97
|
+
<div :style="userLogoSize === 79 ? { width: '287px' } : {}" class="avatar">
|
|
94
98
|
<img
|
|
99
|
+
:style="{ width: userLogoSize + 'px', height: userLogoSize + 'px' }"
|
|
95
100
|
src="@shell/assets/images/user.png"
|
|
96
101
|
:class="{'round': principal.roundAvatar}"
|
|
97
102
|
:alt="t('principal.alt.avatar')"
|
|
@@ -209,7 +214,7 @@ export default {
|
|
|
209
214
|
.avatar {
|
|
210
215
|
/* grid-area: avatar;
|
|
211
216
|
text-align: center; */
|
|
212
|
-
width: 287px;
|
|
217
|
+
// width: 287px;
|
|
213
218
|
display: flex;
|
|
214
219
|
justify-content: center;
|
|
215
220
|
align-items: center;
|