create-young-proj 0.1.0 → 0.2.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.
- package/README.md +11 -2
- package/dist/index.mjs +2702 -42
- package/package.json +3 -3
- package/template-admin-server/package.json +2 -2
- package/template-vue-admin/build/custom-plugin.ts +30 -0
- package/template-vue-admin/build/index.ts +7 -0
- package/template-vue-admin/build/plugins.ts +59 -0
- package/template-vue-admin/package.json +1 -1
- package/template-vue-admin/src/main.ts +4 -4
- package/template-vue-admin/src/modules/4-auth.ts +8 -4
- package/template-vue-admin/src/shims.d.ts +12 -0
- package/template-vue-admin/tsconfig.node.json +1 -1
- package/template-vue-admin/vite.config.ts +4 -49
- package/template-vue-mobile/.vscode/base.code-snippets +24 -0
- package/template-vue-mobile/.vscode/extensions.json +10 -0
- package/template-vue-mobile/.vscode/settings.json +7 -0
- package/template-vue-mobile/Dockerfile +42 -0
- package/template-vue-mobile/README.md +71 -0
- package/template-vue-mobile/_env +6 -0
- package/template-vue-mobile/_gitignore +30 -0
- package/template-vue-mobile/boot.mjs +16 -0
- package/template-vue-mobile/build/custom-plugin.ts +30 -0
- package/template-vue-mobile/build/index.ts +7 -0
- package/template-vue-mobile/build/plugins.ts +68 -0
- package/template-vue-mobile/config/.devrc +2 -0
- package/template-vue-mobile/config/.onlinerc +1 -0
- package/template-vue-mobile/config/.testrc +1 -0
- package/template-vue-mobile/index.html +25 -0
- package/template-vue-mobile/nitro.config.ts +19 -0
- package/template-vue-mobile/package.json +48 -0
- package/template-vue-mobile/plugins/env.ts +26 -0
- package/template-vue-mobile/public/vite.svg +1 -0
- package/template-vue-mobile/rome.json +24 -0
- package/template-vue-mobile/routes/[...all].ts +11 -0
- package/template-vue-mobile/routes/get/env.ts +25 -0
- package/template-vue-mobile/src/App.vue +29 -0
- package/template-vue-mobile/src/auto-components.d.ts +24 -0
- package/template-vue-mobile/src/auto-imports.d.ts +289 -0
- package/template-vue-mobile/src/components/Init.vue +36 -0
- package/template-vue-mobile/src/global.d.ts +7 -0
- package/template-vue-mobile/src/hooks/useVerifyCode.ts +46 -0
- package/template-vue-mobile/src/layouts/blank.vue +9 -0
- package/template-vue-mobile/src/layouts/default.vue +27 -0
- package/template-vue-mobile/src/layouts/sub.vue +20 -0
- package/template-vue-mobile/src/main.ts +35 -0
- package/template-vue-mobile/src/modules/1-router.ts +40 -0
- package/template-vue-mobile/src/modules/2-pinia.ts +10 -0
- package/template-vue-mobile/src/modules/3-net.ts +46 -0
- package/template-vue-mobile/src/modules/4-auth.ts +64 -0
- package/template-vue-mobile/src/views/[...all_404].vue +557 -0
- package/template-vue-mobile/src/views/base/login.vue +110 -0
- package/template-vue-mobile/src/views/base/resetPasswd.vue +88 -0
- package/template-vue-mobile/src/views/index.vue +18 -0
- package/template-vue-mobile/src/views/my.vue +15 -0
- package/template-vue-mobile/src/views/sub.vue +18 -0
- package/template-vue-mobile/src/vite-env.d.ts +43 -0
- package/template-vue-mobile/tsconfig.json +21 -0
- package/template-vue-mobile/tsconfig.node.json +9 -0
- package/template-vue-mobile/unocss.config.ts +47 -0
- package/template-vue-mobile/vite.config.ts +32 -0
- package/template-vue-mobile/yarn.lock +4395 -0
@@ -0,0 +1,88 @@
|
|
1
|
+
<!--
|
2
|
+
* @Author: zhangyang
|
3
|
+
* @Date: 2021-09-09 12:07:27
|
4
|
+
* @LastEditTime: 2023-01-13 16:50:21
|
5
|
+
* @Description: 重置密码 | 修改密码
|
6
|
+
-->
|
7
|
+
<route lang="yaml">
|
8
|
+
meta:
|
9
|
+
title: 用户登录
|
10
|
+
layout: blank
|
11
|
+
</route>
|
12
|
+
|
13
|
+
<script lang="ts" setup>
|
14
|
+
import { isMobile } from '@bluesyoung/utils';
|
15
|
+
import { useVerifyCode } from '@/hooks/useVerifyCode';
|
16
|
+
import type { FormInstance } from 'vant';
|
17
|
+
import { router } from '@/modules/1-router';
|
18
|
+
|
19
|
+
const { countDown, isClicked, sendClick } = useVerifyCode();
|
20
|
+
const formRef = ref<FormInstance>();
|
21
|
+
|
22
|
+
const form = ref({
|
23
|
+
tel: '',
|
24
|
+
code: '',
|
25
|
+
passwd: '',
|
26
|
+
passwd_again: ''
|
27
|
+
});
|
28
|
+
const validPasswd = () => {
|
29
|
+
const { passwd: p1, passwd_again: p2 } = form.value;
|
30
|
+
return p1 === p2;
|
31
|
+
};
|
32
|
+
const [showPass1, toggle1] = useToggle(false);
|
33
|
+
const [showPass2, toggle2] = useToggle(false);
|
34
|
+
const sure = async () => {
|
35
|
+
try {
|
36
|
+
await formRef.value?.validate();
|
37
|
+
// todo: 修改密码,移除登录信息
|
38
|
+
// await mod_passwd(form.value);
|
39
|
+
showToast('修改成功,请重新登录!');
|
40
|
+
// removeToken();
|
41
|
+
router.push('/base/login');
|
42
|
+
} catch (error) {
|
43
|
+
return;
|
44
|
+
}
|
45
|
+
};
|
46
|
+
|
47
|
+
</script>
|
48
|
+
<template>
|
49
|
+
<VanNavBar title="重置密码" safe-area-inset-bottom @click-left="$router.back()" />
|
50
|
+
<div v-bind="$attrs" class="w-full h-full mt-10">
|
51
|
+
<VanForm ref="formRef">
|
52
|
+
<VanCellGroup inset>
|
53
|
+
<VanField v-model.trim="form.tel" placeholder="手机号" :rules="[
|
54
|
+
{ required: true, message: '请填写手机号' },
|
55
|
+
{ validator: isMobile, message: '请输入合法的手机号' }
|
56
|
+
]" />
|
57
|
+
<VanField v-model.trim="form.code" placeholder="验证码" :rules="[{ required: true, message: '请填写验证码' }]">
|
58
|
+
<template #button>
|
59
|
+
<VanButton v-if="!isClicked" :disabled="!isMobile(form.tel)" size="small" type="primary" plain
|
60
|
+
@click="sendClick">发送验证码</VanButton>
|
61
|
+
<VanButton v-else size="small" :disabled="true">
|
62
|
+
{{ countDown.current.value.seconds }}秒后重发
|
63
|
+
</VanButton>
|
64
|
+
</template>
|
65
|
+
</VanField>
|
66
|
+
<VanField v-model.trim="form.passwd" placeholder="输入新密码" :type="showPass1 ? 'text' : 'password'" clearable
|
67
|
+
:rules="[{ required: true, message: '请填写新密码' }]">
|
68
|
+
<template #right-icon>
|
69
|
+
<VanIcon :name="showPass1 ? 'eye' : 'closed-eye'" @click="toggle1(!showPass1)" />
|
70
|
+
</template>
|
71
|
+
</VanField>
|
72
|
+
<VanField v-model.trim="form.passwd_again" placeholder="再次确认新密码" :type="showPass2 ? 'text' : 'password'" :rules="[
|
73
|
+
{ required: true, message: '请确认新密码' },
|
74
|
+
{ validator: validPasswd, message: '两次输入的密码不一致' }
|
75
|
+
]">
|
76
|
+
<template #right-icon>
|
77
|
+
<VanIcon :name="showPass2 ? 'eye' : 'closed-eye'" @click="toggle2(!showPass2)" />
|
78
|
+
</template>
|
79
|
+
</VanField>
|
80
|
+
</VanCellGroup>
|
81
|
+
<div class="m-4">
|
82
|
+
<VanButton block type="primary" @click="sure">
|
83
|
+
确定
|
84
|
+
</VanButton>
|
85
|
+
</div>
|
86
|
+
</VanForm>
|
87
|
+
</div>
|
88
|
+
</template>
|
@@ -0,0 +1,18 @@
|
|
1
|
+
<!--
|
2
|
+
* @Author: zhangyang
|
3
|
+
* @Date: 2022-12-03 16:23:19
|
4
|
+
* @LastEditTime: 2023-02-01 11:39:25
|
5
|
+
* @Description:
|
6
|
+
-->
|
7
|
+
<route lang="yaml">
|
8
|
+
meta:
|
9
|
+
title: 首页
|
10
|
+
</route>
|
11
|
+
|
12
|
+
<template>
|
13
|
+
<div>
|
14
|
+
我是首页,我会使用默认布局
|
15
|
+
<br />
|
16
|
+
<RouterLink class="text-blue-500 mr-2" to="/sub">进入子页面</RouterLink>
|
17
|
+
</div>
|
18
|
+
</template>
|
@@ -0,0 +1,18 @@
|
|
1
|
+
<!--
|
2
|
+
* @Author: zhangyang
|
3
|
+
* @Date: 2022-12-03 16:23:19
|
4
|
+
* @LastEditTime: 2023-02-01 11:39:49
|
5
|
+
* @Description:
|
6
|
+
-->
|
7
|
+
<route lang="yaml">
|
8
|
+
meta:
|
9
|
+
auth: true
|
10
|
+
title: 子页面
|
11
|
+
layout: sub
|
12
|
+
</route>
|
13
|
+
|
14
|
+
<template>
|
15
|
+
<div>
|
16
|
+
我是子页面,我会使用 sub 布局
|
17
|
+
</div>
|
18
|
+
</template>
|
@@ -0,0 +1,43 @@
|
|
1
|
+
/*
|
2
|
+
* @Author: zhangyang
|
3
|
+
* @Date: 2022-12-03 15:57:40
|
4
|
+
* @LastEditTime: 2023-02-01 11:55:56
|
5
|
+
* @Description:
|
6
|
+
*/
|
7
|
+
/// <reference types="vite/client" />
|
8
|
+
/// <reference types="vite-plugin-pages/client" />
|
9
|
+
/// <reference types="vite-plugin-vue-layouts/client" />
|
10
|
+
|
11
|
+
declare module 'virtual:local-server' {
|
12
|
+
/**
|
13
|
+
* 本地服务地址
|
14
|
+
*/
|
15
|
+
export const server: string;
|
16
|
+
}
|
17
|
+
|
18
|
+
declare module '*.vue' {
|
19
|
+
import type { DefineComponent } from 'vue'
|
20
|
+
const component: DefineComponent<{}, {}, any>
|
21
|
+
export default component
|
22
|
+
}
|
23
|
+
|
24
|
+
/**
|
25
|
+
* import.meta.env 类型提示
|
26
|
+
*/
|
27
|
+
declare interface ImportMetaEnv {
|
28
|
+
/**
|
29
|
+
* 标题
|
30
|
+
*/
|
31
|
+
VITE_TITLE: string;
|
32
|
+
/**
|
33
|
+
* 是否启用 VConsole
|
34
|
+
*/
|
35
|
+
VITE_ENABLE_VCONSOLE?: string | boolean;
|
36
|
+
}
|
37
|
+
|
38
|
+
/**
|
39
|
+
* 扩充 window
|
40
|
+
*/
|
41
|
+
interface Window {
|
42
|
+
__YOUNG_VITE_ENV__: ImportMetaEnv;
|
43
|
+
}
|
@@ -0,0 +1,21 @@
|
|
1
|
+
{
|
2
|
+
"compilerOptions": {
|
3
|
+
"target": "ESNext",
|
4
|
+
"useDefineForClassFields": true,
|
5
|
+
"module": "ESNext",
|
6
|
+
"moduleResolution": "Node",
|
7
|
+
"strict": true,
|
8
|
+
"jsx": "preserve",
|
9
|
+
"resolveJsonModule": true,
|
10
|
+
"isolatedModules": true,
|
11
|
+
"esModuleInterop": true,
|
12
|
+
"lib": ["ESNext", "DOM"],
|
13
|
+
"skipLibCheck": true,
|
14
|
+
"noEmit": true,
|
15
|
+
"paths": {
|
16
|
+
"@/*": ["./src/*"]
|
17
|
+
}
|
18
|
+
},
|
19
|
+
"include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue", "config/**/*", ".nitro/**/*"],
|
20
|
+
"references": [{ "path": "./tsconfig.node.json" }]
|
21
|
+
}
|
@@ -0,0 +1,47 @@
|
|
1
|
+
/*
|
2
|
+
* @Author: zhangyang
|
3
|
+
* @Date: 2022-03-01 19:11:11
|
4
|
+
* @LastEditTime: 2022-05-21 18:32:05
|
5
|
+
* @Description:
|
6
|
+
*/
|
7
|
+
import {
|
8
|
+
defineConfig,
|
9
|
+
presetAttributify,
|
10
|
+
presetIcons,
|
11
|
+
presetTypography,
|
12
|
+
presetUno,
|
13
|
+
presetWebFonts,
|
14
|
+
transformerDirectives,
|
15
|
+
transformerVariantGroup,
|
16
|
+
} from 'unocss';
|
17
|
+
|
18
|
+
export default defineConfig({
|
19
|
+
shortcuts: [
|
20
|
+
[
|
21
|
+
'btn',
|
22
|
+
'px-4 py-1 rounded inline-block bg-teal-700 text-white cursor-pointer hover:bg-teal-800 disabled:cursor-default disabled:bg-gray-600 disabled:opacity-50',
|
23
|
+
],
|
24
|
+
[
|
25
|
+
'icon-btn',
|
26
|
+
'inline-block cursor-pointer select-none opacity-75 transition duration-200 ease-in-out hover:opacity-100 hover:text-teal-600',
|
27
|
+
],
|
28
|
+
],
|
29
|
+
presets: [
|
30
|
+
presetUno(),
|
31
|
+
presetAttributify(),
|
32
|
+
presetIcons({
|
33
|
+
scale: 1.2,
|
34
|
+
warn: true,
|
35
|
+
}),
|
36
|
+
presetTypography(),
|
37
|
+
presetWebFonts({
|
38
|
+
fonts: {
|
39
|
+
sans: 'DM Sans',
|
40
|
+
serif: 'DM Serif Display',
|
41
|
+
mono: 'DM Mono',
|
42
|
+
},
|
43
|
+
}),
|
44
|
+
],
|
45
|
+
transformers: [transformerDirectives(), transformerVariantGroup()],
|
46
|
+
safelist: 'prose prose-sm m-auto text-left'.split(' '),
|
47
|
+
});
|
@@ -0,0 +1,32 @@
|
|
1
|
+
/*
|
2
|
+
* @Author: zhangyang
|
3
|
+
* @Date: 2022-12-03 15:57:40
|
4
|
+
* @LastEditTime: 2023-01-13 10:07:24
|
5
|
+
* @Description:
|
6
|
+
*/
|
7
|
+
import { fileURLToPath, URL } from 'node:url';
|
8
|
+
import { defineConfig, loadEnv } from 'vite';
|
9
|
+
import type { ConfigEnv, UserConfigExport } from 'vite';
|
10
|
+
import { usePlugins, localServer } from './build';
|
11
|
+
|
12
|
+
// https://vitejs.dev/config/
|
13
|
+
export default ({ command, mode }: ConfigEnv): UserConfigExport => {
|
14
|
+
const root = process.cwd();
|
15
|
+
const viteEnv = loadEnv(mode, root);
|
16
|
+
console.log('🚀 ~ file: vite.config.ts ~ line 36 ~ viteEnv', viteEnv);
|
17
|
+
return defineConfig({
|
18
|
+
base: './',
|
19
|
+
plugins: usePlugins(),
|
20
|
+
resolve: {
|
21
|
+
alias: {
|
22
|
+
'@': fileURLToPath(new URL('./src', import.meta.url)),
|
23
|
+
},
|
24
|
+
},
|
25
|
+
server: {
|
26
|
+
host: true,
|
27
|
+
proxy: {
|
28
|
+
'/api': localServer,
|
29
|
+
},
|
30
|
+
},
|
31
|
+
});
|
32
|
+
};
|