diff --git a/package.json b/package.json index ca15f57..4c6f09f 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "eladmin", + "name": "eladmin-web", "version": "2.2.0", "license": "Apache-2.0", "description": "eladmin 前端代码", @@ -22,7 +22,7 @@ "clipboard": "1.7.1", "codemirror": "^5.38.0", "connect": "3.6.6", - "echarts": "4.1.0", + "echarts": "^4.1.0", "element-ui": "^2.12.0", "file-saver": "1.3.8", "js-cookie": "2.2.0", @@ -65,7 +65,7 @@ "file-loader": "1.1.11", "friendly-errors-webpack-plugin": "1.7.0", "happypack": "^5.0.1", - "html-webpack-plugin": "4.0.0-alpha", + "html-webpack-plugin": "^3.0.0", "mini-css-extract-plugin": "0.4.1", "node-notifier": "5.2.1", "node-sass": "^4.7.2", @@ -88,11 +88,11 @@ "vue-loader": "15.3.0", "vue-style-loader": "4.1.2", "vue-template-compiler": "2.5.17", - "webpack": "4.16.5", - "webpack-bundle-analyzer": "3.3.2", - "webpack-cli": "3.1.0", - "webpack-dev-server": "3.3.1", - "webpack-merge": "4.1.4" + "webpack": "^4.41.2", + "webpack-bundle-analyzer": "^3.6.0", + "webpack-cli": "^3.3.9", + "webpack-dev-server": "^3.9.0", + "webpack-merge": "^4.2.2" }, "engines": { "node": ">= 6.0.0", diff --git a/src/api/dept.js b/src/api/dept.js index 2ca7b29..1c3624e 100644 --- a/src/api/dept.js +++ b/src/api/dept.js @@ -30,3 +30,12 @@ export function edit(data) { data }) } + +export function downloadDept(params) { + return request({ + url: 'api/dept/download', + method: 'get', + params, + responseType: 'blob' + }) +} diff --git a/src/api/dict.js b/src/api/dict.js index 7d37a9c..e318b3b 100644 --- a/src/api/dict.js +++ b/src/api/dict.js @@ -22,3 +22,12 @@ export function edit(data) { data }) } + +export function downloadDict(params) { + return request({ + url: 'api/dict/download', + method: 'get', + params, + responseType: 'blob' + }) +} diff --git a/src/api/job.js b/src/api/job.js index b887eae..49ba283 100644 --- a/src/api/job.js +++ b/src/api/job.js @@ -35,3 +35,12 @@ export function edit(data) { data }) } + +export function downloadJob(params) { + return request({ + url: 'api/job/download', + method: 'get', + params, + responseType: 'blob' + }) +} diff --git a/src/api/localStorage.js b/src/api/localStorage.js index b2e1bdb..2e68c14 100644 --- a/src/api/localStorage.js +++ b/src/api/localStorage.js @@ -30,3 +30,12 @@ export function edit(data) { data }) } + +export function downloadStorage(params) { + return request({ + url: 'api/localStorage/download', + method: 'get', + params, + responseType: 'blob' + }) +} diff --git a/src/api/log.js b/src/api/log.js index d776e7a..446c030 100644 --- a/src/api/log.js +++ b/src/api/log.js @@ -6,3 +6,12 @@ export function getErrDetail(id) { method: 'get' }) } + +export function downloadLog(params) { + return request({ + url: 'api/logs/download', + method: 'get', + params, + responseType: 'blob' + }) +} diff --git a/src/api/login.js b/src/api/login.js index fd55a3b..fe257d2 100644 --- a/src/api/login.js +++ b/src/api/login.js @@ -22,7 +22,14 @@ export function getInfo() { export function getCodeImg() { return request({ - url: 'auth/vCode', + url: 'auth/code', method: 'get' }) } + +export function logout() { + return request({ + url: 'auth/logout', + method: 'delete' + }) +} diff --git a/src/api/menu.js b/src/api/menu.js index 52a3737..10e8bd1 100644 --- a/src/api/menu.js +++ b/src/api/menu.js @@ -37,3 +37,12 @@ export function edit(data) { data }) } + +export function downloadMenu(params) { + return request({ + url: 'api/menus/download', + method: 'get', + params, + responseType: 'blob' + }) +} diff --git a/src/api/online.js b/src/api/online.js new file mode 100644 index 0000000..cdfe120 --- /dev/null +++ b/src/api/online.js @@ -0,0 +1,17 @@ +import request from '@/utils/request' + +export function del(key) { + return request({ + url: 'auth/online/' + key, + method: 'delete' + }) +} + +export function downloadOnline(params) { + return request({ + url: 'auth/online/download', + method: 'get', + params, + responseType: 'blob' + }) +} diff --git a/src/api/permission.js b/src/api/permission.js deleted file mode 100644 index b8683e8..0000000 --- a/src/api/permission.js +++ /dev/null @@ -1,32 +0,0 @@ -import request from '@/utils/request' - -// 获取所有的权限树 -export function getPermissionTree() { - return request({ - url: 'api/permissions/tree', - method: 'get' - }) -} - -export function add(data) { - return request({ - url: 'api/permissions', - method: 'post', - data - }) -} - -export function del(id) { - return request({ - url: 'api/permissions/' + id, - method: 'delete' - }) -} - -export function edit(data) { - return request({ - url: 'api/permissions', - method: 'put', - data - }) -} diff --git a/src/api/picture.js b/src/api/picture.js index e3ddd86..df9d720 100644 --- a/src/api/picture.js +++ b/src/api/picture.js @@ -14,3 +14,12 @@ export function delAll(ids) { data: ids }) } + +export function downloadPicture(params) { + return request({ + url: 'api/pictures/download', + method: 'get', + params, + responseType: 'blob' + }) +} diff --git a/src/api/qiniu.js b/src/api/qiniu.js index d5b979b..ce75cba 100644 --- a/src/api/qiniu.js +++ b/src/api/qiniu.js @@ -2,14 +2,14 @@ import request from '@/utils/request' export function get() { return request({ - url: 'api/qiNiuConfig', + url: 'api/qiNiuContent/config', method: 'get' }) } export function update(data) { return request({ - url: 'api/qiNiuConfig', + url: 'api/qiNiuContent/config', data, method: 'put' }) @@ -43,3 +43,12 @@ export function delAll(ids) { data: ids }) } + +export function downloadQiNiu(params) { + return request({ + url: 'api/qiNiuContent/download/list', + method: 'get', + params, + responseType: 'blob' + }) +} diff --git a/src/api/redis.js b/src/api/redis.js index b16adc4..fdd3cbc 100644 --- a/src/api/redis.js +++ b/src/api/redis.js @@ -33,3 +33,12 @@ export function edit(data) { data }) } + +export function downloadRedis(params) { + return request({ + url: 'api/redis/download', + method: 'get', + params, + responseType: 'blob' + }) +} diff --git a/src/api/role.js b/src/api/role.js index baf5124..e8792d4 100644 --- a/src/api/role.js +++ b/src/api/role.js @@ -60,3 +60,12 @@ export function editMenu(data) { data }) } + +export function downloadRole(params) { + return request({ + url: 'api/roles/download', + method: 'get', + params, + responseType: 'blob' + }) +} diff --git a/src/api/timing.js b/src/api/timing.js index cdbfddc..fb95575 100644 --- a/src/api/timing.js +++ b/src/api/timing.js @@ -36,3 +36,21 @@ export function execution(id) { method: 'put' }) } + +export function downloadJobs(params) { + return request({ + url: 'api/jobs/download', + method: 'get', + params, + responseType: 'blob' + }) +} + +export function downloadLogs(params) { + return request({ + url: 'api/jobs/download/log', + method: 'get', + params, + responseType: 'blob' + }) +} diff --git a/src/api/user.js b/src/api/user.js index 49e2777..334635f 100644 --- a/src/api/user.js +++ b/src/api/user.js @@ -7,10 +7,12 @@ export function add(data) { data }) } -export function downloadUser() { + +export function downloadUser(params) { return request({ url: 'api/users/download', method: 'get', + params, responseType: 'blob' }) } @@ -49,4 +51,3 @@ export function updateEmail(code, data) { data }) } - diff --git a/src/components/Dict/Dict.js b/src/components/Dict/Dict.js new file mode 100644 index 0000000..1b81a4e --- /dev/null +++ b/src/components/Dict/Dict.js @@ -0,0 +1,29 @@ +import Vue from 'vue' +import { get as getDictDetail } from '@/api/dictDetail' + +export default class Dict { + constructor(dict) { + this.dict = dict + } + + async init(names, completeCallback) { + if (names === undefined || name === null) { + throw new Error('need Dict names') + } + const ps = [] + names.forEach(n => { + Vue.set(this.dict.dict, n, {}) + Vue.set(this.dict.label, n, {}) + Vue.set(this.dict, n, []) + ps.push(getDictDetail(n).then(data => { + this.dict[n].splice(0, 0, ...data.content) + data.content.forEach(d => { + Vue.set(this.dict.dict[n], d.value, d) + Vue.set(this.dict.label[n], d.value, d.label) + }) + })) + }) + await Promise.all(ps) + completeCallback() + } +} diff --git a/src/components/Dict/index.js b/src/components/Dict/index.js new file mode 100644 index 0000000..0952f43 --- /dev/null +++ b/src/components/Dict/index.js @@ -0,0 +1,29 @@ +import Dict from './Dict' + +const install = function(Vue) { + Vue.mixin({ + data() { + if (this.$options.dicts instanceof Array) { + const dict = { + dict: {}, + label: {} + } + return { + dict + } + } + return {} + }, + created() { + if (this.$options.dicts instanceof Array) { + new Dict(this.dict).init(this.$options.dicts, () => { + this.$nextTick(() => { + this.$emit('dictReady') + }) + }) + } + } + }) +} + +export default { install } diff --git a/src/components/Github/index.vue b/src/components/Github/index.vue new file mode 100644 index 0000000..0d181d9 --- /dev/null +++ b/src/components/Github/index.vue @@ -0,0 +1,22 @@ + + + + + diff --git a/src/components/iframe/index.vue b/src/components/Iframe/index.vue similarity index 100% rename from src/components/iframe/index.vue rename to src/components/Iframe/index.vue diff --git a/src/components/permission/index.js b/src/components/Permission/index.js similarity index 100% rename from src/components/permission/index.js rename to src/components/Permission/index.js diff --git a/src/components/permission/permission.js b/src/components/Permission/permission.js similarity index 100% rename from src/components/permission/permission.js rename to src/components/Permission/permission.js diff --git a/src/components/TreeTable/eval.js b/src/components/TreeTable/eval.js deleted file mode 100644 index d9b89e1..0000000 --- a/src/components/TreeTable/eval.js +++ /dev/null @@ -1,29 +0,0 @@ -/** -* @Author: jianglei -* @Date: 2017-10-12 12:06:49 -*/ -'use strict' -import Vue from 'vue' -export default function treeToArray(data, expandAll, parent = null, level = null) { - let tmp = [] - Array.from(data).forEach(function(record) { - if (record._expanded === undefined) { - Vue.set(record, '_expanded', expandAll) - } - let _level = 1 - if (level !== undefined && level !== null) { - _level = level + 1 - } - Vue.set(record, '_level', _level) - // 如果有父元素 - if (parent) { - Vue.set(record, 'parent', parent) - } - tmp.push(record) - if (record.children && record.children.length > 0) { - const children = treeToArray(record.children, expandAll, record, _level) - tmp = tmp.concat(children) - } - }) - return tmp -} diff --git a/src/components/TreeTable/index.vue b/src/components/TreeTable/index.vue deleted file mode 100644 index a48765c..0000000 --- a/src/components/TreeTable/index.vue +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - diff --git a/src/components/TreeTable/readme.md b/src/components/TreeTable/readme.md deleted file mode 100644 index 5b598e1..0000000 --- a/src/components/TreeTable/readme.md +++ /dev/null @@ -1,89 +0,0 @@ -## 写在前面 -此组件仅提供一个创建TreeTable的解决思路 - -## prop说明 -#### *data* - **必填** - - 原始数据,要求是一个数组或者对象 - ```javascript - [{ - key1: value1, - key2: value2, - children: [{ - key1: value1 - }, - { - key1: value1 - }] - }, - { - key1: value1 - }] - ``` - 或者 - ```javascript - { - key1: value1, - key2: value2, - children: [{ - key1: value1 - }, - { - key1: value1 - }] - } - ``` - -#### columns - 列属性,要求是一个数组 - - 1. text: 显示在表头的文字 - 2. value: 对应data的key。treeTable将显示相应的value - 3. width: 每列的宽度,为一个数字(可选) - - 如果你想要每个字段都有自定义的样式或者嵌套其他组件,columns可不提供,直接像在el-table一样写即可,如果没有自定义内容,提供columns将更加的便捷方便 - - 如果你有几个字段是需要自定义的,几个不需要,那么可以将不需要自定义的字段放入columns,将需要自定义的内容放入到slot中,详情见后文 - ```javascript - [{ - value:string, - text:string, - width:number - },{ - value:string, - text:string, - width:number - }] - ``` - -#### expandAll - 是否默认全部展开,boolean值,默认为false - -#### evalFunc - 解析函数,function,非必须 - - 如果不提供,将使用默认的[evalFunc](./eval.js) - - 如果提供了evalFunc,那么会用提供的evalFunc去解析data,并返回treeTable渲染所需要的值。如何编写一个evalFunc,请参考[*eval.js*](https://github.com/PanJiaChen/vue-element-admin/blob/master/src/components/TreeTable/eval.js)或[*customEval.js*](https://github.com/PanJiaChen/vue-element-admin/blob/master/src/views/table/treeTable/customEval.js) - -#### evalArgs - 解析函数的参数,是一个数组 - - **请注意,自定义的解析函数参数第一个为this.data,第二个参数为, this.expandAll,你不需要在evalArgs填写。一定记住,这两个参数是强制性的,并且位置不可颠倒** *this.data为需要解析的数据,this.expandAll为是否默认展开* - - 如你的解析函数需要的参数为`(this.data, this.expandAll,1,2,3,4)`,那么你只需要将`[1,2,3,4]`赋值给`evalArgs`就可以了 - - 如果你的解析函数参数只有`(this.data, this.expandAll)`,那么就可以不用填写evalArgs了 - - 具体可参考[*customEval.js*](https://github.com/PanJiaChen/vue-element-admin/blob/master/src/views/table/treeTable/customEval.js)的函数参数和[customTreeTable](https://github.com/PanJiaChen/vue-element-admin/blob/master/src/views/table/treeTable/customTreeTable.vue)的`evalArgs`属性值 - - ## slot - 这是一个自定义列的插槽。 - - 默认情况下,treeTable只有一行行展示数据的功能。但是一般情况下,我们会要给行加上一个操作按钮或者根据当行数据展示不同的样式,这时我们就需要自定义列了。请参考[customTreeTable](https://github.com/PanJiaChen/vue-element-admin/blob/master/src/views/table/treeTable/customTreeTable.vue),[实例效果](https://panjiachen.github.io/vue-element-admin/#/table/tree-table) - - `slot`和`columns属性`可同时存在,columns里面的数据列会在slot自定义列的左边展示 - - ## 其他 - 如果有其他的需求,请参考[el-table](http://element-cn.eleme.io/#/en-US/component/table)的api自行修改index.vue diff --git a/src/icons/svg/index.svg b/src/icons/svg/index.svg index 5317d37..fdb3826 100644 --- a/src/icons/svg/index.svg +++ b/src/icons/svg/index.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/src/icons/svg/monitor.svg b/src/icons/svg/monitor.svg index 3be8f59..c5a1f46 100644 --- a/src/icons/svg/monitor.svg +++ b/src/icons/svg/monitor.svg @@ -1 +1,5 @@ - \ No newline at end of file +<<<<<<< HEAD + +======= + +>>>>>>> 2.3dev diff --git a/src/icons/svg/system.svg b/src/icons/svg/system.svg index 077d9ea..54fedb9 100644 --- a/src/icons/svg/system.svg +++ b/src/icons/svg/system.svg @@ -1 +1,5 @@ - \ No newline at end of file +<<<<<<< HEAD + +======= + +>>>>>>> 2.3dev diff --git a/src/layout/components/Navbar.vue b/src/layout/components/Navbar.vue index db0ed5b..900e585 100644 --- a/src/layout/components/Navbar.vue +++ b/src/layout/components/Navbar.vue @@ -4,6 +4,11 @@
+