create-tengits-app 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/PUBLISH.md +151 -0
  2. package/README.md +255 -0
  3. package/USAGE.md +154 -0
  4. package/bin/cli.js +195 -0
  5. package/eslint.config.mjs +33 -0
  6. package/global.d.ts +9 -0
  7. package/package.json +67 -0
  8. package/packages/main/.env +24 -0
  9. package/packages/main/.env.pre +3 -0
  10. package/packages/main/.env.test +4 -0
  11. package/packages/main/.eslintrc +9 -0
  12. package/packages/main/README.md +18 -0
  13. package/packages/main/dist/manifest.json +40 -0
  14. package/packages/main/index.html +80 -0
  15. package/packages/main/index.ts +12 -0
  16. package/packages/main/package.json +43 -0
  17. package/packages/main/postcss.config.js +7 -0
  18. package/packages/main/public/antd.dark.css +26419 -0
  19. package/packages/main/public/dark.css +32 -0
  20. package/packages/main/public/evaluation-template.csv +10 -0
  21. package/packages/main/rsbuild.config.ts +79 -0
  22. package/packages/main/src/App.tsx +108 -0
  23. package/packages/main/src/configSystemData.ts +27 -0
  24. package/packages/main/src/i18n.js +140 -0
  25. package/packages/main/src/index.jsx +22 -0
  26. package/packages/main/src/index.less +250 -0
  27. package/packages/main/src/menus.jsx +123 -0
  28. package/packages/main/src/pages/Home/index.tsx +102 -0
  29. package/packages/main/src/pages/Login/common.ts +26 -0
  30. package/packages/main/src/pages/Login/index.less +15 -0
  31. package/packages/main/src/pages/Login/index.tsx +238 -0
  32. package/packages/main/src/routes.tsx +75 -0
  33. package/packages/main/src/styles/index.css +38 -0
  34. package/packages/main/src/types/less.d.ts +4 -0
  35. package/packages/main/src/types/tengitsui.d.ts +7 -0
  36. package/packages/main/src/types/utils.d.ts +39 -0
  37. package/packages/main/src/utils/checkPermission.js +19 -0
  38. package/packages/main/src/utils/day.js +18 -0
  39. package/packages/main/src/utils/download.js +30 -0
  40. package/packages/main/src/utils/fileUtils.ts +45 -0
  41. package/packages/main/src/utils/guid.js +6 -0
  42. package/packages/main/src/utils/gzip.js +26 -0
  43. package/packages/main/src/utils/importFile.js +51 -0
  44. package/packages/main/src/utils/index.ts +9 -0
  45. package/packages/main/src/utils/request.js +40 -0
  46. package/packages/main/src/utils/uploadFileToCloud.js +102 -0
  47. package/packages/main/src/utils/utils.ts +331 -0
  48. package/packages/main/src/utils/uuid.js +13 -0
  49. package/packages/main/src/utils/version.js +158 -0
  50. package/packages/main/tailwind.config.js +27 -0
  51. package/packages/main/tsconfig.json +6 -0
  52. package/pnpm-workspace.yaml +16 -0
  53. package/tsconfig.json +23 -0
@@ -0,0 +1,32 @@
1
+ /* .ant-card {
2
+ color: rgba(255, 255, 255, 0.85);
3
+ background: #141414;
4
+ } */
5
+ .ant-card-head {
6
+ color: rgba(255, 255, 255, 0.85);
7
+ background: transparent;
8
+ border-bottom: 1px solid #303030;
9
+ border-radius: 2px 2px 0 0;
10
+ }
11
+ /* .ant-card-bordered {
12
+ border: 1px solid #303030;
13
+ } */
14
+ .ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-tab{
15
+ color: rgba(255, 255, 255, 0.85);
16
+ background: #141414;
17
+ border: 1px solid #303030;
18
+ }
19
+ .ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-tab-active{
20
+ background: #141414;
21
+ border: 1px solid #1989FA;
22
+ color: #1989FA;
23
+ }
24
+ .ant-tabs-bar {
25
+ border-bottom: 1px solid #303030;
26
+ }
27
+ .ant-tabs-tab {
28
+ color: rgba(255, 255, 255, 0.5);
29
+ }
30
+ .ant-card-meta-title{
31
+ color: #FFF;
32
+ }
@@ -0,0 +1,10 @@
1
+ question,ground_truth,,,,,,,,
2
+ 公司2023年的研发费⽤占营业收⼊的⽐例是多少?,根据提供的信息,公司2021年的研发费⽤占营业收⼊的⽐例为15.86%。 根据公司招股书披露数据,公司2021年的研发费⽤占营业收⼊的⽐例为15.86%,,,,,,,,
3
+ ,,,,,,,,,
4
+ ,,,,,,,,,
5
+ ,,,,,,,,,
6
+ ,,,,,,,,,
7
+ ,,,,,,,,,
8
+ ,,,,,,,,,
9
+ ,,,,,,,,,
10
+ ,,,,,,,,,
@@ -0,0 +1,79 @@
1
+ import path from 'node:path';
2
+ import { defineConfig, loadEnv } from '@rsbuild/core';
3
+ import { pluginReact } from '@rsbuild/plugin-react';
4
+ import { pluginSvgr } from '@rsbuild/plugin-svgr';
5
+
6
+ export default defineConfig(({ env, envMode }) => {
7
+ const { publicVars, parsed } = loadEnv({ mode: envMode, prefixes: ['REACT_APP_', 'VITE_'] });
8
+
9
+ return {
10
+ dev: {
11
+ lazyCompilation: true,
12
+ },
13
+ plugins: [
14
+ pluginReact(),
15
+ pluginSvgr(),
16
+ ],
17
+ html: {
18
+ template: './index.html',
19
+ templateParameters: {
20
+ ...parsed,
21
+ PROD: env === 'production',
22
+ },
23
+ },
24
+ source: {
25
+ define: {
26
+ ...publicVars,
27
+ 'import.meta.env': Object.entries(parsed).reduce((acc, [key, value]) => {
28
+ acc[key] = JSON.stringify(value);
29
+ return acc;
30
+ }, {}),
31
+ '__APP_ENV__': JSON.stringify({ BASE_URL: '' }),
32
+ },
33
+ entry: {
34
+ index: './src/index.jsx',
35
+ },
36
+ },
37
+ resolve: {
38
+ alias: {
39
+ '@': path.resolve(__dirname, 'src'),
40
+ },
41
+ dedupe: ['react', 'react-dom', 'react-query'],
42
+ },
43
+ server: {
44
+ port: 3000,
45
+ proxy: [
46
+ // 添加你的代理配置
47
+ // {
48
+ // context: ['/api'],
49
+ // target: 'http://localhost:8080',
50
+ // changeOrigin: true,
51
+ // ws: true,
52
+ // }
53
+ ],
54
+ },
55
+ output: {
56
+ legalComments: 'none',
57
+ manifest: true,
58
+ // 根据需要配置外部依赖
59
+ externals: {
60
+ 'react': 'React',
61
+ 'react-dom': 'ReactDOM',
62
+ 'react-router-dom': 'ReactRouterDOM',
63
+ 'dayjs': 'dayjs',
64
+ 'antd': 'antd',
65
+ 'tengits-ui5': 'tengitsui5'
66
+ },
67
+ },
68
+ performance: {
69
+ removeConsole: env === 'production' ? ['log'] : [],
70
+ buildCache: true,
71
+ chunkSplit: {
72
+ strategy: 'split-by-experience',
73
+ forceSplitting: {
74
+ // 根据需要配置代码分割
75
+ },
76
+ },
77
+ },
78
+ };
79
+ });
@@ -0,0 +1,108 @@
1
+ import React, { Suspense, useEffect, useMemo, useRef, useState } from 'react';
2
+ import { getLocalStorageJSON, getMenusAndRoutes, LOCAL_STORAGE_KEY, rootRoute, TUIApp } from 'tengits-ui5';
3
+ import i18n from './i18n';
4
+ import { getMenus } from './menus';
5
+ import { customRoutes, otherRoutes } from './routes';
6
+
7
+ const { VITE_AI_APPLICATIONID } = import.meta.env;
8
+
9
+ interface MenuItem {
10
+ id: string | number;
11
+ menuOrder: number;
12
+ menuLevel: number;
13
+ iconType?: string;
14
+ menuName: string;
15
+ menuRoute: string;
16
+ menuAuth?: string[];
17
+ children?: MenuItem[];
18
+ }
19
+ type LocaleType = 'zh' | 'en' | 'fr' | 'de' | 'es';
20
+
21
+
22
+ function App() {
23
+ const [menus, setMenus] = useState();
24
+ const [routes, setRoutes] = useState(otherRoutes);
25
+ const [loading, setLoading] = useState(false);
26
+ const layoutRef = useRef<any>(null);
27
+ const themeConfig = useMemo(() => ({
28
+ sysMode: getLocalStorageJSON(LOCAL_STORAGE_KEY.THEMESTATUS, { sysMode: 'light' }).sysMode,
29
+ loginConfig: getLocalStorageJSON(LOCAL_STORAGE_KEY.LOGINCONFIG, { systemName: '', logo: '', shinkLogo: '' }),
30
+ }), []);
31
+ const { sysMode, loginConfig } = themeConfig || {};
32
+ const {logo } = loginConfig || {};
33
+
34
+ useEffect(() => {
35
+ const initializeMenus = () => {
36
+ const { menus, routes } = getMenusAndRoutes(
37
+ getMenus(),
38
+ (route: any, menu: MenuItem) => { route.menuAuth = menu.menuAuth || []; },
39
+ customRoutes(),
40
+ otherRoutes,
41
+ );
42
+ setMenus(menus);
43
+ setRoutes(routes);
44
+ setLoading(true);
45
+ };
46
+ if (i18n.isInitialized) {
47
+ initializeMenus();
48
+ }
49
+ else {
50
+ i18n.on('initialized', initializeMenus);
51
+ }
52
+
53
+ return () => {
54
+ i18n.off('initialized', initializeMenus);
55
+ };
56
+ }, []);
57
+
58
+ const handleLanguageChange = (local) => {
59
+ i18n.changeLanguage(local);
60
+ localStorage.setItem('language', local);
61
+ // 强制刷新页面
62
+ window.location.reload();
63
+ };
64
+
65
+
66
+ const globalCommonStyle = {
67
+ '--TUI-ant-collapse-container-bg':
68
+ sysMode === 'dark' ? '#1E2127' : '#F0F0F0',
69
+ '--TUI-ant-collapse-card-bg': sysMode === 'dark' ? '#2E3138' : '#FFFFFF',
70
+ '--TUI-ant-collapse-header-bg':
71
+ sysMode === 'dark' ? 'rgba(255, 255, 255, 0.04)' : 'rgba(0, 0, 0, 0.02)',
72
+ '--TUI-canvas-bg': sysMode === 'dark' ? '#262626' : 'var(--color-gray-3, #f5f5f5)',
73
+ 'height': '100%',
74
+ };
75
+
76
+
77
+ return (
78
+ <Suspense fallback={<div>加载中...</div>}>
79
+ {loading && (
80
+ <div style={{ ...globalCommonStyle }}>
81
+ <TUIApp
82
+ appConfigDefaultStatus={{
83
+ isNotJumpTongyi: true,
84
+ systemName: i18n.t('AIWorkbench'),
85
+ logoutProps: {
86
+ api: '/saas/user/logout',
87
+ },
88
+ locale: i18n.language as LocaleType,
89
+ headLogo: logo,
90
+ onLanguageChange: handleLanguageChange,
91
+ }}
92
+ themeDefaultStatus={{
93
+ defaultStyle: { height: '100%' },
94
+ layoutMode: 'ExpandMenu',
95
+ }}
96
+ layoutDefaultStatus={{ menus, routes }}
97
+ appProps={{
98
+ style: { height: '100%' },
99
+ }}
100
+ ref={layoutRef}
101
+ />
102
+ </div>
103
+ )}
104
+ </Suspense>
105
+ );
106
+ }
107
+
108
+ export default App;
@@ -0,0 +1,27 @@
1
+ const {
2
+ VITE_TENCENT_COS_APPID,
3
+ VITE_TENCENT_COS_BUCKET,
4
+ VITE_PRE_RELEASE,
5
+ VITE_TENCENT_COS_APPID_TEST,
6
+ VITE_TENCENT_COS_BUCKET_TEST,
7
+ VITE_TCAPTCHE_APPID,
8
+ } = import.meta.env;
9
+
10
+ export default function configSystemData() {
11
+ window.VITE_TCAPTCHE_APPID = VITE_TCAPTCHE_APPID;
12
+ // window.VITE_LGOIN_TITLE_BG = require('./assets/logoWithTitle.png');
13
+
14
+ window.dataConfig = {
15
+ TencentCos: {
16
+ appid: VITE_PRE_RELEASE
17
+ ? VITE_TENCENT_COS_APPID_TEST
18
+ : VITE_TENCENT_COS_APPID,
19
+ bucket: VITE_PRE_RELEASE
20
+ ? VITE_TENCENT_COS_BUCKET_TEST
21
+ : VITE_TENCENT_COS_BUCKET,
22
+ region: 'ap-guangzhou',
23
+ picregion: 'gz',
24
+ getCosCredentialUrl: '/ttos/thirdpartsdk/getCosCredential',
25
+ },
26
+ };
27
+ }
@@ -0,0 +1,140 @@
1
+ import i18n from 'i18next';
2
+ import Backend from 'i18next-http-backend';
3
+ import { initReactI18next } from 'react-i18next';
4
+
5
+ // 获取存储的语言设置,如果没有则默认使用中文
6
+ // 根据浏览器语言自动检测并映射到支持的语言
7
+ function getBrowserLanguage() {
8
+ const browserLang = navigator.language.toLowerCase();
9
+
10
+ // 映射浏览器语言到支持的语言代码
11
+ if (browserLang.startsWith('zh')) {
12
+ return 'zh';
13
+ }
14
+ else if (browserLang.startsWith('en')) {
15
+ return 'en';
16
+ }
17
+ else if (browserLang.startsWith('fr')) {
18
+ return 'fr';
19
+ }
20
+ else if (browserLang.startsWith('de')) {
21
+ return 'de';
22
+ }
23
+ else if (browserLang.startsWith('es')) {
24
+ return 'es';
25
+ }
26
+
27
+ // 默认返回中文
28
+ return 'zh';
29
+ }
30
+
31
+ // 获取存储的语言设置,如果没有则使用浏览器语言检测
32
+ const savedLanguage = localStorage.getItem('language') || getBrowserLanguage();
33
+
34
+ const aiI18n = i18n.createInstance();
35
+ // 创建新的i18n实例,避免与其他实例冲突
36
+
37
+ const allNamespaces = ['AIWorkbench', 'bs', 'Common', 'flow'];
38
+
39
+ // 创建新的i18n实例,避免与其他实例冲突
40
+ const nsMap = {
41
+ // '/doc': ['ReportConfiguration', 'Common'],
42
+ };
43
+
44
+ // 缓存已加载的翻译数据
45
+ const translationCache = new Map();
46
+
47
+ // 缓存进行中的请求,避免重复请求
48
+ const pendingRequests = new Map();
49
+
50
+ export const initializeAiI18n = async (options = {}) => {
51
+ // 使用Backend和initReactI18next插件
52
+ // 根据当前路由设置默认命名空间
53
+ const currentPath = window.location.pathname;
54
+ let defaultNS = 'AIWorkbench'; // 默认命名空间
55
+
56
+ // 根据路由路径设置对应的命名空间
57
+ // 使用nsMap来映射路径到命名空间
58
+ for (const [path, namespace] of Object.entries(nsMap)) {
59
+ if (currentPath.includes(path)) {
60
+ defaultNS = namespace;
61
+ break;
62
+ }
63
+ }
64
+
65
+ // 更新默认命名空间
66
+ if (options.defaultNS) {
67
+ defaultNS = options.defaultNS;
68
+ }
69
+ // 只加载必要的命名空间,而不是所有命名空间
70
+ const initialNamespaces = Array.isArray(defaultNS) ? defaultNS : [defaultNS]; // 只加载默认命名空间和回退命名空间
71
+
72
+ // 使用Backend和initReactI18next插件
73
+
74
+ return aiI18n.use(Backend)
75
+ .use(initReactI18next)
76
+ .init({
77
+ nsSeparator: '/',
78
+ partialBundledLanguages: true,
79
+ lng: savedLanguage,
80
+ fallbackLng: savedLanguage, // 明确设置 fallback 语言为中文
81
+ ns: allNamespaces, // 指定命名空间
82
+ // ns: initialNamespaces, // 只指定初始命名空间
83
+ defaultNS, // 默认命名空间
84
+ fallbackNS: 'AIWorkbench', // 回退命名空间
85
+ backend: {
86
+ loadPath: '/locales/{{lng}}/{{ns}}.json',
87
+ },
88
+ interpolation: {
89
+ escapeValue: false, // react already safes from xss
90
+ },
91
+ });
92
+ };
93
+
94
+ /**
95
+ * 修改命名空间的方法
96
+ * @param ns - 新的命名空间
97
+ */
98
+ export const changeNamespace = (ns) => {
99
+ return new Promise((resolve, reject) => {
100
+ if (ns) {
101
+ aiI18n.loadNamespaces(ns)
102
+ .then(() => {
103
+ aiI18n.setDefaultNamespace(ns);
104
+ console.log('Current namespace:', aiI18n);
105
+ resolve();
106
+ })
107
+ .catch((error) => {
108
+ console.error('Failed to load namespace:', error);
109
+ reject(error);
110
+ });
111
+ }
112
+ else {
113
+ resolve();
114
+ }
115
+ });
116
+ };
117
+
118
+ /**
119
+ * 多命名空间翻译方法 - 注意:含{{}}变量的key必须使用i18n.t而不是该t,否则会报错
120
+ * @param key - 翻译键值
121
+ * @param namespace - 命名空间,可选
122
+ * @returns 翻译后的文本
123
+ */
124
+ export const t = (key, namespace) => {
125
+ if (namespace) {
126
+ return aiI18n.t(key, { ns: namespace });
127
+ }
128
+ const title = aiI18n.t(key);
129
+ return title;
130
+ };
131
+
132
+ /**
133
+ * 预加载多个命名空间
134
+ * @param namespaces - 命名空间数组
135
+ */
136
+ export const loadMultipleNamespaces = (namespaces) => {
137
+ return Promise.all(namespaces.map(ns => aiI18n.loadNamespaces(ns)));
138
+ };
139
+
140
+ export default aiI18n;
@@ -0,0 +1,22 @@
1
+ import React, { lazy, Suspense, useContext } from 'react';
2
+ import ReactDOM from 'react-dom/client';
3
+ import { initializeTUII18n } from 'tengits-ui5';
4
+ import App from './App';
5
+ import configSystemData from './configSystemData';
6
+ import { initializeAiI18n } from './i18n';
7
+
8
+ import './index.less';
9
+
10
+ window.systemId = '100';
11
+ // PlatformType 1- 平台端 2-租户端 3-客户端
12
+ window.tenantParams = {
13
+ platformType: 3,
14
+ };
15
+ configSystemData();
16
+ initializeAiI18n();
17
+ initializeTUII18n();
18
+
19
+
20
+ const container = document.getElementById('container');
21
+ const root = ReactDOM.createRoot(container);
22
+ root.render(<App />);
@@ -0,0 +1,250 @@
1
+ @tailwind base;
2
+ @tailwind components;
3
+ @tailwind utilities;
4
+
5
+ // .TUI-Layout-ExpandMenu .TUI-Side {
6
+ // background-color: #00474f;
7
+ // }
8
+
9
+ .TUI-LayoutWarp {
10
+ .ant-layout {
11
+ --TUI-Menu-Color-Primary: #00474f;
12
+ }
13
+ }
14
+
15
+ .customScrollbar {
16
+ &::-webkit-scrollbar {
17
+ /*滚动条整体样式*/
18
+ width: 8px;
19
+ /*高宽分别对应横竖滚动条的尺寸*/
20
+ height: 8px;
21
+ }
22
+
23
+ &::-webkit-scrollbar-thumb {
24
+ /*滚动条里面小方块*/
25
+ border-radius: 4px;
26
+ // background-color: rgba(31, 64, 80, 0.2);
27
+ background-color: #c8c9cc;
28
+ }
29
+
30
+ &::-webkit-scrollbar-track {
31
+ /*滚动条里面轨道*/
32
+ // box-shadow: inset 0 0 5px #fff;
33
+ background: transparent;
34
+ // background-color: red;
35
+ border-radius: 4px;
36
+ }
37
+ }
38
+
39
+ // 移动端不适用滚动条定义
40
+ @media (min-device-width: 768px) {
41
+ * {
42
+ .customScrollbar();
43
+ }
44
+ }
45
+
46
+ // 全局样式
47
+ .TUI-AdvancedCrud .ant-table-wrapper {
48
+ margin-top: 0px;
49
+ }
50
+
51
+ .TUI-TableEditor {
52
+ .TUI-Crud {
53
+ padding: 0;
54
+ min-height: auto;
55
+ }
56
+
57
+ .ant-input-number {
58
+ width: 100%;
59
+ height: 100%;
60
+ border: 0 none;
61
+ border-radius: 0;
62
+
63
+ .ant-input-number-handler-wrap {
64
+ display: none;
65
+ }
66
+
67
+ .ant-input-number-input-wrap {
68
+ height: 100%;
69
+
70
+ .ant-input-number-input {
71
+ height: 100%;
72
+ text-align: center;
73
+ border: 0 none;
74
+ }
75
+ }
76
+ }
77
+
78
+ .ant-select-selection__choice {
79
+ border: 0 none;
80
+ background: none;
81
+ padding: 0;
82
+ }
83
+
84
+ .ant-select-selection__choice__remove {
85
+ display: none;
86
+ }
87
+
88
+ .ant-table-thead > tr > th {
89
+ white-space: pre-wrap;
90
+ }
91
+ }
92
+
93
+ .ant-form-item + .TUI-Crud-Toolbox {
94
+ margin-left: 0px;
95
+
96
+ &::before {
97
+ content: '';
98
+ display: inline-block;
99
+ width: 0;
100
+ height: 24px;
101
+ border-right: 1px solid #ebedf0;
102
+ margin-left: 16px;
103
+ margin-right: 16px;
104
+ }
105
+ }
106
+
107
+ .ant-checkbox-group {
108
+ .ant-checkbox-group-item:last-child {
109
+ .ant-checkbox + span {
110
+ padding-right: 0;
111
+ }
112
+ }
113
+ }
114
+
115
+ .TUI-AdvancedFilter {
116
+ &:empty {
117
+ display: none;
118
+ }
119
+
120
+ .ant-select-selection__placeholder {
121
+ position: unset;
122
+ height: unset;
123
+ margin-top: unset;
124
+ line-height: unset;
125
+ }
126
+
127
+ .TUI-AdvancedFilter-Short-Value .ant-input,
128
+ .TUI-AdvancedFilter-Short-Value .ant-select {
129
+ min-width: 120px;
130
+ }
131
+
132
+ .TUI-AdvancedFilter-Reset + .TUI-AdvancedFilter-AddOn {
133
+ margin-left: 16px !important;
134
+ }
135
+ }
136
+
137
+ .TUI-FormField-Lable {
138
+ border-radius: var(--ant-border-radius) 0 0 var(--ant-border-radius) !important;
139
+ }
140
+
141
+ .TUI-AdvancedCrud .TUI-AdvancedFilter .ant-select-selection {
142
+ border-top-right-radius: 2px !important;
143
+ border-bottom-right-radius: 2px !important;
144
+ }
145
+
146
+ .TUI-AdvancedCrud {
147
+ > .TUI-Table {
148
+ margin-top: 16px;
149
+
150
+ .ant-table-tbody > tr > td,
151
+ .ant-table-thead > tr > th {
152
+ font-size: 14px !important;
153
+ }
154
+ }
155
+
156
+ .TUI-Crud-Toolbox:empty + .TUI-Table {
157
+ margin-top: 0px;
158
+ }
159
+ }
160
+
161
+ @font-face {
162
+ font-family: 'iconfont';
163
+ /* Project id 3055426 */
164
+ src: url('//at.alicdn.com/t/c/font_3055426_u3wl3bch5gq.ttf?t=1710466840688') format('truetype');
165
+ }
166
+
167
+ @font-face {
168
+ font-family: D-DIN;
169
+ src: url('https://static-1255466169.cos.ap-guangzhou.myqcloud.com/assets/fonts/D-DIN.ttf');
170
+ }
171
+ @font-face {
172
+ font-family: SourceHanSerifCN-SemiBold;
173
+ src: url('https://static-1255466169.cos.ap-guangzhou.myqcloud.com/assets/fonts/SourceHanSerifCN-SemiBold.ttf');
174
+ }
175
+
176
+ // .ant-modal .ant-form-item {
177
+ // display: flex;
178
+ // }
179
+
180
+ .TUI-Form {
181
+ .ant-radio-button-wrapper:first-child {
182
+ border-radius: 2px 0 0 2px;
183
+ }
184
+
185
+ .ant-radio-button-wrapper:last-child {
186
+ border-radius: 0 2px 2px 0;
187
+ }
188
+
189
+ .ant-form-item {
190
+ display: flex;
191
+ flex-direction: column;
192
+ margin: 0 0 12px;
193
+
194
+ .ant-form-item-label {
195
+ line-height: 1 !important;
196
+ margin-bottom: 4px;
197
+ // text-align: left;
198
+ }
199
+ }
200
+ }
201
+
202
+ .TUI-TableEditor .ant-select-dropdown-menu-item-group-title {
203
+ white-space: nowrap;
204
+ }
205
+
206
+ #container {
207
+ height: 100%;
208
+ width: 100%;
209
+ }
210
+
211
+ // #region 数据容器
212
+
213
+ .ant-table-thead {
214
+ .tableCell-t0 {
215
+ // background-color: #ebedf0 !important;
216
+ border-bottom: var(--ant-line-width) var(--ant-line-type) var(--ant-table-border-color) !important;
217
+ color: var(--ant-table-header-color, rgba(255, 255, 255, 0.85)) !important;
218
+ background-color: var(--ant-table-header-bg, #1d1d1d) !important;
219
+ }
220
+
221
+ .tableCell-t1 {
222
+ color: var(--ant-geekblue-7) !important;
223
+ background-color: var(--ant-geekblue-1, #1d1d1d) !important;
224
+ border-bottom: var(--ant-line-width) var(--ant-line-type) var(--ant-geekblue-3) !important;
225
+ }
226
+
227
+ .tableCell-t2 {
228
+ color: var(--ant-green-7) !important;
229
+ background-color: var(--ant-green-1, #1d1d1d) !important;
230
+ border-bottom: var(--ant-line-width) var(--ant-line-type) var(--ant-green-3) !important;
231
+ }
232
+
233
+ .tableCell-t3 {
234
+ color: var(--ant-volcano-7) !important;
235
+ background-color: var(--ant-volcano-1, #1d1d1d) !important;
236
+ border-bottom: var(--ant-line-width) var(--ant-line-type) var(--ant-volcano-3) !important;
237
+ }
238
+ }
239
+
240
+ // #endregion
241
+
242
+ #container {
243
+ > div {
244
+ height: 100%;
245
+ }
246
+ }
247
+
248
+ html {
249
+ overflow: hidden;
250
+ }