create-young-proj 0.3.0 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (55) hide show
  1. package/README.md +6 -1
  2. package/dist/index.mjs +8 -8
  3. package/package.json +1 -1
  4. package/template-uni-app/.vscode/css.code-snippets +398 -0
  5. package/template-uni-app/.vscode/extensions.json +9 -0
  6. package/template-uni-app/.vscode/js.code-snippets +1669 -0
  7. package/template-uni-app/.vscode/settings.json +7 -0
  8. package/template-uni-app/.vscode/vue-html.code-snippets +668 -0
  9. package/template-uni-app/README.md +46 -0
  10. package/template-uni-app/_env +1 -0
  11. package/template-uni-app/_env.development +11 -0
  12. package/template-uni-app/_env.production +11 -0
  13. package/template-uni-app/_env.test +14 -0
  14. package/template-uni-app/_gitignore +3 -0
  15. package/template-uni-app/auto-imports.d.ts +404 -0
  16. package/template-uni-app/components.d.ts +20 -0
  17. package/template-uni-app/custom-plugins/index.ts +8 -0
  18. package/template-uni-app/custom-plugins/multiconf.ts +77 -0
  19. package/template-uni-app/custom-plugins/polyfill.ts +32 -0
  20. package/template-uni-app/index.html +23 -0
  21. package/template-uni-app/package.json +84 -0
  22. package/template-uni-app/pnpm-lock.yaml +7530 -0
  23. package/template-uni-app/rome.json +26 -0
  24. package/template-uni-app/src/App.vue +76 -0
  25. package/template-uni-app/src/apis/index.ts +36 -0
  26. package/template-uni-app/src/apis/lib/index.ts +236 -0
  27. package/template-uni-app/src/apis/requests/get.ts +52 -0
  28. package/template-uni-app/src/apis/requests/index.ts +8 -0
  29. package/template-uni-app/src/apis/requests/post.ts +23 -0
  30. package/template-uni-app/src/components/young-loading/young-loading.vue +38 -0
  31. package/template-uni-app/src/components/young-navbar/young-navbar.vue +253 -0
  32. package/template-uni-app/src/components/young-tabbar/young-tabbar.vue +137 -0
  33. package/template-uni-app/src/components/young-tabbar-layout/young-tabbar-layout.vue +27 -0
  34. package/template-uni-app/src/config/enum.ts +46 -0
  35. package/template-uni-app/src/config/index.ts +8 -0
  36. package/template-uni-app/src/config/map.ts +15 -0
  37. package/template-uni-app/src/env.d.ts +35 -0
  38. package/template-uni-app/src/main.ts +20 -0
  39. package/template-uni-app/src/manifest.json +83 -0
  40. package/template-uni-app/src/pages/index.vue +52 -0
  41. package/template-uni-app/src/pages/my.vue +29 -0
  42. package/template-uni-app/src/pages.json +63 -0
  43. package/template-uni-app/src/store/index.ts +16 -0
  44. package/template-uni-app/src/store/local/index.ts +40 -0
  45. package/template-uni-app/src/store/system.ts +12 -0
  46. package/template-uni-app/src/uni.scss +76 -0
  47. package/template-uni-app/src/utils/auth.ts +125 -0
  48. package/template-uni-app/src/utils/index.ts +11 -0
  49. package/template-uni-app/src/utils/map.ts +97 -0
  50. package/template-uni-app/src/utils/modal.ts +98 -0
  51. package/template-uni-app/src/utils/route.ts +149 -0
  52. package/template-uni-app/src/utils/system.ts +66 -0
  53. package/template-uni-app/tsconfig.json +13 -0
  54. package/template-uni-app/unocss.config.ts +30 -0
  55. package/template-uni-app/vite.config.ts +68 -0
@@ -0,0 +1,149 @@
1
+ /*
2
+ * @Author: zhangyang
3
+ * @Date: 2023-07-18 15:24:39
4
+ * @LastEditTime: 2023-07-19 16:51:49
5
+ * @Description:
6
+ */
7
+ import type { Pages } from '@/config';
8
+
9
+ interface IRoute {
10
+ /**
11
+ * 路由类型
12
+ */
13
+ type: ENUM_ROUTE_TYPE;
14
+ /**
15
+ * 路由路径
16
+ */
17
+ url: string;
18
+ /**
19
+ * 路由参数
20
+ */
21
+ params?: Record<string, any>;
22
+ /**
23
+ * 回退的层数 uni.navigateBack
24
+ * @default 1
25
+ */
26
+ delta?: number;
27
+ /**
28
+ * 是否编码
29
+ */
30
+ encode?: boolean;
31
+ }
32
+
33
+ /**
34
+ * 路由类型
35
+ */
36
+ enum ENUM_ROUTE_TYPE {
37
+ TO = 'navigateTo',
38
+ REDIRECT = 'redirectTo',
39
+ TAB = 'switchTab',
40
+ RELAUNCH = 'reLaunch',
41
+ BACK = 'navigateBack',
42
+ }
43
+
44
+ const params2Url = (params: Record<string, any>, encode = false) => {
45
+ const arr = [];
46
+ for (const key in params) {
47
+ arr.push(`${key}=${encode ? encodeURIComponent(params[key]) : params[key]}`);
48
+ }
49
+ return arr.join('&');
50
+ };
51
+
52
+ /**
53
+ * 路由跳转
54
+ */
55
+ export function route({ type, url, params, delta = 1, encode }: IRoute) {
56
+ if (type !== ENUM_ROUTE_TYPE.BACK && params) {
57
+ url = `${url}?${params2Url(params, encode)}`;
58
+ }
59
+
60
+ switch (type) {
61
+ case ENUM_ROUTE_TYPE.TO:
62
+ uni.navigateTo({
63
+ url,
64
+ });
65
+ break;
66
+
67
+ case ENUM_ROUTE_TYPE.REDIRECT:
68
+ uni.redirectTo({
69
+ url,
70
+ });
71
+ break;
72
+
73
+ case ENUM_ROUTE_TYPE.TAB:
74
+ uni.switchTab({
75
+ url,
76
+ });
77
+ break;
78
+
79
+ case ENUM_ROUTE_TYPE.RELAUNCH:
80
+ uni.reLaunch({
81
+ url,
82
+ });
83
+ break;
84
+ case ENUM_ROUTE_TYPE.BACK:
85
+ uni.navigateBack({
86
+ delta,
87
+ });
88
+ break;
89
+
90
+ default:
91
+ break;
92
+ }
93
+ }
94
+
95
+ export function to(url: Pages, params?: Record<string, any>, encode?: boolean) {
96
+ if (TabbarArr.includes(url)) {
97
+ tabbar(url, params, encode);
98
+ } else {
99
+ route({
100
+ type: ENUM_ROUTE_TYPE.TO,
101
+ url,
102
+ params,
103
+ encode,
104
+ });
105
+ }
106
+ }
107
+
108
+ export function redirect(url: Pages, params?: Record<string, any>, encode?: boolean) {
109
+ if (TabbarArr.includes(url)) {
110
+ tabbar(url, params, encode);
111
+ } else {
112
+ route({
113
+ type: ENUM_ROUTE_TYPE.REDIRECT,
114
+ url,
115
+ params,
116
+ encode,
117
+ });
118
+ }
119
+ }
120
+
121
+ export function tabbar(url: Pages, params?: Record<string, any>, encode?: boolean) {
122
+ if (TabbarArr.includes(url)) {
123
+ route({
124
+ type: ENUM_ROUTE_TYPE.TAB,
125
+ url,
126
+ params,
127
+ encode,
128
+ });
129
+ } else {
130
+ to(url, params, encode);
131
+ }
132
+ }
133
+
134
+ export function relaunch(url: Pages, params?: Record<string, any>, encode?: boolean) {
135
+ route({
136
+ type: ENUM_ROUTE_TYPE.RELAUNCH,
137
+ url,
138
+ params,
139
+ encode,
140
+ });
141
+ }
142
+
143
+ export function back(delta?: number) {
144
+ route({
145
+ type: ENUM_ROUTE_TYPE.BACK,
146
+ delta,
147
+ url: '',
148
+ });
149
+ }
@@ -0,0 +1,66 @@
1
+ /*
2
+ * @Author: zhangyang
3
+ * @Date: 2023-07-18 14:24:35
4
+ * @LastEditTime: 2023-07-19 16:51:57
5
+ * @Description:
6
+ */
7
+ import type { SubscribeMessage } from '@/config';
8
+
9
+ /**
10
+ * 订阅指定的消息
11
+ */
12
+ export const subscribeMessage = (tmplIds: SubscribeMessage[]) =>
13
+ new Promise((resolve) => {
14
+ uni.requestSubscribeMessage({
15
+ tmplIds,
16
+ success: (res) => {
17
+ console.log('消息订阅成功:', res);
18
+ },
19
+ fail: (err) => {
20
+ console.log('消息订阅失败:', err);
21
+ },
22
+ complete: () => resolve(true),
23
+ });
24
+ });
25
+
26
+ /**
27
+ * 获取系统信息 设置导航栏高度
28
+ */
29
+ export const getSystemInfo = () => {
30
+ const { systemInfo } = storeToRefs(useSystemInfo());
31
+ return new Promise<UniApp.GetSystemInfoResult>((_resolve) => {
32
+ uni.getSystemInfo({
33
+ success: (e) => {
34
+ console.log(e, 'getSystemInfo');
35
+ systemInfo.value = e;
36
+ // 获取手机状态栏高度
37
+ let statusBar = e.statusBarHeight || 0;
38
+ let customBar;
39
+
40
+ // #ifndef MP
41
+ customBar = statusBar + (e.platform == 'android' ? 50 : 45);
42
+ // #endif
43
+
44
+ // #ifdef MP-WEIXIN
45
+ // 获取胶囊按钮的布局位置信息
46
+ let menu = uni.getMenuButtonBoundingClientRect();
47
+ // 导航栏高度 = 胶囊下距离 + 胶囊上距离 - 状态栏高度
48
+ customBar = menu.bottom + menu.top - statusBar;
49
+ // #endif
50
+
51
+ // #ifdef MP-ALIPAY
52
+ customBar = statusBar + (e.titleBarHeight || 0);
53
+ // #endif
54
+
55
+ const safeBottom = e.screenHeight - (e.safeArea ? (e.safeArea.height + e.safeArea.top) : 0);
56
+
57
+ setNavbarHeihgt({
58
+ statusBarH: statusBar,
59
+ customBarH: customBar,
60
+ safeBottom
61
+ });
62
+ _resolve(e);
63
+ },
64
+ });
65
+ });
66
+ };
@@ -0,0 +1,13 @@
1
+ {
2
+ "extends": "@vue/tsconfig/tsconfig.json",
3
+ "compilerOptions": {
4
+ "sourceMap": true,
5
+ "baseUrl": ".",
6
+ "paths": {
7
+ "@/*": ["./src/*"]
8
+ },
9
+ "lib": ["esnext", "dom"],
10
+ "types": ["@dcloudio/types"]
11
+ },
12
+ "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue", "custom-plugins/*.ts", "auto-imports.d.ts", "components.d.ts"]
13
+ }
@@ -0,0 +1,30 @@
1
+ /*
2
+ * @Author: zhangyang
3
+ * @Date: 2023-02-13 14:50:47
4
+ * @LastEditTime: 2023-02-14 12:09:16
5
+ * @Description:
6
+ */
7
+ import presetWeapp from 'unocss-preset-weapp';
8
+ import { transformerAttributify, transformerClass } from 'unocss-preset-weapp/transformer';
9
+ import { defineConfig, transformerDirectives } from 'unocss';
10
+
11
+ export default defineConfig({
12
+ presets: [
13
+ // https://github.com/MellowCo/unocss-preset-weapp
14
+ presetWeapp(),
15
+ ],
16
+ shortcuts: [
17
+ {
18
+ 'flex-center': 'flex justify-center items-center',
19
+ },
20
+ ],
21
+ transformers: [
22
+ transformerDirectives(),
23
+
24
+ // https://github.com/MellowCo/unocss-preset-weapp/tree/main/src/transformer/transformerAttributify
25
+ transformerAttributify(),
26
+
27
+ // https://github.com/MellowCo/unocss-preset-weapp/tree/main/src/transformer/transformerClass
28
+ transformerClass(),
29
+ ],
30
+ });
@@ -0,0 +1,68 @@
1
+ /*
2
+ * @Author: zhangyang
3
+ * @Date: 2023-07-18 11:03:01
4
+ * @LastEditTime: 2023-07-19 17:50:15
5
+ * @Description:
6
+ */
7
+ import { resolve } from 'node:path';
8
+ import { defineConfig } from 'vite';
9
+ import type { ConfigEnv, UserConfigExport } from 'vite';
10
+ import uni from '@dcloudio/vite-plugin-uni';
11
+ import Unocss from 'unocss/vite';
12
+ import AutoImport from 'unplugin-auto-import/vite';
13
+ import AutoComponents from 'unplugin-vue-components/vite';
14
+ import { polyfillFormData, multiConf } from './custom-plugins';
15
+
16
+ /**
17
+ * 大驼峰转中划线
18
+ */
19
+ function camel2kebab(str: string) {
20
+ return str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();
21
+ };
22
+
23
+ // https://vitejs.dev/config/
24
+ export default ({ command, mode }: ConfigEnv) => {
25
+ console.log("🚀 ~ file: vite.config.ts:18 ~ mode:", mode)
26
+ console.log("🚀 ~ file: vite.config.ts:18 ~ command:", command)
27
+ return defineConfig({
28
+ resolve: {
29
+ alias: {
30
+ '@/': `${resolve(__dirname, 'src')}/`,
31
+ },
32
+ },
33
+ plugins: [
34
+ polyfillFormData(),
35
+ // 仅用于增加语法提示,实际导入依靠 uni-app 的 easycom
36
+ AutoComponents({
37
+ dts: true,
38
+ globs: ['src/components/**/*.vue'],
39
+ resolvers: [
40
+ (componentName) => {
41
+ if (componentName.startsWith('Uni')) {
42
+ const pkgName = camel2kebab(componentName);
43
+ return { name: 'default', from: `@dcloudio/uni-ui/lib/${pkgName}/${pkgName}.vue` };
44
+ }
45
+ }
46
+ ]
47
+ }),
48
+ uni(),
49
+ // https://github.com/antfu/unocss
50
+ Unocss(),
51
+
52
+ // https://github.com/antfu/unplugin-auto-import
53
+ AutoImport({
54
+ imports: ['vue', 'uni-app', 'pinia'],
55
+ dts: true,
56
+ vueTemplate: true,
57
+ dirs: [
58
+ resolve(__dirname, 'src/apis/**'),
59
+ resolve(__dirname, 'src/config/**'),
60
+ resolve(__dirname, 'src/store/**'),
61
+ resolve(__dirname, 'src/utils/**'),
62
+ ]
63
+ }),
64
+
65
+ multiConf(mode)
66
+ ],
67
+ });
68
+ }