feat: 算力配置模块静态交互完成,layout底部菜单完成构建

dev-deviceSetting
donghao 1 year ago
parent 6c0e7a2220
commit daf7c98e5a

@ -25,6 +25,7 @@ buttons:
menus:
hshome: 工作台
hsdevice: 设备列表
hsModelList: 模型列表
hsserver: 服务器
hstest: 测试
hsalarm: 告警管理
@ -37,7 +38,9 @@ menus:
permission: 权限管理
permissionPage: 页面权限
permissionButton: 按钮权限
dshome: 首页
dsDeviceList: 设备列表
dsAlarmInfoList: 告警通知
status:
hsLoad: 加载中...
login:

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 660 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 4.1 MiB

@ -0,0 +1,27 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
>
<path
d="M12 22C14.7614 22 17.2614 20.8807 19.0711 19.0711C20.8807 17.2614 22 14.7614 22 12C22 9.2386 20.8807 6.7386 19.0711 4.92893C17.2614 3.11929 14.7614 2 12 2C9.2386 2 6.7386 3.11929 4.92893 4.92893C3.11929 6.7386 2 9.2386 2 12C2 14.7614 3.11929 17.2614 4.92893 19.0711C6.7386 20.8807 9.2386 22 12 22Z"
stroke="#FAAD14"
stroke-width="2"
stroke-linejoin="round"
/>
<path
fill-rule="evenodd"
clip-rule="evenodd"
d="M12 18.5C12.6904 18.5 13.25 17.9404 13.25 17.25C13.25 16.5597 12.6904 16 12 16C11.3097 16 10.75 16.5597 10.75 17.25C10.75 17.9404 11.3097 18.5 12 18.5Z"
fill="#FAAD14"
/>
<path
d="M12 6V14"
stroke="#FAAD14"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
/>
</svg>

After

Width:  |  Height:  |  Size: 869 B

@ -0,0 +1,24 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
>
<path
d="M8.948 8.7975V7.3675C9.08911 7.35702 9.23051 7.35102 9.372 7.3495C13.294 7.2255 15.865 10.7235
15.865 10.7235C15.865 10.7235 13.091 14.5745 10.115 14.5745C9.72158 14.5753 9.33059 14.5128 8.957
14.3895V10.0435C10.485 10.2285 10.794 10.9005 11.704 12.4285L13.744 10.7145C13.744 10.7145 12.252
8.7625 9.744 8.7625C9.47818 8.75656 9.21227 8.76826 8.948 8.7975ZM8.948 4.0625V6.2005L9.372
6.1735C14.822 5.9885 18.382 10.6435 18.382 10.6435C18.382 10.6435 14.302 15.6075 10.052
15.6075C9.68491 15.6063 9.31858 15.5739 8.957 15.5105V16.8355C9.257 16.8705 9.567 16.8975 9.867
16.8975C13.824 16.8975 16.687 14.8745 19.46 12.4895C19.919 12.8605 21.8 13.7525 22.19 14.1415C19.557
16.3495 13.418 18.1255 9.937 18.1255C9.602 18.1255 9.284 18.1075 8.966
18.0725V19.9365H24V4.0625H8.948ZM8.948 14.3885V15.5195C5.291 14.8655 4.275 11.0595 4.275
11.0595C4.275 11.0595 6.033 9.1155 8.948 8.7975V10.0345H8.94C7.412 9.8485 6.21 11.2795 6.21
11.2795C6.21 11.2795 6.89 13.6915 8.949 14.3895M2.456 10.8995C2.456 10.8995 4.62 7.7025 8.956
7.3665V6.2005C4.153 6.5895 0 10.6525 0 10.6525C0 10.6525 2.35 17.4545 8.948 18.0725V16.8355C4.108
16.2355 2.456 10.8995 2.456 10.8995Z"
fill="#76B900"
/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 66 KiB

@ -0,0 +1,14 @@
<svg width="24" height="55" viewBox="0 0 24 55" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M6.74248 13.0508L22.1538 0L0 11.1864V47.5424L22.1538 55L6.74248 43.8136V13.0508Z" fill="url(#paint0_linear_9562_48379)"/>
<path d="M24 27.5L15.6923 32.2631L15.6923 22.7369L24 27.5Z" fill="url(#paint1_linear_9562_48379)"/>
<defs>
<linearGradient id="paint0_linear_9562_48379" x1="1.5" y1="27.8056" x2="13" y2="27.8056" gradientUnits="userSpaceOnUse">
<stop stop-color="#3397F4"/>
<stop offset="1" stop-color="white"/>
</linearGradient>
<linearGradient id="paint1_linear_9562_48379" x1="24" y1="27.5" x2="12.9231" y2="27.5" gradientUnits="userSpaceOnUse">
<stop stop-color="white"/>
<stop offset="1" stop-color="#3397F4"/>
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 759 B

@ -0,0 +1,21 @@
<svg width="32" height="872" viewBox="0 0 32 872" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M30 1L2 35.6269V841.938L27.5 871" stroke="url(#paint0_linear_9562_48210)" stroke-width="3"/>
<path d="M10 36L31 11L30.5 3.5L3 36V166L10 160V36Z" fill="url(#paint1_linear_9562_48210)" stroke="#54DFFE"/>
<path d="M11 841L28.5 861.5L28 869L4 841.215V711L11 717V841Z" fill="url(#paint2_linear_9562_48210)" stroke="#54DFFE"/>
<defs>
<linearGradient id="paint0_linear_9562_48210" x1="16" y1="1" x2="16" y2="871" gradientUnits="userSpaceOnUse">
<stop stop-color="#6AA7FF" stop-opacity="0"/>
<stop offset="0.266666" stop-color="#A1E5FF"/>
<stop offset="0.731666" stop-color="#6AA7FF"/>
<stop offset="0.976666" stop-color="#6AA7FF" stop-opacity="0"/>
</linearGradient>
<linearGradient id="paint1_linear_9562_48210" x1="17" y1="3.5" x2="17" y2="166" gradientUnits="userSpaceOnUse">
<stop stop-color="#249BFF"/>
<stop offset="1" stop-color="#1777F2"/>
</linearGradient>
<linearGradient id="paint2_linear_9562_48210" x1="16.25" y1="869" x2="16.25" y2="711" gradientUnits="userSpaceOnUse">
<stop stop-color="#249BFF"/>
<stop offset="1" stop-color="#1777F2"/>
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

Before

Width:  |  Height:  |  Size: 8.1 KiB

After

Width:  |  Height:  |  Size: 8.1 KiB

@ -1,3 +1,13 @@
/*
* @Author: donghao donghao@supervision.ltd
* @Date: 2024-02-23 11:38:23
* @LastEditors: donghao donghao@supervision.ltd
* @LastEditTime: 2024-02-26 10:36:35
* @FilePath: \General-AI-Platform-Web-Client\src\components\DsBox\index.ts
* @Description: ,`customMade`, koroFileHeader : https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
import dsBox1 from "./src/dsBox1";
import dsTag1 from "./src/dsTag1";
export const DsBox1 = dsBox1;
export const DsTag1 = dsTag1;

@ -1,5 +1,11 @@
/**
* @
* @
*
* 1
* w1 430px w2 364px
* h1 288px h2 608px
* 2
*
*
*
*/
@ -35,7 +41,13 @@ export default defineComponent({
height: "288px"
};
switch (props.type) {
case "lg":
case "w2h2": // 算力配置左右侧栏
options = {
width: "364px",
height: "608px"
};
break;
case "w1h1":
options = {
width: "430px",
height: "288px"
@ -54,10 +66,15 @@ export default defineComponent({
style={{ width: options.width, height: options.height }}
>
<div class="w-full h-full">
{/* 标题栏 */}
{/* // TODO 补充背景图 标题栏 */}
<div
class="head_info flex align-middle"
style={{ height: "50px" }}
style={{
height: "50px",
fontWeight: "bold",
fontSize: "20px",
color: " #2DE6FF"
}}
>
<span>{props.title}</span>
</div>

@ -0,0 +1,21 @@
.dsTag1_wrap {
&.cube_tag {
position: absolute;
left: 0px;
// top: -8px;
width: 200px;
}
.show_info {
position: absolute;
left: 61px;
.show_line {
width: 18px;
height: 1px;
}
.show_dot {
width: 4px;
height: 4px;
// background: #C1C1C1;
}
}
}

@ -0,0 +1,91 @@
/**
* @
*
*
*/
import { defineComponent } from "vue";
import "./dsTag1.scss";
export default defineComponent({
name: "DsTag1",
props: {
type: {
type: Number,
default: 0
},
info: {
type: Object,
default: () => {
return {
proportion: 0,
name: ""
};
}
}
},
setup(props) {
return () => {
let options = {
fill: "#FFBD5C",
stroke: "#FA8916"
};
switch (props.type) {
case 3:
options = {
fill: "#FFBD5C",
stroke: "#FA8916"
};
break;
case 4:
options = {
fill: "#74A5FB",
stroke: "#3778F2"
};
break;
default:
options = {
fill: "#FFBD5C",
stroke: "#FA8916"
};
break;
}
return (
<div class="dsTag1_wrap flex items-center cube_tag">
<div class="bg-black h-[2px] w-[56px]" />
{/* <svg
xmlns="http://www.w3.org/2000/svg"
width="20"
height="16"
viewBox="0 0 20 16"
fill="none"
>
<path
d="M18 1C18.8284 1 19.5 1.67157 19.5 2.5V13.5C19.5 14.3284 18.8284 15 18 15H7.74624C7.32544 15 6.924 14.8233 6.63986 14.5129L1.60508 9.01334C1.08028 8.4401 1.08025 7.56095 1.605 6.98766L6.63987 1.4872C6.92402 1.17678 7.32549 1 7.74633 1H18Z"
fill={options.fill}
stroke={options.stroke}
/>
</svg> */}
<div
class="show_info flex items-center"
style={{ top: props.info.value / 2 - 10 + "px" }}
>
<div
class="show_line"
style={{ backgroundColor: props.info.color }}
></div>
<div
class="show_dot"
style={{ backgroundColor: props.info.color }}
></div>
<p class="w-[188px] h-[20px] single-line text-sm">
<span class="px-[8px]">{props.info.proportion}%</span>
<span>{props.info.name}</span>
</p>
</div>
</div>
);
};
}
});

@ -1,4 +1,5 @@
<script setup lang="ts">
// TODO
import { useRoute, useRouter } from "vue-router";
import { transformI18n } from "@/plugins/i18n";
// import SidebarItem from "./sidebarItem.vue";
@ -48,6 +49,16 @@ const bgImg = computed(() => svgName => {
"@/assets/dataScreen/menu/deviceListIcon.svg",
import.meta.url
).href;
case "serverListIcon":
return new URL(
"@/assets/dataScreen/menu/serverListIcon.svg",
import.meta.url
).href;
case "modelListIcon":
return new URL(
"@/assets/dataScreen/menu/modelListIcon.svg",
import.meta.url
).href;
case "alarmInfoIcon":
return new URL(
"@/assets/dataScreen/menu/alarmInfoIcon.svg",
@ -86,7 +97,7 @@ watch(
>
<!-- <i :class="['iconfont', routes.meta?.icon || 'icon-morencaidan']" /> -->
</div>
<p>{{ transformI18n(routes.meta.title) }}</p>
<p class="text-base ff1">{{ transformI18n(routes.meta.title) }}</p>
</li>
</ul>
</div>
@ -97,22 +108,15 @@ $--noneSelectedColor: rgb(255 255 255 / 80%);
.ds-footbar-container {
// width: 96px;
// background-color: red;
height: 100px;
.menu_wrap {
background-color: #05102f;
background-image: url("@/assets/svg/bgFooter.svg");
background-repeat: no-repeat;
background-position: center bottom;
background-size: contain;
border-radius: 12px;
}
background: url("@/assets/dataScreen/common/bgFooter.svg") no-repeat center
bottom;
height: 120px;
.menu_icon {
width: 66px;
height: 66px;
opacity: 0.8;
margin-bottom: 15px;
}
.menu_box {
@ -121,8 +125,9 @@ $--noneSelectedColor: rgb(255 255 255 / 80%);
text-align: center;
& > li {
padding-top: 16px;
cursor: pointer;
padding-left: 31px;
padding-right: 31px;
& > p {
padding-top: 6px;

@ -0,0 +1,29 @@
<script setup lang="ts">
// TODO
defineOptions({
name: "DsNavbar"
});
</script>
<template>
<div class="flex justify-between h-full align-middle dsNavbar_wrap">
<div class="left">logo</div>
<h1>苏胜天人工智能检测平台</h1>
<div class="right">time</div>
</div>
</template>
<style lang="scss" scoped>
.dsNavbar_wrap {
.left {
width: 30vw;
}
h1 {
color: white;
line-height: 2;
}
.right {
width: 30vw;
}
}
</style>

@ -9,8 +9,8 @@ import { useSettingStoreHook } from "@/store/modules/settings";
import { deviceDetection, useGlobal } from "@pureadmin/utils";
import { useDataThemeChange } from "@/layout/hooks/useDataThemeChange";
import { ref, reactive, computed, onMounted, onBeforeMount } from "vue";
import DsNavbar from "./components/dsNavbar.vue";
import DsFooterbar from "./components/dsFooterbar.vue";
import { useRoute } from "vue-router";
const route = useRoute();
@ -117,10 +117,16 @@ onBeforeMount(() => {
>
<dv-full-screen-container>
<div class="w-full ds_app_box">
<header>顶部</header>
<header>
<DsNavbar />
</header>
<!-- 主体内容 -->
<router-view />
<DsFooterbar />
<main>
<router-view />
</main>
<footer class="w-full">
<DsFooterbar />
</footer>
</div>
</dv-full-screen-container>
</div>
@ -132,6 +138,22 @@ onBeforeMount(() => {
width: 100%;
height: 100%;
background-color: #000;
color: white;
}
.ds_app_box {
header {
height: 64px;
}
main {
height: calc(100vh - 64px);
}
footer {
position: fixed;
background-color: transparent;
height: 120px;
bottom: 0;
z-index: 1;
}
}
.app-mask {

@ -0,0 +1,21 @@
/*
* @Author: donghao donghao@supervision.ltd
* @Date: 2024-02-23 11:00:08
* @LastEditors: donghao donghao@supervision.ltd
* @LastEditTime: 2024-02-26 14:18:27
* @FilePath: \General-AI-Platform-Web-Client\src\pages\dataScreen\router\modules\device.ts
* @Description: ,`customMade`, koroFileHeader : https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
import { $t } from "@/plugins/i18n";
export default {
path: "/alarmInfo",
meta: {
title: $t("menus.dsAlarmInfoList"),
icon: "alarmInfoIcon",
rank: 5,
roles: ["admin", "common"]
},
component: () => import("@/pages/dataScreen/views/device/deviceList.vue"),
name: "alarmInfo"
} as RouteConfigsTable;

@ -2,7 +2,7 @@
* @Author: donghao donghao@supervision.ltd
* @Date: 2024-02-23 11:00:08
* @LastEditors: donghao donghao@supervision.ltd
* @LastEditTime: 2024-02-23 16:09:09
* @LastEditTime: 2024-02-26 09:17:44
* @FilePath: \General-AI-Platform-Web-Client\src\pages\dataScreen\router\modules\device.ts
* @Description: ,`customMade`, koroFileHeader : https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
@ -17,5 +17,5 @@ export default {
roles: ["admin", "common"]
},
component: () => import("@/pages/dataScreen/views/device/deviceList.vue"),
name: "dsDeviceListIndex"
name: "deviceList"
} as RouteConfigsTable;

@ -0,0 +1,21 @@
/*
* @Author: donghao donghao@supervision.ltd
* @Date: 2024-02-23 11:00:08
* @LastEditors: donghao donghao@supervision.ltd
* @LastEditTime: 2024-02-26 14:18:56
* @FilePath: \General-AI-Platform-Web-Client\src\pages\dataScreen\router\modules\device.ts
* @Description: ,`customMade`, koroFileHeader : https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
import { $t } from "@/plugins/i18n";
export default {
path: "/modelList",
meta: {
title: $t("menus.hsModelList"),
icon: "modelListIcon",
rank: 4,
roles: ["admin", "common"]
},
component: () => import("@/pages/dataScreen/views/device/deviceList.vue"),
name: "modelList"
} as RouteConfigsTable;

@ -0,0 +1,21 @@
/*
* @Author: donghao donghao@supervision.ltd
* @Date: 2024-02-23 11:00:08
* @LastEditors: donghao donghao@supervision.ltd
* @LastEditTime: 2024-02-26 14:17:58
* @FilePath: \General-AI-Platform-Web-Client\src\pages\dataScreen\router\modules\device.ts
* @Description: ,`customMade`, koroFileHeader : https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
import { $t } from "@/plugins/i18n";
export default {
path: "/serverList",
meta: {
title: $t("menus.hsserver"),
icon: "serverListIcon",
rank: 3,
roles: ["admin", "common"]
},
component: () => import("@/pages/dataScreen/views/device/deviceList.vue"),
name: "ServerList"
} as RouteConfigsTable;

@ -2,7 +2,7 @@
* @Author: donghao donghao@supervision.ltd
* @Date: 2024-01-12 14:35:28
* @LastEditors: donghao donghao@supervision.ltd
* @LastEditTime: 2024-02-23 15:26:02
* @LastEditTime: 2024-02-26 14:45:54
* @FilePath: \General-AI-Platform-Web-Client\src\router\modules\workbench.ts
* @Description: ,`customMade`, koroFileHeader : https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
@ -16,9 +16,8 @@ export default {
component: Layout,
redirect: "/workbench",
meta: {
title: $t("menus.hshome"),
title: $t("menus.dshome"),
icon: "homeIcon",
// showLink: false,
rank: 1
},
children: [

@ -2,13 +2,14 @@
* @Author: donghao donghao@supervision.ltd
* @Date: 2024-01-19 09:38:33
* @LastEditors: donghao donghao@supervision.ltd
* @LastEditTime: 2024-01-23 14:51:05
* @LastEditTime: 2024-02-26 16:55:24
* @FilePath: \General-AI-Platform-Web-Client\src\views\demo\cube.vue
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
-->
<script setup lang="ts">
import { computed } from "vue";
import { DsTag1 } from "@/components/DsBox";
import { ComputePowerPoolItem } from "../typing";
defineOptions({
@ -24,7 +25,7 @@ const props = defineProps({
const listData = computed(() => {
let finalList = [];
const totalHeight = 262;
const totalHeight = 438;
finalList = props.list.map(item => {
item.value = Math.floor((item.proportion / 100) * totalHeight);
return item;
@ -39,34 +40,8 @@ const fetchPathValByHeight = val => {
<template>
<div class="computePowerCube_wrap">
<div class="flex justify-start des_wrap pb-[16px]">
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
>
<path
d="M12 22C14.7614 22 17.2614 20.8807 19.0711 19.0711C20.8807 17.2614 22 14.7614 22 12C22 9.2386 20.8807 6.7386 19.0711 4.92893C17.2614 3.11929 14.7614 2 12 2C9.2386 2 6.7386 3.11929 4.92893 4.92893C3.11929 6.7386 2 9.2386 2 12C2 14.7614 3.11929 17.2614 4.92893 19.0711C6.7386 20.8807 9.2386 22 12 22Z"
stroke="#FAAD14"
stroke-width="2"
stroke-linejoin="round"
/>
<path
fill-rule="evenodd"
clip-rule="evenodd"
d="M12 18.5C12.6904 18.5 13.25 17.9404 13.25 17.25C13.25 16.5597 12.6904 16 12 16C11.3097 16 10.75 16.5597 10.75 17.25C10.75 17.9404 11.3097 18.5 12 18.5Z"
fill="#FAAD14"
/>
<path
d="M12 6V14"
stroke="#FAAD14"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
/>
</svg>
<p class="pf-1 w-[196px] pl-[8px]">
<div class="tip_icon" />
<p class="text-sm w-[300px] pl-[8px]">
可根据检测项重要性调整滑块以 配置各算法所占用的算力比例
达到目标运算需求
</p>
@ -83,55 +58,30 @@ const fetchPathValByHeight = val => {
class="bg_cube"
:style="{ height: v.value + 'px', background: v.bgColor }"
>
<div class="flex items-center cube_tag" v-if="v.type === 2">
<div class="bg-black h-[2px] w-[34px]"></div>
<svg
xmlns="http://www.w3.org/2000/svg"
width="20"
height="16"
viewBox="0 0 20 16"
fill="none"
>
<path
d="M18 1C18.8284 1 19.5 1.67157 19.5 2.5V13.5C19.5 14.3284 18.8284 15 18 15H7.74624C7.32544 15 6.924 14.8233 6.63986 14.5129L1.60508 9.01334C1.08028 8.4401 1.08025 7.56095 1.605 6.98766L6.63987 1.4872C6.92402 1.17678 7.32549 1 7.74633 1H18Z"
fill="#FFBD5C"
stroke="#FA8916"
/>
</svg>
<p class="pf-1 w-[140px] h-[20px] single-line">
<span class="px-[8px]">{{ v.proportion }}%</span
><span>{{ v.name }}</span>
</p>
<div v-if="v.type === 0">
<DsTag1 :type="4" :info="v" />
</div>
<div class="flex items-center cube_tag" v-if="v.type === 1">
<div class="bg-black h-[2px] w-[34px]"></div>
<svg
xmlns="http://www.w3.org/2000/svg"
width="20"
height="16"
viewBox="0 0 20 16"
fill="none"
>
<path
d="M18 1C18.8284 1 19.5 1.67157 19.5 2.5V13.5C19.5 14.3284 18.8284 15 18 15H7.74624C7.32544 15 6.924 14.8233 6.63986 14.5129L1.60508 9.01334C1.08028 8.4401 1.08025 7.56095 1.605 6.98766L6.63987 1.4872C6.92402 1.17678 7.32549 1 7.74633 1H18Z"
fill="#74A5FB"
stroke="#3778F2"
/>
</svg>
<p class="pf-1 w-[140px] h-[20px] single-line">
<span class="px-[8px]">{{ v.proportion }}%</span
><span>{{ v.name }}</span>
</p>
<div v-if="v.type === 1">
<DsTag1 :type="4" :info="v" />
</div>
<div v-if="v.type === 2">
<DsTag1 :type="4" :info="v" />
</div>
<div v-if="v.type === 3">
<DsTag1 :type="3" :info="v" />
</div>
<div v-if="v.type === 4">
<DsTag1 :type="4" :info="v" />
</div>
</div>
</li>
<li>
<div class="cube_info_line"></div>
<div class="cube_info_line" />
</li>
</ul>
</div>
<div class="bg_body_logo"></div>
<div class="bg_body_logo" />
</div>
</template>
@ -139,6 +89,16 @@ const fetchPathValByHeight = val => {
.computePowerCube_wrap {
position: relative;
overflow: hidden;
color: white;
.tip_icon {
width: 20px;
height: 20px;
background: url("@/assets/computePower/tipIcon.svg") no-repeat;
background-size: cover;
// tipIcon.svg
}
.bg_body_logo {
/* width: 358.886px;
height: 343.026px;
@ -151,21 +111,15 @@ const fetchPathValByHeight = val => {
.cube_info {
position: relative;
margin: 0 auto;
width: 42px;
width: 64px;
border-radius: 4px;
border: 4px solid rgba(21, 77, 221, 0.4);
background: #fff;
// background: #fff;
& > li {
.bg_cube {
width: 100%;
position: relative;
}
.cube_tag {
position: absolute;
left: 0px;
top: -8px;
width: 200px;
}
}
}
.cube_info_line {
@ -173,13 +127,13 @@ const fetchPathValByHeight = val => {
left: 12px;
top: 13px;
width: 6px;
height: 233px;
height: 401px;
background: rgba(255, 255, 255, 0.8);
filter: blur(4px);
}
.cube_body {
margin-left: 34px;
width: 45px;
margin-left: 30px;
width: 67px;
border: 2px solid #b8b8b8;
border-radius: 6px;
@ -193,7 +147,7 @@ const fetchPathValByHeight = val => {
width: 20px;
height: 20px;
position: absolute;
left: 40px;
left: 64px;
top: 69px;
}
& > li:nth-child(2) {

@ -2,7 +2,7 @@
* @Author: donghao donghao@supervision.ltd
* @Date: 2024-01-19 09:38:33
* @LastEditors: donghao donghao@supervision.ltd
* @LastEditTime: 2024-01-23 11:37:11
* @LastEditTime: 2024-02-26 16:29:15
* @FilePath: \General-AI-Platform-Web-Client\src\views\demo\cube.vue
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
-->
@ -88,9 +88,9 @@ const currentInfo = computed(() => props.info);
</defs>
</svg>
<div class="flex">
<p class="pl-[8px] pf-1">{{ currentInfo.name }}</p>
<p class="pf-1">{{ currentInfo.proportion }}%</p>
<p class="pl-[8px] pf-2" v-if="currentInfo.pretreatmentEfficiency">
<p class="pl-[8px]">{{ currentInfo.name }}</p>
<p class="">{{ currentInfo.proportion }}%</p>
<p class="pl-[8px]" v-if="currentInfo.pretreatmentEfficiency">
预计处理效率: {{ currentInfo.pretreatmentEfficiency }}/
</p>
</div>

@ -1,26 +1,51 @@
.computePowerAllocation_wrap {
height: 100%;
// height: 100%;
// width: 100vw;
padding: 45px 32px;
// background-color: red;
// padding-top: calc(50vh - 330px - 48px);
.computePowerAllocation_body {
border-radius: 12px;
background: rgba(21, 77, 221, 0.05);
width: 1080px;
height: 660px;
margin: 0 auto;
// background: rgba(21, 77, 221, 0.05);
// margin: 0 auto;
// background-color: red;
width: calc(100% - 28px * 2 - 32px * 2);
}
.banner_side {
width: 28px;
height: 870px;
background: url("@/assets/dataScreen/computePower/boxSide.svg") no-repeat
left center;
}
.banner_side_right {
transform: rotateY(180deg);
}
.computePower_header {
text-align: center;
position: relative;
height: 46px;
height: 79px;
.title_side {
width: 22px;
height: 55px;
background: url("@/assets/dataScreen/computePower/bgTitleSide.svg")
no-repeat left center;
}
.title_right {
transform: rotateY(180deg);
}
& > span {
position: absolute;
line-height: 46px;
font-size: 24px;
width: 272px;
height: 55px;
// position: absolute;
font-size: 28px;
line-height: 55px;
font-size: 28px;
font-weight: 700;
background: linear-gradient(180deg, #014be6 0%, #014be6 100%);
background: linear-gradient(to bottom, #ffffff 5%, #3397f4 99%);
background-clip: text;
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
@ -28,45 +53,57 @@
}
.computePower_banner {
padding: 32px 32px 0;
padding: 0px 24px 0;
.banner_item_box {
padding-top: 99px;
}
.banner_left {
.banner_group {
padding-top: 24px;
& > li {
width: 266px;
width: 316px;
height: 88px;
border-radius: 8px;
background-color: rgba(256, 256, 256, 0.1);
box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.1);
border-radius: 8px 8px 8px 8px;
position: relative;
overflow: hidden;
.cp_bg_logo_icon {
min-width: 24px;
height: 26px;
background: url("@/assets/computePower/type1.svg") no-repeat 0 0;
}
.bg_banner_group_logo {
width: 266px;
height: 166.25px;
top: -38px;
width: 316px;
height: 88px;
position: absolute;
left: 52px;
background: url("@/assets/computePower/computerTypeLogo.png")
no-repeat 0 0;
background: url("@/assets/computePower/guoqi.svg") no-repeat 0 0;
background-size: cover;
opacity: 0.05;
opacity: 0.15;
}
.bg_banner_group_logo_1 {
background: url("@/assets/computePower/NVIDIA.svg");
}
}
}
}
.bg_banner_center {
width: 360px;
height: 360px;
width: 587px;
height: 592px;
background: url("@/assets/computePower/banner.png");
background-repeat: no-repeat;
background-size: contain;
}
.banner_right {
.computePowerCube_wrap {
padding: 16px;
width: 266px;
height: 400px;
// height: 400px;
border-radius: 8px;
background-color: white;
// background-color: white;
box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.1);
}
}

@ -2,7 +2,7 @@
* @Author: donghao donghao@supervision.ltd
* @Date: 2024-01-19 09:22:30
* @LastEditors: donghao donghao@supervision.ltd
* @LastEditTime: 2024-02-23 15:59:38
* @LastEditTime: 2024-02-26 17:12:10
* @FilePath: \General-AI-Platform-Web-Client\src\views\computePowerAllocation\index.vue
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
-->
@ -13,6 +13,7 @@ import ComputePowerType from "./components/computePowerType.vue";
import { ComputePowerPoolItem } from "./typing";
import { AnimationPic } from "@/components/AnimationCard";
import computePowerAllocationIcon from "@/assets/animate/device/computePowerAllocation.json";
import { DsBox1 } from "@/components/DsBox";
defineOptions({
name: "ComputePowerAllocation"
@ -20,41 +21,64 @@ defineOptions({
const groupList = ref<Record<string, any>[]>([
{
label: "NVIDIA GeForce 4090"
label: "NVIDIA GeForce 4090",
type: 1
},
{
label: "NVIDIA GeForce 4090"
label: "瑞芯微 RK3566",
type: 0
},
{
label: "NVIDIA GeForce 4090"
label: "瑞芯微 RK3566",
type: 0
},
{
label: "NVIDIA GeForce 4090"
label: "NVIDIA GeForce 4090",
type: 1
},
{
label: "NVIDIA GeForce 4090",
type: 1
}
]); //dom;
const poolsData: ComputePowerPoolItem[] = [
{
name: "离岗监控",
type: 1,
proportion: 34,
name: "螺纹缺陷检测",
type: 4,
proportion: 25,
pretreatmentEfficiency: 20,
color: "#3879FE",
bgColor: "linear-gradient(180deg, #015DE6 0%, #4881F6 100%)"
},
{
name: "玩手机监控",
type: 2,
proportion: 46,
name: "螺纹无牙缺陷检测",
type: 3,
proportion: 7,
pretreatmentEfficiency: 15,
color: "#FAA90B",
bgColor: "linear-gradient(180deg, #FA8316 0%, #FAAD16 100%)"
},
{
name: "压板缺陷检测",
type: 2,
proportion: 20,
pretreatmentEfficiency: 20,
color: "#18CAF9",
bgColor: "linear-gradient(180deg, #6FFFFF 0%, #06BEF9 100%)"
},
{
name: "打孔不良检测",
type: 1,
proportion: 38,
pretreatmentEfficiency: 38,
color: "#24ED75",
bgColor: "linear-gradient(180deg, #43EA80 0%, #38F8D4 100%)"
},
{
name: "空闲算力",
type: 0,
proportion: 20,
proportion: 10,
pretreatmentEfficiency: 0,
color: "#DCDCDC",
bgColor: "linear-gradient(90deg, #7B7979 0%, #C1C1C1 100%)"
@ -63,78 +87,57 @@ const poolsData: ComputePowerPoolItem[] = [
</script>
<template>
<div
class="flex items-center justify-center main_booy_container computePowerAllocation_wrap"
>
<div class="flex justify-between computePowerAllocation_wrap">
<div class="banner_side banner_side_left" />
<div class="computePowerAllocation_body">
<div class="flex justify-center computePower_header">
<svg
xmlns="http://www.w3.org/2000/svg"
width="667"
height="50"
viewBox="0 0 667 50"
fill="none"
>
<path
d="M4 1.25H2.39949L3.42366 2.47992L21.2082 23.8375C25.9105 29.4845 32.879 32.75 40.2275 32.75H169.682C173.92 32.75 178.078 33.9086 181.706 36.1005L192.922 42.8776C199.28 46.7193 206.567 48.75 213.996 48.75H316.342C317.146 48.75 317.909 48.3989 318.431 47.7889L320.231 45.6869L319.662 45.199L320.231 45.6869C320.469 45.4096 320.816 45.25 321.181 45.25H346.911C347.242 45.25 347.56 45.3818 347.795 45.6165L350.121 47.9438C350.636 48.46 351.336 48.75 352.066 48.75H443.362C450.566 48.75 457.641 46.8403 463.867 43.2154L476.417 35.9077C479.969 33.8396 484.006 32.75 488.116 32.75H630.515C638.594 32.75 646.165 28.8065 650.796 22.186L664.615 2.42988L665.44 1.25H664H4Z"
fill="url(#paint0_linear_7277_81243)"
stroke="white"
stroke-width="1.5"
/>
<defs>
<linearGradient
id="paint0_linear_7277_81243"
x1="334"
y1="10"
x2="334"
y2="48"
gradientUnits="userSpaceOnUse"
>
<stop stop-color="#154DDD" stop-opacity="0.15" />
<stop offset="1" stop-color="#154DDD" stop-opacity="0" />
</linearGradient>
</defs>
</svg>
<span>苏胜天算力资源池</span>
</div>
<div class="flex items-center justify-between computePower_banner">
<div class="banner_left">
<p class="hf-1">硬件组成</p>
<ul class="banner_group">
<li
v-for="(v, k) in groupList"
:key="k"
class="flex items-center bg-white p-[16px] mt-[16px]"
>
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
>
<path
d="M8.948 8.7975V7.3675C9.08911 7.35702 9.23051 7.35102 9.372 7.3495C13.294 7.2255 15.865 10.7235 15.865 10.7235C15.865 10.7235 13.091 14.5745 10.115 14.5745C9.72158 14.5753 9.33059 14.5128 8.957 14.3895V10.0435C10.485 10.2285 10.794 10.9005 11.704 12.4285L13.744 10.7145C13.744 10.7145 12.252 8.7625 9.744 8.7625C9.47818 8.75656 9.21227 8.76826 8.948 8.7975ZM8.948 4.0625V6.2005L9.372 6.1735C14.822 5.9885 18.382 10.6435 18.382 10.6435C18.382 10.6435 14.302 15.6075 10.052 15.6075C9.68491 15.6063 9.31858 15.5739 8.957 15.5105V16.8355C9.257 16.8705 9.567 16.8975 9.867 16.8975C13.824 16.8975 16.687 14.8745 19.46 12.4895C19.919 12.8605 21.8 13.7525 22.19 14.1415C19.557 16.3495 13.418 18.1255 9.937 18.1255C9.602 18.1255 9.284 18.1075 8.966 18.0725V19.9365H24V4.0625H8.948ZM8.948 14.3885V15.5195C5.291 14.8655 4.275 11.0595 4.275 11.0595C4.275 11.0595 6.033 9.1155 8.948 8.7975V10.0345H8.94C7.412 9.8485 6.21 11.2795 6.21 11.2795C6.21 11.2795 6.89 13.6915 8.949 14.3895M2.456 10.8995C2.456 10.8995 4.62 7.7025 8.956 7.3665V6.2005C4.153 6.5895 0 10.6525 0 10.6525C0 10.6525 2.35 17.4545 8.948 18.0725V16.8355C4.108 16.2355 2.456 10.8995 2.456 10.8995Z"
fill="#76B900"
/>
</svg>
<p class="pf-2 pl-[12px]">{{ v.label }}</p>
<div class="bg_banner_group_logo">&nbsp;</div>
</li>
</ul>
<div class="flex justify-between computePower_banner">
<div class="flex items-center align-middle left_box banner_item_box">
<DsBox1 title="硬件组成" type="w2h2">
<template #default>
<div class="w-full h-full banner_left">
<ul class="banner_group">
<li
v-for="(v, k) in groupList"
:key="k"
class="flex items-center mb-[16px] mx-[24px]"
>
<div class="flex items-center px-[16px]">
<div class="cp_bg_logo_icon" />
<span class="pl-[12px]">{{ v.label }}</span>
</div>
<div
class="bg_banner_group_logo"
:class="`bg_banner_group_logo_${v.type}`"
/>
</li>
</ul>
</div>
</template>
</DsBox1>
</div>
<!-- <div class="bg_banner_center">{{ null }}</div> -->
<AnimationPic :value="computePowerAllocationIcon" />
<div class="banner_center">
<div class="flex justify-center computePower_header py-[12px]">
<div class="title_side title_left" />
<span class="ff1">苏胜天算力资源池</span>
<div class="title_side title_right" />
</div>
<div class="bg_banner_center">{{ null }}</div>
</div>
<!-- <AnimationPic :value="computePowerAllocationIcon" /> -->
<!-- <AnimationPic class="device-icon-box" value="deviceClassify(device)" /> -->
<div class="banner_right">
<p class="hf-1 pb-[16px]">算力配置</p>
<ComputePowerCube :list="poolsData" />
<div class="flex items-center align-middle right_box banner_item_box">
<DsBox1 title="算力配置" type="w2h2">
<template #default>
<div class="w-full h-full banner_right">
<ComputePowerCube :list="poolsData" />
</div>
</template>
</DsBox1>
</div>
</div>
<ul
class="flex items-center justify-center computePower_footer mt-[70px]"
class="flex items-center justify-center flex-wrap computePower_footer mt-[30px]"
>
<li
v-for="(v, k) in poolsData"
@ -145,6 +148,7 @@ const poolsData: ComputePowerPoolItem[] = [
</li>
</ul>
</div>
<div class="banner_side banner_side_right" />
</div>
</template>

@ -13,4 +13,5 @@ export type ComputePowerPoolItem = {
color?: string; //
proportion: number;
pretreatmentEfficiency?: number;
bgColor?: string;
};

@ -2,7 +2,7 @@
* @Author: donghao donghao@supervision.ltd
* @Date: 2024-02-23 10:14:31
* @LastEditors: donghao donghao@supervision.ltd
* @LastEditTime: 2024-02-23 13:45:25
* @LastEditTime: 2024-02-26 10:59:16
* @FilePath: \General-AI-Platform-Web-Client\src\pages\dataScreen\views\device\deviceList.vue
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
-->

@ -1,7 +1,9 @@
import { $t } from "@/plugins/i18n";
export default {
path: "/model",
meta: {
title: "模型列表",
title: $t("menus.hsModelList"),
icon: "icon-moxingliebiao-weixuan",
// showLink: false,
rank: 4,

@ -4,6 +4,13 @@ $--web-font2: #666;
$--web-font3: #999;
$--theme-color: #154ddd;
@font-face {
font-family: "DouyinSansBold";
src: url("@/assets/fonts/DouyinSansBold.otf") format("opentype");
font-weight: normal;
font-style: normal;
}
.text-web-font0 {
color: $--web-font0;
}
@ -103,3 +110,7 @@ $--theme-color: #154ddd;
white-space: pre-wrap;
/* 保持换行符不被合并 */
}
.ff1 {
font-family: "DouyinSansBold";
}

Loading…
Cancel
Save