feat: 继续完善外层页面

develop2
donghao 12 months ago
parent d6014aa998
commit 967a6785e0

@ -2,7 +2,7 @@
* @Author: donghao donghao@supervision.ltd
* @Date: 2024-03-27 14:56:27
* @LastEditors: donghao donghao@supervision.ltd
* @LastEditTime: 2024-05-13 15:32:09
* @LastEditTime: 2024-05-17 13:45:53
* @FilePath: \general-ai-manage\config\routes.ts
* @Description:
*/
@ -39,17 +39,27 @@ export const homeRoute = [
* @param level
* @param isHideMenu
* @param icon
* @param rootMenuKey key
*/
const modelRouteIndex = {
name: 'model-index',
name: 'model-manage',
path: '/home/model-index',
component: './Model/ModelIndex',
access: 'canReadMenu',
menuIcon: 'icon-moxingliebiao-unselected',
key: 'model001',
key: 'model000',
};
const subModelRoute = [
{
name: 'model-index',
path: '/home/model-index',
component: './Model/ModelIndex',
access: 'canReadMenu',
menuIcon: 'icon-moxingliebiao-unselected',
key: 'model001',
rootMenuKey: 'model000',
},
{
name: 'model-runtime-lib',
path: '/home/runtime-lib',
@ -58,6 +68,7 @@ const subModelRoute = [
key: 'model002',
menuIcon: 'icon-moxingyunhangku-unselected',
level: 2,
rootMenuKey: 'model000',
},
{
name: 'model-detail',
@ -67,6 +78,7 @@ const subModelRoute = [
key: 'model003',
isHideMenu: true,
level: 2,
rootMenuKey: 'model000',
},
];
@ -74,7 +86,7 @@ export const modelRoute = [
{
...modelRouteIndex,
level: 1,
subMenu: [modelRouteIndex, ...subModelRoute],
subMenu: [...subModelRoute],
},
...subModelRoute,
];

@ -12,7 +12,7 @@ import { successMockApiProps } from './typing';
import { fetchMockSuccessFullByOther } from './utils/apiMock';
export default {
// 行业
// 行业
'GET /api/dict/industry': async (req: Request, res: Response) => {
const resData: successMockApiProps = {
...fetchMockSuccessFullByOther(mockGetIndustryDictData),

@ -2,7 +2,7 @@
* @Author: donghao donghao@supervision.ltd
* @Date: 2024-04-19 17:10:21
* @LastEditors: donghao donghao@supervision.ltd
* @LastEditTime: 2024-05-14 09:46:12
* @LastEditTime: 2024-05-16 15:24:29
* @FilePath: \general-ai-platform-web\mock\pools\businessProjectData.ts
* @Description:
*/

@ -7,7 +7,7 @@
* @Description: mock
*/
// 行业
// 行业
export const mockGetIndustryDictData = {
data: {
results: [

@ -3,7 +3,7 @@ import { generateRandomDateTimeByYear } from '../utils/mockMoment';
const generatrModelRuntimeLib = () => {
const currList: Record<string, any>[] = [];
const count = 31;
const count = 5;
const nameArr = [
'玻璃表面缺陷检测',
'管材表面缺陷检测',

Binary file not shown.

@ -1,301 +1,289 @@
<svg width="194" height="129" viewBox="0 0 194 129" fill="none" xmlns="http://www.w3.org/2000/svg">
<g filter="url(#filter0_d_11045_41425)">
<path d="M117.964 50.9382L154.477 72.1147L117.964 93.2911L81.4509 72.1147L117.964 50.9382Z" fill="url(#paint0_linear_11045_41425)"/>
<path d="M24.6183 58.3708L45.2365 70.3288L24.6183 82.2868L4 70.3288L24.6183 58.3708Z" fill="url(#paint1_linear_11045_41425)"/>
<path d="M45.2364 57.9582L24.6182 46.0002V58.3706L45.2364 70.3286V57.9582Z" fill="#D9D9D9"/>
<path d="M24.6183 46.0002L4 57.9582V70.3286L24.6183 58.3706V46.0002Z" fill="#D9D9D9"/>
<path d="M4 57.9584L24.6183 69.9164V82.2867L4 70.3287V57.9584Z" fill="url(#paint2_linear_11045_41425)"/>
<rect width="23.835" height="23.835" transform="matrix(0.865042 0.501699 -0.865042 0.501699 24.6182 46.0002)" fill="#FCFEFF"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M45.2364 57.9584L24.6182 69.9164V82.2867L27.9999 80.3254V78.0119C27.9999 76.9073 28.7745 75.5626 29.73 75.0085L40.2698 68.8957C41.2253 68.3415 41.9999 68.7877 41.9999 69.8923V72.2058L45.2364 70.3287V57.9584Z" fill="url(#paint3_linear_11045_41425)"/>
<path d="M154.477 54.9444L117.964 33.7679V50.938L154.477 72.1145V54.9444Z" fill="#D9D9D9"/>
<path d="M117.964 33.7679L81.4509 54.9444V72.1145L117.964 50.938V33.7679Z" fill="#D9D9D9"/>
<path d="M27.1719 115.04C26.8994 114.882 26.7631 114.674 26.7632 114.467C26.7632 114.26 26.8995 114.053 27.1719 113.895L177.171 26.8999C177.716 26.5838 178.6 26.5838 179.145 26.8999L189.013 32.6233C189.286 32.7813 189.422 32.9884 189.422 33.1955C189.422 33.4027 189.286 33.6099 189.013 33.7679L39.014 120.763C38.469 121.079 37.5853 121.079 37.0403 120.763L27.1719 115.04Z" fill="#D9D9D9"/>
<path d="M179.145 25.183C178.6 24.8669 177.716 24.8669 177.171 25.183V26.9C177.716 26.5839 178.6 26.5839 179.145 26.9V25.183Z" fill="#D9D9D9"/>
<path d="M189.013 30.9062L179.145 25.1829V26.8999L189.013 32.6232V30.9062Z" fill="#D9D9D9"/>
<path d="M189.423 31.4784C189.423 31.2713 189.286 31.0642 189.013 30.9061V32.6231C189.286 32.7812 189.423 32.9883 189.423 33.1954V31.4784Z" fill="#D9D9D9"/>
<path d="M189.013 32.0511C189.286 31.893 189.423 31.6859 189.423 31.4788V33.1956C189.423 33.4028 189.286 33.61 189.013 33.7681V32.0511Z" fill="#234ECD"/>
<path d="M177.171 25.1829L27.1719 112.178V113.895L177.171 26.8999V25.1829Z" fill="#D9D9D9"/>
<path d="M39.0142 119.046L189.013 32.0511V33.7682L39.0142 120.763V119.046Z" fill="#234ECD"/>
<path d="M26.7632 112.75C26.7632 112.543 26.8997 112.336 27.1726 112.178V113.895C26.8997 114.053 26.7632 114.26 26.7632 114.467V112.75Z" fill="#D9D9D9"/>
<path d="M27.1726 113.323C26.8997 113.165 26.7632 112.958 26.7632 112.75L26.7632 114.467C26.7631 114.674 26.8996 114.882 27.1726 115.04V113.323Z" fill="#234ECD"/>
<path d="M27.1719 113.323L37.0402 119.046V120.763L27.1719 115.04V113.323Z" fill="#234ECD"/>
<path d="M37.0405 119.046C37.5855 119.362 38.4692 119.362 39.0142 119.046V120.763C38.4692 121.079 37.5855 121.079 37.0405 120.763V119.046Z" fill="#234ECD"/>
<g filter="url(#filter1_i_11045_41425)">
<path d="M27.0501 113.252C26.5724 112.975 26.5724 112.526 27.0501 112.249L176.428 25.6139C177.383 25.0597 178.933 25.0597 179.888 25.6139L188.27 30.4751C189.225 31.0293 189.225 31.9277 188.27 32.4819L38.8921 119.117C38.4144 119.394 37.6398 119.394 37.1621 119.117L27.0501 113.252Z" fill="url(#paint4_linear_11045_41425)"/>
<svg width="186" height="121" viewBox="0 0 186 121" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M113.964 50.9382L150.477 72.1147L113.964 93.2911L77.4512 72.1147L113.964 50.9382Z" fill="url(#paint0_linear_55_19272)"/>
<path d="M20.6183 58.3708L41.2365 70.3288L20.6183 82.2868L0 70.3288L20.6183 58.3708Z" fill="url(#paint1_linear_55_19272)"/>
<path d="M41.2364 57.9582L20.6182 46.0002V58.3706L41.2364 70.3286V57.9582Z" fill="#D9D9D9"/>
<path d="M20.6183 46.0002L0 57.9582V70.3286L20.6183 58.3706V46.0002Z" fill="#D9D9D9"/>
<path d="M0 57.9584L20.6183 69.9164V82.2867L0 70.3287V57.9584Z" fill="url(#paint2_linear_55_19272)"/>
<rect width="23.835" height="23.835" transform="matrix(0.865042 0.501699 -0.865042 0.501699 20.6182 46.0002)" fill="#FCFEFF"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M41.2364 57.9584L20.6182 69.9164V82.2867L23.9999 80.3254V78.0119C23.9999 76.9073 24.7745 75.5626 25.73 75.0085L36.2698 68.8957C37.2253 68.3415 37.9999 68.7877 37.9999 69.8923V72.2058L41.2364 70.3287V57.9584Z" fill="url(#paint3_linear_55_19272)"/>
<path d="M150.477 54.9444L113.964 33.7679V50.938L150.477 72.1145V54.9444Z" fill="#D9D9D9"/>
<path d="M113.964 33.7679L77.4512 54.9444V72.1145L113.964 50.938V33.7679Z" fill="#D9D9D9"/>
<path d="M23.1715 115.04C22.8989 114.882 22.7627 114.674 22.7627 114.467C22.7627 114.26 22.899 114.053 23.1715 113.895L173.171 26.8999C173.716 26.5838 174.599 26.5838 175.144 26.8999L185.013 32.6233C185.285 32.7813 185.421 32.9884 185.421 33.1955C185.422 33.4027 185.285 33.6099 185.013 33.7679L35.0135 120.763C34.4685 121.079 33.5848 121.079 33.0398 120.763L23.1715 115.04Z" fill="#D9D9D9"/>
<path d="M175.145 25.183C174.6 24.8669 173.716 24.8669 173.171 25.183V26.9C173.716 26.5839 174.6 26.5839 175.145 26.9V25.183Z" fill="#D9D9D9"/>
<path d="M185.013 30.9062L175.145 25.1829V26.8999L185.013 32.6232V30.9062Z" fill="#D9D9D9"/>
<path d="M185.422 31.4784C185.422 31.2713 185.286 31.0642 185.013 30.9061V32.6231C185.286 32.7812 185.422 32.9883 185.422 33.1954V31.4784Z" fill="#D9D9D9"/>
<path d="M185.013 32.0511C185.286 31.893 185.422 31.6859 185.422 31.4788V33.1956C185.422 33.4028 185.286 33.61 185.013 33.7681V32.0511Z" fill="#234ECD"/>
<path d="M173.171 25.1829L23.1719 112.178V113.895L173.171 26.8999V25.1829Z" fill="#D9D9D9"/>
<path d="M35.0137 119.046L185.013 32.0511V33.7682L35.0137 120.763V119.046Z" fill="#234ECD"/>
<path d="M22.7627 112.75C22.7627 112.543 22.8992 112.336 23.1721 112.178V113.895C22.8992 114.053 22.7627 114.26 22.7627 114.467V112.75Z" fill="#D9D9D9"/>
<path d="M23.1721 113.323C22.8992 113.165 22.7627 112.958 22.7627 112.75L22.7627 114.467C22.7627 114.674 22.8991 114.882 23.1721 115.04V113.323Z" fill="#234ECD"/>
<path d="M23.1719 113.323L33.0402 119.046V120.763L23.1719 115.04V113.323Z" fill="#234ECD"/>
<path d="M33.04 119.046C33.5851 119.362 34.4687 119.362 35.0137 119.046V120.763C34.4687 121.079 33.5851 121.079 33.04 120.763V119.046Z" fill="#234ECD"/>
<g filter="url(#filter0_i_55_19272)">
<path d="M23.0496 113.252C22.5719 112.975 22.5719 112.526 23.0496 112.249L172.427 25.6139C173.383 25.0597 174.932 25.0597 175.888 25.6139L184.269 30.4751C185.225 31.0293 185.225 31.9277 184.269 32.4819L34.8917 119.117C34.4139 119.394 33.6393 119.394 33.1616 119.117L23.0496 113.252Z" fill="url(#paint4_linear_55_19272)"/>
</g>
<path d="M139.3 60.6078C143.335 58.2792 143.341 52.4576 139.311 50.1203C137.436 49.0329 135.123 49.03 133.246 50.1126L74.941 83.7309C70.5772 86.247 63.5258 86.2411 59.1746 83.7175L43.4445 74.5945C41.5628 73.5032 39.2407 73.5032 37.359 74.5945C33.3294 76.9315 33.3294 82.7503 37.359 85.0873L55.2337 95.4541C61.7624 99.2406 72.3434 99.2482 78.8883 95.4712L139.3 60.6078Z" fill="#D9D9D9"/>
<path d="M148.37 54.229L136.281 47.2179V48.3626L148.37 55.3737V54.229Z" fill="#D9D9D9"/>
<path d="M136.281 47.2179L75.1891 82.443C75.0355 82.5316 74.9409 82.6953 74.9409 82.8726C74.9409 83.2541 75.3539 83.4927 75.6844 83.3021L136.281 48.3626V47.2179Z" fill="#D9D9D9"/>
<path d="M40.4017 71.6851L28.313 78.6962V79.8409L40.4017 72.8297V71.6851Z" fill="#D9D9D9"/>
<path d="M58.928 82.4297L40.4019 71.6851V72.8297L58.4313 83.2863C58.7613 83.4777 59.1748 83.2395 59.1748 82.858C59.1748 82.6814 59.0808 82.5183 58.928 82.4297Z" fill="#D9D9D9"/>
<path d="M74.1824 82.9858C70.0562 84.9682 64.0506 84.9634 59.9338 82.9748C59.5902 82.8089 59.1748 83.0508 59.1748 83.4324C59.1748 83.6089 59.2678 83.7725 59.4227 83.857C63.706 86.1947 70.3965 86.2005 74.6918 83.8704C74.8476 83.7858 74.9411 83.6217 74.9411 83.4444C74.9411 83.0629 74.5263 82.8206 74.1824 82.9858Z" fill="#D9D9D9"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M78.8883 94.3264L148.369 54.2291V55.3738L78.8883 95.4711C72.3434 99.2481 61.7623 99.2405 55.2336 95.4541L55.2337 95.4543L28.313 79.8411V78.6964L55.2337 94.3096L55.2336 94.3094C61.7623 98.0958 72.3434 98.1035 78.8883 94.3264Z" fill="url(#paint5_linear_11045_41425)"/>
<g filter="url(#filter2_i_11045_41425)">
<path d="M148.369 54.2291L136.281 47.2179L77.4267 81.1529C71.6888 84.4613 62.4172 84.4534 56.696 81.1353L40.4017 71.6851L28.3129 78.6962L55.8286 94.6545C62.0284 98.2502 72.0765 98.2575 78.2917 94.6707L148.369 54.2291Z" fill="url(#paint6_linear_11045_41425)"/>
<path d="M135.299 60.6078C139.334 58.2792 139.341 52.4576 135.311 50.1203C133.436 49.0329 131.123 49.03 129.245 50.1126L70.9405 83.7309C66.5767 86.247 59.5253 86.2411 55.1742 83.7175L39.444 74.5945C37.5623 73.5032 35.2402 73.5032 33.3585 74.5945C29.329 76.9315 29.3289 82.7503 33.3585 85.0873L51.2332 95.4541C57.7619 99.2406 68.3429 99.2482 74.8878 95.4712L135.299 60.6078Z" fill="#D9D9D9"/>
<path d="M144.369 54.229L132.28 47.2179V48.3626L144.369 55.3737V54.229Z" fill="#D9D9D9"/>
<path d="M132.28 47.2179L71.1886 82.443C71.035 82.5316 70.9404 82.6953 70.9404 82.8726C70.9404 83.2541 71.3534 83.4927 71.6839 83.3021L132.28 48.3626V47.2179Z" fill="#D9D9D9"/>
<path d="M36.4013 71.6851L24.3125 78.6962V79.8409L36.4013 72.8297V71.6851Z" fill="#D9D9D9"/>
<path d="M54.9276 82.4297L36.4014 71.6851V72.8297L54.4308 83.2863C54.7608 83.4777 55.1743 83.2395 55.1743 82.858C55.1743 82.6814 55.0803 82.5183 54.9276 82.4297Z" fill="#D9D9D9"/>
<path d="M70.1814 82.9858C66.0552 84.9682 60.0496 84.9634 55.9328 82.9748C55.5892 82.8089 55.1738 83.0508 55.1738 83.4324C55.1738 83.6089 55.2668 83.7725 55.4217 83.857C59.705 86.1947 66.3955 86.2005 70.6908 83.8704C70.8466 83.7858 70.9402 83.6217 70.9402 83.4444C70.9402 83.0629 70.5253 82.8206 70.1814 82.9858Z" fill="#D9D9D9"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M74.8878 94.3264L144.369 54.2291V55.3738L74.8878 95.4711C68.3429 99.2481 57.7619 99.2405 51.2332 95.4541L51.2332 95.4543L24.3125 79.8411V78.6964L51.2332 94.3096L51.2332 94.3094C57.7619 98.0958 68.3429 98.1035 74.8878 94.3264Z" fill="url(#paint5_linear_55_19272)"/>
<g filter="url(#filter1_i_55_19272)">
<path d="M144.368 54.2291L132.28 47.2179L73.4257 81.1529C67.6879 84.4613 58.4162 84.4534 52.695 81.1353L36.4007 71.6851L24.3119 78.6962L51.8276 94.6545C58.0274 98.2502 68.0755 98.2575 74.2907 94.6707L144.368 54.2291Z" fill="url(#paint6_linear_55_19272)"/>
</g>
<path d="M117.964 76.1208L154.477 54.9443V72.1144L117.964 93.2909V76.1208Z" fill="url(#paint7_linear_11045_41425)"/>
<rect width="42.2095" height="42.2095" transform="matrix(0.865042 0.501699 -0.865042 0.501699 117.915 33.7679)" fill="url(#paint8_linear_11045_41425)"/>
<rect width="29.8279" height="29.8279" transform="matrix(0.865042 0.501699 -0.865042 0.501699 117.915 40.0637)" fill="#0776FF"/>
<path d="M125.015 24.6568L123.441 23.7438L121.152 26.0429L122.726 26.9559L125.015 24.6568Z" fill="#1963FF"/>
<path d="M117.915 22.5052L117.969 22.5365L115.68 24.8356L115.626 24.8044L117.915 22.5052Z" fill="#8DB2FF"/>
<path d="M125.015 35.8002V24.6569L122.726 26.956V38.0993L125.015 35.8002Z" fill="#1963FF"/>
<path d="M117.968 22.5366L119.475 28.2956L117.187 30.5947L115.68 24.8357L117.968 22.5366Z" fill="#8DB2FF"/>
<path d="M117.04 20.0319L113.367 29.0448L111.078 31.3439L114.751 22.331L117.04 20.0319Z" fill="#8DB2FF"/>
<path d="M123.441 34.8871L125.015 35.8001L122.726 38.0992L121.152 37.1862L123.441 34.8871Z" fill="#1963FF"/>
<path d="M119.946 30.0669L120.821 33.3677L118.532 35.6669L117.658 32.366L119.946 30.0669Z" fill="#8DB2FF"/>
<path d="M120.821 33.3678L122.503 34.3432L120.214 36.6423L118.532 35.6669L120.821 33.3678Z" fill="#8DB2FF"/>
<path d="M118.829 21.0697L117.04 20.0319L114.751 22.331L116.541 23.3688L118.829 21.0697Z" fill="#1A63FF"/>
<path d="M122.503 34.3431L118.83 21.0695L116.541 23.3686L120.214 36.6422L122.503 34.3431Z" fill="#1A63FF"/>
<path d="M121.152 26.0429L122.726 26.9559V38.0992L121.152 37.1862V26.0429Z" fill="#8DB2FF"/>
<path d="M114.751 22.3307L116.541 23.3685L120.214 36.6422L118.532 35.6668L117.658 32.3659L113.635 30.0327L112.76 32.3191L111.078 31.3437L114.751 22.3307ZM114.105 28.8075L117.187 30.5945L115.68 24.8356L115.626 24.8044L114.105 28.8075Z" fill="#8DB2FF"/>
<path d="M30.394 34.6015L29.1683 33.8906L27.3862 35.6807L28.6119 36.3916L30.394 34.6015Z" fill="#1963FF"/>
<path d="M24.8658 32.926L24.9077 32.9503L23.1256 34.7404L23.0837 34.7161L24.8658 32.926Z" fill="#8DB2FF"/>
<path d="M30.3941 43.2776V34.6013L28.6121 36.3914V45.0677L30.3941 43.2776Z" fill="#1963FF"/>
<path d="M24.9075 32.9508L26.0808 37.4348L24.2988 39.2249L23.1255 34.7409L24.9075 32.9508Z" fill="#8DB2FF"/>
<path d="M24.1847 31.0002L21.3247 38.0178L19.5427 39.8079L22.4027 32.7904L24.1847 31.0002Z" fill="#8DB2FF"/>
<path d="M29.1683 42.5667L30.394 43.2775L28.6119 45.0676L27.3862 44.3568L29.1683 42.5667Z" fill="#1963FF"/>
<path d="M26.4473 38.8137L27.1282 41.3838L25.3462 43.1739L24.6653 40.6038L26.4473 38.8137Z" fill="#8DB2FF"/>
<path d="M27.1285 41.3838L28.438 42.1433L26.6559 43.9334L25.3464 43.1739L27.1285 41.3838Z" fill="#8DB2FF"/>
<path d="M25.5779 31.8083L24.1846 31.0002L22.4026 32.7904L23.7959 33.5984L25.5779 31.8083Z" fill="#1A63FF"/>
<path d="M28.4379 42.1431L25.5779 31.8081L23.7959 33.5982L26.6559 43.9332L28.4379 42.1431Z" fill="#1A63FF"/>
<path d="M27.3863 35.6806L28.612 36.3915V45.0678L27.3863 44.3569V35.6806Z" fill="#8DB2FF"/>
<path d="M22.4027 32.7903L23.796 33.5984L26.656 43.9333L25.3465 43.1739L24.6655 40.6038L21.5332 38.7871L20.8522 40.5673L19.5427 39.8079L22.4027 32.7903ZM21.8998 37.8332L24.2989 39.2246L23.1255 34.7406L23.0836 34.7163L21.8998 37.8332Z" fill="#8DB2FF"/>
<path d="M136.902 49.3048L118.008 38.3466V44.0699L136.902 55.0282V49.3048Z" fill="#F8FEFF"/>
<g filter="url(#filter3_d_11045_41425)">
<rect width="21.8423" height="21.8423" transform="matrix(0.865042 0.501699 -0.865042 0.501699 118.008 44.0698)" fill="#D1DFFF"/>
<path d="M113.964 76.1208L150.477 54.9443V72.1144L113.964 93.2909V76.1208Z" fill="url(#paint7_linear_55_19272)"/>
<rect width="42.2095" height="42.2095" transform="matrix(0.865042 0.501699 -0.865042 0.501699 113.915 33.7679)" fill="url(#paint8_linear_55_19272)"/>
<rect width="29.8279" height="29.8279" transform="matrix(0.865042 0.501699 -0.865042 0.501699 113.915 40.0637)" fill="#0776FF"/>
<path d="M121.015 24.6568L119.441 23.7438L117.152 26.0429L118.727 26.9559L121.015 24.6568Z" fill="#1963FF"/>
<path d="M113.915 22.5052L113.969 22.5365L111.68 24.8356L111.626 24.8044L113.915 22.5052Z" fill="#8DB2FF"/>
<path d="M121.015 35.8002V24.6569L118.727 26.956V38.0993L121.015 35.8002Z" fill="#1963FF"/>
<path d="M113.968 22.5366L115.475 28.2956L113.187 30.5947L111.68 24.8357L113.968 22.5366Z" fill="#8DB2FF"/>
<path d="M113.04 20.0319L109.367 29.0448L107.078 31.3439L110.751 22.331L113.04 20.0319Z" fill="#8DB2FF"/>
<path d="M119.441 34.8871L121.015 35.8001L118.727 38.0992L117.152 37.1862L119.441 34.8871Z" fill="#1963FF"/>
<path d="M115.946 30.0669L116.821 33.3677L114.532 35.6669L113.657 32.366L115.946 30.0669Z" fill="#8DB2FF"/>
<path d="M116.821 33.3678L118.503 34.3432L116.214 36.6423L114.532 35.6669L116.821 33.3678Z" fill="#8DB2FF"/>
<path d="M114.829 21.0697L113.04 20.0319L110.751 22.331L112.54 23.3688L114.829 21.0697Z" fill="#1A63FF"/>
<path d="M118.503 34.3431L114.83 21.0695L112.541 23.3686L116.214 36.6422L118.503 34.3431Z" fill="#1A63FF"/>
<path d="M117.152 26.0429L118.726 26.9559V38.0992L117.152 37.1862V26.0429Z" fill="#8DB2FF"/>
<path d="M110.751 22.3307L112.541 23.3685L116.214 36.6422L114.532 35.6668L113.658 32.3659L109.635 30.0327L108.76 32.3191L107.078 31.3437L110.751 22.3307ZM110.105 28.8075L113.187 30.5945L111.68 24.8356L111.626 24.8044L110.105 28.8075Z" fill="#8DB2FF"/>
<path d="M26.3944 34.6015L25.1687 33.8906L23.3867 35.6807L24.6124 36.3916L26.3944 34.6015Z" fill="#1963FF"/>
<path d="M20.866 32.926L20.9079 32.9503L19.1259 34.7404L19.084 34.7161L20.866 32.926Z" fill="#8DB2FF"/>
<path d="M26.3943 43.2776V34.6013L24.6123 36.3914V45.0677L26.3943 43.2776Z" fill="#1963FF"/>
<path d="M20.908 32.9508L22.0813 37.4348L20.2993 39.2249L19.126 34.7409L20.908 32.9508Z" fill="#8DB2FF"/>
<path d="M20.185 31.0002L17.325 38.0178L15.543 39.8079L18.4029 32.7904L20.185 31.0002Z" fill="#8DB2FF"/>
<path d="M25.1687 42.5667L26.3944 43.2775L24.6124 45.0676L23.3867 44.3568L25.1687 42.5667Z" fill="#1963FF"/>
<path d="M22.448 38.8137L23.129 41.3838L21.347 43.1739L20.666 40.6038L22.448 38.8137Z" fill="#8DB2FF"/>
<path d="M23.1287 41.3838L24.4382 42.1433L22.6562 43.9334L21.3467 43.1739L23.1287 41.3838Z" fill="#8DB2FF"/>
<path d="M21.5787 31.8083L20.1853 31.0002L18.4033 32.7904L19.7966 33.5984L21.5787 31.8083Z" fill="#1A63FF"/>
<path d="M24.4379 42.1431L21.5779 31.8081L19.7959 33.5982L22.6559 43.9332L24.4379 42.1431Z" fill="#1A63FF"/>
<path d="M23.3865 35.6806L24.6122 36.3915V45.0678L23.3865 44.3569V35.6806Z" fill="#8DB2FF"/>
<path d="M18.4029 32.7903L19.7963 33.5984L22.6562 43.9333L21.3467 43.1739L20.6658 40.6038L17.5334 38.7871L16.8525 40.5673L15.543 39.8079L18.4029 32.7903ZM17.9001 37.8332L20.2991 39.2246L19.1258 34.7406L19.0839 34.7163L17.9001 37.8332Z" fill="#8DB2FF"/>
<path d="M132.902 49.3048L114.008 38.3466V44.0699L132.902 55.0282V49.3048Z" fill="#F8FEFF"/>
<g filter="url(#filter2_d_55_19272)">
<rect width="21.8423" height="21.8423" transform="matrix(0.865042 0.501699 -0.865042 0.501699 114.008 44.0698)" fill="#D1DFFF"/>
</g>
<path d="M118.008 38.3466L99.113 49.3048V55.0282L118.008 44.0699V38.3466Z" fill="#F8FEFF"/>
<path d="M118.008 60.2628L136.902 49.3046V55.0279L118.008 65.9862V60.2628Z" fill="#AAC7FE"/>
<path d="M99.113 49.3046L118.008 60.2628V65.9862L99.113 55.0279V49.3046Z" fill="#F8FEFF"/>
<g filter="url(#filter4_ii_11045_41425)">
<rect width="21.8423" height="21.8423" transform="matrix(0.865042 0.501699 -0.865042 0.501699 118.008 38.3466)" fill="#D1DFFF"/>
<path d="M114.008 38.3466L95.1133 49.3048V55.0282L114.008 44.0699V38.3466Z" fill="#F8FEFF"/>
<path d="M114.008 60.2628L132.902 49.3046V55.0279L114.008 65.9862V60.2628Z" fill="#AAC7FE"/>
<path d="M95.1133 49.3046L114.008 60.2628V65.9862L95.1133 55.0279V49.3046Z" fill="#F8FEFF"/>
<g filter="url(#filter3_ii_55_19272)">
<rect width="21.8423" height="21.8423" transform="matrix(0.865042 0.501699 -0.865042 0.501699 114.008 38.3466)" fill="#D1DFFF"/>
</g>
<g filter="url(#filter5_i_11045_41425)">
<rect width="13.9639" height="13.9639" transform="matrix(0.865042 0.501699 -0.865042 0.501699 118.008 42.2991)" fill="#0A6CFF"/>
<g filter="url(#filter4_i_55_19272)">
<rect width="13.9639" height="13.9639" transform="matrix(0.865042 0.501699 -0.865042 0.501699 114.008 42.2991)" fill="#0A6CFF"/>
</g>
<path d="M117.965 56.6266L106 49.6297V22.0002H129.93V49.7586L117.965 56.6266Z" fill="url(#paint9_linear_11045_41425)"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M117.964 76.1208L81.4509 54.9443V72.1144L87 75.3327V71.6976C87 69.4884 88.5492 68.5961 90.4602 69.7044L101.35 76.0204C103.261 77.1287 104.811 79.818 104.811 82.0272V85.6623L117.964 93.2909V76.1208Z" fill="url(#paint10_linear_11045_41425)"/>
<g filter="url(#filter6_f_11045_41425)">
<ellipse cx="6.26726" cy="4.57869" rx="6.26726" ry="4.57869" transform="matrix(-1 0 0 1 103.102 73.8314)" fill="#6DF9FA"/>
<path d="M113.965 56.6266L102 49.6297V22.0002H125.93V49.7586L113.965 56.6266Z" fill="url(#paint9_linear_55_19272)"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M113.964 76.1208L77.4512 54.9443V72.1144L83.0002 75.3327V71.6976C83.0002 69.4884 84.5494 68.5961 86.4604 69.7044L97.3506 76.0204C99.2616 77.1287 100.811 79.818 100.811 82.0272V85.6623L113.964 93.2909V76.1208Z" fill="url(#paint10_linear_55_19272)"/>
<g filter="url(#filter5_f_55_19272)">
<ellipse cx="6.26726" cy="4.57869" rx="6.26726" ry="4.57869" transform="matrix(-1 0 0 1 99.1016 73.8314)" fill="#6DF9FA"/>
</g>
<g filter="url(#filter7_i_11045_41425)">
<rect width="17.6508" height="17.6508" transform="matrix(0.865042 0.501699 -0.865042 0.501699 25.498 48.9839)" fill="#0A6CFF"/>
</g>
<path d="M25.5 66.5002L10.5 58.0002L10 33.0002H41L40.5 58.0002L25.5 66.5002Z" fill="url(#paint11_linear_11045_41425)"/>
<path d="M48.8553 80.6749L53.3175 83.2629L48.8553 85.8508L44.3931 83.2629L48.8553 80.6749Z" fill="#D9D9D9"/>
<path d="M53.3177 79.2813L48.8555 76.6934V80.6748L53.3177 83.2628V79.2813Z" fill="#D9D9D9"/>
<path d="M48.8553 76.6934L44.3931 79.2813V83.2628L48.8553 80.6748V76.6934Z" fill="#D9D9D9"/>
<path d="M48.8555 81.8692L53.3177 79.2812V83.2627L48.8555 85.8507V81.8692Z" fill="#89B6F4"/>
<path d="M44.3931 79.2812L48.8553 81.8692V85.8507L44.3931 83.2627V79.2812Z" fill="#DDEEFF"/>
<rect width="5.15838" height="5.15838" transform="matrix(0.865042 0.501699 -0.865042 0.501699 48.8555 76.6934)" fill="url(#paint12_linear_11045_41425)"/>
<path d="M64.2625 88.6869L68.7247 91.2748L64.2625 93.8628L59.8003 91.2748L64.2625 88.6869Z" fill="#D9D9D9"/>
<path d="M68.7249 87.2935L64.2627 84.7056V88.687L68.7249 91.275V87.2935Z" fill="#D9D9D9"/>
<path d="M64.2625 84.7056L59.8003 87.2935V91.275L64.2625 88.687V84.7056Z" fill="#D9D9D9"/>
<path d="M64.2627 89.8814L68.7249 87.2935V91.2749L64.2627 93.8629V89.8814Z" fill="#89B6F4"/>
<path d="M59.8003 87.2935L64.2625 89.8814V93.8629L59.8003 91.2749V87.2935Z" fill="#DDEEFF"/>
<rect width="5.15838" height="5.15838" transform="matrix(0.865042 0.501699 -0.865042 0.501699 64.2627 84.7056)" fill="url(#paint13_linear_11045_41425)"/>
<path d="M43.4622 107.981L47.9244 110.569L43.4622 113.157L39 110.569L43.4622 107.981Z" fill="#D9D9D9"/>
<path d="M47.9246 106.588L43.4624 104V107.981L47.9246 110.569V106.588Z" fill="#D9D9D9"/>
<path d="M43.4622 104L39 106.588V110.569L43.4622 107.981V104Z" fill="#D9D9D9"/>
<path d="M43.4624 109.176L47.9246 106.588V110.569L43.4624 113.157V109.176Z" fill="#89B6F4"/>
<path d="M39 106.588L43.4622 109.176V113.157L39 110.569V106.588Z" fill="#DDEEFF"/>
<rect width="5.15838" height="5.15838" transform="matrix(0.865042 0.501699 -0.865042 0.501699 43.4624 104)" fill="url(#paint14_linear_11045_41425)"/>
<path d="M94.4593 78.9574L98.9215 81.5454L94.4593 84.1333L89.9971 81.5454L94.4593 78.9574Z" fill="#D9D9D9"/>
<path d="M98.9214 77.5642L94.4592 74.9762V78.9577L98.9214 81.5456V77.5642Z" fill="#D9D9D9"/>
<path d="M94.4593 74.9762L89.9971 77.5642V81.5456L94.4593 78.9577V74.9762Z" fill="#D9D9D9"/>
<path d="M94.4595 80.1519L98.9217 77.564V81.5454L94.4595 84.1334V80.1519Z" fill="#89B6F4"/>
<path d="M89.9971 77.564L94.4593 80.1519V84.1334L89.9971 81.5454V77.564Z" fill="#DDEEFF"/>
<rect width="5.15838" height="5.15838" transform="matrix(0.865042 0.501699 -0.865042 0.501699 94.4595 74.9761)" fill="url(#paint15_linear_11045_41425)"/>
<path d="M158.841 40.0388L163.303 42.6268L158.841 45.2147L154.379 42.6268L158.841 40.0388Z" fill="#D9D9D9"/>
<path d="M163.304 38.6453L158.841 36.0574V40.0388L163.304 42.6268V38.6453Z" fill="#D9D9D9"/>
<path d="M158.841 36.0574L154.379 38.6453V42.6268L158.841 40.0388V36.0574Z" fill="#D9D9D9"/>
<path d="M158.841 41.2332L163.304 38.6453V42.6267L158.841 45.2147V41.2332Z" fill="#89B6F4"/>
<path d="M154.379 38.6453L158.841 41.2332V45.2147L154.379 42.6267V38.6453Z" fill="#DDEEFF"/>
<rect width="5.15838" height="5.15838" transform="matrix(0.865042 0.501699 -0.865042 0.501699 158.841 36.0574)" fill="url(#paint16_linear_11045_41425)"/>
<path d="M174.224 32.0264L178.687 34.6143L174.224 37.2023L169.762 34.6143L174.224 32.0264Z" fill="#D9D9D9"/>
<path d="M178.687 30.6326L174.224 28.0447V32.0261L178.687 34.6141V30.6326Z" fill="#D9D9D9"/>
<path d="M174.224 28.0447L169.762 30.6326V34.6141L174.224 32.0261V28.0447Z" fill="#D9D9D9"/>
<path d="M174.224 33.2206L178.687 30.6327V34.6142L174.224 37.2021V33.2206Z" fill="#89B6F4"/>
<path d="M169.762 30.6327L174.224 33.2206V37.2021L169.762 34.6142V30.6327Z" fill="#DDEEFF"/>
<rect width="5.15838" height="5.15838" transform="matrix(0.865042 0.501699 -0.865042 0.501699 174.224 28.0448)" fill="url(#paint17_linear_11045_41425)"/>
<path d="M61.1444 5.99272L65.9819 4.21065L65.0995 9.31009L60.262 11.0922L61.1444 5.99272Z" fill="#D9D9D9"/>
<path d="M62.9398 1.65873L58.1023 3.4408L61.1447 5.99262L65.9822 4.21056L62.9398 1.65873Z" fill="#D9D9D9"/>
<path d="M58.1021 3.44071L57.2197 8.54016L60.2621 11.092L61.1445 5.99254L58.1021 3.44071Z" fill="#D9D9D9"/>
<path d="M62.0574 6.75818L62.9398 1.65873L65.9822 4.21056L65.0998 9.31L62.0574 6.75818Z" fill="#5BA0FF"/>
<path d="M57.2195 8.54016L62.057 6.7581L65.0994 9.30992L60.2619 11.092L57.2195 8.54016Z" fill="#0D76DE"/>
<rect width="5.16527" height="5.16528" transform="matrix(0.936543 -0.345009 -0.170835 0.987255 58.1023 3.4408)" fill="url(#paint18_linear_11045_41425)"/>
<path d="M114.902 108.993L119.74 107.211L118.857 112.31L114.02 114.093L114.902 108.993Z" fill="#D9D9D9"/>
<path d="M116.698 104.659L111.86 106.441L114.902 108.993L119.74 107.211L116.698 104.659Z" fill="#D9D9D9"/>
<path d="M111.86 106.441L110.978 111.541L114.02 114.092L114.902 108.993L111.86 106.441Z" fill="#D9D9D9"/>
<path d="M115.815 109.759L116.698 104.659L119.74 107.211L118.858 112.31L115.815 109.759Z" fill="#5BA0FF"/>
<path d="M110.977 111.541L115.815 109.758L118.857 112.31L114.02 114.092L110.977 111.541Z" fill="#0D76DE"/>
<rect width="5.16527" height="5.16528" transform="matrix(0.936543 -0.345009 -0.170835 0.987255 111.86 106.441)" fill="url(#paint19_linear_11045_41425)"/>
<path d="M168.118 67.1817L171.494 65.9383L170.878 69.4964L167.503 70.7399L168.118 67.1817Z" fill="#D9D9D9"/>
<path d="M169.371 64.1577L165.996 65.4011L168.118 67.1817L171.494 65.9382L169.371 64.1577Z" fill="#D9D9D9"/>
<path d="M165.996 65.4011L165.38 68.9592L167.503 70.7398L168.118 67.1816L165.996 65.4011Z" fill="#D9D9D9"/>
<path d="M168.755 67.7158L169.371 64.1577L171.494 65.9382L170.878 69.4964L168.755 67.7158Z" fill="#5BA0FF"/>
<path d="M165.38 68.9592L168.755 67.7158L170.878 69.4963L167.503 70.7398L165.38 68.9592Z" fill="#0D76DE"/>
<rect width="3.60406" height="3.60406" transform="matrix(0.936543 -0.345009 -0.170835 0.987255 165.996 65.4011)" fill="url(#paint20_linear_11045_41425)"/>
<g filter="url(#filter6_i_55_19272)">
<rect width="17.6508" height="17.6508" transform="matrix(0.865042 0.501699 -0.865042 0.501699 21.498 48.9839)" fill="#0A6CFF"/>
</g>
<path d="M21.5 66.5002L6.5 58.0002L6 33.0002H37L36.5 58.0002L21.5 66.5002Z" fill="url(#paint11_linear_55_19272)"/>
<path d="M44.8558 80.6749L49.318 83.2629L44.8558 85.8508L40.3936 83.2629L44.8558 80.6749Z" fill="#D9D9D9"/>
<path d="M49.3177 79.2813L44.8555 76.6934V80.6748L49.3177 83.2628V79.2813Z" fill="#D9D9D9"/>
<path d="M44.8558 76.6934L40.3936 79.2813V83.2628L44.8558 80.6748V76.6934Z" fill="#D9D9D9"/>
<path d="M44.8555 81.8692L49.3177 79.2812V83.2627L44.8555 85.8507V81.8692Z" fill="#89B6F4"/>
<path d="M40.3936 79.2812L44.8558 81.8692V85.8507L40.3936 83.2627V79.2812Z" fill="#DDEEFF"/>
<rect width="5.15838" height="5.15838" transform="matrix(0.865042 0.501699 -0.865042 0.501699 44.8555 76.6934)" fill="url(#paint12_linear_55_19272)"/>
<path d="M60.263 88.6869L64.7252 91.2748L60.263 93.8628L55.8008 91.2748L60.263 88.6869Z" fill="#D9D9D9"/>
<path d="M64.7249 87.2935L60.2627 84.7056V88.687L64.7249 91.275V87.2935Z" fill="#D9D9D9"/>
<path d="M60.263 84.7056L55.8008 87.2935V91.275L60.263 88.687V84.7056Z" fill="#D9D9D9"/>
<path d="M60.2637 89.8814L64.7259 87.2935V91.2749L60.2637 93.8629V89.8814Z" fill="#89B6F4"/>
<path d="M55.8008 87.2935L60.263 89.8814V93.8629L55.8008 91.2749V87.2935Z" fill="#DDEEFF"/>
<rect width="5.15838" height="5.15838" transform="matrix(0.865042 0.501699 -0.865042 0.501699 60.2637 84.7056)" fill="url(#paint13_linear_55_19272)"/>
<path d="M39.4622 107.981L43.9244 110.569L39.4622 113.157L35 110.569L39.4622 107.981Z" fill="#D9D9D9"/>
<path d="M43.9241 106.588L39.4619 104V107.981L43.9241 110.569V106.588Z" fill="#D9D9D9"/>
<path d="M39.4622 104L35 106.588V110.569L39.4622 107.981V104Z" fill="#D9D9D9"/>
<path d="M39.4629 109.176L43.9251 106.588V110.569L39.4629 113.157V109.176Z" fill="#89B6F4"/>
<path d="M35 106.588L39.4622 109.176V113.157L35 110.569V106.588Z" fill="#DDEEFF"/>
<rect width="5.15838" height="5.15838" transform="matrix(0.865042 0.501699 -0.865042 0.501699 39.4629 104)" fill="url(#paint14_linear_55_19272)"/>
<path d="M90.4593 78.9574L94.9215 81.5454L90.4593 84.1333L85.9971 81.5454L90.4593 78.9574Z" fill="#D9D9D9"/>
<path d="M94.9212 77.5642L90.459 74.9762V78.9577L94.9212 81.5456V77.5642Z" fill="#D9D9D9"/>
<path d="M90.4593 74.9762L85.9971 77.5642V81.5456L90.4593 78.9577V74.9762Z" fill="#D9D9D9"/>
<path d="M90.459 80.1519L94.9212 77.564V81.5454L90.459 84.1334V80.1519Z" fill="#89B6F4"/>
<path d="M85.9971 77.564L90.4593 80.1519V84.1334L85.9971 81.5454V77.564Z" fill="#DDEEFF"/>
<rect width="5.15838" height="5.15838" transform="matrix(0.865042 0.501699 -0.865042 0.501699 90.459 74.9761)" fill="url(#paint15_linear_55_19272)"/>
<path d="M154.841 40.0388L159.303 42.6268L154.841 45.2147L150.379 42.6268L154.841 40.0388Z" fill="#D9D9D9"/>
<path d="M159.303 38.6453L154.841 36.0574V40.0388L159.303 42.6268V38.6453Z" fill="#D9D9D9"/>
<path d="M154.841 36.0574L150.379 38.6453V42.6268L154.841 40.0388V36.0574Z" fill="#D9D9D9"/>
<path d="M154.842 41.2332L159.304 38.6453V42.6267L154.842 45.2147V41.2332Z" fill="#89B6F4"/>
<path d="M150.379 38.6453L154.841 41.2332V45.2147L150.379 42.6267V38.6453Z" fill="#DDEEFF"/>
<rect width="5.15838" height="5.15838" transform="matrix(0.865042 0.501699 -0.865042 0.501699 154.842 36.0574)" fill="url(#paint16_linear_55_19272)"/>
<path d="M170.224 32.0264L174.686 34.6143L170.224 37.2023L165.762 34.6143L170.224 32.0264Z" fill="#D9D9D9"/>
<path d="M174.686 30.6326L170.224 28.0447V32.0261L174.686 34.6141V30.6326Z" fill="#D9D9D9"/>
<path d="M170.224 28.0447L165.762 30.6326V34.6141L170.224 32.0261V28.0447Z" fill="#D9D9D9"/>
<path d="M170.224 33.2206L174.686 30.6327V34.6142L170.224 37.2021V33.2206Z" fill="#89B6F4"/>
<path d="M165.762 30.6327L170.224 33.2206V37.2021L165.762 34.6142V30.6327Z" fill="#DDEEFF"/>
<rect width="5.15838" height="5.15838" transform="matrix(0.865042 0.501699 -0.865042 0.501699 170.224 28.0448)" fill="url(#paint17_linear_55_19272)"/>
<path d="M57.1441 5.99272L61.9816 4.21065L61.0992 9.31009L56.2617 11.0922L57.1441 5.99272Z" fill="#D9D9D9"/>
<path d="M58.94 1.65873L54.1025 3.4408L57.1449 5.99262L61.9824 4.21056L58.94 1.65873Z" fill="#D9D9D9"/>
<path d="M54.1021 3.44071L53.2197 8.54016L56.2621 11.092L57.1445 5.99254L54.1021 3.44071Z" fill="#D9D9D9"/>
<path d="M58.0576 6.75818L58.94 1.65873L61.9824 4.21056L61.1 9.31L58.0576 6.75818Z" fill="#5BA0FF"/>
<path d="M53.2197 8.54016L58.0572 6.7581L61.0996 9.30992L56.2621 11.092L53.2197 8.54016Z" fill="#0D76DE"/>
<rect width="5.16527" height="5.16528" transform="matrix(0.936543 -0.345009 -0.170835 0.987255 54.1025 3.4408)" fill="url(#paint18_linear_55_19272)"/>
<path d="M110.902 108.993L115.739 107.211L114.857 112.31L110.02 114.093L110.902 108.993Z" fill="#D9D9D9"/>
<path d="M112.698 104.659L107.86 106.441L110.903 108.993L115.74 107.211L112.698 104.659Z" fill="#D9D9D9"/>
<path d="M107.86 106.441L106.978 111.541L110.02 114.092L110.902 108.993L107.86 106.441Z" fill="#D9D9D9"/>
<path d="M111.815 109.759L112.698 104.659L115.74 107.211L114.858 112.31L111.815 109.759Z" fill="#5BA0FF"/>
<path d="M106.978 111.541L111.815 109.758L114.857 112.31L110.02 114.092L106.978 111.541Z" fill="#0D76DE"/>
<rect width="5.16527" height="5.16528" transform="matrix(0.936543 -0.345009 -0.170835 0.987255 107.86 106.441)" fill="url(#paint19_linear_55_19272)"/>
<path d="M164.119 67.1817L167.494 65.9383L166.878 69.4964L163.503 70.7399L164.119 67.1817Z" fill="#D9D9D9"/>
<path d="M165.37 64.1577L161.995 65.4011L164.118 67.1817L167.493 65.9382L165.37 64.1577Z" fill="#D9D9D9"/>
<path d="M161.996 65.4011L161.38 68.9592L163.503 70.7398L164.118 67.1816L161.996 65.4011Z" fill="#D9D9D9"/>
<path d="M164.755 67.7158L165.371 64.1577L167.493 65.9382L166.878 69.4964L164.755 67.7158Z" fill="#5BA0FF"/>
<path d="M161.38 68.9592L164.755 67.7158L166.878 69.4963L163.503 70.7398L161.38 68.9592Z" fill="#0D76DE"/>
<rect width="3.60406" height="3.60406" transform="matrix(0.936543 -0.345009 -0.170835 0.987255 161.995 65.4011)" fill="url(#paint20_linear_55_19272)"/>
<defs>
<filter id="filter0_d_11045_41425" x="0" y="1.65869" width="193.423" height="127.341" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset dy="4"/>
<feGaussianBlur stdDeviation="2"/>
<feComposite in2="hardAlpha" operator="out"/>
<feColorMatrix type="matrix" values="0 0 0 0 0.249618 0 0 0 0 0.549383 0 0 0 0 0.9875 0 0 0 0.25 0"/>
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_11045_41425"/>
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_11045_41425" result="shape"/>
</filter>
<filter id="filter1_i_11045_41425" x="26.6919" y="25.1982" width="162.295" height="94.1261" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<filter id="filter0_i_55_19272" x="22.6914" y="25.1982" width="162.295" height="94.1261" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feBlend mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset dy="-0.2"/>
<feComposite in2="hardAlpha" operator="arithmetic" k2="-1" k3="1"/>
<feColorMatrix type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.6 0"/>
<feBlend mode="normal" in2="shape" result="effect1_innerShadow_11045_41425"/>
<feBlend mode="normal" in2="shape" result="effect1_innerShadow_55_19272"/>
</filter>
<filter id="filter2_i_11045_41425" x="28.313" y="47.2179" width="120.056" height="50.1382" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<filter id="filter1_i_55_19272" x="24.3115" y="47.2179" width="120.057" height="50.1382" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feBlend mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset dy="-0.2"/>
<feComposite in2="hardAlpha" operator="arithmetic" k2="-1" k3="1"/>
<feColorMatrix type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.8 0"/>
<feBlend mode="normal" in2="shape" result="effect1_innerShadow_11045_41425"/>
<feBlend mode="normal" in2="shape" result="effect1_innerShadow_55_19272"/>
</filter>
<filter id="filter3_d_11045_41425" x="91.113" y="40.0698" width="53.7891" height="37.9165" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<filter id="filter2_d_55_19272" x="87.1133" y="40.0698" width="53.7891" height="37.9165" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset dy="4"/>
<feGaussianBlur stdDeviation="4"/>
<feComposite in2="hardAlpha" operator="out"/>
<feColorMatrix type="matrix" values="0 0 0 0 0.00568287 0 0 0 0 0.308364 0 0 0 0 0.681945 0 0 0 0.6 0"/>
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_11045_41425"/>
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_11045_41425" result="shape"/>
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_55_19272"/>
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_55_19272" result="shape"/>
</filter>
<filter id="filter4_ii_11045_41425" x="99.113" y="38.3466" width="37.7891" height="21.9165" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<filter id="filter3_ii_55_19272" x="95.1133" y="38.3466" width="37.7891" height="21.9165" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feBlend mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset dy="-0.35"/>
<feComposite in2="hardAlpha" operator="arithmetic" k2="-1" k3="1"/>
<feColorMatrix type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.6 0"/>
<feBlend mode="normal" in2="shape" result="effect1_innerShadow_11045_41425"/>
<feBlend mode="normal" in2="shape" result="effect1_innerShadow_55_19272"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset dy="0.5"/>
<feComposite in2="hardAlpha" operator="arithmetic" k2="-1" k3="1"/>
<feColorMatrix type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.6 0"/>
<feBlend mode="normal" in2="effect1_innerShadow_11045_41425" result="effect2_innerShadow_11045_41425"/>
<feBlend mode="normal" in2="effect1_innerShadow_55_19272" result="effect2_innerShadow_55_19272"/>
</filter>
<filter id="filter5_i_11045_41425" x="105.928" y="42.2991" width="24.1587" height="14.0114" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<filter id="filter4_i_55_19272" x="101.929" y="42.2991" width="24.1582" height="14.0114" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feBlend mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset dy="1"/>
<feComposite in2="hardAlpha" operator="arithmetic" k2="-1" k3="1"/>
<feColorMatrix type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.6 0"/>
<feBlend mode="normal" in2="shape" result="effect1_innerShadow_11045_41425"/>
<feBlend mode="normal" in2="shape" result="effect1_innerShadow_55_19272"/>
</filter>
<filter id="filter6_f_11045_41425" x="70.5671" y="53.8314" width="52.5344" height="49.1573" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<filter id="filter5_f_55_19272" x="66.5674" y="53.8314" width="52.5342" height="49.1573" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feBlend mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape"/>
<feGaussianBlur stdDeviation="10" result="effect1_foregroundBlur_11045_41425"/>
<feGaussianBlur stdDeviation="10" result="effect1_foregroundBlur_55_19272"/>
</filter>
<filter id="filter7_i_11045_41425" x="10.2295" y="48.9839" width="30.5371" height="17.7107" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<filter id="filter6_i_55_19272" x="6.22949" y="48.9839" width="30.5371" height="17.7107" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feBlend mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset dy="1"/>
<feComposite in2="hardAlpha" operator="arithmetic" k2="-1" k3="1"/>
<feColorMatrix type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.8 0"/>
<feBlend mode="normal" in2="shape" result="effect1_innerShadow_11045_41425"/>
<feBlend mode="normal" in2="shape" result="effect1_innerShadow_55_19272"/>
</filter>
<linearGradient id="paint0_linear_11045_41425" x1="117.964" y1="50.9382" x2="117.964" y2="93.2911" gradientUnits="userSpaceOnUse">
<linearGradient id="paint0_linear_55_19272" x1="113.964" y1="50.9382" x2="113.964" y2="93.2911" gradientUnits="userSpaceOnUse">
<stop stop-color="#378ADE"/>
<stop offset="1" stop-color="white"/>
</linearGradient>
<linearGradient id="paint1_linear_11045_41425" x1="40.5" y1="66.0002" x2="24.6183" y2="82.2868" gradientUnits="userSpaceOnUse">
<linearGradient id="paint1_linear_55_19272" x1="36.5" y1="66.0002" x2="20.6183" y2="82.2868" gradientUnits="userSpaceOnUse">
<stop stop-color="#63ABF4"/>
<stop offset="1" stop-color="#C0DFFF"/>
</linearGradient>
<linearGradient id="paint2_linear_11045_41425" x1="4" y1="64.9682" x2="24.5384" y2="70.8975" gradientUnits="userSpaceOnUse">
<linearGradient id="paint2_linear_55_19272" x1="2.70398e-07" y1="64.9682" x2="20.5384" y2="70.8975" gradientUnits="userSpaceOnUse">
<stop stop-color="#579CFE"/>
<stop offset="1" stop-color="#1E77F6"/>
</linearGradient>
<linearGradient id="paint3_linear_11045_41425" x1="45.048" y1="64.7621" x2="25.0995" y2="75.4078" gradientUnits="userSpaceOnUse">
<linearGradient id="paint3_linear_55_19272" x1="41.048" y1="64.7621" x2="21.0995" y2="75.4078" gradientUnits="userSpaceOnUse">
<stop stop-color="#3286F8"/>
<stop offset="1" stop-color="#91C0FD"/>
</linearGradient>
<linearGradient id="paint4_linear_11045_41425" x1="32.1061" y1="116.184" x2="108.61" y2="-15.7254" gradientUnits="userSpaceOnUse">
<linearGradient id="paint4_linear_55_19272" x1="28.1056" y1="116.184" x2="104.609" y2="-15.7254" gradientUnits="userSpaceOnUse">
<stop stop-color="#369AFF"/>
<stop offset="1" stop-color="#1E5DFF"/>
</linearGradient>
<linearGradient id="paint5_linear_11045_41425" x1="28.3128" y1="79.2688" x2="102.952" y2="82.9556" gradientUnits="userSpaceOnUse">
<linearGradient id="paint5_linear_55_19272" x1="24.3124" y1="79.2688" x2="98.9514" y2="82.9556" gradientUnits="userSpaceOnUse">
<stop stop-color="#067CFB"/>
<stop offset="0.44" stop-color="#B9E1FF"/>
<stop offset="1" stop-color="#0086FF"/>
</linearGradient>
<linearGradient id="paint6_linear_11045_41425" x1="91.2702" y1="87.2815" x2="42.1223" y2="105.309" gradientUnits="userSpaceOnUse">
<linearGradient id="paint6_linear_55_19272" x1="87.2692" y1="87.2815" x2="38.1213" y2="105.309" gradientUnits="userSpaceOnUse">
<stop stop-color="#0975FF"/>
<stop offset="0.415" stop-color="#00A9FF"/>
<stop offset="0.975" stop-color="#0975FF"/>
</linearGradient>
<linearGradient id="paint7_linear_11045_41425" x1="154.379" y1="62.957" x2="117.827" y2="84.8458" gradientUnits="userSpaceOnUse">
<linearGradient id="paint7_linear_55_19272" x1="150.379" y1="62.957" x2="113.827" y2="84.8458" gradientUnits="userSpaceOnUse">
<stop stop-color="#5B9FFF"/>
<stop offset="1" stop-color="#1A75F6"/>
</linearGradient>
<linearGradient id="paint8_linear_11045_41425" x1="42.1529" y1="0.0565839" x2="17.3551" y2="49.6521" gradientUnits="userSpaceOnUse">
<linearGradient id="paint8_linear_55_19272" x1="42.1529" y1="0.0565839" x2="17.3551" y2="49.6521" gradientUnits="userSpaceOnUse">
<stop stop-color="#95C8FF"/>
<stop offset="1" stop-color="#CAE4FF"/>
</linearGradient>
<linearGradient id="paint9_linear_11045_41425" x1="117.965" y1="22.0002" x2="117.965" y2="56.6266" gradientUnits="userSpaceOnUse">
<linearGradient id="paint9_linear_55_19272" x1="113.965" y1="22.0002" x2="113.965" y2="56.6266" gradientUnits="userSpaceOnUse">
<stop stop-color="#E1EDF6" stop-opacity="0"/>
<stop offset="1" stop-color="#1893FF"/>
</linearGradient>
<linearGradient id="paint10_linear_11045_41425" x1="81.4509" y1="65.5326" x2="117.996" y2="86.2804" gradientUnits="userSpaceOnUse">
<linearGradient id="paint10_linear_55_19272" x1="77.4512" y1="65.5326" x2="113.996" y2="86.2804" gradientUnits="userSpaceOnUse">
<stop stop-color="#2A7FF8"/>
<stop offset="1" stop-color="#9EC6FE"/>
</linearGradient>
<linearGradient id="paint11_linear_11045_41425" x1="26" y1="34.5002" x2="25.5" y2="66.0002" gradientUnits="userSpaceOnUse">
<linearGradient id="paint11_linear_55_19272" x1="22" y1="34.5002" x2="21.5" y2="66.0002" gradientUnits="userSpaceOnUse">
<stop offset="0.0121422" stop-color="#E1EDF6" stop-opacity="0"/>
<stop offset="1" stop-color="#1893FF"/>
</linearGradient>
<linearGradient id="paint12_linear_11045_41425" x1="2.57919" y1="0" x2="2.57919" y2="5.15838" gradientUnits="userSpaceOnUse">
<linearGradient id="paint12_linear_55_19272" x1="2.57919" y1="0" x2="2.57919" y2="5.15838" gradientUnits="userSpaceOnUse">
<stop stop-color="#97C9FF"/>
<stop offset="1" stop-color="#C7E2FF"/>
</linearGradient>
<linearGradient id="paint13_linear_11045_41425" x1="2.57919" y1="0" x2="2.57919" y2="5.15838" gradientUnits="userSpaceOnUse">
<linearGradient id="paint13_linear_55_19272" x1="2.57919" y1="0" x2="2.57919" y2="5.15838" gradientUnits="userSpaceOnUse">
<stop stop-color="#97C9FF"/>
<stop offset="1" stop-color="#C7E2FF"/>
</linearGradient>
<linearGradient id="paint14_linear_11045_41425" x1="2.57919" y1="0" x2="2.57919" y2="5.15838" gradientUnits="userSpaceOnUse">
<linearGradient id="paint14_linear_55_19272" x1="2.57919" y1="0" x2="2.57919" y2="5.15838" gradientUnits="userSpaceOnUse">
<stop stop-color="#97C9FF"/>
<stop offset="1" stop-color="#C7E2FF"/>
</linearGradient>
<linearGradient id="paint15_linear_11045_41425" x1="2.57919" y1="0" x2="2.57919" y2="5.15838" gradientUnits="userSpaceOnUse">
<linearGradient id="paint15_linear_55_19272" x1="2.57919" y1="0" x2="2.57919" y2="5.15838" gradientUnits="userSpaceOnUse">
<stop stop-color="#97C9FF"/>
<stop offset="1" stop-color="#C7E2FF"/>
</linearGradient>
<linearGradient id="paint16_linear_11045_41425" x1="2.57919" y1="0" x2="2.57919" y2="5.15838" gradientUnits="userSpaceOnUse">
<linearGradient id="paint16_linear_55_19272" x1="2.57919" y1="0" x2="2.57919" y2="5.15838" gradientUnits="userSpaceOnUse">
<stop stop-color="#97C9FF"/>
<stop offset="1" stop-color="#C7E2FF"/>
</linearGradient>
<linearGradient id="paint17_linear_11045_41425" x1="2.57919" y1="0" x2="2.57919" y2="5.15838" gradientUnits="userSpaceOnUse">
<linearGradient id="paint17_linear_55_19272" x1="2.57919" y1="0" x2="2.57919" y2="5.15838" gradientUnits="userSpaceOnUse">
<stop stop-color="#97C9FF"/>
<stop offset="1" stop-color="#C7E2FF"/>
</linearGradient>
<linearGradient id="paint18_linear_11045_41425" x1="2.58264" y1="0" x2="2.58264" y2="5.16528" gradientUnits="userSpaceOnUse">
<linearGradient id="paint18_linear_55_19272" x1="2.58264" y1="0" x2="2.58264" y2="5.16528" gradientUnits="userSpaceOnUse">
<stop stop-color="#5AA9FE"/>
<stop offset="1" stop-color="#8BC3FF"/>
</linearGradient>
<linearGradient id="paint19_linear_11045_41425" x1="2.58264" y1="0" x2="2.58264" y2="5.16528" gradientUnits="userSpaceOnUse">
<linearGradient id="paint19_linear_55_19272" x1="2.58264" y1="0" x2="2.58264" y2="5.16528" gradientUnits="userSpaceOnUse">
<stop stop-color="#5AA9FE"/>
<stop offset="1" stop-color="#8BC3FF"/>
</linearGradient>
<linearGradient id="paint20_linear_11045_41425" x1="1.80203" y1="0" x2="1.80203" y2="3.60406" gradientUnits="userSpaceOnUse">
<linearGradient id="paint20_linear_55_19272" x1="1.80203" y1="0" x2="1.80203" y2="3.60406" gradientUnits="userSpaceOnUse">
<stop stop-color="#5AA9FE"/>
<stop offset="1" stop-color="#8BC3FF"/>
</linearGradient>

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 25 KiB

@ -0,0 +1,22 @@
<svg width="705" height="71" viewBox="0 0 705 71" fill="none" xmlns="http://www.w3.org/2000/svg">
<path opacity="0.1" d="M0 17H210.443L233.103 1H419" stroke="url(#paint0_linear_423_4086)" stroke-width="1.5"/>
<path opacity="0.1" d="M286 70H496.443L519.103 54H705" stroke="url(#paint1_linear_423_4086)" stroke-width="1.5"/>
<path opacity="0.1" d="M157 44H367.443L390.103 28H576" stroke="url(#paint2_linear_423_4086)" stroke-width="1.5"/>
<defs>
<linearGradient id="paint0_linear_423_4086" x1="35" y1="17" x2="383.5" y2="17" gradientUnits="userSpaceOnUse">
<stop stop-color="#20A0FD" stop-opacity="0"/>
<stop offset="0.48" stop-color="#20A0FD"/>
<stop offset="1" stop-color="#20A0FD" stop-opacity="0"/>
</linearGradient>
<linearGradient id="paint1_linear_423_4086" x1="286" y1="70" x2="698.5" y2="70" gradientUnits="userSpaceOnUse">
<stop stop-color="#20A0FD" stop-opacity="0"/>
<stop offset="0.48" stop-color="#20A0FD"/>
<stop offset="1" stop-color="#20A0FD" stop-opacity="0"/>
</linearGradient>
<linearGradient id="paint2_linear_423_4086" x1="157" y1="44" x2="569.5" y2="44" gradientUnits="userSpaceOnUse">
<stop stop-color="#20A0FD" stop-opacity="0"/>
<stop offset="0.48" stop-color="#20A0FD"/>
<stop offset="1" stop-color="#20A0FD" stop-opacity="0"/>
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 880 KiB

@ -0,0 +1 @@
<svg t="1715917277990" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2382" id="mx_n_1715917277991" width="200" height="200"><path d="M187.690667 187.690667A457.344 457.344 0 0 1 512 53.333333c126.634667 0 241.365333 51.370667 324.309333 134.357334A457.344 457.344 0 0 1 970.666667 512c0 126.634667-51.370667 241.365333-134.357334 324.309333A457.344 457.344 0 0 1 512 970.666667a457.344 457.344 0 0 1-324.309333-134.357334A457.344 457.344 0 0 1 53.333333 512c0-126.634667 51.370667-241.365333 134.357334-324.309333zM512 117.333333a393.344 393.344 0 0 0-279.04 115.626667A393.344 393.344 0 0 0 117.333333 512a393.344 393.344 0 0 0 115.626667 279.04A393.344 393.344 0 0 0 512 906.666667a393.301333 393.301333 0 0 0 279.04-115.626667A393.301333 393.301333 0 0 0 906.666667 512a393.344 393.344 0 0 0-115.626667-279.04A393.344 393.344 0 0 0 512 117.333333z" fill="#FAAD14" p-id="2383"></path><path d="M352 397.312a32 32 0 0 0 64 0 96 96 0 1 1 96 96 32 32 0 0 0-32 32v85.333333a32 32 0 0 0 64 0v-56.533333A160.042667 160.042667 0 0 0 512 237.312a160 160 0 0 0-160 160zM512 802.645333a53.333333 53.333333 0 1 0 0-106.666666 53.333333 53.333333 0 0 0 0 106.666666z" fill="#FAAD14" p-id="2384"></path></svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 199 KiB

@ -1,5 +1,7 @@
/* 基准量 */
/* 颜色 */
/* 尺寸 */
/* 字体色&背景色 */
.text_color_0 {
color: #000000;
}
@ -46,6 +48,16 @@
.primary_border {
border: 1px solid #154ddd;
}
/* 特殊字体 */
@font-face {
font-weight: normal;
font-family: 'DouyinSansBold';
font-style: normal;
src: url('../public/font/DouyinSansBold.otf') format('opentype');
}
.font_f_1 {
font-family: 'DouyinSansBold';
}
/* 标题 */
.head1 {
color: #333333;
@ -138,7 +150,21 @@
}
/* 重置ant组件 */
/* Button */
.ant-btn-primary,
.ant-btn-primary:not(:disabled):not(.ant-btn-disabled):hover {
background-color: #154ddd;
}
.ant-btn-default:not(:disabled):not(.ant-btn-disabled):hover,
.ant-btn-link {
color: #154ddd;
}
.ant-btn-default:not(:disabled):not(.ant-btn-disabled):hover {
color: #154ddd;
background: #ffffff;
border-color: #154ddd;
}
.gn_search_from .ant-btn {
padding: 4px 10px;
border: none;
border-radius: 2px;
}
@ -147,10 +173,19 @@
background: #f5f5f5;
border: none;
}
.ant-tag {
background: white;
height: 24px;
line-height: 22px;
padding-inline: 8px;
border: 1px solid #dcdcdc;
border-radius: 2px;
}
.ant-form-item .ant-form-item-label > label {
color: #333333;
}
.ant-form-item .ant-input-affix-wrapper {
height: 32px;
color: #333333;
}
.ant-form-item .ant-input::placeholder {
@ -159,6 +194,10 @@
.ant-form-item .anticon {
color: #cccccc;
}
.ant-form-item .ant-input-outlined:focus,
.ant-form-item .ant-input-outlined:focus-within {
border-color: #154ddd;
}
.ant-modal .ant-modal-title {
color: #333333;
}
@ -273,37 +312,6 @@
.gn_active_descriptions .ant-descriptions-item-content {
color: #333333;
}
/* 表单组件 */
.gn_form .ant-radio-button-wrapper {
height: 28px;
margin-right: 12px;
color: #666666;
line-height: 26px;
border-radius: 4px;
border-inline-start-width: 1px;
}
.gn_form .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover::before {
background-color: transparent;
}
.gn_form .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover {
color: #ffffff;
background: transparent;
border-color: transparent;
}
.gn_form .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled)::before {
background-color: transparent;
}
.gn_form .ant-radio-button-wrapper:not(:first-child)::before {
background-color: transparent;
}
.gn_form .ant-radio-button-checked {
color: #ffffff;
background: #154ddd;
border-radius: 4px;
}
.gn_form .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled) {
color: #ffffff;
}
/* 树控件 */
.gn_tree_wrap .tree_node_item {
color: #333333;
@ -312,7 +320,7 @@
.gn_tabs.ant-tabs .ant-tabs-tab {
color: #666666;
}
/* ProTable ProList */
/* table [ProTable ProList] */
.gn_pro_table .ant-table-wrapper .ant-table-thead > tr > th,
.gn_pro_table .ant-table-wrapper .ant-table-thead > tr > td {
background: rgba(21, 77, 221, 0.1);
@ -342,6 +350,19 @@
.gn_pro_table .ant-pro-table-alert :where(.css-dev-only-do-not-override-1y19ift).ant-pro-table-alert-info {
color: #333333;
}
.gn_pro_table .ant-table-wrapper .ant-table-container table > thead > tr:first-child > *:first-child {
border-start-start-radius: 0;
}
.gn_pro_table .ant-table-wrapper .ant-table-container table > thead > tr:first-child > *:last-child {
border-start-end-radius: 0;
}
.gn_pro_table.ant-table-wrapper table {
border-radius: 0;
}
.gn_pro_table .ant-table-wrapper .ant-table .ant-table-title,
.gn_pro_table :where(.css-dev-only-do-not-override-1okl62o).ant-table-wrapper .ant-table .ant-table-header {
border-radius: 0;
}
.gn_pro_list .ant-pro-checkcard {
background: transparent;
border: none !important;
@ -350,13 +371,190 @@
padding-inline: 0;
padding-block: 0;
}
.gn_pro_list .ant-pro-list-row-card {
margin-block: 0;
}
/* 弹窗 modal */
.ant-modal .ant-modal-header {
background: transparent;
}
.ant-modal .ant-modal-content {
background: linear-gradient(to bottom, transparent 0%, white 100px, white 100%), /* 底部白色背景 */ linear-gradient(to left, #fff 0%, #ccdbff 40%, /* 第一个从左到右的渐变 */ #fff 40%, #dbe6ff 45%, /* 第二个从左到右的渐变 */ #fff 45%, #e0e9ff 68%, /* 第三个从左到右的渐变 */ #e0e9ff 68%, #e0e9ff 100%);
background-color: #fff;
background-image: url('../public/images/common/head.svg');
background-repeat: no-repeat;
background-position: top;
background-size: 100%;
}
.ant-modal .ant-pro-card {
background: transparent;
}
/* Card */
.gn_card_123 > .ant-pro-card-header {
height: 54px;
margin: 0;
padding: 10px 16px;
border-bottom: 1px solid #e0e0e0;
}
.gn_card_123 > .ant-pro-card-body {
margin: 0;
padding: 16px 16px 0;
}
.gn_head_card {
padding: 0 24px;
overflow: hidden;
border-radius: 8px;
}
.gn_table_card {
border-radius: 8px;
}
.gn_table_card .gn_card > .ant-pro-card-header {
margin: 0;
padding: 20px 16px;
border-bottom: 1px solid #e0e0e0;
}
.gn_table_card .gn_card > .ant-pro-card-body {
margin: 0;
padding: 16px 16px 0;
}
/* Form */
.gn_form .ant-form-item {
margin-bottom: 16px;
}
.gn_form .ant-pro-form-group-container {
gap: 0px 12px !important;
}
.gn_form .ant-input-affix-wrapper,
.gn_form .ant-select-single .ant-select-selector,
.gn_form .ant-input {
border-radius: 2px;
}
.gn_form .ant-radio-button-wrapper {
height: 28px;
margin-right: 12px;
color: #666666;
line-height: 26px;
border-radius: 4px;
border-inline-start-width: 1px;
}
.gn_form .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover::before {
background-color: transparent;
}
.gn_form .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover {
color: #ffffff;
background: transparent;
border-color: transparent;
}
.gn_form .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled)::before {
background-color: transparent;
}
.gn_form .ant-radio-button-wrapper:not(:first-child)::before {
background-color: transparent;
}
.gn_form .ant-radio-button-checked {
color: #ffffff;
background: #154ddd;
border-radius: 4px;
}
.gn_form .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled) {
color: #ffffff;
}
.gn_modal_form {
margin-top: 16px;
}
.gn_table_query_filter .ant-pro-form {
display: flex;
}
.gn_table_query_filter .ant-pro-form .ant-form-item {
margin: 0;
}
.gn_model_steps_form .ant-pro-steps-form-step {
margin: 0;
}
.gn_model_steps_form .ant-steps {
margin: 12px 0 20px;
}
.gn_model_steps_form .ant-modal-content .ant-modal-body .ant-steps .ant-steps-item {
flex: auto;
margin-right: 12px;
background: #f5f5f5;
border: 1px solid rgba(21, 77, 221, 0.1);
border-radius: 4px;
}
.gn_model_steps_form .ant-modal-content .ant-modal-body .ant-steps .ant-steps-item:last-child {
margin-right: 0;
}
.gn_model_steps_form .ant-modal-content .ant-modal-body .ant-steps .ant-steps-item .ant-steps-item-container {
position: relative;
display: flex;
align-items: center;
justify-content: center;
margin: 8px 0;
}
.gn_model_steps_form .ant-modal-content .ant-modal-body .ant-steps .ant-steps-item .ant-steps-item-icon {
margin: 0 8px;
}
.gn_model_steps_form .ant-modal-content .ant-modal-body .ant-steps .ant-steps-item .ant-steps-item-content {
margin: 0;
text-align: left;
}
.gn_model_steps_form .ant-modal-content .ant-modal-body .ant-steps .ant-steps-item .ant-steps-item-title {
color: #333333;
font-size: 14px;
}
.gn_model_steps_form .ant-modal-content .ant-modal-body .ant-steps .ant-steps-item .ant-steps-item-description {
color: #666666;
font-size: 12px;
}
.gn_model_steps_form .ant-modal-content .ant-modal-body .ant-steps .ant-steps-item .ant-steps-item-tail {
position: absolute;
top: auto;
left: calc(100% - 30px);
width: 16px;
height: 16px;
margin: 0;
padding: 0;
background: url('../public/home/business_arrow_default.svg') no-repeat;
background-size: cover;
border: none;
}
.gn_model_steps_form .ant-modal-content .ant-modal-body .ant-steps .ant-steps-item .ant-steps-item-tail:after {
background: transparent;
}
.gn_model_steps_form .ant-modal-content .ant-modal-body .ant-steps .ant-steps-item-finish {
background: #e5edff;
border: 1px solid #154ddd;
}
.gn_model_steps_form .ant-modal-content .ant-modal-body .ant-steps .ant-steps-item-finish .ant-steps-item-icon {
background-color: #154ddd;
}
.gn_model_steps_form .ant-modal-content .ant-modal-body .ant-steps .ant-steps-item-finish .ant-steps-item-icon .ant-steps-icon {
color: white;
}
.gn_model_steps_form .ant-modal-content .ant-modal-body .ant-steps .ant-steps-item-finish .ant-steps-item-title {
color: #154ddd;
}
.gn_model_steps_form .ant-modal-content .ant-modal-body .ant-steps .ant-steps-item-finish .ant-steps-item-description {
color: #154ddd;
}
.gn_model_steps_form .ant-modal-content .ant-modal-body .ant-steps .ant-steps-item-finish .ant-steps-item-tail {
background: url('../public/home/business_arrow.svg') no-repeat;
background-size: cover;
}
.gn_model_steps_form .ant-modal-content .ant-modal-body .ant-steps .ant-steps-item-active {
background: #e5edff;
border: 1px solid #154ddd;
}
.gn_model_steps_form .ant-modal-content .ant-modal-body .ant-steps .ant-steps-item-active .ant-steps-item-title {
color: #154ddd;
}
.gn_model_steps_form .ant-modal-content .ant-modal-body .ant-steps .ant-steps-item-active .ant-steps-item-description {
color: #154ddd;
}
.gn_model_steps_form .ant-modal-content .ant-modal-body .ant-steps .ant-steps-item-active .ant-steps-item-tail {
background: url('../public/home/business_arrow.svg') no-repeat;
background-size: cover;
}
.ant-table-wrapper .ant-table-pagination.ant-pagination {
margin: 0;
padding: 24px 0 !important;
}

@ -1,4 +1,5 @@
/* 基准量 */
/* 颜色 */
@primary_color: #154ddd; // 主题色
@active_color_1: #52c41a; // 辅助色1
@active_color_2: #f15d53; // 辅助色2
@ -11,10 +12,11 @@
@gray_color_2: #dcdcdc; // 用于描边色值
@gray_color_3: #e0e0e0; // 用于分割线色值
@primary_bg_color: #f5f5f5; // 主题背景色
@shallow_primary_1: rgba(21, 77, 221, 0.1);
/* 颜色 */
/* 尺寸 */
@input_size_1: 32px;
/* 字体色&背景色 */
// 字体色
.text_color_0 {
color: #000000;
}
@ -42,7 +44,7 @@
.text_active_3 {
color: @active_color_4;
}
// 背景
// 背景
.bg_active_1 {
background: @active_color_1;
}
@ -58,12 +60,23 @@
.bg_gray_color_1 {
background: @gray_color_1;
}
/* 边框 */
.primary_border {
border: 1px solid @primary_color;
}
/* 特殊字体 */
@font-face {
font-weight: normal;
font-family: 'DouyinSansBold';
font-style: normal;
src: url('../public/font/DouyinSansBold.otf') format('opentype');
}
.font_f_1 {
font-family: 'DouyinSansBold';
}
/* 标题 */
// 定义一个标题共性集合
.head-mixin() {
@ -157,8 +170,22 @@
/* Button */
// .ant-btn {
// }
.ant-btn-primary,
.ant-btn-primary:not(:disabled):not(.ant-btn-disabled):hover {
background-color: @primary_color;
}
.ant-btn-default:not(:disabled):not(.ant-btn-disabled):hover,
.ant-btn-link {
color: @primary_color;
}
.ant-btn-default:not(:disabled):not(.ant-btn-disabled):hover {
color: @primary_color;
background: #ffffff;
border-color: @primary_color;
}
.gn_search_from {
.ant-btn {
padding: 4px 10px;
border: none;
border-radius: 2px;
}
@ -169,6 +196,16 @@
}
}
// 标签
.ant-tag {
height: 24px;
line-height: 22px;
background: white;
border: 1px solid #dcdcdc;
border-radius: 2px;
padding-inline: 8px;
}
// 通用表单
.ant-form-item {
.ant-form-item-label > label {
@ -176,6 +213,7 @@
// font-weight: bold;
}
.ant-input-affix-wrapper {
height: @input_size_1;
color: @text_color_1;
}
.ant-input::placeholder {
@ -184,7 +222,14 @@
.anticon {
color: @gray_color_1;
}
// 表单内容
.ant-input-outlined:focus,
.ant-input-outlined:focus-within {
border-color: @primary_color;
}
}
// 通用弹窗
.ant-modal {
.ant-modal-title {
@ -331,40 +376,6 @@
}
}
/* 表单组件 */
.gn_form {
.ant-radio-button-wrapper {
height: 28px;
margin-right: 12px;
color: @text_color_2;
line-height: 26px;
border-radius: 4px;
border-inline-start-width: 1px;
}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover::before {
background-color: transparent;
}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover {
color: #ffffff;
background: transparent;
border-color: transparent;
}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled)::before {
background-color: transparent;
}
.ant-radio-button-wrapper:not(:first-child)::before {
background-color: transparent;
}
.ant-radio-button-checked {
color: #ffffff;
background: @primary_color;
border-radius: 4px;
}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled) {
color: #ffffff;
}
}
/* 树控件 */
.gn_tree_wrap {
.tree_node_item {
@ -379,7 +390,7 @@
}
}
/* ProTable ProList */
/* table [ProTable ProList] */
.gn_pro_table {
.ant-table-wrapper .ant-table-thead > tr > th,
.ant-table-wrapper .ant-table-thead > tr > td {
@ -413,6 +424,20 @@
color: @text_color_1;
}
}
.ant-table-wrapper .ant-table-container table > thead > tr:first-child > *:first-child {
border-start-start-radius: 0;
}
.ant-table-wrapper .ant-table-container table > thead > tr:first-child > *:last-child {
border-start-end-radius: 0;
}
&.ant-table-wrapper table {
border-radius: 0;
}
.ant-table-wrapper .ant-table .ant-table-title,
:where(.css-dev-only-do-not-override-1okl62o).ant-table-wrapper .ant-table .ant-table-header {
border-radius: 0;
}
}
.gn_pro_list {
@ -425,6 +450,9 @@
padding-inline: 0;
padding-block: 0;
}
.ant-pro-list-row-card {
margin-block: 0;
}
}
/* 弹窗 modal */
.ant-modal {
@ -433,23 +461,232 @@
background: transparent;
}
.ant-modal-content {
background: linear-gradient(to bottom, transparent 0%, white 100px, white 100%),
/* 底部白色背景 */
linear-gradient(
to left,
#fff 0%,
#ccdbff 40%,
/* 第一个从左到右的渐变 */ #fff 40%,
#dbe6ff 45%,
/* 第二个从左到右的渐变 */ #fff 45%,
#e0e9ff 68%,
/* 第三个从左到右的渐变 */ #e0e9ff 68%,
#e0e9ff 100%
)
// /* 第二个从左到右的渐变 */ linear-gradient(to right, white, gray) 0 80% / 100% 20%,
// /* 第三个从左到右的渐变 */ linear-gradient(to right, orange, brown) 0 100% / 100% 20%;;
background-color: #fff;
background-image: url('../public/images/common/head.svg');
background-repeat: no-repeat;
background-position: top;
background-size: 100%;
// background: linear-gradient(to bottom, transparent 0%, white 100px, white 100%),
// /* 底部白色背景 */
// linear-gradient(
// to left,
// #fff 0%,
// #ccdbff 40%,
// /* 第一个从左到右的渐变 */ #fff 40%,
// #dbe6ff 45%,
// /* 第二个从左到右的渐变 */ #fff 45%,
// #e0e9ff 68%,
// /* 第三个从左到右的渐变 */ #e0e9ff 68%,
// #e0e9ff 100%
// )
// // /* 第二个从左到右的渐变 */ linear-gradient(to right, white, gray) 0 80% / 100% 20%,
// // /* 第三个从左到右的渐变 */ linear-gradient(to right, orange, brown) 0 100% / 100% 20%;;
}
.ant-pro-card {
background: transparent;
}
}
/* Card */
.gn_card_123 {
& > .ant-pro-card-header {
height: 54px;
margin: 0;
padding: 10px 16px;
border-bottom: 1px solid #e0e0e0;
}
& > .ant-pro-card-body {
margin: 0;
padding: 16px 16px 0;
}
}
.gn_head_card {
padding: 0 24px;
overflow: hidden;
border-radius: 8px;
}
.gn_table_card {
// padding: 0 24px;
border-radius: 8px;
.gn_card {
& > .ant-pro-card-header {
// height: 54px;
margin: 0;
padding: 20px 16px;
// padding: 4px 16px;
border-bottom: 1px solid #e0e0e0;
}
& > .ant-pro-card-body {
margin: 0;
padding: 16px 16px 0;
}
}
}
/* Form */
// 通用表单
.gn_form {
.ant-form-item {
margin-bottom: 16px;
}
// 表单项之间间距
.ant-pro-form-group-container {
gap: 0px 12px !important;
}
.ant-input-affix-wrapper,
.ant-select-single .ant-select-selector,
.ant-input {
border-radius: 2px;
}
.ant-radio-button-wrapper {
height: 28px;
margin-right: 12px;
color: @text_color_2;
line-height: 26px;
border-radius: 4px;
border-inline-start-width: 1px;
}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover::before {
background-color: transparent;
}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover {
color: #ffffff;
background: transparent;
border-color: transparent;
}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled)::before {
background-color: transparent;
}
.ant-radio-button-wrapper:not(:first-child)::before {
background-color: transparent;
}
.ant-radio-button-checked {
color: #ffffff;
background: @primary_color;
border-radius: 4px;
}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled) {
color: #ffffff;
}
}
// 弹窗表单
.gn_modal_form {
margin-top: 16px;
}
// 筛选表单
.gn_table_query_filter {
.ant-pro-form {
display: flex;
.ant-form-item {
margin: 0;
}
}
}
// 分步表单
.gn_model_steps_form {
.ant-pro-steps-form-step {
margin: 0;
}
.ant-steps {
margin: 12px 0 20px;
}
// 步骤条
.ant-modal-content .ant-modal-body .ant-steps {
.ant-steps-item {
flex: auto;
margin-right: 12px;
background: #f5f5f5;
border: 1px solid rgba(21, 77, 221, 0.1);
border-radius: 4px;
&:last-child {
margin-right: 0;
}
.ant-steps-item-container {
position: relative;
display: flex;
align-items: center;
justify-content: center;
margin: 8px 0;
}
.ant-steps-item-icon {
margin: 0 8px;
}
.ant-steps-item-content {
margin: 0;
text-align: left;
}
.ant-steps-item-title {
color: #333333;
font-size: 14px;
}
.ant-steps-item-description {
color: #666666;
font-size: 12px;
}
.ant-steps-item-tail {
// display: none;
position: absolute;
top: auto;
left: calc(100% - 30px);
width: 16px;
height: 16px;
margin: 0;
padding: 0;
// background-color: red;
background: url('../public/home/business_arrow_default.svg') no-repeat;
background-size: cover;
border: none;
// right: -10px;
&:after {
background: transparent;
}
}
}
// 已完成
.ant-steps-item-finish {
background: #e5edff;
border: 1px solid #154ddd;
.ant-steps-item-icon {
background-color: #154ddd;
.ant-steps-icon {
color: white;
}
}
.ant-steps-item-title {
color: #154ddd;
}
.ant-steps-item-description {
color: #154ddd;
}
.ant-steps-item-tail {
background: url('../public/home/business_arrow.svg') no-repeat;
background-size: cover;
}
}
// 当前选中
.ant-steps-item-active {
background: #e5edff;
border: 1px solid #154ddd;
.ant-steps-item-title {
color: #154ddd;
}
.ant-steps-item-description {
color: #154ddd;
}
.ant-steps-item-tail {
background: url('../public/home/business_arrow.svg') no-repeat;
background-size: cover;
}
}
}
}
// 分页器
.ant-table-wrapper .ant-table-pagination.ant-pagination {
margin: 0;
padding: 24px 0 !important;
}

@ -1,3 +1,11 @@
/*
* @Author: donghao donghao@supervision.ltd
* @Date: 2024-04-19 17:10:21
* @LastEditors: donghao donghao@supervision.ltd
* @LastEditTime: 2024-05-17 15:44:31
* @FilePath: \general-ai-platform-web\src\components\Back\innerPageBack.tsx
* @Description:
*/
import { ArrowLeftOutlined } from '@ant-design/icons';
import { history } from '@umijs/max';
@ -24,6 +32,7 @@ const InnerPageBack: React.FC<CommButtonProps> = (props) => {
return (
<div className="flex items-center innerPageBack_wrap mb-[16px] " onClick={doBack}>
<ArrowLeftOutlined style={{ fontSize: `${props.size || 18}px` }} />
{/* <i className="iconfont"></i> */}
<span className="h1 ml-[8px]" style={{ fontSize: `${props.size || 18}px` }}>
{props?.title || '返回'}
</span>

@ -2,7 +2,7 @@
* @Author: donghao donghao@supervision.ltd
* @Date: 2024-04-07 14:02:00
* @LastEditors: donghao donghao@supervision.ltd
* @LastEditTime: 2024-05-14 15:31:03
* @LastEditTime: 2024-05-16 15:26:58
* @FilePath: \general-ai-manage\src\components\CategorizeUpdate\index.tsx
* @Description:
* @
@ -112,7 +112,7 @@ const CategorizeUpdate: React.FC<CategorizeUpdateProps> = (props) => {
return (
<ModalForm<Record<string, any>>
className="gn_form gn_categorize_update"
className="gn_form gn_modal_form gn_categorize_update"
width={proFormSmallModelWidth}
{...props?.modalFormProps?.categorizeModelProps}
open={props.visible}

@ -2,7 +2,7 @@
* @Author: zhoux zhouxia@supervision.ltd
* @Date: 2023-11-14 15:49:36
* @LastEditors: donghao donghao@supervision.ltd
* @LastEditTime: 2024-04-25 11:33:25
* @LastEditTime: 2024-05-17 11:04:28
* @FilePath: \general-ai-platform-web\src\components\TableActionCard\index.tsx
* @Description: ,`customMade`, koroFileHeader : https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/

@ -0,0 +1,13 @@
.ant-modal-content .questionIcon_svg__icon {
width: 24px;
height: 24px;
margin-right: 12px;
}
.ant-modal-content .ant-modal-confirm-title {
color: #333;
font-size: 16px;
}
.ant-modal-content .ant-modal-confirm-content {
color: #333;
font-size: 14px;
}

@ -0,0 +1,16 @@
.ant-modal-content {
// width: 560px;
.questionIcon_svg__icon {
width: 24px;
height: 24px;
margin-right: 12px;
}
.ant-modal-confirm-title {
color: #333;
font-size: 16px;
}
.ant-modal-confirm-content {
color: #333;
font-size: 14px;
}
}

@ -0,0 +1,54 @@
/*
* @Author: zhoux zhouxia@supervision.ltd
* @Date: 2023-12-27 10:30:10
* @LastEditors: donghao donghao@supervision.ltd
* @LastEditTime: 2024-05-17 13:19:01
* @FilePath: \general-ai-platform-web\src\components\TableActionCard\isConfirmModal.tsx
* @Description:
*/
import { useIntl } from '@umijs/max';
import modal from 'antd/es/modal';
import './isConfirmModal.less';
import { ReactComponent as QuestionIcon } from '/public/icons/questionIcon.svg';
type IsConfirmModalProps = {
modalProps: ModalType;
confirmButton: string | React.ReactNode;
};
const IsConfirmModal: React.FC<IsConfirmModalProps> = (props) => {
// eslint-disable-next-line react-hooks/rules-of-hooks
const intl = useIntl();
const confirm = () => {
modal.confirm({
width: 560,
title: '确认删除吗?',
content: '确认删除吗?删除后将无法找回,请谨慎操作。',
okText: intl.formatMessage({ id: 'common.okText', defaultMessage: '$$$' }),
cancelText: intl.formatMessage({ id: 'common.cancelText', defaultMessage: '$$$' }),
icon: (
<span>
<QuestionIcon></QuestionIcon>
</span>
),
// onCancel() {
// console.log('Cancel');
// },
...props?.modalProps,
});
};
return (
<div className="isConfirmModal_wrap">
<span
onClick={(e) => {
e.stopPropagation();
confirm();
}}
>
{props.confirmButton}
</span>
</div>
);
};
export default IsConfirmModal;

@ -2,7 +2,7 @@
* @Author: donghao donghao@supervision.ltd
* @Date: 2024-04-26 11:11:05
* @LastEditors: donghao donghao@supervision.ltd
* @LastEditTime: 2024-05-15 14:12:06
* @LastEditTime: 2024-05-16 13:36:53
* @FilePath: \general-ai-manage\src\components\Tree\src\deviceGroupTree.tsx
* @Description:
* @
@ -12,24 +12,20 @@
* 4
*/
import { PlusCircleOutlined } from '@ant-design/icons';
import React from 'react';
import { theme } from 'antd';
import React from 'react';
import { DeviceGroupTreeProps } from '../typing';
import BaseTree from './baseTree';
const DeviceGroupTree: React.FC<DeviceGroupTreeProps> = (props) => {
const { token } = theme.useToken();
console.log('token', token);
// async function loadTree() {
// const resp = await getDeviceGroupSettingTree()
// setDeviceGroupList(resp.data)
// }
// useEffect(()=>{
// loadTree()
// },[])
// const [expandedKeys] = useState(['0-0', '0-0-0', '0-0-0-0']);
function handleAdd(node) {
// 当前节点的父节点 可以添加数据

@ -61,144 +61,7 @@ ol {
.single-search-form-item .ant-form-item {
margin-bottom: 0;
}
/* Card */
.gn_card > .ant-pro-card-header {
height: 54px;
margin: 0;
padding: 10px 16px;
border-bottom: 1px solid #e0e0e0;
}
.gn_card > .ant-pro-card-body {
margin: 0;
padding: 16px 16px 0;
}
.gn_head_card {
padding: 0 24px;
overflow: hidden;
border-radius: 8px;
}
/* Form */
.gn_form .ant-form-item {
margin-bottom: 16px;
}
.gn_form .ant-pro-form-group-container {
gap: 0px 12px !important;
}
.gn_modal_form {
margin-top: 16px;
}
.gn_table_query_filter {
padding: 20px 0;
}
.gn_table_query_filter .ant-pro-form {
display: flex;
}
.gn_table_query_filter .ant-pro-form .ant-form-item {
margin: 0;
}
.gn_model_steps_form .ant-pro-steps-form-step {
margin: 0;
}
.gn_model_steps_form .ant-steps {
margin: 12px 0 20px;
}
.gn_model_steps_form .ant-modal-content .ant-modal-body .ant-steps .ant-steps-item {
flex: auto;
margin-right: 12px;
background: #f5f5f5;
border: 1px solid rgba(21, 77, 221, 0.1);
border-radius: 4px;
}
.gn_model_steps_form .ant-modal-content .ant-modal-body .ant-steps .ant-steps-item:last-child {
margin-right: 0;
}
.gn_model_steps_form .ant-modal-content .ant-modal-body .ant-steps .ant-steps-item .ant-steps-item-container {
position: relative;
display: flex;
align-items: center;
justify-content: center;
margin: 8px 0;
}
.gn_model_steps_form .ant-modal-content .ant-modal-body .ant-steps .ant-steps-item .ant-steps-item-icon {
margin: 0 8px;
}
.gn_model_steps_form .ant-modal-content .ant-modal-body .ant-steps .ant-steps-item .ant-steps-item-content {
margin: 0;
text-align: left;
}
.gn_model_steps_form .ant-modal-content .ant-modal-body .ant-steps .ant-steps-item .ant-steps-item-title {
color: #333333;
font-size: 14px;
}
.gn_model_steps_form .ant-modal-content .ant-modal-body .ant-steps .ant-steps-item .ant-steps-item-description {
color: #666666;
font-size: 12px;
}
.gn_model_steps_form .ant-modal-content .ant-modal-body .ant-steps .ant-steps-item .ant-steps-item-tail {
position: absolute;
top: auto;
left: calc(100% - 30px);
width: 16px;
height: 16px;
margin: 0;
padding: 0;
background: url('../public/home/business_arrow_default.svg') no-repeat;
background-size: cover;
border: none;
}
.gn_model_steps_form .ant-modal-content .ant-modal-body .ant-steps .ant-steps-item .ant-steps-item-tail:after {
background: transparent;
}
.gn_model_steps_form .ant-modal-content .ant-modal-body .ant-steps .ant-steps-item-finish {
background: #e5edff;
border: 1px solid #154ddd;
}
.gn_model_steps_form .ant-modal-content .ant-modal-body .ant-steps .ant-steps-item-finish .ant-steps-item-icon {
background-color: #154ddd;
}
.gn_model_steps_form .ant-modal-content .ant-modal-body .ant-steps .ant-steps-item-finish .ant-steps-item-icon .ant-steps-icon {
color: white;
}
.gn_model_steps_form .ant-modal-content .ant-modal-body .ant-steps .ant-steps-item-finish .ant-steps-item-title {
color: #154ddd;
}
.gn_model_steps_form .ant-modal-content .ant-modal-body .ant-steps .ant-steps-item-finish .ant-steps-item-description {
color: #154ddd;
}
.gn_model_steps_form .ant-modal-content .ant-modal-body .ant-steps .ant-steps-item-finish .ant-steps-item-tail {
background: url('../public/home/business_arrow.svg') no-repeat;
background-size: cover;
}
.gn_model_steps_form .ant-modal-content .ant-modal-body .ant-steps .ant-steps-item-active {
background: #e5edff;
border: 1px solid #154ddd;
}
.gn_model_steps_form .ant-modal-content .ant-modal-body .ant-steps .ant-steps-item-active .ant-steps-item-title {
color: #154ddd;
}
.gn_model_steps_form .ant-modal-content .ant-modal-body .ant-steps .ant-steps-item-active .ant-steps-item-description {
color: #154ddd;
}
.gn_model_steps_form .ant-modal-content .ant-modal-body .ant-steps .ant-steps-item-active .ant-steps-item-tail {
background: url('../public/home/business_arrow.svg') no-repeat;
background-size: cover;
}
/* 主题样式 */
.ant-btn-primary,
.ant-btn-primary:not(:disabled):not(.ant-btn-disabled):hover {
background-color: #154ddd;
}
.ant-btn-default:not(:disabled):not(.ant-btn-disabled):hover,
.ant-btn-link {
color: #154ddd;
}
:where(.css-dev-only-do-not-override-42nv3w).ant-btn-default:not(:disabled):not(
.ant-btn-disabled
):hover {
color: #154ddd;
background: #ffffff;
border-color: #154ddd;
}
/* 单行文本溢出显示省略号 */
.single_line {
overflow: hidden;

@ -77,171 +77,7 @@ ol {
}
}
/* Card */
.gn_card {
& > .ant-pro-card-header {
height: 54px;
margin: 0;
padding: 10px 16px;
border-bottom: 1px solid #e0e0e0;
}
& > .ant-pro-card-body {
margin: 0;
padding: 16px 16px 0;
}
}
.gn_head_card {
padding: 0 24px;
overflow: hidden;
border-radius: 8px;
border-radius: 8px;
}
/* Form */
.gn_form {
.ant-form-item {
margin-bottom: 16px;
}
// 表单项之间间距
.ant-pro-form-group-container {
gap: 0px 12px !important;
}
}
.gn_modal_form {
margin-top: 16px;
}
// 筛选表单
.gn_table_query_filter {
padding: 20px 0;
.ant-pro-form {
display: flex;
.ant-form-item {
margin: 0;
}
}
}
// 分步表单
.gn_model_steps_form {
.ant-pro-steps-form-step {
margin: 0;
}
.ant-steps {
margin: 12px 0 20px;
}
// 步骤条
.ant-modal-content .ant-modal-body .ant-steps {
.ant-steps-item {
flex: auto;
margin-right: 12px;
background: #f5f5f5;
border: 1px solid rgba(21, 77, 221, 0.1);
border-radius: 4px;
&:last-child {
margin-right: 0;
}
.ant-steps-item-container {
position: relative;
display: flex;
align-items: center;
justify-content: center;
margin: 8px 0;
}
.ant-steps-item-icon {
margin: 0 8px;
}
.ant-steps-item-content {
margin: 0;
text-align: left;
}
.ant-steps-item-title {
color: #333333;
font-size: 14px;
}
.ant-steps-item-description {
color: #666666;
font-size: 12px;
}
.ant-steps-item-tail {
// display: none;
position: absolute;
top: auto;
left: calc(100% - 30px);
width: 16px;
height: 16px;
margin: 0;
padding: 0;
// background-color: red;
background: url('../public/home/business_arrow_default.svg') no-repeat;
background-size: cover;
border: none;
// right: -10px;
&:after {
background: transparent;
}
}
}
// 已完成
.ant-steps-item-finish {
background: #e5edff;
border: 1px solid #154ddd;
.ant-steps-item-icon {
background-color: #154ddd;
.ant-steps-icon {
color: white;
}
}
.ant-steps-item-title {
color: #154ddd;
}
.ant-steps-item-description {
color: #154ddd;
}
.ant-steps-item-tail {
background: url('../public/home/business_arrow.svg') no-repeat;
background-size: cover;
}
}
// 当前选中
.ant-steps-item-active {
background: #e5edff;
border: 1px solid #154ddd;
.ant-steps-item-title {
color: #154ddd;
}
.ant-steps-item-description {
color: #154ddd;
}
.ant-steps-item-tail {
background: url('../public/home/business_arrow.svg') no-repeat;
background-size: cover;
}
}
}
}
/* 主题样式 */
.ant-btn-primary,
.ant-btn-primary:not(:disabled):not(.ant-btn-disabled):hover {
background-color: @theme_color;
}
.ant-btn-default:not(:disabled):not(.ant-btn-disabled):hover,
.ant-btn-link {
color: @theme_color;
}
:where(.css-dev-only-do-not-override-42nv3w).ant-btn-default:not(:disabled):not(
.ant-btn-disabled
):hover {
color: @theme_color;
background: #ffffff;
border-color: @theme_color;
}
/* 单行文本溢出显示省略号 */
.single_line {

@ -1,448 +0,0 @@
import {
CaretDownFilled,
DoubleRightOutlined,
GithubFilled,
InfoCircleFilled,
LogoutOutlined,
PlusCircleFilled,
QuestionCircleFilled,
SearchOutlined,
} from '@ant-design/icons';
import type { ProSettings } from '@ant-design/pro-components';
import {
PageContainer,
ProCard,
ProConfigProvider,
ProLayout,
SettingDrawer,
} from '@ant-design/pro-components';
import { css } from '@emotion/css';
import { Button, ConfigProvider, Divider, Dropdown, Input, Popover, theme } from 'antd';
import React, { useState } from 'react';
import defaultProps from '../../config/defaultSettings';
const Item: React.FC<{ children: React.ReactNode }> = (props) => {
const { token } = theme.useToken();
return (
<div
className={css`
color: ${token.colorTextSecondary};
font-size: 14px;
cursor: pointer;
line-height: 22px;
margin-bottom: 8px;
&:hover {
color: ${token.colorPrimary};
}
`}
style={{
width: '33.33%',
}}
>
{props.children}
<DoubleRightOutlined
style={{
marginInlineStart: 4,
}}
/>
</div>
);
};
const List: React.FC<{ title: string; style?: React.CSSProperties }> = (props) => {
const { token } = theme.useToken();
return (
<div
style={{
width: '100%',
...props.style,
}}
>
<div
style={{
fontSize: 16,
color: token.colorTextHeading,
lineHeight: '24px',
fontWeight: 500,
marginBlockEnd: 16,
}}
>
{props.title}
</div>
<div
style={{
display: 'flex',
flexWrap: 'wrap',
}}
>
{new Array(6).fill(1).map((_, index) => {
return <Item key={index}>-{index}</Item>;
})}
</div>
</div>
);
};
const MenuCard = () => {
const { token } = theme.useToken();
return (
<div
style={{
display: 'flex',
alignItems: 'center',
}}
>
<Divider
style={{
height: '1.5em',
}}
type="vertical"
/>
<Popover
placement="bottom"
overlayStyle={{
width: 'calc(100vw - 24px)',
padding: '24px',
paddingTop: 8,
height: '307px',
borderRadius: '0 0 6px 6px',
}}
content={
<div style={{ display: 'flex', padding: '32px 40px' }}>
<div style={{ flex: 1 }}>
<List title="金融解决方案" />
<List
title="其他解决方案"
style={{
marginBlockStart: 32,
}}
/>
</div>
<div
style={{
width: '308px',
borderInlineStart: '1px solid ' + token.colorBorder,
paddingInlineStart: 16,
}}
>
<div
className={css`
font-size: 14px;
color: ${token.colorText};
line-height: 22px;
`}
>
</div>
{new Array(3).fill(1).map((name, index) => {
return (
<div
key={index}
className={css`
border-radius: 4px;
padding: 16px;
margin-top: 4px;
display: flex;
cursor: pointer;
&:hover {
background-color: ${token.colorBgTextHover};
}
`}
>
<img src="https://gw.alipayobjects.com/zos/antfincdn/6FTGmLLmN/bianzu%25252013.svg" />
<div
style={{
marginInlineStart: 14,
}}
>
<div
className={css`
font-size: 14px;
color: ${token.colorText};
line-height: 22px;
`}
>
Ant Design
</div>
<div
className={css`
font-size: 12px;
color: ${token.colorTextSecondary};
line-height: 20px;
`}
>
UI
</div>
</div>
</div>
);
})}
</div>
</div>
}
>
<div
style={{
color: token.colorTextHeading,
fontWeight: 500,
cursor: 'pointer',
display: 'flex',
gap: 4,
paddingInlineStart: 8,
paddingInlineEnd: 12,
alignItems: 'center',
}}
className={css`
&:hover {
background-color: ${token.colorBgTextHover};
}
`}
>
<span> </span>
<CaretDownFilled />
</div>
</Popover>
</div>
);
};
const SearchInput = () => {
const { token } = theme.useToken();
return (
<div
key="SearchOutlined"
aria-hidden
style={{
display: 'flex',
alignItems: 'center',
marginInlineEnd: 24,
}}
onMouseDown={(e) => {
e.stopPropagation();
e.preventDefault();
}}
>
<Input
style={{
borderRadius: 4,
marginInlineEnd: 12,
backgroundColor: token.colorBgTextHover,
}}
prefix={
<SearchOutlined
style={{
color: token.colorTextLightSolid,
}}
/>
}
placeholder="搜索方案"
variant="borderless"
/>
<PlusCircleFilled
style={{
color: token.colorPrimary,
fontSize: 24,
}}
/>
</div>
);
};
const BasicLayout: React.FC = () => {
const [settings, setSetting] = useState<Partial<ProSettings> | undefined>({
fixSiderbar: true,
layout: 'mix',
splitMenus: true,
});
const [pathname, setPathname] = useState('/list/sub-page/sub-sub-page1');
const [num, setNum] = useState(40);
if (typeof document === 'undefined') {
return <div />;
}
return (
<div
id="test-pro-layout"
style={{
height: '100vh',
overflow: 'auto',
}}
>
<ProConfigProvider hashed={false}>
<ConfigProvider
getTargetContainer={() => {
return document.getElementById('test-pro-layout') || document.body;
}}
>
<ProLayout
prefixCls="my-prefix"
bgLayoutImgList={[
{
src: 'https://img.alicdn.com/imgextra/i2/O1CN01O4etvp1DvpFLKfuWq_!!6000000000279-2-tps-609-606.png',
left: 85,
bottom: 100,
height: '303px',
},
{
src: 'https://img.alicdn.com/imgextra/i2/O1CN01O4etvp1DvpFLKfuWq_!!6000000000279-2-tps-609-606.png',
bottom: -68,
right: -45,
height: '303px',
},
{
src: 'https://img.alicdn.com/imgextra/i3/O1CN018NxReL1shX85Yz6Cx_!!6000000005798-2-tps-884-496.png',
bottom: 0,
left: 0,
width: '331px',
},
]}
{...defaultProps}
location={{
pathname,
}}
token={{
header: {
colorBgMenuItemSelected: 'rgba(0,0,0,0.04)',
},
}}
siderMenuType="group"
menu={{
collapsedShowGroupTitle: true,
}}
avatarProps={{
src: 'https://gw.alipayobjects.com/zos/antfincdn/efFD%24IOql2/weixintupian_20170331104822.jpg',
size: 'small',
title: '七妮妮',
render: (props, dom) => {
return (
<Dropdown
menu={{
items: [
{
key: 'logout',
icon: <LogoutOutlined />,
label: '退出登录',
},
],
}}
>
{dom}
</Dropdown>
);
},
}}
actionsRender={(props) => {
if (props.isMobile) return [];
if (typeof window === 'undefined') return [];
return [
props.layout !== 'side' && document.body.clientWidth > 1400 ? (
<SearchInput />
) : undefined,
<InfoCircleFilled key="InfoCircleFilled" />,
<QuestionCircleFilled key="QuestionCircleFilled" />,
<GithubFilled key="GithubFilled" />,
];
}}
headerTitleRender={(logo, title, _) => {
const defaultDom = (
<a>
{logo}
{title}
</a>
);
if (typeof window === 'undefined') return defaultDom;
if (document.body.clientWidth < 1400) {
return defaultDom;
}
if (_.isMobile) return defaultDom;
return (
<>
{defaultDom}
<MenuCard />
</>
);
}}
menuFooterRender={(props) => {
if (props?.collapsed) return undefined;
return (
<div
style={{
textAlign: 'center',
paddingBlockStart: 12,
}}
>
<div>© 2021 Made with love</div>
<div>by Ant Design</div>
</div>
);
}}
onMenuHeaderClick={(e) => console.log(e)}
menuItemRender={(item, dom) => (
<div
onClick={() => {
setPathname(item.path || '/welcome');
}}
>
{dom}
</div>
)}
{...settings}
>
<PageContainer
token={{
paddingInlinePageContainerContent: num,
}}
extra={[
<Button key="3"></Button>,
<Button key="2"></Button>,
<Button
key="1"
type="primary"
onClick={() => {
setNum(num > 0 ? 0 : 40);
}}
>
</Button>,
]}
subTitle="简单的描述"
footer={[
<Button key="3"></Button>,
<Button key="2" type="primary">
</Button>,
]}
>
<ProCard
style={{
height: '200vh',
minHeight: 800,
}}
>
<div />
</ProCard>
</PageContainer>
<SettingDrawer
pathname={pathname}
enableDarkTheme
getContainer={(e: any) => {
if (typeof window === 'undefined') return e;
return document.getElementById('test-pro-layout');
}}
settings={settings}
onSettingChange={(changeSetting) => {
setSetting(changeSetting);
}}
disableUrlParams={false}
/>
</ProLayout>
</ConfigProvider>
</ProConfigProvider>
</div>
);
};
export default BasicLayout;

@ -5,7 +5,9 @@
color: white;
}
.homeLayout_wrap .ant-layout {
background: #f8fafd;
background-image: url('../../public/home/home_bg.png');
background-repeat: no-repeat;
background-size: cover;
}
.homeLayout_wrap .ant-layout-header {
height: 60px;
@ -39,6 +41,7 @@
opacity: 0.8 !important;
}
.homeLayout_wrap .ant-layout-header .first_menu_box li {
font-size: 16px;
height: 32px;
margin: 14px 0;
padding: 0 12px;
@ -53,13 +56,14 @@
background: rgba(255, 255, 255, 0.2);
border-radius: 16px;
opacity: 1 !important;
font-weight: bold;
}
.sub_menu_box .sub_menu_item {
height: 32px;
cursor: pointer;
line-height: 32px;
background: #ffffff;
border: 1px solid #dcdcdc;
cursor: pointer;
}
.sub_menu_box .sub_menu_item:first-child {
border-radius: 4px 0px 0px 4px;
@ -68,7 +72,7 @@
border-radius: 0px 4px 4px 0px;
}
.sub_menu_box .activeMenu {
color: #154ddd;
background: rgba(21, 77, 221, 0.1);
border: 1px solid #154ddd;
color: #154DDD;
}

@ -2,12 +2,11 @@
* @Author: donghao donghao@supervision.ltd
* @Date: 2024-04-07 15:25:23
* @LastEditors: donghao donghao@supervision.ltd
* @LastEditTime: 2024-05-13 15:41:26
* @LastEditTime: 2024-05-17 13:56:57
* @FilePath: \general-ai-manage\src\layouts\HomeLayout.tsx
* @Description: ,`customMade`, koroFileHeader : https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
// import less from 'less';
import { AvatarDropdown, AvatarName } from '@/components';
import { useModel } from '@@/exports';
import { SettingDrawer } from '@ant-design/pro-components';
@ -29,12 +28,10 @@ const { Header, Content } = Layout;
const HomeLayout: React.FC = () => {
const { initialState, setInitialState } = useModel('@@initialState');
// const { token } = theme.useToken();
const intl = useIntl();
const location = useLocation();
const [currRoute, setCurrRoute] = useState<Record<string, any>>({});
const [homeRoutes, setHomeRoutes] = useState<Record<string, any>[]>([]);
// setInitialState((preInitialState) => ({
// ...preInitialState,
// defaultSettings,
@ -62,9 +59,11 @@ const HomeLayout: React.FC = () => {
// 一级菜单
subMenu = startRoutes[0]?.subMenu;
}
console.log(subMenu, 'setCurrRoute_subMenu', startRoutes);
// console.log(outerMenuRoute.routes, subMenu, 'fetchCurrRoute_subMenu', startRoutes[0].level);
return {
subMenu,
rootMenuKey: startRoutes[0]?.rootMenuKey,
path: startRoutes[0]?.path,
isHideMenu: startRoutes[0]?.isHideMenu,
};
@ -138,18 +137,20 @@ const HomeLayout: React.FC = () => {
<ul className="flex first_menu_box">
{homeRoutes.map((menuItem) => {
return (
// TODO 二级菜单切换一级菜单未能正常回显
<li
key={menuItem.key}
onClick={() => tabRouter(menuItem)}
className={[
currRoute?.path === menuItem.path ||
currRoute?.subMenu?.includes(currRoute?.path)
currRoute?.rootMenuKey === menuItem?.key
? 'activeMenu'
: '',
]}
>
{intl.formatMessage({ id: `menu.${menuItem.name}`, defaultMessage: '$$$' })}
{intl.formatMessage({
id: `menu.${menuItem.name}`,
defaultMessage: '一级菜单',
})}
</li>
);
})}

@ -1,12 +1,15 @@
// @primary-color: red; // 定义主题色
@import url('@/base.less');
.homeLayout_wrap {
// padding-top: 24px;
// background: red;
// background: red;
.home_nav_action {
color: white;
}
.ant-layout {
background: #f8fafd;
// background: #f8fafd;
background-image: url('../../public/home/home_bg.png');
background-repeat: no-repeat;
background-size: cover;
}
/* 导航栏 */
.ant-layout-header {
@ -15,7 +18,7 @@
padding: 0 32px;
color: rgba(0, 0, 0, 0.88);
line-height: 64px;
background: #154ddd;
background: @primary_color;
border-radius: 8px;
// box-shadow: 0px 1px 0px 0px rgba(0, 0, 0, 0.05);
.home_logo {
@ -46,12 +49,14 @@
margin: 14px 0;
padding: 0 12px;
color: #fff;
font-size: 16px;
line-height: 32px;
cursor: pointer;
opacity: 0.8;
&:hover,
&.activeMenu {
color: fff;
font-weight: bold;
background: rgba(255, 255, 255, 0.2);
border-radius: 16px;
opacity: 1 !important;
@ -85,8 +90,8 @@
}
}
.activeMenu {
color: #154ddd;
color: @primary_color;
background: rgba(21, 77, 221, 0.1);
border: 1px solid #154ddd;
border: 1px solid @primary_color;
}
}

@ -2,7 +2,7 @@
* @Author: donghao donghao@supervision.ltd
* @Date: 2024-04-01 11:20:09
* @LastEditors: donghao donghao@supervision.ltd
* @LastEditTime: 2024-05-15 16:02:24
* @LastEditTime: 2024-05-17 13:46:58
* @FilePath: \uighur-recognition-web2\src\locales\zh-CN\menu.ts
* @Description: ,`customMade`, koroFileHeader : https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
@ -59,19 +59,13 @@ export default {
'menu.editor.koni': '拓扑编辑器',
'menu.realTime': '实时分析',
'menu.home-business-project': '企业项目',
'menu.model-index': '模型管理',
'menu.model-manage': '模型管理',
'menu.model-index': '模型列表',
'menu.model-runtime-lib': '模型运行库',
'menu.business-info-index': '企业信息',
'menu.business-device-group': '节点设置',
'menu.business-model-index': '业务模型',
'menu.business-server-state': '服务器状态',
'menu.business-device-state': '设备状态',
// 'home-business-project': '企业项目',
// 'model-index': '模型管理',
// 'model-runtime-lib': '模型运行库',
// 'business-info-index': '企业信息',
// 'business-device-group': '节点设置',
// 'business-model-index': '业务模型',
// 'business-server-state': '服务器状态',
// 'business-device-state': '设备状态',
};

@ -14,14 +14,14 @@ export const model_index: { [key: string]: string } = {
'model_index.table.list.name': '模型名称',
'model_index.table.list.categoryFkId': '模型类别',
'model_index.table.list.type': '模型分类',
'model_index.table.list.industry': '行业类',
'model_index.table.list.industry': '行业',
'model_index.table.list.remark': '备注',
'model_index.table.list.createTime': '创建时间',
'model_index.table.list.updateTime': '更新时间',
'model_index.table.rule.required.name': '模型名称为必填项',
'model_index.table.rule.required.categoryFkId': '模型类别为必填项',
'model_index.table.list.add': '新建模型',
'model_index.table.list.setIndustry': '行业类设置',
'model_index.table.list.setIndustry': '行业设置',
'model_index.table.list.update': '更新模型',
'model_index.table.list.detail': '详情配置',
'model_index.create.form.add': '新建模型',
@ -29,8 +29,8 @@ export const model_index: { [key: string]: string } = {
'model_index.create.form.rule.required.name': '请填写模型名称',
'model_index.create.form.type': '模型分类',
'model_index.create.form.rule.required.type': '请填写模型分类',
'model_index.create.form.industry': '行业类',
'model_index.create.form.rule.required.industry': '请选择行业类',
'model_index.create.form.industry': '行业',
'model_index.create.form.rule.required.industry': '请选择行业',
'model_index.create.form.remark': '备注',
'model_index.create.form.rule.required.remark': '请填写备注',
};

@ -127,7 +127,7 @@ const BusinessModel: React.FC = () => {
return (
<div className="businessModel_page gn_head_card">
<ProCard
className="gn_card pb-[16px]"
className="gn_card_123 pb-[16px]"
title={
<span className="head3">
<FormattedMessage id="business_model.table.title" defaultMessage="标题" />

@ -251,7 +251,7 @@ const DetailDeviceState: React.FC<DetailDeviceStateProps> = ({ info, detailOpen,
}
}}
>
<ProCard className="gn_card" bodyStyle={{ padding: 0 }}>
<ProCard className="gn_card_123" bodyStyle={{ padding: 0 }}>
<Tabs
className="gn_tabs"
activeKey={tabKey}
@ -262,7 +262,7 @@ const DetailDeviceState: React.FC<DetailDeviceStateProps> = ({ info, detailOpen,
></Tabs>
{tabKey === '0' && (
<div>
<ProCard className="gn_card bs_server_info_wrap" bodyStyle={{ padding: 0 }}>
<ProCard className="gn_card_123 bs_server_info_wrap" bodyStyle={{ padding: 0 }}>
<ul>
<li className="pb-[8px]">
<p className="head4">

@ -52,7 +52,7 @@ const DetailDeviceStateLog: React.FC = () => {
];
return (
<div className="detailDeviceStateLog_wrap">
<ProCard className="gn_card" bodyStyle={{ padding: 0 }}>
<ProCard className="gn_card_123" bodyStyle={{ padding: 0 }}>
<ProTable
className="gn_pro_table"
cardProps={{

@ -260,7 +260,7 @@ const DetailServerState: React.FC<DetailServerStateProps> = ({ info, detailOpen,
}
}}
>
<ProCard className="gn_card" bodyStyle={{ padding: 0 }}>
<ProCard className="gn_card_123" bodyStyle={{ padding: 0 }}>
<Tabs
className="gn_tabs"
activeKey={tabKey}
@ -271,7 +271,7 @@ const DetailServerState: React.FC<DetailServerStateProps> = ({ info, detailOpen,
></Tabs>
{tabKey === '0' && (
<div>
<ProCard className="gn_card bs_server_info_wrap" bodyStyle={{ padding: 0 }}>
<ProCard className="gn_card_123 bs_server_info_wrap" bodyStyle={{ padding: 0 }}>
<ul>
<li className="pb-[8px]">
<p className="head4">

@ -51,7 +51,7 @@ const DetailServerStateLog: React.FC = () => {
];
return (
<div className="detailServerStateLog_wrap">
<ProCard className="gn_card" bodyStyle={{ padding: 0 }}>
<ProCard className="gn_card_123" bodyStyle={{ padding: 0 }}>
<ProTable
className="gn_pro_table"
cardProps={{

@ -174,7 +174,7 @@ const DeviceSate: React.FC = () => {
return (
<div className="flex-1 bs_server_state_page bs_state_page gn_head_card">
<div className="gn_table_query_filter">
<div className="gn_form gn_table_query_filter">
<ProForm
className="gn_search_from"
form={form}
@ -240,7 +240,7 @@ const DeviceSate: React.FC = () => {
</ProForm>
</div>
<ProCard className="gn_card pb-[16px]">
<ProCard className="gn_card_123 pb-[16px]">
<div className="bs_server_state_box">
<Tabs
className="gn_tabs"

@ -166,7 +166,7 @@ const BusinessState: React.FC = () => {
return (
<div className="flex-1 bs_server_state_page bs_state_page gn_head_card">
<ProCard className="gn_card pb-[16px]">
<ProCard className="gn_card_123 pb-[16px]">
<div className="bs_server_state_box">
<Tabs
className="gn_tabs"

@ -46,7 +46,7 @@ const DeviceList: React.FC<DeviceListProps> = () => {
// 设置分类
const [deviceTypeOpen, setDeviceTypeOpen] = useState<boolean>(false);
// 设置行业
// 设置行业
const handleSetDeviceType = () => {
setDeviceTypeOpen(!deviceTypeOpen);
};

@ -127,7 +127,7 @@ const ModelDeployConfig: React.FC<ModelDeployConfigProps> = ({ info, detailOpen,
okText={<FormattedMessage id="pages.modelForm.okText" defaultMessage="确认" />}
cancelText={<FormattedMessage id="pages.modelForm.cancelText" defaultMessage="取消" />}
>
<ProCard className="gn_card" bodyStyle={{ padding: 0 }}>
<ProCard className="gn_card_123" bodyStyle={{ padding: 0 }}>
<div className="my-[8px] gn_active_descriptions gn_descriptions bg_active_4">
<ProDescriptions column={1} columns={detailColumns} dataSource={info}></ProDescriptions>
</div>

@ -3,10 +3,10 @@
/* 节点列表 */
/* 节点信息 */
}
.deviceGroup_page .dg_content .gn_card {
.deviceGroup_page .dg_content .gn_card_123 {
height: calc(100% - 8px);
}
.deviceGroup_page .node_list > .gn_card {
.deviceGroup_page .node_list > .gn_card_123 {
box-shadow: 0px 2px 8px 0px rgba(0, 79, 178, 0.15);
}
.deviceGroup_page .node_info {

@ -1,13 +1,13 @@
.deviceGroup_page {
height: calc(100vh - 92px);
.dg_content {
.gn_card {
.gn_card_123 {
height: calc(100% - 8px);
}
}
/* 节点列表 */
.node_list {
& > .gn_card {
& > .gn_card_123 {
box-shadow: 0px 2px 8px 0px rgba(0, 79, 178, 0.15);
}
}

@ -68,7 +68,7 @@ const DeviceGroup: React.FC = () => {
<div className="flex deviceGroup_page">
{/* 节点列表 */}
<div className="dg_content gn_head_card w-[300px] node_list">
<ProCard className="gn_card pb-[16px]" title={<span className="head3"></span>}>
<ProCard className="gn_card_123 pb-[16px]" title={<span className="head3"></span>}>
<div className="dg_tree_box">
<DeviceGroupTree
dataSource={deviceTreeList}
@ -94,7 +94,7 @@ const DeviceGroup: React.FC = () => {
{/* 节点信息 */}
<div className="flex-1 dg_content gn_head_card node_info">
<ProCard
className="gn_card pb-[16px]"
className="gn_card_123 pb-[16px]"
title={<span className="head3"></span>}
extra={
<Button

@ -2,7 +2,7 @@
* @Author: donghao donghao@supervision.ltd
* @Date: 2024-04-08 10:36:06
* @LastEditors: donghao donghao@supervision.ltd
* @LastEditTime: 2024-05-14 17:02:41
* @LastEditTime: 2024-05-16 14:02:17
* @FilePath: \general-ai-manage\src\pages\Model\ModelDetail\index.tsx
* @Description:
* @
@ -21,7 +21,7 @@ import { ProCard, ProDescriptions, ProTable } from '@ant-design/pro-components';
import { FormattedMessage, useParams } from '@umijs/max';
import { Button } from 'antd';
import { useRef, useState } from 'react';
import { proTableCommonOptions, proTablePaginationOptions } from '../../../../config/defaultTable';
import { proTablePaginationOptions } from '../../../../config/defaultTable';
import CreateForm from './components/createForm';
const ModelDetail: React.FC = () => {
@ -234,7 +234,7 @@ const ModelDetail: React.FC = () => {
</div>
<div className="gn_head_card" style={{ padding: 0 }}>
<ProCard
className="gn_card"
className="gn_card_123"
title={
<span className="head3">
<FormattedMessage
@ -258,54 +258,54 @@ const ModelDetail: React.FC = () => {
></CommButton>
}
>
<ProTable
className="gn_pro_table"
cardProps={{
bodyStyle: { padding: 0 },
}}
// 标题栏
search={false}
scroll={{
y: 420,
x: proTableCommonOptions.commscrollX,
}}
options={{ fullScreen: false, setting: false, density: false, reload: false }}
actionRef={actionRef}
rowKey="id"
onDataSourceChange={(data) => {
console.log(data, 'onDataSourceChange_data');
// let CategoryFkIdIds: any = data.map((v) => {
// return v.categoryFkId;
// });
// setCategoryFkIdIds(CategoryFkIdIds);
}}
pagination={{
...proTablePaginationOptions,
pageSize: currentPageSize,
onChange: (page, pageSize) => setCurrentPageSize(pageSize),
}}
columnsState={{
persistenceKey: 'algorithm_model_list',
persistenceType: 'localStorage',
}}
request={async (params = {}) => {
const { current, ...rest } = params;
const reqParams = {
page: current,
...rest,
};
let resp = await getModelVersionList({ ...reqParams });
console.log(resp, 'getModelVersionList_resp');
return {
data: resp.data?.results,
success: resp.success,
total: resp.data.count,
current: current,
<div
style={{ height: 'calc(100vh - 350px)', overflowY: 'scroll', overflowX: 'hidden' }}
>
<ProTable
className="gn_pro_table"
cardProps={{
bodyStyle: { padding: 0 },
}}
// 标题栏
search={false}
options={{ fullScreen: false, setting: false, density: false, reload: false }}
actionRef={actionRef}
rowKey="id"
onDataSourceChange={(data) => {
console.log(data, 'onDataSourceChange_data');
// let CategoryFkIdIds: any = data.map((v) => {
// return v.categoryFkId;
// });
// setCategoryFkIdIds(CategoryFkIdIds);
}}
pagination={{
...proTablePaginationOptions,
pageSize: currentPageSize,
};
}}
columns={columns}
/>
onChange: (page, pageSize) => setCurrentPageSize(pageSize),
}}
columnsState={{
persistenceKey: 'algorithm_model_list',
persistenceType: 'localStorage',
}}
request={async (params = {}) => {
const { current, ...rest } = params;
const reqParams = {
page: current,
...rest,
};
let resp = await getModelVersionList({ ...reqParams });
console.log(resp, 'getModelVersionList_resp');
return {
data: resp.data?.results,
success: resp.success,
total: resp.data.count,
current: current,
pageSize: currentPageSize,
};
}}
columns={columns}
/>
</div>
</ProCard>
</div>
</ProCard>

@ -35,7 +35,7 @@ const CreateForm: React.FC<CreateFormProps> = (props) => {
return (
<ModalForm<Record<string, any>>
className="gn_form"
className="gn_form gn_modal_form"
width={proFormSmallModelWidth}
title={intl.formatMessage({
id: 'model_index.create.form.add',

@ -2,7 +2,7 @@
* @Author: donghao donghao@supervision.ltd
* @Date: 2024-04-07 14:02:00
* @LastEditors: donghao donghao@supervision.ltd
* @LastEditTime: 2024-05-13 16:11:46
* @LastEditTime: 2024-05-17 16:15:45
* @FilePath: \general-ai-manage\src\pages\ModelIndex\ModelIndex.tsx
* @Description:
* @
@ -182,100 +182,102 @@ const ModelIndex: React.FC = () => {
}, [actionRef, querysData]);
return (
<div className="modelIndex_page home_container">
<div className="modelIndex_page home_container gn_table_card">
<ProCard
style={{ padding: 0, margin: 0, backgroundColor: 'transparent' }}
bodyStyle={{ padding: 0, margin: 0, backgroundColor: 'transparent' }}
>
<ProTable
className="gn_pro_table"
headerTitle={
<div className="gn_table_query_filter">
<ProForm
className="gn_search_from"
form={form}
layout="horizontal"
submitter={{
render: () => (
<div style={{ textAlign: 'center', marginLeft: 12 }}>
<CommButton
type="primary"
htmlType="submit"
prevIcon={<SearchIcon />}
buttonLabel={
<FormattedMessage id="pages.searchTable.search" defaultMessage="查询" />
}
></CommButton>
<CommButton
style={{ marginLeft: 12 }}
htmlType="button"
prevIcon={<ResetIcon />}
buttonLabel={
<FormattedMessage id="pages.searchTable.reset" defaultMessage="重置" />
}
onClick={() => {
form.resetFields(); // 点击重置按钮时重置表单数据
setQuerysData(() => {}); // 清空筛选项
}}
></CommButton>
</div>
),
}}
onFinish={async (values) => {
console.log(values, 'filter_finish_values');
setQuerysData(() => values);
className="gn_card"
style={{ backgroundColor: 'white' }}
title={
<div className="gn_form gn_table_query_filter">
<ProForm
className="gn_search_from"
form={form}
layout="horizontal"
submitter={{
render: () => (
<div style={{ textAlign: 'center', marginLeft: 12 }}>
<CommButton
type="primary"
htmlType="submit"
prevIcon={<SearchIcon />}
buttonLabel={
<FormattedMessage id="pages.searchTable.search" defaultMessage="查询" />
}
></CommButton>
<CommButton
style={{ marginLeft: 12 }}
htmlType="button"
prevIcon={<ResetIcon />}
buttonLabel={
<FormattedMessage id="pages.searchTable.reset" defaultMessage="重置" />
}
onClick={() => {
form.resetFields(); // 点击重置按钮时重置表单数据
setQuerysData(() => {}); // 清空筛选项
}}
></CommButton>
</div>
),
}}
onFinish={async (values) => {
console.log(values, 'filter_finish_values');
setQuerysData(() => values);
return true;
}}
>
<ProFormText
label={
<FormattedMessage id="model_index.table.list.name" defaultMessage="模型名称" />
}
labelClassName="label_set_1"
fieldProps={{
style: {
width: 280,
},
prefix: <SearchOutlined style={{ color: 'rgba(0,0,0,.25)' }} />,
}}
name="name"
placeholder="请输入模型名称"
/>
</ProForm>
</div>
}
// 标题栏
toolBarRender={() => [
<Access
accessible={access.canUpdate(history.location.pathname)}
key={`model-index-add`}
return true;
}}
>
<Button
type="primary"
key="primary"
onClick={() => {
setCreateModalOpen(true);
}}
>
<FormattedMessage id="model_index.table.list.add" defaultMessage="New" />
</Button>
<Button
className="ml-[4px]"
key="setIndustry"
onClick={() => {
setIndustryOpen(true);
<ProFormText
label={
<FormattedMessage id="model_index.table.list.name" defaultMessage="模型名称" />
}
labelClassName="label_set_1"
fieldProps={{
style: {
width: 280,
},
prefix: <SearchOutlined style={{ color: 'rgba(0,0,0,.25)' }} />,
}}
>
<FormattedMessage
id="model_index.table.list.setIndustry"
defaultMessage="行业分类"
/>
</Button>
</Access>,
]}
name="name"
placeholder="请输入模型名称"
/>
</ProForm>
</div>
}
extra={
<Access accessible={access.canUpdate(history.location.pathname)} key={`model-index-add`}>
<Button
type="primary"
key="primary"
onClick={() => {
setCreateModalOpen(true);
}}
>
<FormattedMessage id="model_index.table.list.add" defaultMessage="New" />
</Button>
<Button
className="ml-[4px]"
key="setIndustry"
onClick={() => {
setIndustryOpen(true);
}}
>
<FormattedMessage id="model_index.table.list.setIndustry" defaultMessage="行业类别" />
</Button>
</Access>
}
bodyStyle={{
maxHeight: 'calc(100vh - 250px)',
overflowY: 'scroll',
}}
>
<ProTable
className="gn_pro_table"
cardProps={{
bodyStyle: {
padding: '0',
},
}}
search={false}
scroll={{ y: proTableCommonOptions.commscrollY, x: proTableCommonOptions.commscrollX }}
scroll={{ x: proTableCommonOptions.commscrollX }}
options={{ fullScreen: false, setting: false, density: false, reload: false }}
actionRef={actionRef}
rowKey="id"
@ -333,7 +335,7 @@ const ModelIndex: React.FC = () => {
modalFormProps={{
categorizeFormProps: {
label: (
<FormattedMessage id="model_index.create.form.industry" defaultMessage="行业类" />
<FormattedMessage id="model_index.create.form.industry" defaultMessage="行业" />
),
name: 'industry',
},

@ -35,7 +35,7 @@ const CreateForm: React.FC<CreateFormProps> = (props) => {
return (
<ModalForm<API.ModelCategory>
className="gn_form"
className="gn_form gn_modal_form"
width={proFormSmallModelWidth}
title={intl.formatMessage({
id: 'model_runtimeLib.list.table.createForm.add',

@ -2,7 +2,7 @@
* @Author: donghao donghao@supervision.ltd
* @Date: 2024-04-08 10:36:06
* @LastEditors: donghao donghao@supervision.ltd
* @LastEditTime: 2024-05-13 16:22:29
* @LastEditTime: 2024-05-17 16:21:21
* @FilePath: \general-ai-manage\src\pages\Model\ModelRuntimeLib\index.tsx
* @Description:
* @
@ -152,91 +152,99 @@ const ModelRuntimeLib: React.FC = () => {
},
];
return (
<div className="modelRuntimeLib_page home_container">
<div className="modelRuntimeLib_page home_container gn_table_card">
<ProCard
style={{ padding: 0, margin: 0, backgroundColor: 'transparent' }}
bodyStyle={{ padding: 0, margin: 0, backgroundColor: 'transparent' }}
>
<ProTable
className="gn_pro_table"
headerTitle={
<div className="gn_table_query_filter">
<ProForm
className="gn_search_from"
form={form}
layout="horizontal"
submitter={{
render: () => (
<div style={{ textAlign: 'center', marginLeft: 12 }}>
<CommButton
type="primary"
htmlType="submit"
prevIcon={<SearchIcon />}
buttonLabel={
<FormattedMessage id="pages.searchTable.search" defaultMessage="查询" />
}
></CommButton>
<CommButton
style={{ marginLeft: 12 }}
htmlType="button"
prevIcon={<ResetIcon />}
buttonLabel={
<FormattedMessage id="pages.searchTable.reset" defaultMessage="重置" />
}
onClick={() => {
form.resetFields(); // 点击重置按钮时重置表单数据
setQuerysData(() => {}); // 清空筛选项
}}
></CommButton>
</div>
),
}}
onFinish={async (values) => {
console.log(values, 'filter_finish_values');
setQuerysData(() => values);
className="gn_card"
style={{ backgroundColor: 'white' }}
bodyStyle={{
maxHeight: 'calc(100vh - 250px)',
overflowY: 'scroll',
}}
title={
<div className="gn_form gn_table_query_filter">
<ProForm
className="gn_search_from"
form={form}
layout="horizontal"
submitter={{
render: () => (
<div style={{ textAlign: 'center', marginLeft: 12 }}>
<CommButton
type="primary"
htmlType="submit"
prevIcon={<SearchIcon />}
buttonLabel={
<FormattedMessage id="pages.searchTable.search" defaultMessage="查询" />
}
></CommButton>
<CommButton
style={{ marginLeft: 12 }}
htmlType="button"
prevIcon={<ResetIcon />}
buttonLabel={
<FormattedMessage id="pages.searchTable.reset" defaultMessage="重置" />
}
onClick={() => {
form.resetFields(); // 点击重置按钮时重置表单数据
setQuerysData(() => {}); // 清空筛选项
}}
></CommButton>
</div>
),
}}
onFinish={async (values) => {
console.log(values, 'filter_finish_values');
setQuerysData(() => values);
return true;
}}
>
<ProFormText
label={
<FormattedMessage
id="model_runtimeLib.table.list.name"
defaultMessage="运行库名称"
/>
}
labelClassName="label_set_1"
fieldProps={{
style: {
width: 280,
},
prefix: <SearchOutlined style={{ color: 'rgba(0,0,0,.25)' }} />,
}}
name="name"
placeholder="请输入运行库名称"
/>
</ProForm>
</div>
}
// 标题栏
toolBarRender={() => [
<Access
accessible={access.canUpdate(history.location.pathname)}
key={`${history.location.pathname}-add`}
return true;
}}
>
<Button
type="primary"
key="primary"
onClick={() => {
setCreateModalOpen(true);
<ProFormText
label={
<FormattedMessage
id="model_runtimeLib.table.list.name"
defaultMessage="运行库名称"
/>
}
labelClassName="label_set_1"
fieldProps={{
style: {
width: 280,
},
prefix: <SearchOutlined style={{ color: 'rgba(0,0,0,.25)' }} />,
}}
>
<FormattedMessage id="pages.searchTable.new" defaultMessage="New" />
</Button>
</Access>,
]}
name="name"
placeholder="请输入运行库名称"
/>
</ProForm>
</div>
}
extra={
<Access
accessible={access.canUpdate(history.location.pathname)}
key={`${history.location.pathname}-add`}
>
<Button
type="primary"
key="primary"
onClick={() => {
setCreateModalOpen(true);
}}
>
<FormattedMessage id="pages.searchTable.new" defaultMessage="New" />
</Button>
</Access>
}
>
<ProTable
className="gn_pro_table"
cardProps={{
bodyStyle: {
padding: '0',
},
}}
search={false}
scroll={{ y: proTableCommonOptions.commscrollY, x: proTableCommonOptions.commscrollX }}
scroll={{ x: proTableCommonOptions.commscrollX }}
options={{ fullScreen: false, setting: false, density: false, reload: false }}
actionRef={actionRef}
rowKey="id"

@ -2,7 +2,7 @@
* @Author: donghao donghao@supervision.ltd
* @Date: 2024-04-23 17:46:28
* @LastEditors: donghao donghao@supervision.ltd
* @LastEditTime: 2024-04-24 15:00:31
* @LastEditTime: 2024-05-16 15:28:12
* @FilePath: \general-ai-platform-web\src\pages\Project\BusinessInfo\components\updateForm.tsx
* @Description:
*/
@ -53,7 +53,7 @@ const UpdateForm: React.FC<UpdateFormProps> = (props) => {
return (
<ModalForm<API.ModelCategory>
className="gn_form"
className="gn_form gn_modal_form"
width={proFormSmallModelWidth}
title={intl.formatMessage({
id: 'business.list.table.createForm.add',

@ -106,7 +106,7 @@ const BusinessInfo: React.FC = () => {
<div className="businessInfo_page pb-[1px]">
<div className="gn_head_card mb-[20px]">
<ProCard
className="gn_card pb-[16px]"
className="gn_card_123 pb-[16px]"
title={<span className="head3"></span>}
extra={
<Button
@ -136,14 +136,14 @@ const BusinessInfo: React.FC = () => {
</div>
<div className="gn_head_card mb-[20px]">
<ProCard className="gn_card" title={<span className="head3"></span>}>
<ProCard className="gn_card_123" title={<span className="head3"></span>}>
<AccountPsw></AccountPsw>
</ProCard>
</div>
<div className="gn_head_card mb-[20px]">
<ProCard
className="gn_card pb-[16px]"
className="gn_card_123 pb-[16px]"
title={<span className="head3">({total})</span>}
>
<ProList<any>

@ -2,7 +2,7 @@
* @Author: donghao donghao@supervision.ltd
* @Date: 2024-04-08 16:57:30
* @LastEditors: donghao donghao@supervision.ltd
* @LastEditTime: 2024-04-22 10:15:41
* @LastEditTime: 2024-05-16 14:44:05
* @FilePath: \general-ai-manage\src\pages\Project\BusinessProject\components\businessCard.tsx
* @Description:
*/
@ -32,45 +32,47 @@ const BusinessCard: React.FC<BusinessCardProps> = ({ info, renderActions }) => {
console.log('跳转企业');
}}
>
<div className="tag_box">
<div className="bg_tag_info single_line">{info?.industryName}</div>
</div>
<div className="flex justify-end items-center pt-[8px]">
<span className="pr-[14px]">
<TableActionCard renderActions={renderActions} maxActionCount={1}></TableActionCard>
</span>
</div>
<div className="px-[12px] pt-[12px]">
<div className="flex items-center logo_name">
<span className="icon_logo mr-[4px]">
<BusinessLogoIcon></BusinessLogoIcon>
<div className="bp_card_body">
<div className="tag_box">
<div className="bg_tag_info single_line">{info?.industryName}</div>
</div>
<div className="flex justify-end items-center pt-[8px]">
<span className="pr-[14px]">
<TableActionCard renderActions={renderActions} maxActionCount={1}></TableActionCard>
</span>
<span>{info.name}</span>
</div>
<ul className="main_info mt-[8px] ">
<li className="flex items-center">
<span className="icon_box mr-[4px]">
<ModelCountIcon></ModelCountIcon>
<div className="px-[12px] pt-[12px]">
<div className="flex items-center logo_name">
<span className="icon_logo mr-[4px]">
<BusinessLogoIcon></BusinessLogoIcon>
</span>
<span className="label_box"></span>
<span>{info.modelCount}</span>
</li>
<li className="flex items-center">
<span className="icon_box mr-[4px]">
<DeviceCountIcon></DeviceCountIcon>
</span>
<span className="label_box"> </span>
<span>{info.deviceCount}</span>
</li>
<li className="flex items-center">
<span className="icon_box mr-[4px]">
<TimeIcon></TimeIcon>
</span>
<span className="label_box"></span>
<span>{formatTimeByDateType(info.create_time)}</span>
</li>
</ul>
<span className="single_line">{info.name}</span>
</div>
<ul className="main_info mt-[8px] ">
<li className="flex items-center mb-[8px]">
<span className="icon_box mr-[4px]">
<ModelCountIcon></ModelCountIcon>
</span>
<span className="label_box"></span>
<span>{info.modelCount}</span>
</li>
<li className="flex items-center mb-[8px]">
<span className="icon_box mr-[4px]">
<DeviceCountIcon></DeviceCountIcon>
</span>
<span className="label_box"> </span>
<span>{info.deviceCount}</span>
</li>
<li className="flex items-center">
<span className="icon_box mr-[4px]">
<TimeIcon></TimeIcon>
</span>
<span className="label_box"></span>
<span>{formatTimeByDateType(info.create_time)}</span>
</li>
</ul>
</div>
</div>
</div>
);

@ -1,6 +1,8 @@
// import { postModelCategoryCreateModelCategory } from '@/services/resource/ModelCategory';
import { useCity } from '@/hooks/useCity';
import { getDictIndustry } from '@/services/testApi/dict';
import { beforeUploadImage } from '@/utils/common';
import {
ModalForm,
ProForm,
@ -46,7 +48,7 @@ const CreateForm: React.FC<CreateFormProps> = (props) => {
return (
<ModalForm<API.ModelCategory>
className="gn_form"
className="gn_form gn_modal_form"
width={proFormSmallModelWidth}
title={intl.formatMessage({
id: 'business.list.table.createForm.add',
@ -187,7 +189,39 @@ const CreateForm: React.FC<CreateFormProps> = (props) => {
},
]}
/>
<ProFormText
<ProFormSelect
width={proFormSmallItemStyleProps.width}
name="industry"
label={<FormattedMessage id="model_index.create.form.industry" defaultMessage="行业" />}
placeholder={`${intl.formatMessage({
id: 'common.please_select',
defaultMessage: '$$$',
})}${intl.formatMessage({
id: 'model_index.create.form.industry',
defaultMessage: '$$$',
})}`}
required={true}
showSearch
debounceTime={500}
request={async () => {
const { data } = await getDictIndustry();
return data?.results?.map((v: Record<string, any>) => {
return { ...v, label: v.name, value: v.id };
});
}}
rules={[
{
required: true,
message: (
<FormattedMessage
id="model_index.create.form.rule.required.industry"
defaultMessage="name is required"
/>
),
},
]}
/>
{/* <ProFormText
width={proFormSmallItemStyleProps.width}
name="industry"
label={<FormattedMessage id="business.list.table.form.industry" defaultMessage="行业" />}
@ -210,7 +244,7 @@ const CreateForm: React.FC<CreateFormProps> = (props) => {
),
},
]}
/>
/> */}
<ProFormText
width={proFormSmallItemStyleProps.width}
name="contacts"

@ -6,8 +6,9 @@
background-color: #dfecff;
background-repeat: no-repeat;
background-size: cover;
border: 1px solid #ffffff;
border: 2px solid #ffffff;
border-radius: 8px;
box-shadow: 0px 4px 8px 0px rgba(0, 79, 178, 0.15);
/* 左侧展示信息 */
/* 右侧图片 */
}
@ -41,21 +42,31 @@
position: relative;
top: -20px;
}
.businessProject_page .ant-pro-list-row-card {
padding-inline: 0;
}
.businessProject_page .ant-pro-checkcard {
margin-block-end: 0;
}
.businessProject_page .bp_card_box {
min-height: 194px;
background: url('../../../../public/home/business_card.png') no-repeat;
background-size: cover;
border-radius: 4px;
overflow: visible;
position: relative;
border: 10px solid transparent;
padding: 0 8px;
/* 新建 */
/* 卡片内容 */
}
.businessProject_page .bp_card_box .bp_card_body {
position: relative;
height: 194px;
overflow: visible;
background-image: url('../../../../public/home/business_card.png');
background-repeat: no-repeat;
background-size: cover;
box-shadow: 0px 4px 8px 0px rgba(0, 79, 178, 0.15);
border-radius: 4px;
}
.businessProject_page .bp_card_box .ant-dropdown .ant-dropdown-menu,
.businessProject_page .bp_card_box .ant-dropdown-menu-submenu .ant-dropdown-menu {
background: rgba(0, 0, 0, 0.75);
color: #fff;
background: rgba(0, 0, 0, 0.75);
}
.businessProject_page .bp_card_box .plus_icon {
width: 32px;
@ -64,11 +75,11 @@
}
.businessProject_page .bp_card_box .tag_box {
position: absolute;
color: white;
font-size: 12px;
top: 8px;
margin-left: -6px;
width: 100px;
margin-left: -6px;
color: white;
font-size: 12px;
}
.businessProject_page .bp_card_box .tag_box .bg_tag_info {
top: 10px;

@ -1,13 +1,18 @@
@import url('@/base.less');
.businessProject_page {
header {
height: 102px;
background-color: #dfecff;
// background-image: url('../../../../public/home/business_banner_bg.png');
// TODO 0517 缺少背景图
background-image: url('../../../../public/home/business_line.svg');
background-repeat: no-repeat;
background-size: cover;
border: 1px solid #ffffff;
background-position: center center;
background-size: contain;
border: 2px solid #ffffff;
border-radius: 8px;
// box-shadow: 0px 4px 8px 0px rgba(0, 79, 178, 0.15);
box-shadow: 0px 4px 8px 0px rgba(0, 79, 178, 0.15);
/* 左侧展示信息 */
.banner_left {
& > li {
@ -26,7 +31,7 @@
line-height: 16px;
}
& > span {
color: #154ddd;
color: @primary_color;
font-weight: bold;
font-size: 32px;
line-height: 38px;
@ -44,14 +49,24 @@
}
}
/* 列表展示 & businessCard 组件样式 */
.ant-pro-list-row-card {
padding-inline: 0;
}
.ant-pro-checkcard {
margin-block-end: 0;
}
.bp_card_box {
position: relative;
min-height: 194px;
overflow: visible;
background: url('../../../../public/home/business_card.png') no-repeat;
background-size: cover;
border: 10px solid transparent;
border-radius: 4px;
padding: 0 4px 16px 12px;
.bp_card_body {
position: relative;
min-height: 194px;
overflow: visible;
background-image: url('../../../../public/home/business_card.png');
background-repeat: no-repeat;
background-size: cover;
border-radius: 4px;
box-shadow: 0px 4px 8px 0px rgba(0, 79, 178, 0.15);
}
.ant-dropdown .ant-dropdown-menu,
.ant-dropdown-menu-submenu .ant-dropdown-menu {
color: #fff;
@ -62,14 +77,16 @@
.plus_icon {
width: 32px;
height: 32px;
margin-bottom: 16px;
margin-bottom: 12px;
.icon-tianjiafenlei {
font-size: 24px;
}
}
/* 卡片内容 */
.tag_box {
position: absolute;
top: 8px;
width: 100px;
// background-color: red;
margin-left: -6px;
color: white;
font-size: 12px;

@ -2,7 +2,7 @@
* @Author: donghao donghao@supervision.ltd
* @Date: 2024-04-07 14:02:00
* @LastEditors: donghao donghao@supervision.ltd
* @LastEditTime: 2024-05-13 16:13:22
* @LastEditTime: 2024-05-17 16:25:17
* @FilePath: \general-ai-manage\src\pages\BusinessProject\BusinessProject.tsx
* @Description:
* @
@ -19,12 +19,11 @@ import { ReactComponent as BusinessBannerLogo } from '/public/home/business_bann
import { ReactComponent as BusinessHeader1 } from '/public/home/business_header_1.svg';
import { ReactComponent as BusinessHeader2 } from '/public/home/business_header_2.svg';
import { ReactComponent as BusinessHeader3 } from '/public/home/business_header_3.svg';
import { ReactComponent as PlusIcon } from '/public/home/plus_icon.svg';
import { ReactComponent as ResetIcon } from '/public/home/reset_icon.svg';
import { ReactComponent as SearchIcon } from '/public/home/search_icon.svg';
// device_count_icon model_count_icon
import IsDelete from '@/components/TableActionCard/isDelete';
import IsConfirmModal from '@/components/TableActionCard/isConfirmModal';
import { getBusinessProject } from '@/services/testApi/businessProject';
import { SearchOutlined } from '@ant-design/icons';
import { ProCard, ProForm, ProFormText, ProList } from '@ant-design/pro-components';
@ -39,7 +38,7 @@ type headerItemsProps = {
count: number;
icon: string | React.ReactNode;
};
// TODO 补充图标 背景图
// TODO 本页有警告需要解决
const headerItems: headerItemsProps[] = [
{
title: '企业总数',
@ -89,14 +88,18 @@ const BusinessProject: React.FC = () => {
];
let finalList = startList.map((item) => ({
content: item?.isAdd ? (
<div
onClick={handleCreateModal}
className="flex flex-col items-center justify-center w-full bp_card_box"
>
<span className="plus_icon">
<PlusIcon></PlusIcon>
</span>
{<FormattedMessage id="business.list.table.createForm.add" defaultMessage="新建" />}
<div className="w-full bp_card_box">
<div
onClick={handleCreateModal}
className="flex flex-col items-center justify-center w-full text_primary bp_card_body text-[16px]"
>
<span className="plus_icon ">
<i className="iconfont icon-tianjiafenlei"></i>
</span>
<p>
{<FormattedMessage id="business.list.table.createForm.add" defaultMessage="新建" />}
</p>
</div>
</div>
) : (
<BusinessCard
@ -131,11 +134,16 @@ const BusinessProject: React.FC = () => {
key: 'destroy',
renderDom: (
<div className="action_item_box">
<IsDelete
deleteNextText={
<FormattedMessage id="pages.searchTable.destroy" defaultMessage="删除" />
}
buttonRender={
<IsConfirmModal
modalProps={{
content: `确定删除${item.name}及相关信息吗?删除后将无法找回,请谨慎
.`,
onOk: () => {
console.log('删除成功');
// TODO 调用删除接口
},
}}
confirmButton={
<TextButton
fontSize={12}
buttonLabel={
@ -148,11 +156,7 @@ const BusinessProject: React.FC = () => {
}
></TextButton>
}
deleteApi={() => {
// TODO 调用删除接口
// handleDestroy(record).then(() => {});
}}
/>
></IsConfirmModal>
</div>
),
},
@ -165,7 +169,7 @@ const BusinessProject: React.FC = () => {
}
// 企业列表数据api
async function fetchData() {
const resp = await getBusinessProject({ page: 1, pageSize: 10, ...querysData });
const resp = await getBusinessProject({ page: 1, pageSize: 100, ...querysData });
if (isSuccessApi(resp)) {
toListDomByData(resp.data.results);
}
@ -189,8 +193,8 @@ const BusinessProject: React.FC = () => {
<li className="flex items-center" key={index}>
<span className="info_icon">{item.icon}</span>
<div className="info_body">
<p className="text_color_2">{item.title}</p>
<span>{item.count}</span>
<div className="text_color_2 py-[6px]">{item.title}</div>
<span className="font_f_1 ">{item.count}</span>
</div>
</li>
);
@ -204,9 +208,9 @@ const BusinessProject: React.FC = () => {
style={{ padding: 0, margin: 0, backgroundColor: 'transparent' }}
bodyStyle={{ padding: 0, margin: 0, backgroundColor: 'transparent' }}
>
<div className="gn_table_query_filter">
<div className="gn_form gn_table_query_filter pt-[24px] pb-[16px]">
<ProForm
className="gn_search_from"
className="gn_search_from mt-[8px] mb-[4px]"
form={form}
layout="horizontal"
submitter={{
@ -264,27 +268,29 @@ const BusinessProject: React.FC = () => {
/>
</ProForm>
</div>
<ProList<any>
className="gn_pro_list"
ghost={true}
itemCardProps={{
ghost: true,
bodyStyle: { padding: 0, margin: 0 },
}}
cardProps={{
bodyStyle: {
background: 'transparent',
margin: '-4px 0',
},
}}
pagination={false}
rowSelection={false}
grid={{ gutter: 16, xs: 1, md: 2, lg: 3, xl: 4, xxl: 5 }}
metas={{
content: {},
}}
dataSource={businessProjectList}
/>
<div>
<ProList<any>
className="gn_pro_list"
ghost={true}
itemCardProps={{
ghost: true,
bodyStyle: { padding: 0, margin: 0 },
}}
cardProps={{
bodyStyle: {
background: 'transparent',
margin: '-4px 0',
},
}}
pagination={false}
rowSelection={false}
grid={{ gutter: 16, xs: 1, md: 2, lg: 3, xl: 4, xxl: 5 }}
metas={{
content: {},
}}
dataSource={businessProjectList}
/>
</div>
</ProCard>
<CreateForm
createModalOpen={createModalOpen}

@ -10,7 +10,7 @@
/* eslint-disable */
import { request } from '@umijs/max';
/** 行业类列表 */
/** 行业列表 */
export async function getDictIndustry(
body: Record<string, any>, //
options?: { [key: string]: any },

Loading…
Cancel
Save