├── .eslintignore ├── tests └── unit │ ├── .eslintrc.js │ ├── components │ ├── Hamburger.spec.js │ └── SvgIcon.spec.js │ └── utils │ ├── validate.spec.js │ ├── parseTime.spec.js │ └── formatTime.spec.js ├── babel.config.js ├── doc └── images │ ├── dept.png │ ├── role.png │ ├── user.png │ ├── dictionary.png │ ├── fileStore.png │ ├── monitorSql.png │ ├── permission.png │ ├── personal.png │ └── schedule.png ├── public ├── favicon.ico └── index.html ├── .travis.yml ├── src ├── assets │ ├── logo │ │ └── logo.png │ ├── 404_images │ │ ├── 404.png │ │ └── 404_cloud.png │ └── avatar │ │ └── avatar.png ├── layout │ ├── components │ │ ├── Empty.vue │ │ ├── index.js │ │ ├── Sidebar │ │ │ ├── Link.vue │ │ │ ├── FixiOSBug.js │ │ │ ├── Item.vue │ │ │ ├── index.vue │ │ │ └── Logo.vue │ │ └── AppMain.vue │ ├── mixin │ │ └── ResizeHandler.js │ └── index.vue ├── App.vue ├── api │ ├── table.js │ ├── queryHistory.js │ ├── auth.js │ ├── userCenter.js │ ├── actModel.js │ ├── dictionary.js │ ├── flowHistory.js │ ├── dictionaryItem.js │ ├── dept.js │ ├── location.js │ ├── flowLeave.js │ ├── permission.js │ ├── user.js │ ├── actProcess.js │ ├── role.js │ ├── actTask.js │ ├── quartzJob.js │ └── fileStore.js ├── icons │ ├── svg │ │ ├── link.svg │ │ ├── example.svg │ │ ├── save.svg │ │ ├── dictionary.svg │ │ ├── table.svg │ │ ├── password.svg │ │ ├── user.svg │ │ ├── permission.svg │ │ ├── system.svg │ │ ├── workflowLaunch.svg │ │ ├── systemTool.svg │ │ ├── nested.svg │ │ ├── workflowApply.svg │ │ ├── menu.svg │ │ ├── eye.svg │ │ ├── workflowTodo.svg │ │ ├── monitorSql.svg │ │ ├── workflowModel.svg │ │ ├── workflowDone.svg │ │ ├── workflow.svg │ │ ├── eye-open.svg │ │ ├── workflowProcess.svg │ │ ├── location.svg │ │ ├── schedule.svg │ │ ├── tree.svg │ │ ├── fileStore.svg │ │ ├── redis.svg │ │ ├── dashboard.svg │ │ ├── form.svg │ │ └── role.svg │ ├── index.js │ └── svgo.yml ├── utils │ ├── get-page-title.js │ ├── auth.js │ ├── validate.js │ ├── tree.js │ ├── rules.js │ └── dic.js ├── settings.js ├── directive │ └── permission │ │ ├── index.js │ │ └── permission.js ├── store │ ├── modules │ │ ├── api.js │ │ ├── settings.js │ │ ├── dic.js │ │ ├── socket.js │ │ ├── app.js │ │ └── permission.js │ ├── getters.js │ └── index.js ├── styles │ ├── mixin.scss │ ├── variables.scss │ ├── element-ui.scss │ ├── transition.scss │ └── index.scss ├── views │ ├── dashboard │ │ └── index.vue │ └── system │ │ ├── tool │ │ └── monitorSql │ │ │ └── index.vue │ │ ├── workflow │ │ ├── components │ │ │ ├── util.js │ │ │ ├── approveForm.vue │ │ │ └── editHistory.vue │ │ ├── launch │ │ │ └── index.vue │ │ └── apply │ │ │ └── reason.vue │ │ └── manage │ │ └── dictionary │ │ └── index.vue ├── mixin │ ├── commonMsg.js │ └── permission.js ├── main.js ├── components │ ├── Hamburger │ │ └── index.vue │ ├── SvgIcon │ │ └── index.vue │ └── Breadcrumb │ │ └── index.vue └── router │ └── modules │ ├── systemManage.js │ ├── systemTool.js │ └── systemWorkflow.js ├── wfd-vue ├── src │ ├── locales │ │ ├── index.js │ │ └── zh-CN.js │ ├── assets │ │ ├── iconfont │ │ │ ├── iconfont.eot │ │ │ ├── iconfont.ttf │ │ │ ├── iconfont.woff │ │ │ └── iconfont.woff2 │ │ ├── icons │ │ │ └── flow │ │ │ │ ├── icon_timer.svg │ │ │ │ ├── icon_signal.svg │ │ │ │ ├── icon_mail.svg │ │ │ │ ├── icon_script.svg │ │ │ │ ├── icon_user.svg │ │ │ │ ├── icon_java.svg │ │ │ │ ├── icon_message.svg │ │ │ │ └── icon_receive.svg │ │ └── flow │ │ │ ├── end.svg │ │ │ ├── start.svg │ │ │ ├── timer-catch.svg │ │ │ ├── inclusive-gateway.svg │ │ │ ├── mail-task.svg │ │ │ ├── signal-catch.svg │ │ │ ├── message-catch.svg │ │ │ ├── script-task.svg │ │ │ ├── parallel-gateway.svg │ │ │ ├── gateway.svg │ │ │ ├── exclusive-gateway.svg │ │ │ ├── timer-start.svg │ │ │ ├── user-task.svg │ │ │ ├── signal-start.svg │ │ │ ├── receive-task.svg │ │ │ ├── message-start.svg │ │ │ └── java-task.svg │ ├── index.js │ ├── shape │ │ ├── index.js │ │ └── anchor.js │ ├── behavior │ │ ├── index.js │ │ ├── hoverAnchorActived.js │ │ ├── hoverNodeActived.js │ │ ├── deleteItem.js │ │ └── clickSelected.js │ ├── components │ │ └── DetailPanel │ │ │ ├── EndEventDetail.vue │ │ │ ├── StartEventDetail.vue │ │ │ ├── GatewayDetail.vue │ │ │ ├── DefaultDetail.vue │ │ │ ├── JavaTaskDetail.vue │ │ │ ├── ScriptTaskDetail.vue │ │ │ ├── SignalEventDetail.vue │ │ │ ├── MessageEventDetail.vue │ │ │ ├── ReceiveTaskDetail.vue │ │ │ ├── TimerEventDetail.vue │ │ │ ├── FlowDetail.vue │ │ │ └── MailTaskDetail.vue │ ├── plugins │ │ ├── canvasPanel.js │ │ ├── addItemPanel.js │ │ └── detailPanel.js │ ├── util │ │ └── clazz.js │ └── item │ │ └── anchor.js └── example │ ├── snapshots │ └── 1.jpg │ └── main.js ├── .env.staging ├── .env.production ├── jsconfig.json ├── postcss.config.js ├── .gitignore ├── .gitattributes ├── .editorconfig ├── .vscode └── settings.json ├── templates ├── mapStruct.ejs ├── mapper.ejs ├── api.ejs └── service.ejs ├── .env.development ├── mock ├── table.js ├── user.js ├── index.js └── mock-server.js ├── xcrud.config.js ├── jest.config.js ├── LICENSE ├── test.js └── package.json /.eslintignore: -------------------------------------------------------------------------------- 1 | build/*.js 2 | src/assets 3 | public 4 | dist 5 | package 6 | wfd-vue 7 | -------------------------------------------------------------------------------- /tests/unit/.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | env: { 3 | jest: true 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset' 4 | ] 5 | } -------------------------------------------------------------------------------- /doc/images/dept.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nayacco/submarine-admin-frontend/HEAD/doc/images/dept.png -------------------------------------------------------------------------------- /doc/images/role.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nayacco/submarine-admin-frontend/HEAD/doc/images/role.png -------------------------------------------------------------------------------- /doc/images/user.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nayacco/submarine-admin-frontend/HEAD/doc/images/user.png -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nayacco/submarine-admin-frontend/HEAD/public/favicon.ico -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 10 3 | script: npm run test 4 | notifications: 5 | email: false 6 | -------------------------------------------------------------------------------- /doc/images/dictionary.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nayacco/submarine-admin-frontend/HEAD/doc/images/dictionary.png -------------------------------------------------------------------------------- /doc/images/fileStore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nayacco/submarine-admin-frontend/HEAD/doc/images/fileStore.png -------------------------------------------------------------------------------- /doc/images/monitorSql.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nayacco/submarine-admin-frontend/HEAD/doc/images/monitorSql.png -------------------------------------------------------------------------------- /doc/images/permission.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nayacco/submarine-admin-frontend/HEAD/doc/images/permission.png -------------------------------------------------------------------------------- /doc/images/personal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nayacco/submarine-admin-frontend/HEAD/doc/images/personal.png -------------------------------------------------------------------------------- /doc/images/schedule.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nayacco/submarine-admin-frontend/HEAD/doc/images/schedule.png -------------------------------------------------------------------------------- /src/assets/logo/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nayacco/submarine-admin-frontend/HEAD/src/assets/logo/logo.png -------------------------------------------------------------------------------- /src/assets/404_images/404.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nayacco/submarine-admin-frontend/HEAD/src/assets/404_images/404.png -------------------------------------------------------------------------------- /src/assets/avatar/avatar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nayacco/submarine-admin-frontend/HEAD/src/assets/avatar/avatar.png -------------------------------------------------------------------------------- /wfd-vue/src/locales/index.js: -------------------------------------------------------------------------------- 1 | import en from './en-US' 2 | import zh from './zh-CN' 3 | export default { 4 | en, 5 | zh, 6 | } -------------------------------------------------------------------------------- /wfd-vue/example/snapshots/1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nayacco/submarine-admin-frontend/HEAD/wfd-vue/example/snapshots/1.jpg -------------------------------------------------------------------------------- /src/assets/404_images/404_cloud.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nayacco/submarine-admin-frontend/HEAD/src/assets/404_images/404_cloud.png -------------------------------------------------------------------------------- /.env.staging: -------------------------------------------------------------------------------- 1 | NODE_ENV = production 2 | 3 | # just a flag 4 | ENV = 'staging' 5 | 6 | # base api 7 | VUE_APP_BASE_API = '/stage-api' 8 | 9 | -------------------------------------------------------------------------------- /wfd-vue/src/assets/iconfont/iconfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nayacco/submarine-admin-frontend/HEAD/wfd-vue/src/assets/iconfont/iconfont.eot -------------------------------------------------------------------------------- /wfd-vue/src/assets/iconfont/iconfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nayacco/submarine-admin-frontend/HEAD/wfd-vue/src/assets/iconfont/iconfont.ttf -------------------------------------------------------------------------------- /.env.production: -------------------------------------------------------------------------------- 1 | # just a flag 2 | ENV = 'production' 3 | 4 | # base api 5 | VUE_APP_BASE_API = '/prod-api' 6 | 7 | VUE_APP_SOCKET_PORT = '443' 8 | 9 | -------------------------------------------------------------------------------- /wfd-vue/src/assets/iconfont/iconfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nayacco/submarine-admin-frontend/HEAD/wfd-vue/src/assets/iconfont/iconfont.woff -------------------------------------------------------------------------------- /wfd-vue/src/assets/iconfont/iconfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nayacco/submarine-admin-frontend/HEAD/wfd-vue/src/assets/iconfont/iconfont.woff2 -------------------------------------------------------------------------------- /src/layout/components/Empty.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 10 | -------------------------------------------------------------------------------- /src/layout/components/index.js: -------------------------------------------------------------------------------- 1 | export { default as Navbar } from './Navbar' 2 | export { default as Sidebar } from './Sidebar' 3 | export { default as AppMain } from './AppMain' 4 | -------------------------------------------------------------------------------- /src/App.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 12 | -------------------------------------------------------------------------------- /jsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "baseUrl": "./", 4 | "paths": { 5 | "@/*": ["src/*"] 6 | } 7 | }, 8 | "exclude": ["node_modules", "dist"] 9 | } 10 | -------------------------------------------------------------------------------- /src/api/table.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request' 2 | 3 | export function getList(params) { 4 | return request({ 5 | url: '/table/list', 6 | method: 'get', 7 | params 8 | }) 9 | } 10 | -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | // https://github.com/michael-ciniawsky/postcss-load-config 2 | 3 | module.exports = { 4 | 'plugins': { 5 | // to edit target browsers: use "browserslist" field in package.json 6 | 'autoprefixer': {} 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /wfd-vue/src/index.js: -------------------------------------------------------------------------------- 1 | import Wfd from './components/Wfd'; 2 | 3 | const install = (Vue) => { 4 | Vue.component(Wfd.name, Wfd); 5 | }; 6 | 7 | if (typeof window !== 'undefined' && window.Vue) { 8 | install(window.Vue); 9 | } 10 | 11 | 12 | export default Wfd; 13 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules/ 3 | dist/ 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | package-lock.json 8 | tests/**/coverage/ 9 | 10 | # Editor directories and files 11 | .history 12 | .idea 13 | # .vscode 14 | *.suo 15 | *.ntvs* 16 | *.njsproj 17 | *.sln 18 | -------------------------------------------------------------------------------- /src/icons/svg/link.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/utils/get-page-title.js: -------------------------------------------------------------------------------- 1 | import defaultSettings from '@/settings' 2 | 3 | const title = defaultSettings.title || 'Vue Admin Template' 4 | 5 | export default function getPageTitle(pageTitle) { 6 | if (pageTitle) { 7 | return `${pageTitle} - ${title}` 8 | } 9 | return `${title}` 10 | } 11 | -------------------------------------------------------------------------------- /wfd-vue/example/main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import App from './App.vue' 3 | import ElementUI from 'element-ui' 4 | import 'element-ui/lib/theme-chalk/index.css' 5 | 6 | Vue.use(ElementUI); 7 | 8 | Vue.config.productionTip = false; 9 | new Vue({ 10 | render: h => h(App), 11 | }).$mount('#app'); 12 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # 防止不设置 core.autocrlf 导致混合 crlf 和 lf 提交的情况.建议执行下列 3 行命令 2 | # git config --global core.autocrlf input 3 | # git config --global core.safecrlf true 4 | # git config --global core.eol lf 5 | 6 | * text eol=lf 7 | *.jar binary 8 | *.png binary 9 | *.jpg binary 10 | *.eot binary 11 | *.ttf binary 12 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 2 8 | end_of_line = lf 9 | insert_final_newline = true 10 | trim_trailing_whitespace = true 11 | 12 | [*.md] 13 | insert_final_newline = false 14 | trim_trailing_whitespace = false 15 | -------------------------------------------------------------------------------- /wfd-vue/src/shape/index.js: -------------------------------------------------------------------------------- 1 | import registerAnchor from './anchor' 2 | import registerNode from './node' 3 | import registerFlowNode from './flowNode' 4 | import registerEdge from './edge' 5 | 6 | export default function(G6){ 7 | registerAnchor(G6); 8 | registerNode(G6); 9 | registerFlowNode(G6); 10 | registerEdge(G6); 11 | } 12 | -------------------------------------------------------------------------------- /src/api/queryHistory.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request' 2 | 3 | /** 4 | * 查询历史记录 5 | * @param value: value 有值时进行模糊查询,无值时查出所有的历史 6 | */ 7 | export function queryHistory(table, field, value) { 8 | return request({ 9 | url: '/query/history', 10 | method: 'get', 11 | params: { table, field, value } 12 | }) 13 | } 14 | -------------------------------------------------------------------------------- /src/icons/index.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import SvgIcon from '@/components/SvgIcon'// svg component 3 | 4 | // register globally 5 | Vue.component('svg-icon', SvgIcon) 6 | 7 | const req = require.context('./svg', false, /\.svg$/) 8 | const requireAll = requireContext => requireContext.keys().map(requireContext) 9 | requireAll(req) 10 | -------------------------------------------------------------------------------- /src/settings.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | 3 | title: 'Submarine', 4 | 5 | /** 6 | * @type {boolean} true | false 7 | * @description Whether fix the header 8 | */ 9 | fixedHeader: false, 10 | 11 | /** 12 | * @type {boolean} true | false 13 | * @description Whether show the logo in sidebar 14 | */ 15 | sidebarLogo: true 16 | } 17 | -------------------------------------------------------------------------------- /src/directive/permission/index.js: -------------------------------------------------------------------------------- 1 | import permission from './permission' 2 | 3 | const install = function(Vue) { 4 | Vue.directive('permission', permission) 5 | } 6 | 7 | if (window.Vue) { 8 | window['permission'] = permission 9 | Vue.use(install); // eslint-disable-line 10 | } 11 | 12 | permission.install = install 13 | export default permission 14 | -------------------------------------------------------------------------------- /src/icons/svgo.yml: -------------------------------------------------------------------------------- 1 | # replace default config 2 | 3 | # multipass: true 4 | # full: true 5 | 6 | plugins: 7 | 8 | # - name 9 | # 10 | # or: 11 | # - name: false 12 | # - name: true 13 | # 14 | # or: 15 | # - name: 16 | # param1: 1 17 | # param2: 2 18 | 19 | - removeAttrs: 20 | attrs: 21 | - 'fill' 22 | - 'fill-rule' 23 | -------------------------------------------------------------------------------- /src/utils/auth.js: -------------------------------------------------------------------------------- 1 | import Cookies from 'js-cookie' 2 | 3 | const TokenKey = 'vue_admin_template_token' 4 | 5 | export function getToken() { 6 | return Cookies.get(TokenKey) 7 | } 8 | 9 | export function setToken(token) { 10 | return Cookies.set(TokenKey, token) 11 | } 12 | 13 | export function removeToken() { 14 | return Cookies.remove(TokenKey) 15 | } 16 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "files.autoSave": "off", 3 | "eslint.validate": [ 4 | "javascript", 5 | "javascriptreact", 6 | "vue-html", 7 | { 8 | "language": "vue", 9 | "autoFix": true 10 | } 11 | ], 12 | "eslint.run": "onSave", 13 | "eslint.autoFixOnSave": true, 14 | "editor.codeActionsOnSave": { 15 | "source.fixAll.eslint": true 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/store/modules/api.js: -------------------------------------------------------------------------------- 1 | const baseUrl = process.env.VUE_APP_BASE_API 2 | const socketPort = process.env.VUE_APP_SOCKET_PORT 3 | const api = { 4 | state: { 5 | // Sql 监控 6 | sqlApi: baseUrl + '/druid', 7 | // socket 8 | socketPort: socketPort, 9 | // 文件上传 10 | fileUploadApi: baseUrl + '/file/upload', 11 | // baseUrl, 12 | baseApi: baseUrl 13 | } 14 | } 15 | 16 | export default api 17 | -------------------------------------------------------------------------------- /src/utils/validate.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by PanJiaChen on 16/11/18. 3 | */ 4 | 5 | /** 6 | * @param {string} path 7 | * @returns {Boolean} 8 | */ 9 | export function isExternal(path) { 10 | return /^(https?:|mailto:|tel:)/.test(path) 11 | } 12 | 13 | /** 14 | * @param {string} str 15 | * @returns {Boolean} 16 | */ 17 | export function validUsername(str) { 18 | const valid_map = ['admin', 'editor'] 19 | return valid_map.indexOf(str.trim()) >= 0 20 | } 21 | -------------------------------------------------------------------------------- /src/icons/svg/example.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/store/getters.js: -------------------------------------------------------------------------------- 1 | const getters = { 2 | sidebar: state => state.app.sidebar, 3 | user: state => state.user, 4 | device: state => state.app.device, 5 | // token: state => state.user.token, 6 | avatar: state => state.user.avatar, 7 | name: state => state.user.name, 8 | roles: state => state.user.roles, 9 | permissions: state => state.user.permissions, 10 | routes: state => state.permission.routes, 11 | api: state => state.api, 12 | dic: state => state.dic.dic 13 | } 14 | export default getters 15 | -------------------------------------------------------------------------------- /templates/mapStruct.ejs: -------------------------------------------------------------------------------- 1 | package com.htnova.<%= module %>.mapstruct; 2 | 3 | import com.htnova.common.base.BaseMapStruct; 4 | import com.htnova.<%= module %>.dto.<%= Entity %>Dto; 5 | import com.htnova.<%= module %>.entity.<%= Entity %>; 6 | import org.mapstruct.Mapper; 7 | import org.mapstruct.factory.Mappers; 8 | 9 | @Mapper 10 | public interface <%= Entity %>MapStruct extends BaseMapStruct<<%= Entity %>Dto, <%= Entity %>> { 11 | <%= Entity %>MapStruct INSTANCE = Mappers.getMapper(<%= Entity %>MapStruct.class); 12 | } 13 | -------------------------------------------------------------------------------- /src/styles/mixin.scss: -------------------------------------------------------------------------------- 1 | @mixin clearfix { 2 | &:after { 3 | content: ""; 4 | display: table; 5 | clear: both; 6 | } 7 | } 8 | 9 | @mixin scrollBar { 10 | &::-webkit-scrollbar-track-piece { 11 | background: #d3dce6; 12 | } 13 | 14 | &::-webkit-scrollbar { 15 | width: 6px; 16 | } 17 | 18 | &::-webkit-scrollbar-thumb { 19 | background: #99a9bf; 20 | border-radius: 20px; 21 | } 22 | } 23 | 24 | @mixin relative { 25 | position: relative; 26 | width: 100%; 27 | height: 100%; 28 | } 29 | -------------------------------------------------------------------------------- /src/icons/svg/save.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /src/icons/svg/dictionary.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/views/dashboard/index.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 19 | 20 | 31 | -------------------------------------------------------------------------------- /src/api/auth.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request' 2 | import qs from 'qs' 3 | 4 | export function login(data) { 5 | return request({ 6 | url: '/auth/login', 7 | method: 'post', 8 | headers: { 9 | 'Content-Type': 'application/x-www-form-urlencoded' 10 | }, 11 | data: qs.stringify(data) 12 | }) 13 | } 14 | 15 | export function getInfo() { 16 | return request({ 17 | url: '/auth/info', 18 | method: 'get' 19 | }) 20 | } 21 | 22 | export function logout() { 23 | return request({ 24 | url: '/auth/logout', 25 | method: 'post' 26 | }) 27 | } 28 | -------------------------------------------------------------------------------- /src/icons/svg/table.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/api/userCenter.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request' 2 | 3 | /** 4 | * 获取详情 5 | */ 6 | export function getUserDetail(id) { 7 | return request({ 8 | url: '/user-center/detail', 9 | method: 'get' 10 | }) 11 | } 12 | 13 | /** 14 | * 保存 15 | */ 16 | export function saveUser(data) { 17 | return request({ 18 | url: '/user-center/save', 19 | method: 'post', 20 | data 21 | }) 22 | } 23 | 24 | /** 25 | * 修改密码 26 | */ 27 | export function changePass(data) { 28 | return request({ 29 | url: '/user-center/changePass', 30 | method: 'post', 31 | data 32 | }) 33 | } 34 | -------------------------------------------------------------------------------- /src/icons/svg/password.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/store/index.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import Vuex from 'vuex' 3 | import getters from './getters' 4 | import app from './modules/app' 5 | import settings from './modules/settings' 6 | import user from './modules/user' 7 | import permission from './modules/permission' 8 | import api from './modules/api' 9 | import dic from './modules/dic' 10 | import socket from './modules/socket' 11 | 12 | Vue.use(Vuex) 13 | 14 | const store = new Vuex.Store({ 15 | modules: { 16 | app, 17 | settings, 18 | user, 19 | permission, 20 | api, 21 | dic, 22 | socket 23 | }, 24 | getters 25 | }) 26 | 27 | export default store 28 | -------------------------------------------------------------------------------- /wfd-vue/src/behavior/index.js: -------------------------------------------------------------------------------- 1 | import clickSelected from './clickSelected' 2 | import deleteItem from './deleteItem' 3 | import dragNode from './dragNode' 4 | import dragEdge from './dragEdge' 5 | import dragPanelItemAddNode from './dragPanelItemAddNode' 6 | import hoverAnchorActived from './hoverAnchorActived' 7 | import hoverNodeActived from './hoverNodeActived' 8 | import itemAlign from './itemAlign' 9 | export default function(G6){ 10 | clickSelected(G6); 11 | deleteItem(G6); 12 | dragNode(G6); 13 | dragEdge(G6); 14 | dragPanelItemAddNode(G6); 15 | hoverAnchorActived(G6); 16 | hoverNodeActived(G6); 17 | itemAlign(G6); 18 | } 19 | -------------------------------------------------------------------------------- /.env.development: -------------------------------------------------------------------------------- 1 | # just a flag 2 | ENV = 'development' 3 | 4 | # base api 5 | VUE_APP_BASE_API = '/api' 6 | # socket api 7 | VUE_APP_SOCKET_PORT = '19688' 8 | 9 | # vue-cli uses the VUE_CLI_BABEL_TRANSPILE_MODULES environment variable, 10 | # to control whether the babel-plugin-dynamic-import-node plugin is enabled. 11 | # It only does one thing by converting all import() to require(). 12 | # This configuration can significantly increase the speed of hot updates, 13 | # when you have a large number of pages. 14 | # Detail: https://github.com/vuejs/vue-cli/blob/dev/packages/@vue/babel-preset-app/index.js 15 | 16 | VUE_CLI_BABEL_TRANSPILE_MODULES = true 17 | -------------------------------------------------------------------------------- /mock/table.js: -------------------------------------------------------------------------------- 1 | import Mock from 'mockjs' 2 | 3 | const data = Mock.mock({ 4 | 'items|30': [{ 5 | id: '@id', 6 | title: '@sentence(10, 20)', 7 | 'status|1': ['published', 'draft', 'deleted'], 8 | author: 'name', 9 | display_time: '@datetime', 10 | pageviews: '@integer(300, 5000)' 11 | }] 12 | }) 13 | 14 | export default [ 15 | { 16 | url: '/table/list', 17 | type: 'get', 18 | response: config => { 19 | const items = data.items 20 | return { 21 | code: 20000, 22 | data: { 23 | total: items.length, 24 | items: items 25 | } 26 | } 27 | } 28 | } 29 | ] 30 | -------------------------------------------------------------------------------- /src/views/system/tool/monitorSql/index.vue: -------------------------------------------------------------------------------- 1 |