Merge pull request #97 from 1014TaoTao/v2.0.0

fix: 修复表单标签样式和部署脚本顺序问题
This commit is contained in:
fastapiadmin
2025-07-25 00:32:52 +08:00
committed by GitHub
23 changed files with 69 additions and 82 deletions
-8
View File
@@ -274,11 +274,3 @@ Thanks to the contributions and support of the following projects, which have en
## ❤️ Star ## ❤️ Star
If you like this project, please give it a ⭐️ Star to show your support! Thank you very much! If you like this project, please give it a ⭐️ Star to show your support! Thank you very much!
---
## 👀 Visitor Statistics
![Visitor Count](https://profile-counter.glitch.me/1014TaoTao/count.svg)
---
-8
View File
@@ -272,11 +272,3 @@ fastapi_vue3_amdin/devops/devops/nginx/nginx.conf
## ❤️ Star 支持我 ## ❤️ Star 支持我
如果你喜欢这个项目,请给我一个 ⭐️ Star 支持一下吧!非常感谢! 如果你喜欢这个项目,请给我一个 ⭐️ Star 支持一下吧!非常感谢!
---
## 👀 访问统计
![Visitor Count](https://profile-counter.glitch.me/1014TaoTao/count.svg)
---
@@ -33,7 +33,7 @@
<!-- 弹出框内容 --> <!-- 弹出框内容 -->
<div ref="popoverContentRef"> <div ref="popoverContentRef">
<!-- 表单 --> <!-- 表单 -->
<el-form ref="formRef" :model="queryParams" :inline="true"> <el-form ref="formRef" :model="queryParams" :inline="true" >
<template v-for="item in selectConfig.formItems" :key="item.prop"> <template v-for="item in selectConfig.formItems" :key="item.prop">
<el-form-item :label="item.label" :prop="item.prop"> <el-form-item :label="item.label" :prop="item.prop">
<!-- Input 输入框 --> <!-- Input 输入框 -->
@@ -214,6 +214,8 @@ function logout() {
userStore.logout().then(() => { userStore.logout().then(() => {
router.push(`/login?redirect=${route.fullPath}`); router.push(`/login?redirect=${route.fullPath}`);
}); });
}).catch(() => {
ElMessage.info('已取消强退');
}); });
} }
+2 -2
View File
@@ -115,7 +115,7 @@
<span>基本设置</span> <span>基本设置</span>
</template> </template>
<div> <div>
<el-form ref="ruleFormRef" :model="infoFormState" :rules="rules" label-width="auto" :inline="true"> <el-form ref="ruleFormRef" :model="infoFormState" :rules="rules" :inline="true" label-suffix=":" label-width="auto" label-position="right">
<el-form-item label="姓名" name="name"> <el-form-item label="姓名" name="name">
<el-input v-model:value="infoFormState.name" placeholder="请输入姓名" prefix-icon="User" clearable /> <el-input v-model:value="infoFormState.name" placeholder="请输入姓名" prefix-icon="User" clearable />
@@ -152,7 +152,7 @@
<span>安全设置</span> <span>安全设置</span>
</template> </template>
<div> <div>
<el-form ref="ruleFormRef" :model="passwordFormState" :rules="resetPasswordRules" label-width="auto"> <el-form ref="ruleFormRef" :model="passwordFormState" :rules="resetPasswordRules" label-suffix=":" label-width="auto" label-position="right">
<el-form-item label="当前密码" name="oldPassword"> <el-form-item label="当前密码" name="oldPassword">
<el-input v-model.trim="passwordFormState.oldPassword" :placeholder="t('login.password')" type="password" show-password clearable> <el-input v-model.trim="passwordFormState.oldPassword" :placeholder="t('login.password')" type="password" show-password clearable>
<template #prefix> <template #prefix>
+7 -7
View File
@@ -216,15 +216,15 @@
</div> </div>
</div> </div>
</template> </template>
<el-form :model="cacheForm" label-position="top"> <el-form :model="cacheForm" label-suffix=":" label-width="auto" label-position="top">
<el-form-item label="缓存名称:"> <el-form-item label="缓存名称">
<el-input v-model="cacheForm.cache_name" readonly /> <el-input v-model="cacheForm.cache_name" readonly placeholder="缓存名称" />
</el-form-item> </el-form-item>
<el-form-item label="缓存键名:"> <el-form-item label="缓存键名">
<el-input v-model="cacheForm.cache_key" readonly /> <el-input v-model="cacheForm.cache_key" readonly placeholder="缓存键名" />
</el-form-item> </el-form-item>
<el-form-item label="缓存内容:"> <el-form-item label="缓存内容">
<el-input v-model="cacheForm.cache_value" type="textarea" :rows="18" readonly /> <el-input v-model="cacheForm.cache_value" type="textarea" :rows="18" readonly placeholder="缓存内容" />
</el-form-item> </el-form-item>
</el-form> </el-form>
</el-card> </el-card>
+1 -1
View File
@@ -3,7 +3,7 @@
<div class="app-container"> <div class="app-container">
<!-- 搜索区域 --> <!-- 搜索区域 -->
<div class="search-container"> <div class="search-container">
<el-form ref="queryFormRef" :model="queryFormData" :inline="true"> <el-form ref="queryFormRef" :model="queryFormData" :inline="true" label-suffix=":" >
<el-form-item prop="name" label="任务名称"> <el-form-item prop="name" label="任务名称">
<el-input <el-input
v-model="queryFormData.name" v-model="queryFormData.name"
+1 -1
View File
@@ -3,7 +3,7 @@
<div class="app-container"> <div class="app-container">
<!-- 搜索区域 --> <!-- 搜索区域 -->
<div class="search-container"> <div class="search-container">
<el-form ref="queryFormRef" :model="queryFormData" :inline="true"> <el-form ref="queryFormRef" :model="queryFormData" :inline="true" label-suffix=":" >
<el-form-item prop="ipaddr" label="IP地址"> <el-form-item prop="ipaddr" label="IP地址">
<el-input v-model="queryFormData.ipaddr" placeholder="请输入IP地址" clearable /> <el-input v-model="queryFormData.ipaddr" placeholder="请输入IP地址" clearable />
</el-form-item> </el-form-item>
@@ -1,7 +1,7 @@
<template> <template>
<div> <div>
<h3 text-center m-0 mb-20px>{{ t("login.reg") }}</h3> <h3 text-center m-0 mb-20px>{{ t("login.reg") }}</h3>
<el-form ref="formRef" :model="model" :rules="rules" size="large"> <el-form ref="formRef" :model="model" :rules="rules" size="large" label-suffix=":" >
<!-- 账号 --> <!-- 账号 -->
<el-form-item prop="username"> <el-form-item prop="username">
<el-input v-model.trim="model.username" :placeholder="t('login.username')" clearable> <el-input v-model.trim="model.username" :placeholder="t('login.username')" clearable>
@@ -1,7 +1,7 @@
<template> <template>
<div> <div>
<h3 text-center m-0 mb-20px>{{ t("login.resetPassword") }}</h3> <h3 text-center m-0 mb-20px>{{ t("login.resetPassword") }}</h3>
<el-form ref="formRef" :model="model" :rules="rules" size="large"> <el-form ref="formRef" :model="model" :rules="rules" size="large" label-suffix=":">
<!-- 用户名 --> <!-- 用户名 -->
<el-form-item prop="username"> <el-form-item prop="username">
<el-input v-model.trim="model.username" :placeholder="t('login.username')" clearable> <el-input v-model.trim="model.username" :placeholder="t('login.username')" clearable>
@@ -1,6 +1,6 @@
<template> <template>
<el-drawer v-model="drawerVisible" title="配置中心" :size="drawerSize"> <el-drawer v-model="drawerVisible" title="配置中心" :size="drawerSize">
<el-form :model="configState" label-width="auto" style="width: 100%"> <el-form :model="configState" label-suffix=":" label-width="auto" label-position="right">
<!-- 系统配置 --> <!-- 系统配置 -->
<el-divider>系统配置</el-divider> <el-divider>系统配置</el-divider>
<div v-for="(item, key) in systemConfigs" :key="key"> <div v-for="(item, key) in systemConfigs" :key="key">
+2 -2
View File
@@ -3,7 +3,7 @@
<div class="app-container"> <div class="app-container">
<!-- 搜索区域 --> <!-- 搜索区域 -->
<div class="search-container"> <div class="search-container">
<el-form ref="queryFormRef" :model="queryFormData" :inline="true"> <el-form ref="queryFormRef" :model="queryFormData" :inline="true" label-suffix=":" >
<el-form-item prop="config_name" label="配置名称"> <el-form-item prop="config_name" label="配置名称">
<el-input v-model="queryFormData.config_name" placeholder="请输入配置名称" clearable /> <el-input v-model="queryFormData.config_name" placeholder="请输入配置名称" clearable />
</el-form-item> </el-form-item>
@@ -145,7 +145,7 @@
</template> </template>
<!-- 新增、编辑表单 --> <!-- 新增、编辑表单 -->
<template v-else> <template v-else>
<el-form ref="dataFormRef" :model="formData" :rules="rules" label-suffix=":" label-width="100px"> <el-form ref="dataFormRef" :model="formData" :rules="rules" label-suffix=":" label-width="auto" label-position="right">
<el-form-item label="配置名称" prop="config_name"> <el-form-item label="配置名称" prop="config_name">
<el-input v-model="formData.config_name" placeholder="请输入配置名称" :maxlength="50" /> <el-input v-model="formData.config_name" placeholder="请输入配置名称" :maxlength="50" />
</el-form-item> </el-form-item>
+2 -2
View File
@@ -3,7 +3,7 @@
<div class="app-container"> <div class="app-container">
<!-- 搜索区域 --> <!-- 搜索区域 -->
<div class="search-container"> <div class="search-container">
<el-form ref="queryFormRef" :model="queryFormData" :inline="true"> <el-form ref="queryFormRef" :model="queryFormData" :inline="true" label-suffix=":" >
<el-form-item prop="name" label="部门名称"> <el-form-item prop="name" label="部门名称">
<el-input v-model="queryFormData.name" placeholder="请输入部门名称" clearable /> <el-input v-model="queryFormData.name" placeholder="请输入部门名称" clearable />
</el-form-item> </el-form-item>
@@ -138,7 +138,7 @@
</template> </template>
<!-- 新增、编辑表单 --> <!-- 新增、编辑表单 -->
<template v-else> <template v-else>
<el-form ref="dataFormRef" :model="formData" :rules="rules" label-suffix=":" label-width="100px"> <el-form ref="dataFormRef" :model="formData" :rules="rules" label-suffix=":" label-width="auto" label-position="right">
<el-form-item label="部门名称" prop="name"> <el-form-item label="部门名称" prop="name">
<el-input v-model="formData.name" placeholder="请输入部门名称" :maxlength="50" /> <el-input v-model="formData.name" placeholder="请输入部门名称" :maxlength="50" />
</el-form-item> </el-form-item>
@@ -3,7 +3,7 @@
<el-drawer v-model="drawerVisible" :title="'【' + props.dictLabel + '】字典数据'" :size="drawerSize"> <el-drawer v-model="drawerVisible" :title="'【' + props.dictLabel + '】字典数据'" :size="drawerSize">
<!-- 搜索区域 --> <!-- 搜索区域 -->
<div class="search-container"> <div class="search-container">
<el-form ref="queryFormRef" :model="queryFormData" :inline="true"> <el-form ref="queryFormRef" :model="queryFormData" :inline="true" label-suffix=":" >
<el-form-item prop="dict_label" label="字典数据标签"> <el-form-item prop="dict_label" label="字典数据标签">
<el-input v-model="queryFormData.dict_label" placeholder="请输入字典标签" clearable /> <el-input v-model="queryFormData.dict_label" placeholder="请输入字典标签" clearable />
@@ -174,7 +174,7 @@
</template> </template>
<!-- 新增、编辑表单 --> <!-- 新增、编辑表单 -->
<template v-else> <template v-else>
<el-form ref="dataFormRef" :model="formData" :rules="rules" label-suffix=":" label-width="100px"> <el-form ref="dataFormRef" :model="formData" :rules="rules" label-suffix=":" label-width="auto" label-position="right">
<el-form-item label="数据类型" prop="dict_type"> <el-form-item label="数据类型" prop="dict_type">
<el-input v-model="formData.dict_type" placeholder="请输入数据类型" :maxlength="50" :disabled="true" /> <el-input v-model="formData.dict_type" placeholder="请输入数据类型" :maxlength="50" :disabled="true" />
</el-form-item> </el-form-item>
+4 -4
View File
@@ -3,7 +3,7 @@
<div class="app-container"> <div class="app-container">
<!-- 搜索区域 --> <!-- 搜索区域 -->
<div class="search-container"> <div class="search-container">
<el-form ref="queryFormRef" :model="queryFormData" :inline="true"> <el-form ref="queryFormRef" :model="queryFormData" :inline="true" label-suffix=":" >
<el-form-item prop="dict_name" label="字典名称"> <el-form-item prop="dict_name" label="字典名称">
<el-input v-model="queryFormData.dict_name" placeholder="请输入字典名称" clearable /> <el-input v-model="queryFormData.dict_name" placeholder="请输入字典名称" clearable />
</el-form-item> </el-form-item>
@@ -151,7 +151,7 @@
<el-descriptions-item label="字典类型" :span="2"> <el-descriptions-item label="字典类型" :span="2">
<el-tag type="primary">{{ detailFormData.dict_type }}</el-tag> <el-tag type="primary">{{ detailFormData.dict_type }}</el-tag>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="字典状态" :span="2"> <el-descriptions-item label="状态" :span="2">
<el-tag v-if="detailFormData.status" type="success">启用</el-tag> <el-tag v-if="detailFormData.status" type="success">启用</el-tag>
<el-tag v-else type="danger">停用</el-tag> <el-tag v-else type="danger">停用</el-tag>
</el-descriptions-item> </el-descriptions-item>
@@ -163,14 +163,14 @@
</template> </template>
<!-- 新增、编辑表单 --> <!-- 新增、编辑表单 -->
<template v-else> <template v-else>
<el-form ref="dataFormRef" :model="formData" :rules="rules" label-suffix=":" label-width="100px"> <el-form ref="dataFormRef" :model="formData" :rules="rules" label-suffix=":" label-width="auto" label-position="right">
<el-form-item label="字典名称" prop="dict_name"> <el-form-item label="字典名称" prop="dict_name">
<el-input v-model="formData.dict_name" placeholder="请输入字典名称" :maxlength="50" /> <el-input v-model="formData.dict_name" placeholder="请输入字典名称" :maxlength="50" />
</el-form-item> </el-form-item>
<el-form-item label="字典类型" prop="dict_type"> <el-form-item label="字典类型" prop="dict_type">
<el-input v-model="formData.dict_type" placeholder="请输入字典类型" :maxlength="50" /> <el-input v-model="formData.dict_type" placeholder="请输入字典类型" :maxlength="50" />
</el-form-item> </el-form-item>
<el-form-item label="字典状态" prop="status"> <el-form-item label="状态" prop="status">
<el-radio-group v-model="formData.status"> <el-radio-group v-model="formData.status">
<el-radio :value="true">启用</el-radio> <el-radio :value="true">启用</el-radio>
<el-radio :value="false">停用</el-radio> <el-radio :value="false">停用</el-radio>
+1 -1
View File
@@ -3,7 +3,7 @@
<div class="app-container"> <div class="app-container">
<!-- 搜索区域 --> <!-- 搜索区域 -->
<div class="search-container"> <div class="search-container">
<el-form ref="queryFormRef" :model="queryFormData" :inline="true"> <el-form ref="queryFormRef" :model="queryFormData" :inline="true" label-suffix=":" >
<el-form-item prop="request_path" label="请求路径"> <el-form-item prop="request_path" label="请求路径">
<el-input v-model="queryFormData.request_path" placeholder="请输入请求路径" clearable /> <el-input v-model="queryFormData.request_path" placeholder="请输入请求路径" clearable />
</el-form-item> </el-form-item>
+2 -2
View File
@@ -3,7 +3,7 @@
<div class="app-container"> <div class="app-container">
<!-- 搜索区域 --> <!-- 搜索区域 -->
<div class="search-container"> <div class="search-container">
<el-form ref="queryFormRef" :model="queryFormData" :inline="true"> <el-form ref="queryFormRef" :model="queryFormData" :inline="true" label-suffix=":" >
<el-form-item prop="name" label="菜单名称"> <el-form-item prop="name" label="菜单名称">
<el-input v-model="queryFormData.name" placeholder="请输入菜单名称" clearable /> <el-input v-model="queryFormData.name" placeholder="请输入菜单名称" clearable />
</el-form-item> </el-form-item>
@@ -230,7 +230,7 @@
<!-- 新增、编辑表单 --> <!-- 新增、编辑表单 -->
<template v-else> <template v-else>
<el-form ref="dataFormRef" :model="formData" :rules="rules" label-width="100px"> <el-form ref="dataFormRef" :model="formData" :rules="rules" label-suffix=":" label-width="auto" label-position="right">
<el-form-item label="父级菜单" prop="parent_id"> <el-form-item label="父级菜单" prop="parent_id">
<el-tree-select v-model="formData.parent_id" placeholder="选择上级菜单" :data="menuOptions" filterable check-strictly :render-after-expand="false" /> <el-tree-select v-model="formData.parent_id" placeholder="选择上级菜单" :data="menuOptions" filterable check-strictly :render-after-expand="false" />
</el-form-item> </el-form-item>
+4 -4
View File
@@ -3,7 +3,7 @@
<div class="app-container"> <div class="app-container">
<!-- 搜索区域 --> <!-- 搜索区域 -->
<div class="search-container"> <div class="search-container">
<el-form ref="queryFormRef" :model="queryFormData" :inline="true"> <el-form ref="queryFormRef" :model="queryFormData" :inline="true" label-suffix=":">
<el-form-item prop="notice_title" label="标题"> <el-form-item prop="notice_title" label="标题">
<el-input v-model="queryFormData.notice_title" placeholder="请输入标题" clearable /> <el-input v-model="queryFormData.notice_title" placeholder="请输入标题" clearable />
</el-form-item> </el-form-item>
@@ -153,7 +153,7 @@
</el-card> </el-card>
<!-- 弹窗区域 --> <!-- 弹窗区域 -->
<el-dialog v-model="dialogVisible.visible" :title="dialogVisible.title" @close="handleCloseDialog"> <el-dialog v-model="dialogVisible.visible" :title="dialogVisible.title" @close="handleCloseDialog">
<!-- 详情 --> <!-- 详情 -->
<template v-if="dialogVisible.type === 'detail'"> <template v-if="dialogVisible.type === 'detail'">
<el-descriptions :column="4" border> <el-descriptions :column="4" border>
@@ -189,7 +189,7 @@
</template> </template>
<!-- 新增、编辑表单 --> <!-- 新增、编辑表单 -->
<template v-else> <template v-else>
<el-form ref="dataFormRef" :model="formData" :rules="rules" label-suffix=":" label-width="100px"> <el-form ref="dataFormRef" :model="formData" :rules="rules" label-suffix=":" label-width="auto" label-position="right">
<el-form-item label="标题" prop="notice_title"> <el-form-item label="标题" prop="notice_title">
<el-input v-model="formData.notice_title" placeholder="请输入标题" :maxlength="50" /> <el-input v-model="formData.notice_title" placeholder="请输入标题" :maxlength="50" />
</el-form-item> </el-form-item>
@@ -210,7 +210,7 @@
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item label="内容" prop="notice_content"> <el-form-item label="内容" prop="notice_content">
<WangEditor v-model="formData.notice_content" /> <WangEditor v-model="formData.notice_content" height="300px" />
</el-form-item> </el-form-item>
<el-form-item label="描述" prop="description"> <el-form-item label="描述" prop="description">
<el-input v-model="formData.description" :rows="4" :maxlength="100" show-word-limit type="textarea" placeholder="请输入描述" /> <el-input v-model="formData.description" :rows="4" :maxlength="100" show-word-limit type="textarea" placeholder="请输入描述" />
+2 -2
View File
@@ -3,7 +3,7 @@
<div class="app-container"> <div class="app-container">
<!-- 搜索区域 --> <!-- 搜索区域 -->
<div class="search-container"> <div class="search-container">
<el-form ref="queryFormRef" :model="queryFormData" :inline="true"> <el-form ref="queryFormRef" :model="queryFormData" :inline="true" label-suffix=":" >
<el-form-item prop="name" label="岗位名称"> <el-form-item prop="name" label="岗位名称">
<el-input v-model="queryFormData.name" placeholder="请输入岗位名称" clearable /> <el-input v-model="queryFormData.name" placeholder="请输入岗位名称" clearable />
</el-form-item> </el-form-item>
@@ -154,7 +154,7 @@
</template> </template>
<!-- 新增、编辑表单 --> <!-- 新增、编辑表单 -->
<template v-else> <template v-else>
<el-form ref="dataFormRef" :model="formData" :rules="rules" label-suffix=":" label-width="100px"> <el-form ref="dataFormRef" :model="formData" :rules="rules" label-suffix=":" label-width="auto" label-position="right">
<el-form-item label="岗位名称" prop="name"> <el-form-item label="岗位名称" prop="name">
<el-input v-model="formData.name" placeholder="请输入岗位名称" :maxlength="50" /> <el-input v-model="formData.name" placeholder="请输入岗位名称" :maxlength="50" />
</el-form-item> </el-form-item>
+3 -3
View File
@@ -3,7 +3,7 @@
<div class="app-container"> <div class="app-container">
<!-- 搜索区域 --> <!-- 搜索区域 -->
<div class="search-container"> <div class="search-container">
<el-form ref="queryFormRef" :model="queryFormData" :inline="true"> <el-form ref="queryFormRef" :model="queryFormData" :inline="true" label-suffix=":" >
<el-form-item prop="name" label="角色名称"> <el-form-item prop="name" label="角色名称">
<el-input v-model="queryFormData.name" placeholder="请输入角色名称" clearable /> <el-input v-model="queryFormData.name" placeholder="请输入角色名称" clearable />
</el-form-item> </el-form-item>
@@ -130,7 +130,7 @@
<el-table-column v-if="tableColumns.find(col => col.prop === 'operation')?.show" fixed="right" label="操作" align="center" min-width="280"> <el-table-column v-if="tableColumns.find(col => col.prop === 'operation')?.show" fixed="right" label="操作" align="center" min-width="280">
<template #default="scope"> <template #default="scope">
<el-button type="primary" size="small" link icon="position" @click="handleOpenAssignPermDialog(scope.row.id, scope.row.name)">分配权限</el-button> <el-button type="warning" size="small" link icon="position" @click="handleOpenAssignPermDialog(scope.row.id, scope.row.name)">分配权限</el-button>
<el-button type="info" size="small" link icon="document" @click="handleOpenDialog('detail', scope.row.id)">详情</el-button> <el-button type="info" size="small" link icon="document" @click="handleOpenDialog('detail', scope.row.id)">详情</el-button>
<el-button type="primary" size="small" link icon="edit" @click="handleOpenDialog('update', scope.row.id)">编辑</el-button> <el-button type="primary" size="small" link icon="edit" @click="handleOpenDialog('update', scope.row.id)">编辑</el-button>
<el-button type="danger" size="small" link icon="delete" @click="handleDelete([scope.row.id])">删除</el-button> <el-button type="danger" size="small" link icon="delete" @click="handleDelete([scope.row.id])">删除</el-button>
@@ -173,7 +173,7 @@
</template> </template>
<!-- 新增、编辑表单 --> <!-- 新增、编辑表单 -->
<template v-else> <template v-else>
<el-form ref="dataFormRef" :model="formData" :rules="rules" label-width="100px"> <el-form ref="dataFormRef" :model="formData" :rules="rules" label-suffix=":" label-width="auto" label-position="right">
<el-form-item label="角色名称" prop="name"> <el-form-item label="角色名称" prop="name">
<el-input v-model="formData.name" placeholder="请输入角色名称" /> <el-input v-model="formData.name" placeholder="请输入角色名称" />
</el-form-item> </el-form-item>
@@ -1,7 +1,7 @@
<!-- 部门树 --> <!-- 部门树 -->
<template> <template>
<el-card shadow="hover"> <el-card shadow="hover">
<el-input v-model="deptName" placeholder="部门名称" clearable> <el-input v-model="deptName" placeholder="部门名称">
<template #prefix> <template #prefix>
<el-icon> <el-icon>
<Search /> <Search />
@@ -10,8 +10,11 @@
</el-input> </el-input>
<el-tree ref="deptTreeRef" class="mt-2" :data="deptOptions" <el-tree ref="deptTreeRef" class="mt-2" :data="deptOptions"
:props="{ children: 'children', label: 'label', disabled: '' }" :expand-on-click-node="false" :props="{ children: 'children', label: 'label', disabled: '' }"
:filter-node-method="handleFilter" default-expand-all @node-click="handleNodeClick" > :expand-on-click-node="false"
:filter-node-method="handleFilter"
default-expand-all
@node-click="handleNodeClick" >
<template #empty> <template #empty>
<el-empty :image-size="80" description="暂无数据" /> <el-empty :image-size="80" description="暂无数据" />
</template> </template>
@@ -22,6 +25,7 @@
<script setup lang="ts"> <script setup lang="ts">
import DeptAPI, { DeptPageQuery } from "@/api/system/dept"; import DeptAPI, { DeptPageQuery } from "@/api/system/dept";
import { formatTree, listToTree } from "@/utils/common"; import { formatTree, listToTree } from "@/utils/common";
import type { FilterNodeMethodFunction, TreeInstance } from 'element-plus'
const props = defineProps({ const props = defineProps({
modelValue: { modelValue: {
@@ -31,30 +35,27 @@ const props = defineProps({
}); });
const deptOptions = ref<OptionType[]>([]); // 部门列表 const deptOptions = ref<OptionType[]>([]); // 部门列表
const deptTreeRef = ref(); // 部门树 const deptTreeRef = ref<TreeInstance>(); // 部门树
const deptName = ref(); // 部门名称 const deptName = ref(); // 部门名称
const emits = defineEmits(["node-click"]); const emits = defineEmits(["node-click"]);
const deptId = useVModel(props, "modelValue", emits); const deptId = useVModel(props, "modelValue", emits);
watchEffect( watch(deptName, (val) => {
() => { deptTreeRef.value!.filter(val)
deptTreeRef.value.filter(deptName.value); })
},
{ interface Tree {
flush: "post", // watchEffect会在DOM挂载或者更新之前就会触发,此属性控制在DOM元素更新后运行 [key: string]: any
} }
);
/** /**
* 部门筛选 * 部门筛选
*/ */
function handleFilter(value: string, data: any) { const handleFilter: FilterNodeMethodFunction = (value: string, data: Tree) => {
if (!value) { if (!value) return true;
return true; return data.label.includes(value)
}
return data.label.indexOf(value) !== -1;
} }
/** 部门树节点 Click */ /** 部门树节点 Click */
+2 -2
View File
@@ -11,7 +11,7 @@
<el-col :lg="20" :xs="24"> <el-col :lg="20" :xs="24">
<!-- 搜索区域 --> <!-- 搜索区域 -->
<div class="search-container"> <div class="search-container">
<el-form ref="queryFormRef" :model="queryFormData" :inline="true"> <el-form ref="queryFormRef" :model="queryFormData" :inline="true" label-suffix=":" >
<el-form-item prop="username" label="账号"> <el-form-item prop="username" label="账号">
<el-input v-model="queryFormData.username" placeholder="请输入账号" clearable /> <el-input v-model="queryFormData.username" placeholder="请输入账号" clearable />
</el-form-item> </el-form-item>
@@ -213,7 +213,7 @@
</template> </template>
<!-- 新增、编辑表单 --> <!-- 新增、编辑表单 -->
<template v-else> <template v-else>
<el-form ref="dataFormRef" :model="formData" :rules="rules" label-width="80px"> <el-form ref="dataFormRef" :model="formData" :rules="rules" label-suffix=":" label-width="auto" label-position="right">
<el-form-item label="账号" prop="username"> <el-form-item label="账号" prop="username">
<el-input v-model="formData.username" :readonly="!!formData.id" placeholder="请输入账号" /> <el-input v-model="formData.username" :readonly="!!formData.id" placeholder="请输入账号" />
</el-form-item> </el-form-item>
+10 -10
View File
@@ -38,9 +38,17 @@ check_dependencies() {
log "✅ 所有依赖检查通过" log "✅ 所有依赖检查通过"
} }
# 停止并删除容器
stop_and_remove_containers() {
log "==========🗑️ 第三步:终止容器...=========="
[ -f "docker-compose.yaml" ] || { log "❌ docker-compose.yaml 文件未找到"; exit 1; }
docker compose down
log "✅ 容器已停止并删除"
}
# 更新代码 # 更新代码
update_code() { update_code() {
log "==========🔍 第三步:检查项目...==========" log "==========🔍 第四步:检查项目...=========="
cd "${WORK_DIR}" || { log "❌ 无法进入工作目录:${WORK_DIR}"; exit 1; } cd "${WORK_DIR}" || { log "❌ 无法进入工作目录:${WORK_DIR}"; exit 1; }
if [ -d "${PROJECT_NAME}/" ]; then if [ -d "${PROJECT_NAME}/" ]; then
log "🔄 项目已存在,开始更新代码" log "🔄 项目已存在,开始更新代码"
@@ -56,14 +64,6 @@ update_code() {
fi fi
} }
# 停止并删除容器
stop_and_remove_containers() {
log "==========🗑️ 第四步:终止容器...=========="
[ -f "docker-compose.yaml" ] || { log "❌ docker-compose.yaml 文件未找到"; exit 1; }
docker compose down
log "✅ 容器已停止并删除"
}
# 构建前端 # 构建前端
build_frontend() { build_frontend() {
log "==========🔍 第五步:检查前端...==========" log "==========🔍 第五步:检查前端...=========="
@@ -107,8 +107,8 @@ main() {
log "==========🚀 开始部署流程==========" log "==========🚀 开始部署流程=========="
check_permissions check_permissions
check_dependencies check_dependencies
update_code
stop_and_remove_containers stop_and_remove_containers
update_code
build_frontend build_frontend
build_image build_image
start_containers start_containers