@skyfox2000/webui 0.1.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 (213) hide show
  1. package/.eslintrc.js +23 -0
  2. package/.prettierrc +11 -0
  3. package/.vscode/settings.json +25 -0
  4. package/README.md +104 -0
  5. package/env.d.ts +11 -0
  6. package/index.html +19 -0
  7. package/lib/AceEditor.d.ts +4 -0
  8. package/lib/BasicLayout.d.ts +4 -0
  9. package/lib/Error403.d.ts +4 -0
  10. package/lib/Error404.d.ts +4 -0
  11. package/lib/ExcelForm.d.ts +4 -0
  12. package/lib/UploadForm.d.ts +4 -0
  13. package/lib/assets/modules/basicLayout-YP_-EySb.js +726 -0
  14. package/lib/assets/modules/error403-Bi0E2twj.js +33 -0
  15. package/lib/assets/modules/error404-BF7vasR_.js +33 -0
  16. package/lib/assets/modules/excelForm-Dzndz-SG.js +109 -0
  17. package/lib/assets/modules/excelForm-WJVQmaDT.js +317 -0
  18. package/lib/assets/modules/index-FzWSvscZ.js +107 -0
  19. package/lib/assets/modules/index-ekkaExvB.js +49 -0
  20. package/lib/assets/modules/uploadForm-BahGnrAq.js +415 -0
  21. package/lib/assets/modules/uploadForm-DEnOjhwc.js +308 -0
  22. package/lib/components/common/button/index.vue.d.ts +42 -0
  23. package/lib/components/common/button/index.vue.d.ts.map +1 -0
  24. package/lib/components/common/icon/appicon.vue.d.ts +12 -0
  25. package/lib/components/common/icon/appicon.vue.d.ts.map +1 -0
  26. package/lib/components/common/icon/fullscreen.vue.d.ts +4 -0
  27. package/lib/components/common/icon/fullscreen.vue.d.ts.map +1 -0
  28. package/lib/components/common/icon/helper.vue.d.ts +23 -0
  29. package/lib/components/common/icon/helper.vue.d.ts.map +1 -0
  30. package/lib/components/common/icon/index.vue.d.ts +244 -0
  31. package/lib/components/common/icon/index.vue.d.ts.map +1 -0
  32. package/lib/components/common/icon/layoutIcon.vue.d.ts +44 -0
  33. package/lib/components/common/icon/layoutIcon.vue.d.ts.map +1 -0
  34. package/lib/components/common/icon/projectIcon.vue.d.ts +60 -0
  35. package/lib/components/common/icon/projectIcon.vue.d.ts.map +1 -0
  36. package/lib/components/common/icon/toolIcon.vue.d.ts +44 -0
  37. package/lib/components/common/icon/toolIcon.vue.d.ts.map +1 -0
  38. package/lib/components/common/index.d.ts +19 -0
  39. package/lib/components/common/index.d.ts.map +1 -0
  40. package/lib/components/common/tooltip/index.vue.d.ts +22 -0
  41. package/lib/components/common/tooltip/index.vue.d.ts.map +1 -0
  42. package/lib/components/content/dialog/excelForm.vue.d.ts +31 -0
  43. package/lib/components/content/dialog/excelForm.vue.d.ts.map +1 -0
  44. package/lib/components/content/dialog/index.vue.d.ts +35 -0
  45. package/lib/components/content/dialog/index.vue.d.ts.map +1 -0
  46. package/lib/components/content/dialog/uploadForm.vue.d.ts +25 -0
  47. package/lib/components/content/dialog/uploadForm.vue.d.ts.map +1 -0
  48. package/lib/components/content/drawer/index.vue.d.ts +27 -0
  49. package/lib/components/content/drawer/index.vue.d.ts.map +1 -0
  50. package/lib/components/content/form/formItem.vue.d.ts +26 -0
  51. package/lib/components/content/form/formItem.vue.d.ts.map +1 -0
  52. package/lib/components/content/form/index.vue.d.ts +26 -0
  53. package/lib/components/content/form/index.vue.d.ts.map +1 -0
  54. package/lib/components/content/index.d.ts +27 -0
  55. package/lib/components/content/index.d.ts.map +1 -0
  56. package/lib/components/content/search/index.vue.d.ts +30 -0
  57. package/lib/components/content/search/index.vue.d.ts.map +1 -0
  58. package/lib/components/content/search/searchItem.vue.d.ts +24 -0
  59. package/lib/components/content/search/searchItem.vue.d.ts.map +1 -0
  60. package/lib/components/content/table/index.vue.d.ts +37 -0
  61. package/lib/components/content/table/index.vue.d.ts.map +1 -0
  62. package/lib/components/content/table/tableOperate.vue.d.ts +19 -0
  63. package/lib/components/content/table/tableOperate.vue.d.ts.map +1 -0
  64. package/lib/components/content/toolbar/icontool.vue.d.ts +8 -0
  65. package/lib/components/content/toolbar/icontool.vue.d.ts.map +1 -0
  66. package/lib/components/content/toolbar/index.vue.d.ts +19 -0
  67. package/lib/components/content/toolbar/index.vue.d.ts.map +1 -0
  68. package/lib/components/content/tree/index.vue.d.ts +47 -0
  69. package/lib/components/content/tree/index.vue.d.ts.map +1 -0
  70. package/lib/components/error/error403.vue.d.ts +4 -0
  71. package/lib/components/error/error403.vue.d.ts.map +1 -0
  72. package/lib/components/error/error404.vue.d.ts +4 -0
  73. package/lib/components/error/error404.vue.d.ts.map +1 -0
  74. package/lib/components/form/aceEditor/aceConfig.d.ts +9 -0
  75. package/lib/components/form/aceEditor/aceConfig.d.ts.map +1 -0
  76. package/lib/components/form/aceEditor/index.vue.d.ts +13 -0
  77. package/lib/components/form/aceEditor/index.vue.d.ts.map +1 -0
  78. package/lib/components/form/autoComplete/index.vue.d.ts +140 -0
  79. package/lib/components/form/autoComplete/index.vue.d.ts.map +1 -0
  80. package/lib/components/form/cascader/index.vue.d.ts +110 -0
  81. package/lib/components/form/cascader/index.vue.d.ts.map +1 -0
  82. package/lib/components/form/checkbox/index.vue.d.ts +129 -0
  83. package/lib/components/form/checkbox/index.vue.d.ts.map +1 -0
  84. package/lib/components/form/datePicker/index.vue.d.ts +7 -0
  85. package/lib/components/form/datePicker/index.vue.d.ts.map +1 -0
  86. package/lib/components/form/index.d.ts +41 -0
  87. package/lib/components/form/index.d.ts.map +1 -0
  88. package/lib/components/form/input/index.vue.d.ts +27 -0
  89. package/lib/components/form/input/index.vue.d.ts.map +1 -0
  90. package/lib/components/form/input/inputIcon.vue.d.ts +11 -0
  91. package/lib/components/form/input/inputIcon.vue.d.ts.map +1 -0
  92. package/lib/components/form/input/inputNumber.vue.d.ts +4 -0
  93. package/lib/components/form/input/inputNumber.vue.d.ts.map +1 -0
  94. package/lib/components/form/input/inputPassword.vue.d.ts +4 -0
  95. package/lib/components/form/input/inputPassword.vue.d.ts.map +1 -0
  96. package/lib/components/form/propEditor/index.vue.d.ts +13 -0
  97. package/lib/components/form/propEditor/index.vue.d.ts.map +1 -0
  98. package/lib/components/form/radio/index.vue.d.ts +134 -0
  99. package/lib/components/form/radio/index.vue.d.ts.map +1 -0
  100. package/lib/components/form/radio/radioStatus.vue.d.ts +32 -0
  101. package/lib/components/form/radio/radioStatus.vue.d.ts.map +1 -0
  102. package/lib/components/form/rangePicker/index.vue.d.ts +17 -0
  103. package/lib/components/form/rangePicker/index.vue.d.ts.map +1 -0
  104. package/lib/components/form/select/index.vue.d.ts +143 -0
  105. package/lib/components/form/select/index.vue.d.ts.map +1 -0
  106. package/lib/components/form/switch/index.vue.d.ts +44 -0
  107. package/lib/components/form/switch/index.vue.d.ts.map +1 -0
  108. package/lib/components/form/textarea/index.vue.d.ts +4 -0
  109. package/lib/components/form/textarea/index.vue.d.ts.map +1 -0
  110. package/lib/components/form/transfer/index.vue.d.ts +39 -0
  111. package/lib/components/form/transfer/index.vue.d.ts.map +1 -0
  112. package/lib/components/form/transfer/transferTable.vue.d.ts +39 -0
  113. package/lib/components/form/transfer/transferTable.vue.d.ts.map +1 -0
  114. package/lib/components/form/treeSelect/index.vue.d.ts +39 -0
  115. package/lib/components/form/treeSelect/index.vue.d.ts.map +1 -0
  116. package/lib/components/form/upload/uploadList.vue.d.ts +477 -0
  117. package/lib/components/form/upload/uploadList.vue.d.ts.map +1 -0
  118. package/lib/components/index.d.ts +9 -0
  119. package/lib/components/index.d.ts.map +1 -0
  120. package/lib/components/layout/breadcrumb/index.vue.d.ts +4 -0
  121. package/lib/components/layout/breadcrumb/index.vue.d.ts.map +1 -0
  122. package/lib/components/layout/content/index.vue.d.ts +23 -0
  123. package/lib/components/layout/content/index.vue.d.ts.map +1 -0
  124. package/lib/components/layout/datetime/index.vue.d.ts +4 -0
  125. package/lib/components/layout/datetime/index.vue.d.ts.map +1 -0
  126. package/lib/components/layout/header/headerExits.vue.d.ts +4 -0
  127. package/lib/components/layout/header/headerExits.vue.d.ts.map +1 -0
  128. package/lib/components/layout/header/index.vue.d.ts +4 -0
  129. package/lib/components/layout/header/index.vue.d.ts.map +1 -0
  130. package/lib/components/layout/index.d.ts +17 -0
  131. package/lib/components/layout/index.d.ts.map +1 -0
  132. package/lib/components/layout/menu/index.vue.d.ts +7 -0
  133. package/lib/components/layout/menu/index.vue.d.ts.map +1 -0
  134. package/lib/components/layout/menu/menuTabs.vue.d.ts +4 -0
  135. package/lib/components/layout/menu/menuTabs.vue.d.ts.map +1 -0
  136. package/lib/components/layout/page/basicLayout.vue.d.ts +7 -0
  137. package/lib/components/layout/page/basicLayout.vue.d.ts.map +1 -0
  138. package/lib/es/AceEditor/index.js +168 -0
  139. package/lib/es/BasicLayout/index.js +4 -0
  140. package/lib/es/Error403/index.js +4 -0
  141. package/lib/es/Error404/index.js +4 -0
  142. package/lib/es/ExcelForm/index.js +5 -0
  143. package/lib/es/UploadForm/index.js +5 -0
  144. package/lib/index.d.ts +2 -0
  145. package/lib/webui.css +1 -0
  146. package/lib/webui.es.js +3349 -0
  147. package/package.json +66 -0
  148. package/plugins/vite-plugin-auto-generate-vue.ts +105 -0
  149. package/postcss.config.ts +6 -0
  150. package/src/assets/global.css +9 -0
  151. package/src/components/common/button/index.vue +126 -0
  152. package/src/components/common/icon/appicon.vue +28 -0
  153. package/src/components/common/icon/fullscreen.vue +13 -0
  154. package/src/components/common/icon/helper.vue +30 -0
  155. package/src/components/common/icon/index.vue +426 -0
  156. package/src/components/common/icon/layoutIcon.vue +33 -0
  157. package/src/components/common/icon/projectIcon.vue +41 -0
  158. package/src/components/common/icon/toolIcon.vue +33 -0
  159. package/src/components/common/index.ts +19 -0
  160. package/src/components/common/tooltip/index.vue +25 -0
  161. package/src/components/content/dialog/excelForm.vue +479 -0
  162. package/src/components/content/dialog/index.vue +149 -0
  163. package/src/components/content/dialog/uploadForm.vue +228 -0
  164. package/src/components/content/drawer/index.vue +93 -0
  165. package/src/components/content/form/formItem.vue +76 -0
  166. package/src/components/content/form/index.vue +48 -0
  167. package/src/components/content/index.ts +32 -0
  168. package/src/components/content/search/index.vue +135 -0
  169. package/src/components/content/search/searchItem.vue +52 -0
  170. package/src/components/content/table/index.vue +215 -0
  171. package/src/components/content/table/tableOperate.vue +131 -0
  172. package/src/components/content/toolbar/icontool.vue +151 -0
  173. package/src/components/content/toolbar/index.vue +107 -0
  174. package/src/components/content/tree/index.vue +140 -0
  175. package/src/components/error/error403.vue +14 -0
  176. package/src/components/error/error404.vue +14 -0
  177. package/src/components/form/aceEditor/aceConfig.ts +90 -0
  178. package/src/components/form/aceEditor/index.vue +175 -0
  179. package/src/components/form/autoComplete/index.vue +171 -0
  180. package/src/components/form/cascader/index.vue +110 -0
  181. package/src/components/form/checkbox/index.vue +108 -0
  182. package/src/components/form/datePicker/index.vue +29 -0
  183. package/src/components/form/index.ts +54 -0
  184. package/src/components/form/input/index.vue +70 -0
  185. package/src/components/form/input/inputIcon.vue +39 -0
  186. package/src/components/form/input/inputNumber.vue +23 -0
  187. package/src/components/form/input/inputPassword.vue +22 -0
  188. package/src/components/form/propEditor/index.vue +81 -0
  189. package/src/components/form/radio/index.vue +132 -0
  190. package/src/components/form/radio/radioStatus.vue +42 -0
  191. package/src/components/form/rangePicker/index.vue +64 -0
  192. package/src/components/form/select/index.vue +186 -0
  193. package/src/components/form/switch/index.vue +58 -0
  194. package/src/components/form/textarea/index.vue +23 -0
  195. package/src/components/form/transfer/index.vue +95 -0
  196. package/src/components/form/transfer/transferTable.vue +124 -0
  197. package/src/components/form/treeSelect/index.vue +108 -0
  198. package/src/components/form/upload/uploadList.vue +235 -0
  199. package/src/components/index.ts +97 -0
  200. package/src/components/layout/breadcrumb/index.vue +38 -0
  201. package/src/components/layout/content/index.vue +28 -0
  202. package/src/components/layout/datetime/index.vue +16 -0
  203. package/src/components/layout/header/headerExits.vue +28 -0
  204. package/src/components/layout/header/index.vue +43 -0
  205. package/src/components/layout/index.ts +16 -0
  206. package/src/components/layout/menu/index.vue +64 -0
  207. package/src/components/layout/menu/menuTabs.vue +56 -0
  208. package/src/components/layout/page/basicLayout.vue +67 -0
  209. package/src/vite-env.d.ts +8 -0
  210. package/tailwind.config.ts +11 -0
  211. package/tsconfig.json +53 -0
  212. package/vite.config.ts +117 -0
  213. package//344/273/243/347/240/201/350/247/204/350/214/203/345/217/212/351/243/216/346/240/274/346/214/207/345/215/227.md +116 -0
@@ -0,0 +1,67 @@
1
+ <script lang="ts" setup>
2
+ import { onMounted, ref, watch } from 'vue';
3
+ import { Layout, LayoutSider } from 'ant-design-vue';
4
+ import Tooltip from '../../common/tooltip/index.vue';
5
+ import Icon from '../../common/icon/index.vue';
6
+ import Menu from '../menu/index.vue';
7
+ import Header from '../header/index.vue';
8
+ import MenuTabs from '../menu/menuTabs.vue';
9
+ import AppIcon from '../../common/icon/appicon.vue';
10
+ import { useAppInfo, usePageInfo, useSettingInfo } from '@skyfox2000/webbase';
11
+ import message from 'vue-m-message';
12
+
13
+ const props = defineProps<{ routes: any }>();
14
+
15
+ const appInfoStore = useAppInfo();
16
+ const settingInfoStore = useSettingInfo();
17
+ const pageInfoStore = usePageInfo();
18
+
19
+ const bodyClass = ref('h-[calc(100vh-80px)]');
20
+ watch(
21
+ () => settingInfoStore.fullscreen,
22
+ (newVal) => {
23
+ bodyClass.value = newVal ? 'h-[calc(100vh-40px)]' : 'h-[calc(100vh-80px)]';
24
+ },
25
+ );
26
+
27
+ onMounted(() => {
28
+ message.closeAll();
29
+ });
30
+ </script>
31
+ <template>
32
+ <Layout class="h-screen">
33
+ <LayoutSider
34
+ class="overflow-auto h-screen left-0 top-0 bottom-0"
35
+ v-model:collapsed="settingInfoStore.menuCollapse"
36
+ collapsible
37
+ v-if="!settingInfoStore.fullscreen"
38
+ >
39
+ <div
40
+ class="h-[40px] max-h-[40px] bg-[rgba(240,240,240,0.2)] flex flex-nowrap items-center justify-center text-white font-bold text-lg overflow-hidden text-ellipsis"
41
+ >
42
+ <Tooltip :title="settingInfoStore.menuCollapse ? appInfoStore.appInfo.Name : ''" placement="right">
43
+ <Icon
44
+ v-if="appInfoStore.appInfo.Icon?.startsWith('sym-')"
45
+ :icon="appInfoStore.appInfo.Icon"
46
+ fontsize="30px"
47
+ size="26px"
48
+ />
49
+ <AppIcon v-else :icon="appInfoStore.appInfo.Icon" class="mx-1" />
50
+ </Tooltip>
51
+ <span v-if="!settingInfoStore.menuCollapse" class="ml-[10px]">{{ appInfoStore.appInfo.Name }}</span>
52
+ </div>
53
+ <Menu :routes="props.routes"></Menu>
54
+ </LayoutSider>
55
+ <Layout class="overflow-y-auto block">
56
+ <Header v-if="!settingInfoStore.fullscreen"></Header>
57
+ <MenuTabs v-if="pageInfoStore.TabEnabled"></MenuTabs>
58
+ <div class="relative overflow-y-auto" :class="bodyClass">
59
+ <router-view v-slot="{ Component, route }">
60
+ <keep-alive :include="appInfoStore.CachedComponents" :exclude="appInfoStore.ExcludeComponents">
61
+ <component :is="appInfoStore.cacheComponent(Component, route)" />
62
+ </keep-alive>
63
+ </router-view>
64
+ </div>
65
+ </Layout>
66
+ </Layout>
67
+ </template>
@@ -0,0 +1,8 @@
1
+ /// <reference types="vite/client" />
2
+
3
+ //解决ts文件引入vue文件出现红色警告问题
4
+ declare module '*.vue' {
5
+ import { defineComponent } from 'vue';
6
+ const Component: ReturnType<typeof defineComponent>;
7
+ export default Component;
8
+ }
@@ -0,0 +1,11 @@
1
+ /** @type {import('tailwindcss').Config} */
2
+ export default {
3
+ content: ['./index.html', './src/**/*.{vue,js,ts,jsx,tsx}'],
4
+ theme: {
5
+ extend: {},
6
+ },
7
+ corePlugins: {
8
+ preflight: false,
9
+ },
10
+ plugins: [],
11
+ };
package/tsconfig.json ADDED
@@ -0,0 +1,53 @@
1
+ {
2
+ "compilerOptions": {
3
+ "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo",
4
+ "declaration": true,
5
+ "declarationMap": true,
6
+ "emitDeclarationOnly": false,
7
+ "esModuleInterop": true,
8
+ "target": "ESNext",
9
+ "useDefineForClassFields": true,
10
+ "module": "ESNext",
11
+ "lib": ["ES2020", "DOM", "DOM.Iterable"],
12
+ "skipLibCheck": true,
13
+ "removeComments": true,
14
+ "forceConsistentCasingInFileNames": true,
15
+
16
+ "composite": true,
17
+ "allowSyntheticDefaultImports": true,
18
+
19
+ /* Bundler mode */
20
+ "moduleResolution": "Bundler",
21
+ "resolveJsonModule": true,
22
+ "isolatedModules": true,
23
+ "noEmit": false,
24
+ "jsx": "preserve",
25
+
26
+ /* Linting */
27
+ "strict": true,
28
+ "noUnusedLocals": true,
29
+ "noUnusedParameters": true,
30
+ "noFallthroughCasesInSwitch": true,
31
+ "baseUrl": ".",
32
+ "paths": {
33
+ "@/*": ["src/*"]
34
+ },
35
+ "typeRoots": ["./node_modules/@types", "./types"],
36
+ "rootDir": "./",
37
+ "outDir": "lib",
38
+
39
+ "allowJs": true,
40
+ "types": ["vite/client", "node"],
41
+ "sourceMap": true,
42
+ "verbatimModuleSyntax": false
43
+ },
44
+ "include": [
45
+ "src/**/**.ts",
46
+ "src/**/**.d.ts",
47
+ "src/**/**.vue",
48
+ "types/**/*.d.ts",
49
+ "vite.config.ts",
50
+ "plugins/**/*.ts"
51
+ ],
52
+ "exclude": ["node_modules", "lib", "dist"]
53
+ }
package/vite.config.ts ADDED
@@ -0,0 +1,117 @@
1
+ import { ConfigEnv, defineConfig, loadEnv } from 'vite';
2
+ import vue from '@vitejs/plugin-vue';
3
+ import path from 'path';
4
+ // import tailwindcss from 'tailwindcss';
5
+ // import autoGenerateVue from './plugins/vite-plugin-auto-generate-vue';
6
+ import dts from 'vite-plugin-dts';
7
+
8
+ // https://vitejs.dev/config/
9
+ export default defineConfig(({ mode }: ConfigEnv) => {
10
+ const root = process.cwd();
11
+ const env = loadEnv(mode, root);
12
+ console.log(new Date().toLocaleTimeString(), ' ', env);
13
+
14
+ return {
15
+ plugins: [
16
+ // autoGenerateVue({
17
+ // dir: './src/components',
18
+ // skip: ['./src/components/error', './src/components/form/aceEditor', './src/components/layout/page'],
19
+ // output: './src/components/index.ts',
20
+ // }),
21
+ vue(),
22
+ dts({
23
+ outDir: 'lib',
24
+ entryRoot: 'src',
25
+ // 确保Vue文件也能生成类型
26
+ include: ['src/components/**/*.ts', 'src/components/**/*.vue'],
27
+ // 排除不需要的文件
28
+ exclude: ['node_modules/**', 'src/components/**/*.test.ts'],
29
+ // 不使用API Extractor来生成类型
30
+ rollupTypes: false,
31
+ // 启用静态导入,避免某些Vue模块解析问题
32
+ staticImport: true,
33
+ // 生成.d.ts入口文件
34
+ insertTypesEntry: true,
35
+ // 复制外部.d.ts文件
36
+ copyDtsFiles: true,
37
+ }),
38
+ ],
39
+ // esmExternals: true,
40
+ // css: {
41
+ // postcss: {
42
+ // plugins: [tailwindcss()],
43
+ // },
44
+ // },
45
+ resolve: {
46
+ alias: {
47
+ '@': path.resolve('./src'),
48
+ '@skyfox2000/fapi': path.resolve('../502417_fapi'),
49
+ '@skyfox2000/microbase': path.resolve('../502424_MicroBase'),
50
+ '@skyfox2000/webabase': path.resolve('../502428_WebBase'),
51
+ },
52
+ extensions: ['.js', '.ts', '.vue', 'json'],
53
+ },
54
+ build: {
55
+ outDir: 'lib',
56
+ assetsDir: 'assets',
57
+ lib: {
58
+ entry: {
59
+ index: 'src/components/index.ts',
60
+ AceEditor: 'src/components/form/aceEditor/index.vue',
61
+ ExcelForm: 'src/components/content/dialog/excelForm.vue',
62
+ UploadForm: 'src/components/content/dialog/uploadForm.vue',
63
+ Error403: 'src/components/error/error403.vue',
64
+ Error404: 'src/components/error/error404.vue',
65
+ BasicLayout: 'src/components/layout/page/basicLayout.vue',
66
+ },
67
+ fileName: (format, entryName) => {
68
+ if (entryName === 'index') return `webui.${format}.js`;
69
+ return `es/${entryName}/index.js`;
70
+ },
71
+ },
72
+ rollupOptions: {
73
+ // 外部化处理那些你并不打算打包进库的依赖
74
+ external: [
75
+ 'pinia',
76
+ 'pinia-plugin-persistedstate',
77
+ 'dayjs',
78
+ 'vue',
79
+ 'vue-router',
80
+ 'ant-design-vue',
81
+ 'vue-m-message',
82
+ '@skyfox2000/fapi',
83
+ '@skyfox2000/webbase',
84
+ '@skyfox2000/microbase',
85
+
86
+ '@vue-office/excel',
87
+ // 添加ace相关的依赖为external
88
+ 'ace-builds',
89
+ 'vue3-ace-editor',
90
+ 'ace-builds/src-min-noconflict/ext-language_tools',
91
+ 'ace-builds/src-min-noconflict/mode-json',
92
+ 'ace-builds/src-min-noconflict/mode-javascript',
93
+ 'ace-builds/src-min-noconflict/mode-yaml',
94
+ 'ace-builds/src-min-noconflict/theme-github',
95
+ 'ace-builds/src-min-noconflict/theme-monokai',
96
+ 'ace-builds/src-min-noconflict/theme-twilight',
97
+ ],
98
+ // 如果你使用 TypeScript,则需要提供类型声明文件的输出路径
99
+ output: [
100
+ {
101
+ globals: {}, // 这里指定 crypto-js 的全局变量名为 CryptoJS
102
+ extend: false,
103
+ format: 'es',
104
+ dir: 'lib',
105
+ chunkFileNames: (assetInfo) => {
106
+ let name = assetInfo.name;
107
+ if (name.indexOf('.') > -1) name = name.substring(0, name.indexOf('.'));
108
+ return `assets/modules/${name}-[hash].js`;
109
+ },
110
+ },
111
+ ],
112
+ },
113
+ minify: true, // 开启压缩
114
+ sourcemap: false,
115
+ },
116
+ };
117
+ });
@@ -0,0 +1,116 @@
1
+ # 代码规范及风格指南
2
+
3
+ 1. 技术栈要求:
4
+
5
+ > 核心技术栈: Vue3 + TypeScript + Vite4 + Pinia + VueRouter
6
+ >
7
+ > UI组件: [AntDesign-vue v3.2.x](https://antdv.com/components/overview)
8
+ >
9
+ > CSS预处理器: [Windi CSS](https://windicss.org/integrations/vite.html)(优先), 其次`less`
10
+ >
11
+ > Vite插件:
12
+ >
13
+ > * [File system based route generator](https://github.com/hannoeru/vite-plugin-pages)
14
+ > * [Vue Layouts](https://github.com/JohnCampionJr/vite-plugin-vue-layouts)
15
+ > * [Auto import APIs](https://github.com/antfu/unplugin-auto-import)
16
+ > * [Components auto importing](https://github.com/antfu/unplugin-vue-components)
17
+
18
+ 2. Git commit 风格指南
19
+
20
+ > - feat: 增加新功能
21
+ > - fix: 修复问题
22
+ > - style: 代码风格相关无影响运行结果的
23
+ > - perf: 优化/性能提升
24
+ > - refactor: 重构
25
+ > - revert: 撤销修改
26
+ > - test: 测试相关
27
+ > - docs: 文档/注释
28
+ > - chore: 依赖更新/脚手架配置修改等
29
+ > - ci: 持续集成
30
+
31
+ 3. 使用`pnpm`进行包管理
32
+
33
+ 4. `README.md`中要写清楚如下内容:
34
+
35
+ * 目录结构说明
36
+ * 使用到的技术栈: 如第三方组件库, UI库, 工具库等等
37
+ * 最低NodeJS的版本要求
38
+ * 初始化项目的过程: 如何安装NodeJS, pnpm, 如何安装依赖, 如何启用项目
39
+ * 打包: 打包的命令, 注意事项等
40
+
41
+ 5. 代码书写风格可以不使用perttier等插件进行约束, 但总体书写风格请参考prettierrc.json:
42
+
43
+ ```json
44
+ {
45
+ "semi": true,
46
+ "tabWidth": 2,
47
+ "useTabs": false,
48
+ "singleQuote": true,
49
+ "quoteProps": 'as-needed',
50
+ "printWidth": 120,
51
+ "trailingComma": "all",
52
+ "endOfLine": 'lf',
53
+ }
54
+ ```
55
+
56
+ 6. 项目中若用到了`ES6`之后更高级的特性, Build时请考虑是否需要`Polyfill`, 参考官方插件`@vitejs/plugin-legacy`
57
+
58
+ > `备注`: 需要支持Chrome 69以上
59
+
60
+ 7. 请使用MockJS进行API Mock, 参考插件`vite-plugin-mock`
61
+
62
+ 8. 参考Vite中关于dotenv章节的说明, 使用.env区分不同环境, 如: staing, dev, production. 同时结合第四点, 实现dev使用Mockjs, sating使用测试接口地址, production使用正式接口地址
63
+
64
+ 9. TypeScript的typing类型声明, 如果是公用的, 统一放在 `src/typings`下, 如果是组件内部使用的类型声明, 定义在组件内部或者同级目录下
65
+
66
+ 10. 所有的 API 请求和响应参数, 都要申明ts的typings(放在统一的`api.d.ts`文件中), 同时入参和出参有公共参数, 请抽离, 参考如下:
67
+ ```typescript
68
+ export type AnyObject = Record<string | number, any> | Array | any;
69
+
70
+ export declare namespace Request {
71
+
72
+ interface SignableRequest<D = AnyObject> {
73
+ traceid: string; // 跟踪ID
74
+ timestamp: string; // 请求时间: yyyy-MM-dd HH:mm:ss
75
+ data?: D;
76
+ }
77
+
78
+ interface PagingRequest {
79
+ pageNo: number;
80
+ pageSize: number;
81
+ }
82
+
83
+ interface QueryUserInfo extends SignableRequest {
84
+ userId: number;
85
+ }
86
+ }
87
+
88
+ export declare namespace Model {
89
+
90
+ interface UserInfo {
91
+ userName: string;
92
+ userId: string;
93
+ }
94
+ }
95
+
96
+ export declare namespace Response {
97
+
98
+ interface AbstractResponse<D = AnyObject> {
99
+ status: number; // 状态码
100
+ message?: string;
101
+ timestamp: string; // 请求时间: yyyy-MM-dd HH:mm:ss
102
+ data?: D;
103
+ }
104
+
105
+ declare type User = AbstractResponse<Model.UserInfo>;
106
+ }
107
+ ```
108
+
109
+ 11. API接口请统一封装在 `src/api`目录下, 根据模块进行文件分割, 避免各个API URL散落在各个页面和组件中
110
+
111
+ 12. Vue风格指南, 请参考: https://vuejs.org/style-guide/rules-strongly-recommended.html#priority-b-rules-strongly-recommended
112
+ 1. 单文件组件, 首字母要大写, 不要仅用一个单词进行命名, 使用驼峰命名. 项目有这样的命名`left.vue`
113
+ 2. Base组件, 请统一在组件命名时, 增加前缀, 如`Base`或`App`. 项目有这样的命名`header.vue`
114
+ 3. pages下的Vue文件, 如果是自定义组件的, 参考上述要求, 如果是用作路由的, 请使用小写
115
+
116
+ 13. import 路径禁止出现这种 `import shangHaiMap from "./../../../assets/shanghai.json"`, 使用`@`符号代替根路径, 调整成 `import shangHaiMap from '@/assets/shanghai.json''`