chore: 🔨 合并gitee仓库代码
This commit is contained in:
@@ -17,7 +17,7 @@
|
||||
|
||||
## 项目简介
|
||||
|
||||
[vue3-element-admin](https://gitee.com/youlaiorg/vue3-element-admin) 是基于 Vue3 + Vite5+ TypeScript5 + Element-Plus + Pinia 等主流技术栈构建的免费开源的后台管理前端模板(配套[后端源码](https://gitee.com/youlaiorg/youlai-boot))。
|
||||
[vue3-element-admin](https://gitee.com/youlaiorg/vue3-element-admin) 是基于 Vue3 + Vite5+ TypeScript5 + Element-Plus + Pinia 等主流技术栈构建的免费开源的中后台管理的前端模板(配套[Java 后端源码](https://gitee.com/youlaiorg/youlai-boot))。
|
||||
|
||||
|
||||
## 项目特色
|
||||
@@ -70,6 +70,9 @@ cd vue3-element-admin
|
||||
# 安装 pnpm
|
||||
npm install pnpm -g
|
||||
|
||||
# 设置镜像源(可忽略)
|
||||
pnpm config set registry https://registry.npmmirror.com
|
||||
|
||||
# 安装依赖
|
||||
pnpm install
|
||||
|
||||
@@ -86,7 +89,7 @@ pnpm run dev
|
||||
pnpm run build
|
||||
|
||||
# 上传文件至远程服务器
|
||||
将打包生成在 `dist` 目录下的文件拷贝至 `/usr/share/nginx/html` 目录
|
||||
将本地打包生成的 dist 目录下的所有文件拷贝至服务器的 /usr/share/nginx/html 目录。
|
||||
|
||||
# nginx.cofig 配置
|
||||
server {
|
||||
|
||||
@@ -125,6 +125,5 @@
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=18.0.0"
|
||||
},
|
||||
"packageManager": "pnpm@9.1.3+sha512.7c2ea089e1a6af306409c4fc8c4f0897bdac32b772016196c469d9428f1fe2d5a21daf8ad6512762654ac645b5d9136bb210ec9a00afa8dbc4677843ba362ecd"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -82,7 +82,7 @@
|
||||
</el-steps>
|
||||
|
||||
<div class="mt-5">
|
||||
<el-form v-show="active == 1" :model="formData" :label-width="100">
|
||||
<el-form v-show="active == 0" :model="formData" :label-width="100">
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="表名">
|
||||
@@ -124,7 +124,7 @@
|
||||
</el-form>
|
||||
|
||||
<el-table
|
||||
v-show="active == 2"
|
||||
v-show="active == 1"
|
||||
v-loading="loading"
|
||||
:element-loading-text="loadingText"
|
||||
highlight--currentrow
|
||||
@@ -253,7 +253,8 @@
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<el-row v-show="active == 3">
|
||||
|
||||
<el-row v-show="active == 2">
|
||||
<el-col :span="6">
|
||||
<el-scrollbar max-height="72vh">
|
||||
<el-tree
|
||||
@@ -293,13 +294,13 @@
|
||||
</div>
|
||||
|
||||
<template #footer>
|
||||
<el-button type="success" @click="handlePrevClick" v-if="active !== 1">
|
||||
<el-button type="success" @click="handlePrevClick" v-if="active !== 0">
|
||||
<el-icon><Back /></el-icon>
|
||||
{{ prevBtnText }}
|
||||
</el-button>
|
||||
<el-button type="primary" @click="handleNextClick">
|
||||
{{ nextBtnText }}
|
||||
<el-icon v-if="active !== 3"><Right /></el-icon>
|
||||
<el-icon v-if="active !== 2"><Right /></el-icon>
|
||||
<el-icon v-else><Download /></el-icon>
|
||||
</el-button>
|
||||
</template>
|
||||
@@ -357,14 +358,22 @@ const cmOptions: EditorConfiguration = {
|
||||
|
||||
const prevBtnText = ref("");
|
||||
const nextBtnText = ref("下一步,字段配置");
|
||||
const active = ref(1);
|
||||
const active = ref(0);
|
||||
|
||||
interface TreeNode {
|
||||
label: string;
|
||||
content?: string;
|
||||
children?: TreeNode[];
|
||||
}
|
||||
|
||||
const treeData = ref<TreeNode[]>([]);
|
||||
|
||||
function handlePrevClick() {
|
||||
if (active.value-- <= 1) active.value = 1;
|
||||
if (active.value-- <= 0) active.value = 0;
|
||||
}
|
||||
|
||||
function handleNextClick() {
|
||||
if (active.value === 2) {
|
||||
if (active.value === 1) {
|
||||
// 保存生成配置
|
||||
const tableName = formData.value.tableName;
|
||||
if (!tableName) {
|
||||
@@ -378,24 +387,24 @@ function handleNextClick() {
|
||||
handlePreview(tableName);
|
||||
})
|
||||
.then(() => {
|
||||
if (active.value++ >= 3) active.value = 3;
|
||||
if (active.value++ >= 2) active.value = 2;
|
||||
})
|
||||
.finally(() => {
|
||||
loading.value = false;
|
||||
loadingText.value = "loading...";
|
||||
});
|
||||
} else {
|
||||
if (active.value++ >= 3) active.value = 3;
|
||||
if (active.value++ >= 2) active.value = 2;
|
||||
}
|
||||
}
|
||||
|
||||
watch(active, (val) => {
|
||||
if (val === 1) {
|
||||
if (val === 0) {
|
||||
nextBtnText.value = "下一步,字段配置";
|
||||
} else if (val === 2) {
|
||||
} else if (val === 1) {
|
||||
prevBtnText.value = "上一步,基础配置";
|
||||
nextBtnText.value = "下一步,确认生成";
|
||||
} else if (val === 3) {
|
||||
} else if (val === 2) {
|
||||
prevBtnText.value = "上一步,字段配置";
|
||||
nextBtnText.value = "下载代码";
|
||||
}
|
||||
@@ -424,14 +433,6 @@ function handleCloseDialog() {
|
||||
dialog.visible = false;
|
||||
}
|
||||
|
||||
interface TreeNode {
|
||||
label: string;
|
||||
content?: string;
|
||||
children?: TreeNode[];
|
||||
}
|
||||
|
||||
const treeData = ref<TreeNode[]>([]);
|
||||
|
||||
/** 打开弹窗 */
|
||||
function handleOpenDialog(tableName: string) {
|
||||
dialog.visible = true;
|
||||
@@ -439,10 +440,10 @@ function handleOpenDialog(tableName: string) {
|
||||
dialog.title = `${tableName} 代码生成`;
|
||||
formData.value = data;
|
||||
if (formData.value.id) {
|
||||
active.value = 3;
|
||||
active.value = 2;
|
||||
handlePreview(tableName);
|
||||
} else {
|
||||
active.value = 1;
|
||||
active.value = 0;
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -485,11 +486,11 @@ function buildTree(
|
||||
// 定义特殊路径
|
||||
// TODO: 如果菜单有多个节点,需要将此菜单作为独立一级的节点,而不是合并到上一级。 按照此规则, com.youlai.system 则是三个节点,而不是合并到一起,但是这里需要将 com.youlai.system 合并到一起,所以需要特殊处理
|
||||
const specialPaths = [
|
||||
"com\\youlai\\system",
|
||||
"src\\main",
|
||||
"src/main",
|
||||
"java",
|
||||
"youlai-boot",
|
||||
"vue3-element-admin",
|
||||
"com/youlai/system",
|
||||
];
|
||||
|
||||
// 检查路径中的特殊部分并合并它们
|
||||
@@ -499,6 +500,7 @@ function buildTree(
|
||||
parts.forEach((part) => {
|
||||
buffer.push(part);
|
||||
const currentPath = buffer.join(separator);
|
||||
console.log("currentPath", currentPath);
|
||||
if (specialPaths.includes(currentPath)) {
|
||||
mergedParts.push(currentPath);
|
||||
buffer = [];
|
||||
|
||||
@@ -27,11 +27,12 @@
|
||||
>
|
||||
<el-icon class="el-icon--upload"><upload-filled /></el-icon>
|
||||
<div class="el-upload__text">
|
||||
将文件拖到此处,或<em>点击上传</em>
|
||||
将文件拖到此处,或
|
||||
<em>点击上传</em>
|
||||
</div>
|
||||
<template #tip>
|
||||
<div class="el-upload__tip">
|
||||
*.xlsx / *.xls
|
||||
格式为*.xlsx / *.xls,文件不超过一个
|
||||
<el-link
|
||||
type="primary"
|
||||
icon="download"
|
||||
@@ -95,7 +96,12 @@ const importFormRules = {
|
||||
files: [{ required: true, message: "文件不能为空", trigger: "blur" }],
|
||||
};
|
||||
|
||||
const emptyFileList = () => {
|
||||
importFormData.files.length = 0;
|
||||
};
|
||||
|
||||
const handleClose = () => {
|
||||
emptyFileList();
|
||||
dialogVisible.value = false;
|
||||
};
|
||||
|
||||
|
||||
@@ -205,6 +205,8 @@ export default defineConfig(({ mode }: ConfigEnv): UserConfig => {
|
||||
"element-plus/es/components/skeleton/style/css",
|
||||
"element-plus/es/components/skeleton-item/style/css",
|
||||
"element-plus/es/components/badge/style/css",
|
||||
"element-plus/es/components/steps/style/css",
|
||||
"element-plus/es/components/step/style/css",
|
||||
],
|
||||
},
|
||||
// 构建配置
|
||||
|
||||
Reference in New Issue
Block a user