├── .gitignore ├── LICENSE ├── README.md ├── index.html ├── package.json ├── public └── favicon.ico ├── src ├── App.vue ├── api │ ├── common │ │ └── upload_file.js │ ├── data-dictionary │ │ └── province_city.js │ ├── report-api │ │ └── report.js │ └── system-setting │ │ ├── auth.js │ │ ├── button.js │ │ ├── captcha.js │ │ ├── org_post_members.js │ │ ├── organization.js │ │ ├── system_menu.js │ │ └── user.js ├── assets │ ├── images │ │ ├── bg1.png │ │ ├── bg2.png │ │ ├── bg3.png │ │ ├── full-icon-0.png │ │ ├── full-icon-1.png │ │ ├── logo-min.jpg │ │ ├── logo.png │ │ ├── split_flag.png │ │ └── system_logo.png │ └── logo.png ├── auto-imports.d.ts ├── components.d.ts ├── components │ ├── common │ │ ├── children_table.vue │ │ ├── children_table_plus.vue │ │ ├── delete_data_dialog.vue │ │ ├── group_panel.vue │ │ ├── iframe.vue │ │ ├── image.vue │ │ ├── paging.vue │ │ ├── seekbar_for_drawer.vue │ │ ├── select_button.vue │ │ ├── select_org_post.vue │ │ ├── select_province_city.vue │ │ ├── select_sys_menu.vue │ │ ├── select_user.vue │ │ ├── split.vue │ │ ├── table_header1.vue │ │ ├── table_header2.vue │ │ ├── tags2.vue │ │ └── upload_file.vue │ ├── data-dictionary │ │ └── province-city │ │ │ ├── create_edit.vue │ │ │ └── index.vue │ ├── report │ │ └── demo │ │ │ ├── employees_index.vue │ │ │ └── train_timetable.vue │ └── system-setting │ │ ├── auth-analysis │ │ └── index.vue │ │ ├── auth-assignment │ │ └── index.vue │ │ ├── button │ │ ├── create_edit.vue │ │ └── index.vue │ │ ├── layout │ │ ├── header_banner.vue │ │ ├── left_menu.vue │ │ └── tabs.vue │ │ ├── login-form │ │ ├── carouse.vue │ │ ├── copy_right.vue │ │ ├── form.vue │ │ └── title.vue │ │ ├── organization-members │ │ ├── create_edit.vue │ │ └── index.vue │ │ ├── organization │ │ ├── create_edit.vue │ │ └── index.vue │ │ ├── system-menu │ │ ├── create_edit.vue │ │ └── index.vue │ │ └── user │ │ ├── create_edit.vue │ │ ├── index.vue │ │ └── profile.vue ├── config │ └── index.js ├── index.css ├── libs │ ├── api_request.js │ ├── axios.js │ ├── common_func.js │ └── util.js ├── main.js ├── router │ └── index.js ├── store │ └── system-setting │ │ ├── header_banner.js │ │ ├── index.js │ │ ├── layout.js │ │ ├── menu.js │ │ ├── reload.js │ │ ├── route.js │ │ ├── tabs.js │ │ └── user.js └── views │ ├── data-dictionary │ └── province_city.vue │ ├── home │ └── index.vue │ ├── layout │ └── main.vue │ ├── statistical-report │ ├── employees.vue │ └── train_timetable.vue │ └── system-setting │ ├── auth_analysis.vue │ ├── auth_assignment.vue │ ├── blank_page.vue │ ├── button_cn_en.vue │ ├── login.vue │ ├── org_members.vue │ ├── organization.vue │ ├── sys_menu.vue │ └── user.vue └── vite.config.mjs /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /dist 4 | 5 | /tests/e2e/videos/ 6 | /tests/e2e/screenshots/ 7 | 8 | /src/auto-imports.d.ts 9 | /src/components.d.ts 10 | src/auto-imports.d.ts 11 | src/components.d.ts 12 | ./package-lock.json 13 | # local env files 14 | .env.local 15 | .env.*.local 16 | 17 | # Log files 18 | npm-debug.log* 19 | yarn-debug.log* 20 | yarn-error.log* 21 | 22 | # Editor directories and files 23 | .idea 24 | .vscode 25 | *.suo 26 | *.ntvs* 27 | *.njsproj 28 | *.sln 29 | *.sw* 30 | 31 | build/env.js 32 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 张奇峰 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ### GinSkeleton-Admin2 (前端部分) 2 | > 基于 vue3.x + vite5.x+ javascript + elementPlus + pinia + vue-router4.x + axios 等最新技术栈构建的全新后台管理系统. 3 | 4 | 5 | ### [在线文档](https://www.yuque.com/xiaofensinixidaouxiang/qmanaq/qmucb4) 6 | > 文档包含了最主要的使用功能说明、界面效果图、演示地址等. 7 | 8 | 9 | #### 更新日志 10 | **v2.1.00 2024-12-28** 11 | - 1.界面中相关的树形组件样式改进,增加垂直节点之间的连接接线显示. 12 | - 2.前端缓存启用 cookie 存储,改为 localStorage 存储, 避免安全扫描软件容易获取 cookie 的问题. 13 | - 3.项目依赖包更细至最新版. 14 | - 4.本版本需要搭配 **[gin-skeleton-admin2-backend](https://gitee.com/daitougege/gin-skeleton-admin2-backend)** ≥ v2.1.00 . 15 | 16 | 17 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ginskeleton-admin2-frontend", 3 | "version": "v2.0.00", 4 | "type": "module", 5 | "scripts": { 6 | "dev": "vite --mode dev", 7 | "build": "vite build --mode pro", 8 | "build:dev": "vite build --mode dev" 9 | }, 10 | "dependencies": { 11 | "@element-plus/icons-vue": "^2.3.1", 12 | "axios": "^1.7.9", 13 | "default-passive-events": "^2.0.0", 14 | "element-plus": "^2.9.1", 15 | "element-tree-line": "^0.2.1", 16 | "pinia": "^2.3.0", 17 | "pinia-plugin-persist": "^1.0.0", 18 | "qs": "^6.13.1", 19 | "screenfull": "^6.0.2", 20 | "unplugin-icons": "^0.22.0", 21 | "vue": "^3.5.13", 22 | "vue-router": "^4.5.0" 23 | }, 24 | "devDependencies": { 25 | "@babel/cli": "^7.26.4", 26 | "@babel/core": "^7.26.0", 27 | "@babel/runtime": "^7.26.0", 28 | "@vitejs/plugin-vue": "^5.2.1", 29 | "@vue/compiler-sfc": "^3.5.13", 30 | "babel-plugin-import": "^1.13.8", 31 | "unplugin-auto-import": "^0.19.0", 32 | "unplugin-vue-components": "^0.28.0", 33 | "vite": "5.4.11", 34 | "vite-plugin-imp": "^2.4.0", 35 | "vite-plugin-inspect": "^0.8.9" 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qifengzhang007/ginskeleton-admin2-frontend/e6ea14c8da25479e7a097eed14948e9b4e7d6e6e/public/favicon.ico -------------------------------------------------------------------------------- /src/App.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 25 | 26 | -------------------------------------------------------------------------------- /src/api/common/upload_file.js: -------------------------------------------------------------------------------- 1 | import axios from '@/libs/api_request' 2 | 3 | export const uploadFiles = (data) => { 4 | return axios.post('/upload/files', data) 5 | } -------------------------------------------------------------------------------- /src/api/data-dictionary/province_city.js: -------------------------------------------------------------------------------- 1 | import axios from '@/libs/api_request' 2 | 3 | export const list = (params) => { 4 | return axios.get('/province_city/list',params) 5 | } 6 | 7 | export const create = (data) => { 8 | return axios.post('/province_city/create',data) 9 | } 10 | 11 | export const edit = (data) => { 12 | return axios.post('/province_city/edit',data) 13 | } 14 | 15 | export const destroy = (id) => { 16 | return axios.post('/province_city/destroy',{id: parseInt(id)}) 17 | } 18 | 19 | // 左侧数据获取接口(传递fid查询子级数据) 20 | export const getSubListByFid = (fid) => { 21 | return axios.get('/province_city/get_sublist',{fid:fid}) 22 | } 23 | -------------------------------------------------------------------------------- /src/api/report-api/report.js: -------------------------------------------------------------------------------- 1 | import commonFunc from '@/libs/common_func' 2 | 3 | 4 | // 集成的地方三方报表对应的接口可以全部设置在这里 5 | // 一个系统的报表数量总体来讲是有限可控的,因此可以集中、一次性管理 6 | // 关于报表连接安全性问题,提供以下两种方式供参考 7 | // 1.前端可以访问本系统后端的路由地址(加载token校验中间件),然后代理访问对应的报表真实地址 8 | // 2.直接访问报表系统,token鉴权认证等都通过报表系统和前端对接完成 9 | 10 | export default { 11 | name: 'ReportSet', 12 | 13 | // 列车时刻表 14 | trainTimetable: { 15 | reportId: "reportTrainTrainTimetable", //每个需要使用iframe渲染的报表必须设置唯一的报表id 16 | reportUrl: commonFunc.getReportServerIp() + "/jmreport/view/737519583182499840" 17 | }, 18 | 19 | // 员工基本信息表 20 | employees: { 21 | reportId: "reportEmployees", //每个需要使用iframe渲染的报表必须设置唯一的报表id 22 | reportUrl: commonFunc.getReportServerIp() + "/jmreport/view/737128175057547264" 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /src/api/system-setting/auth.js: -------------------------------------------------------------------------------- 1 | import axios from '@/libs/api_request' 2 | 3 | // 权限分析界面,带岗位用户列表查询 4 | export const user_list_with_post = (params) => { 5 | return axios.get('/auth_analysis/user_list_with_post', params) 6 | } 7 | 8 | // 权限分析界面,根据用户id查询已拥有的所有权限 9 | export const has_auth_list = (id) => { 10 | return axios.get('/auth_analysis/has_auth_list', {id: id}) 11 | } 12 | 13 | // 查询打开的菜单对应的页面具有的按钮列表 14 | export const view_button_list = (menuId) => { 15 | return axios.get('/users/has_view_button_list', {menu_id: menuId}) 16 | } 17 | 18 | // 根据接口查询拥有的按钮元素权限与页面定义的按钮对比,最终显示拥有权限的按钮元素 19 | export const show_button = (hasButtonList, curButtonList) => { 20 | for (const key in curButtonList) { 21 | curButtonList[key] = hasButtonList.some((value, index) => { 22 | return value.en_name === curButtonList[key]; 23 | }) 24 | } 25 | } 26 | 27 | 28 | 29 | /* ↓↓↓↓↓ 权限分配、分析界面相关的接口 ↓↓↓↓↓ */ 30 | 31 | // 为组织机构(部门、岗位)分配菜单、按钮权限 32 | export const assignMenuToOrg = (data) => { 33 | return axios.post_raw('/system_menu/assgin_to_org', data) 34 | } 35 | 36 | // 删除已分配权限给组织机构的菜单、按钮权限 37 | export const delMenuAuthFromOrg = (data) => { 38 | return axios.post('/system_menu/del_auth_from_org', data) 39 | } 40 | 41 | // 待分配权限列表(全部可被用于分配的权限列表) 42 | export const getAllSystemMenuTree = () => { 43 | return axios.get('/system_menu/all_list', {}) 44 | } 45 | // 已分配给部门、岗位的菜单、按钮权限列表 46 | export const getAssignedSystemMenuTree = (orgPostId) => { 47 | return axios.get('/system_menu/assgined_list', {org_post_id: orgPostId}) 48 | } 49 | -------------------------------------------------------------------------------- /src/api/system-setting/button.js: -------------------------------------------------------------------------------- 1 | import axios from '@/libs/api_request' 2 | 3 | // 查询 4 | export const list = (params) => { 5 | return axios.get('/button/list', params) 6 | } 7 | 8 | // 新增 9 | export const create = (data) => { 10 | return axios.post('/button/create', data) 11 | } 12 | 13 | // 修改 14 | export const edit = (data) => { 15 | return axios.post('/button/edit', data) 16 | } 17 | 18 | // 删除 19 | export const destroy = (id) => { 20 | return axios.post('/button/destroy', {id: id}) 21 | } 22 | -------------------------------------------------------------------------------- /src/api/system-setting/captcha.js: -------------------------------------------------------------------------------- 1 | import axios from '@/libs/api_request' 2 | 3 | // 获取验证码ID和图片地址 4 | export const getCaptchaInfo = () => { 5 | return axios.captchaGet('/captcha/') 6 | } 7 | 8 | export const getCaptchaServerPre = () => { 9 | return axios.captchaGet('/captcha/') 10 | } 11 | 12 | //根据 获取验证码ID获取图片地址 13 | export const getCaptchaImg = (img) => { 14 | return axios.captchaImgGet(img) 15 | } 16 | 17 | // 校验验证码 18 | export const checkCaptcha = (url) => { 19 | return axios.captchaGet(url) 20 | } 21 | 22 | -------------------------------------------------------------------------------- /src/api/system-setting/org_post_members.js: -------------------------------------------------------------------------------- 1 | import axios from '@/libs/api_request' 2 | 3 | // 根据组织机构、岗位 ID,查询成员列表 4 | export const getMembersByOrgPostId = (params) => { 5 | return axios.get('/post_members/list',params) 6 | } 7 | 8 | //新增 9 | export const create = (data) => { 10 | return axios.post('/post_members/create',data) 11 | } 12 | 13 | // 编辑、修改 14 | export const edit = (data) => { 15 | return axios.post('/post_members/edit',data) 16 | } 17 | 18 | // 删除 19 | export const destroy = (id) => { 20 | return axios.post('/post_members/destroy',{id:id}) 21 | } 22 | -------------------------------------------------------------------------------- /src/api/system-setting/organization.js: -------------------------------------------------------------------------------- 1 | import axios from '@/libs/api_request' 2 | 3 | export const list = (params) => { 4 | return axios.get('/organization/list', params) 5 | } 6 | 7 | export const create = (data) => { 8 | return axios.post('/organization/create', data) 9 | } 10 | 11 | export const edit = (data) => { 12 | return axios.post('/organization/edit', data) 13 | } 14 | 15 | export const destroy = (id) => { 16 | return axios.post('/organization/destroy', {id: parseInt(id)}) 17 | } 18 | 19 | // 左侧数据获取接口 20 | export const getSubListByFid = (id) => { 21 | return axios.get('/organization/get_by_fid', {fid: id}) 22 | } 23 | -------------------------------------------------------------------------------- /src/api/system-setting/system_menu.js: -------------------------------------------------------------------------------- 1 | import axios from '@/libs/api_request' 2 | 3 | // 左侧数据获取接口 4 | export const getSubListByFid = (id) => { 5 | return axios.get('/system_menu/get_by_fid',{fid:id}) 6 | } 7 | // 右侧list 8 | export const list = (params) => { 9 | return axios.get('/system_menu/list',params) 10 | } 11 | //新增 12 | export const createByJson = (json) => { 13 | return axios.post_raw('/system_menu/create',json) 14 | } 15 | 16 | //修改 17 | export const editByJson = (json) => { 18 | return axios.post_raw('/system_menu/edit',json) 19 | } 20 | 21 | //删除 22 | export const destroy = (id) => { 23 | return axios.post('/system_menu/destroy',{id: parseInt(id)}) 24 | } 25 | 26 | //系统菜单挂接的按钮列表(可被分配的按钮数据源列表) 27 | export const menu_mount_auth_button = (menuId) => { 28 | return axios.get('/system_menu/mount_auth_button',{fr_auth_system_menu_id:menuId}) 29 | } 30 | -------------------------------------------------------------------------------- /src/api/system-setting/user.js: -------------------------------------------------------------------------------- 1 | import axios from '@/libs/api_request' 2 | 3 | // 查询 4 | export const list = (params) => { 5 | return axios.get('/users/list', params) 6 | } 7 | 8 | // 新增 9 | export const create = (data) => { 10 | return axios.post('/users/create', data) 11 | } 12 | 13 | // 修改 14 | export const edit = (data) => { 15 | return axios.post('/users/edit', data) 16 | } 17 | 18 | // 删除 19 | export const destroy = (id) => { 20 | return axios.post('/users/destroy', {id: id}) 21 | } 22 | 23 | // =================== ↓↓↓ 扩展接口 ↓↓↓ ================== 24 | // 获取info 25 | export const getUserInfo = () => { 26 | return axios.get('/users/info') 27 | } 28 | 29 | // 获取个人基本信息 30 | export const personalInfo = () => { 31 | return axios.get('/users/personal_info') 32 | } 33 | 34 | // 编辑个人基本信息 35 | export const personalEdit = (params) => { 36 | return axios.post('/users/personal_edit', params) 37 | } 38 | 39 | // 用户登录系统 40 | export const login = ({ user_name, pass,captcha_id,captcha_value }) => { 41 | let data = { 42 | user_name: user_name, 43 | pass: pass, 44 | captcha_id: captcha_id, 45 | captcha_value: captcha_value 46 | } 47 | return axios.post('users/login', data) 48 | } -------------------------------------------------------------------------------- /src/assets/images/bg1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qifengzhang007/ginskeleton-admin2-frontend/e6ea14c8da25479e7a097eed14948e9b4e7d6e6e/src/assets/images/bg1.png -------------------------------------------------------------------------------- /src/assets/images/bg2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qifengzhang007/ginskeleton-admin2-frontend/e6ea14c8da25479e7a097eed14948e9b4e7d6e6e/src/assets/images/bg2.png -------------------------------------------------------------------------------- /src/assets/images/bg3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qifengzhang007/ginskeleton-admin2-frontend/e6ea14c8da25479e7a097eed14948e9b4e7d6e6e/src/assets/images/bg3.png -------------------------------------------------------------------------------- /src/assets/images/full-icon-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qifengzhang007/ginskeleton-admin2-frontend/e6ea14c8da25479e7a097eed14948e9b4e7d6e6e/src/assets/images/full-icon-0.png -------------------------------------------------------------------------------- /src/assets/images/full-icon-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qifengzhang007/ginskeleton-admin2-frontend/e6ea14c8da25479e7a097eed14948e9b4e7d6e6e/src/assets/images/full-icon-1.png -------------------------------------------------------------------------------- /src/assets/images/logo-min.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qifengzhang007/ginskeleton-admin2-frontend/e6ea14c8da25479e7a097eed14948e9b4e7d6e6e/src/assets/images/logo-min.jpg -------------------------------------------------------------------------------- /src/assets/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qifengzhang007/ginskeleton-admin2-frontend/e6ea14c8da25479e7a097eed14948e9b4e7d6e6e/src/assets/images/logo.png -------------------------------------------------------------------------------- /src/assets/images/split_flag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qifengzhang007/ginskeleton-admin2-frontend/e6ea14c8da25479e7a097eed14948e9b4e7d6e6e/src/assets/images/split_flag.png -------------------------------------------------------------------------------- /src/assets/images/system_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qifengzhang007/ginskeleton-admin2-frontend/e6ea14c8da25479e7a097eed14948e9b4e7d6e6e/src/assets/images/system_logo.png -------------------------------------------------------------------------------- /src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qifengzhang007/ginskeleton-admin2-frontend/e6ea14c8da25479e7a097eed14948e9b4e7d6e6e/src/assets/logo.png -------------------------------------------------------------------------------- /src/auto-imports.d.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | /* prettier-ignore */ 3 | // @ts-nocheck 4 | // noinspection JSUnusedGlobalSymbols 5 | // Generated by unplugin-auto-import 6 | // biome-ignore lint: disable 7 | export {} 8 | declare global { 9 | const ElMessage: typeof import('element-plus/es')['ElMessage'] 10 | const ElNotification: typeof import('element-plus/es')['ElNotification'] 11 | } 12 | -------------------------------------------------------------------------------- /src/components.d.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // @ts-nocheck 3 | // Generated by unplugin-vue-components 4 | // Read more: https://github.com/vuejs/core/pull/3399 5 | export {} 6 | 7 | /* prettier-ignore */ 8 | declare module 'vue' { 9 | export interface GlobalComponents { 10 | CommonChildren_table: typeof import('./components/common/children_table.vue')['default'] 11 | CommonChildren_table_plus: typeof import('./components/common/children_table_plus.vue')['default'] 12 | CommonDelete_data_dialog: typeof import('./components/common/delete_data_dialog.vue')['default'] 13 | CommonGroup_panel: typeof import('./components/common/group_panel.vue')['default'] 14 | CommonIframe: typeof import('./components/common/iframe.vue')['default'] 15 | CommonImage: typeof import('./components/common/image.vue')['default'] 16 | CommonPaging: typeof import('./components/common/paging.vue')['default'] 17 | CommonSeekbar_for_drawer: typeof import('./components/common/seekbar_for_drawer.vue')['default'] 18 | CommonSelect_button: typeof import('./components/common/select_button.vue')['default'] 19 | CommonSelect_org_post: typeof import('./components/common/select_org_post.vue')['default'] 20 | CommonSelect_province_city: typeof import('./components/common/select_province_city.vue')['default'] 21 | CommonSelect_sys_menu: typeof import('./components/common/select_sys_menu.vue')['default'] 22 | CommonSelect_user: typeof import('./components/common/select_user.vue')['default'] 23 | CommonSplit: typeof import('./components/common/split.vue')['default'] 24 | CommonTable_header1: typeof import('./components/common/table_header1.vue')['default'] 25 | CommonTable_header2: typeof import('./components/common/table_header2.vue')['default'] 26 | CommonTags2: typeof import('./components/common/tags2.vue')['default'] 27 | CommonUpload_file: typeof import('./components/common/upload_file.vue')['default'] 28 | DataDictionaryProvinceCity: typeof import('./components/data-dictionary/province-city/index.vue')['default'] 29 | DataDictionaryProvinceCityCreate_edit: typeof import('./components/data-dictionary/province-city/create_edit.vue')['default'] 30 | ElAside: typeof import('element-plus/es')['ElAside'] 31 | ElAvatar: typeof import('element-plus/es')['ElAvatar'] 32 | ElBreadcrumb: typeof import('element-plus/es')['ElBreadcrumb'] 33 | ElBreadcrumbItem: typeof import('element-plus/es')['ElBreadcrumbItem'] 34 | ElButton: typeof import('element-plus/es')['ElButton'] 35 | ElButtonGroup: typeof import('element-plus/es')['ElButtonGroup'] 36 | ElCarousel: typeof import('element-plus/es')['ElCarousel'] 37 | ElCarouselItem: typeof import('element-plus/es')['ElCarouselItem'] 38 | ElCol: typeof import('element-plus/es')['ElCol'] 39 | ElColorPicker: typeof import('element-plus/es')['ElColorPicker'] 40 | ElConfigProvider: typeof import('element-plus/es')['ElConfigProvider'] 41 | ElDatePicker: typeof import('element-plus/es')['ElDatePicker'] 42 | ElDialog: typeof import('element-plus/es')['ElDialog'] 43 | ElDrawer: typeof import('element-plus/es')['ElDrawer'] 44 | ElDropdown: typeof import('element-plus/es')['ElDropdown'] 45 | ElDropdownItem: typeof import('element-plus/es')['ElDropdownItem'] 46 | ElDropdownMenu: typeof import('element-plus/es')['ElDropdownMenu'] 47 | ElForm: typeof import('element-plus/es')['ElForm'] 48 | ElFormItem: typeof import('element-plus/es')['ElFormItem'] 49 | ElIcon: typeof import('element-plus/es')['ElIcon'] 50 | ElImage: typeof import('element-plus/es')['ElImage'] 51 | ElInput: typeof import('element-plus/es')['ElInput'] 52 | ElInputNumber: typeof import('element-plus/es')['ElInputNumber'] 53 | ElLink: typeof import('element-plus/es')['ElLink'] 54 | ElMenu: typeof import('element-plus/es')['ElMenu'] 55 | ElMenuItem: typeof import('element-plus/es')['ElMenuItem'] 56 | ElOption: typeof import('element-plus/es')['ElOption'] 57 | ElPagination: typeof import('element-plus/es')['ElPagination'] 58 | ElResult: typeof import('element-plus/es')['ElResult'] 59 | ElRow: typeof import('element-plus/es')['ElRow'] 60 | ElScrollbar: typeof import('element-plus/es')['ElScrollbar'] 61 | ElSelect: typeof import('element-plus/es')['ElSelect'] 62 | ElSubMenu: typeof import('element-plus/es')['ElSubMenu'] 63 | ElTable: typeof import('element-plus/es')['ElTable'] 64 | ElTableColumn: typeof import('element-plus/es')['ElTableColumn'] 65 | ElTag: typeof import('element-plus/es')['ElTag'] 66 | ElTree: typeof import('element-plus/es')['ElTree'] 67 | ElUpload: typeof import('element-plus/es')['ElUpload'] 68 | ReportDemoEmployees_index: typeof import('./components/report/demo/employees_index.vue')['default'] 69 | ReportDemoTrain_timetable: typeof import('./components/report/demo/train_timetable.vue')['default'] 70 | RouterLink: typeof import('vue-router')['RouterLink'] 71 | RouterView: typeof import('vue-router')['RouterView'] 72 | SystemSettingAuthAnalysis: typeof import('./components/system-setting/auth-analysis/index.vue')['default'] 73 | SystemSettingAuthAssignment: typeof import('./components/system-setting/auth-assignment/index.vue')['default'] 74 | SystemSettingButton: typeof import('./components/system-setting/button/index.vue')['default'] 75 | SystemSettingButtonCreate_edit: typeof import('./components/system-setting/button/create_edit.vue')['default'] 76 | SystemSettingLayoutHeader_banner: typeof import('./components/system-setting/layout/header_banner.vue')['default'] 77 | SystemSettingLayoutLeft_menu: typeof import('./components/system-setting/layout/left_menu.vue')['default'] 78 | SystemSettingLayoutTabs: typeof import('./components/system-setting/layout/tabs.vue')['default'] 79 | SystemSettingLoginFormCarouse: typeof import('./components/system-setting/login-form/carouse.vue')['default'] 80 | SystemSettingLoginFormCopy_right: typeof import('./components/system-setting/login-form/copy_right.vue')['default'] 81 | SystemSettingLoginFormForm: typeof import('./components/system-setting/login-form/form.vue')['default'] 82 | SystemSettingLoginFormTitle: typeof import('./components/system-setting/login-form/title.vue')['default'] 83 | SystemSettingOrganization: typeof import('./components/system-setting/organization/index.vue')['default'] 84 | SystemSettingOrganizationCreate_edit: typeof import('./components/system-setting/organization/create_edit.vue')['default'] 85 | SystemSettingOrganizationMembers: typeof import('./components/system-setting/organization-members/index.vue')['default'] 86 | SystemSettingOrganizationMembersCreate_edit: typeof import('./components/system-setting/organization-members/create_edit.vue')['default'] 87 | SystemSettingSystemMenu: typeof import('./components/system-setting/system-menu/index.vue')['default'] 88 | SystemSettingSystemMenuCreate_edit: typeof import('./components/system-setting/system-menu/create_edit.vue')['default'] 89 | SystemSettingUser: typeof import('./components/system-setting/user/index.vue')['default'] 90 | SystemSettingUserCreate_edit: typeof import('./components/system-setting/user/create_edit.vue')['default'] 91 | SystemSettingUserProfile: typeof import('./components/system-setting/user/profile.vue')['default'] 92 | } 93 | } 94 | -------------------------------------------------------------------------------- /src/components/common/delete_data_dialog.vue: -------------------------------------------------------------------------------- 1 | 32 | 33 | 75 | 76 | 92 | -------------------------------------------------------------------------------- /src/components/common/group_panel.vue: -------------------------------------------------------------------------------- 1 | 22 | 23 | 53 | 54 | 88 | -------------------------------------------------------------------------------- /src/components/common/iframe.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 44 | 45 | 58 | -------------------------------------------------------------------------------- /src/components/common/image.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 46 | 47 | -------------------------------------------------------------------------------- /src/components/common/paging.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 55 | 56 | -------------------------------------------------------------------------------- /src/components/common/seekbar_for_drawer.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 42 | 43 | -------------------------------------------------------------------------------- /src/components/common/select_button.vue: -------------------------------------------------------------------------------- 1 | 47 | 48 | 152 | 153 | 167 | 168 | -------------------------------------------------------------------------------- /src/components/common/select_org_post.vue: -------------------------------------------------------------------------------- 1 | 22 | 23 | 105 | 106 | -------------------------------------------------------------------------------- /src/components/common/select_province_city.vue: -------------------------------------------------------------------------------- 1 | 22 | 23 | 105 | 106 | -------------------------------------------------------------------------------- /src/components/common/select_sys_menu.vue: -------------------------------------------------------------------------------- 1 | 23 | 24 | 106 | 107 | -------------------------------------------------------------------------------- /src/components/common/select_user.vue: -------------------------------------------------------------------------------- 1 | 46 | 47 | 157 | 158 | 172 | 173 | -------------------------------------------------------------------------------- /src/components/common/split.vue: -------------------------------------------------------------------------------- 1 | 17 | 18 | 101 | 102 | 124 | -------------------------------------------------------------------------------- /src/components/common/table_header1.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 11 | -------------------------------------------------------------------------------- /src/components/common/table_header2.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 12 | -------------------------------------------------------------------------------- /src/components/common/tags2.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 42 | 43 | 44 | 59 | -------------------------------------------------------------------------------- /src/components/common/upload_file.vue: -------------------------------------------------------------------------------- 1 | 17 | 18 | 72 | 73 | 81 | 82 | 102 | -------------------------------------------------------------------------------- /src/components/data-dictionary/province-city/create_edit.vue: -------------------------------------------------------------------------------- 1 | 62 | 63 | 179 | 180 | -------------------------------------------------------------------------------- /src/components/report/demo/employees_index.vue: -------------------------------------------------------------------------------- 1 |