├── .babelrc ├── .editorconfig ├── .gitignore ├── .jshintrc ├── .vscode ├── .browse.VC.db ├── .browse.VC.db-shm └── .browse.VC.db-wal ├── README.md ├── api └── db.json ├── build ├── build.js ├── dev-client.js ├── dev-server.js ├── utils.js ├── webpack.base.conf.js ├── webpack.dev.conf.js └── webpack.prod.conf.js ├── config.js ├── index.html ├── jsconfig.json ├── package.json ├── src ├── app.js ├── assets │ ├── image │ │ ├── avatar.png │ │ ├── avatar04.png │ │ ├── avatar2.png │ │ ├── avatar3.png │ │ ├── avatar5.png │ │ ├── boxed-bg.jpg │ │ ├── boxed-bg.png │ │ ├── default-50x50.gif │ │ ├── icons.png │ │ ├── photo1.png │ │ ├── photo2.png │ │ ├── photo3.jpg │ │ ├── photo4.jpg │ │ ├── user1-128x128.jpg │ │ ├── user2-160x160.jpg │ │ ├── user3-128x128.jpg │ │ ├── user4-128x128.jpg │ │ ├── user5-128x128.jpg │ │ ├── user6-128x128.jpg │ │ ├── user7-128x128.jpg │ │ └── user8-128x128.jpg │ └── logo.png ├── components │ ├── common │ │ ├── data-define.js │ │ ├── info-panel.vue │ │ ├── jsonview.vue │ │ └── slide-panel.vue │ ├── container.vue │ ├── dashboard.vue │ ├── data │ │ ├── detail.vue │ │ ├── index.vue │ │ └── new-set.vue │ ├── layout │ │ ├── content.vue │ │ ├── footer.vue │ │ ├── header.vue │ │ └── menu.vue │ ├── login.vue │ ├── not-found.vue │ ├── tasks │ │ ├── detail.vue │ │ ├── index.vue │ │ └── new-task.vue │ └── users │ │ ├── index.vue │ │ └── new.vue └── config │ └── menus.js ├── static ├── .gitkeep └── css │ └── style.css └── test ├── e2e ├── custom-assertions │ └── elementCount.js ├── nightwatch.conf.js ├── runner.js └── specs │ └── test.js └── unit ├── .eslintrc ├── index.js ├── karma.conf.js └── specs └── Hello.spec.js /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["es2015", "stage-2"], 3 | "plugins": ["transform-runtime"], 4 | "comments": false 5 | } 6 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | indent_style = space 6 | indent_size = 2 7 | end_of_line = lf 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules/ 3 | dist/ 4 | npm-debug.log 5 | selenium-debug.log 6 | test/unit/coverage 7 | test/e2e/reports 8 | -------------------------------------------------------------------------------- /.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | // JSHint Default Configuration File (as on JSHint website) 3 | // See http://jshint.com/docs/ for more details 4 | 5 | "maxerr" : 50, // {int} Maximum error before stopping 6 | 7 | // Enforcing 8 | "bitwise" : true, // true: Prohibit bitwise operators (&, |, ^, etc.) 9 | "camelcase" : false, // true: Identifiers must be in camelCase 10 | "curly" : true, // true: Require {} for every new block or scope 11 | "eqeqeq" : true, // true: Require triple equals (===) for comparison 12 | "forin" : true, // true: Require filtering for..in loops with obj.hasOwnProperty() 13 | "freeze" : true, // true: prohibits overwriting prototypes of native objects such as Array, Date etc. 14 | "immed" : false, // true: Require immediate invocations to be wrapped in parens e.g. `(function () { } ());` 15 | "latedef" : false, // true: Require variables/functions to be defined before being used 16 | "newcap" : false, // true: Require capitalization of all constructor functions e.g. `new F()` 17 | "noarg" : true, // true: Prohibit use of `arguments.caller` and `arguments.callee` 18 | "noempty" : true, // true: Prohibit use of empty blocks 19 | "nonbsp" : true, // true: Prohibit "non-breaking whitespace" characters. 20 | "nonew" : false, // true: Prohibit use of constructors for side-effects (without assignment) 21 | "plusplus" : false, // true: Prohibit use of `++` and `--` 22 | "quotmark" : false, // Quotation mark consistency: 23 | // false : do nothing (default) 24 | // true : ensure whatever is used is consistent 25 | // "single" : require single quotes 26 | // "double" : require double quotes 27 | "undef" : true, // true: Require all non-global variables to be declared (prevents global leaks) 28 | "unused" : true, // Unused variables: 29 | // true : all variables, last function parameter 30 | // "vars" : all variables only 31 | // "strict" : all variables, all function parameters 32 | "strict" : true, // true: Requires all functions run in ES5 Strict Mode 33 | "maxparams" : false, // {int} Max number of formal params allowed per function 34 | "maxdepth" : false, // {int} Max depth of nested blocks (within functions) 35 | "maxstatements" : false, // {int} Max number statements per function 36 | "maxcomplexity" : false, // {int} Max cyclomatic complexity per function 37 | "maxlen" : false, // {int} Max number of characters per line 38 | "varstmt" : false, // true: Disallow any var statements. Only `let` and `const` are allowed. 39 | 40 | // Relaxing 41 | "asi" : false, // true: Tolerate Automatic Semicolon Insertion (no semicolons) 42 | "boss" : false, // true: Tolerate assignments where comparisons would be expected 43 | "debug" : false, // true: Allow debugger statements e.g. browser breakpoints. 44 | "eqnull" : false, // true: Tolerate use of `== null` 45 | "esversion" : 5, // {int} Specify the ECMAScript version to which the code must adhere. 46 | "moz" : false, // true: Allow Mozilla specific syntax (extends and overrides esnext features) 47 | // (ex: `for each`, multiple try/catch, function expression…) 48 | "evil" : false, // true: Tolerate use of `eval` and `new Function()` 49 | "expr" : false, // true: Tolerate `ExpressionStatement` as Programs 50 | "funcscope" : false, // true: Tolerate defining variables inside control statements 51 | "globalstrict" : false, // true: Allow global "use strict" (also enables 'strict') 52 | "iterator" : false, // true: Tolerate using the `__iterator__` property 53 | "lastsemic" : false, // true: Tolerate omitting a semicolon for the last statement of a 1-line block 54 | "laxbreak" : false, // true: Tolerate possibly unsafe line breakings 55 | "laxcomma" : false, // true: Tolerate comma-first style coding 56 | "loopfunc" : false, // true: Tolerate functions being defined in loops 57 | "multistr" : false, // true: Tolerate multi-line strings 58 | "noyield" : false, // true: Tolerate generator functions with no yield statement in them. 59 | "notypeof" : false, // true: Tolerate invalid typeof operator values 60 | "proto" : false, // true: Tolerate using the `__proto__` property 61 | "scripturl" : false, // true: Tolerate script-targeted URLs 62 | "shadow" : false, // true: Allows re-define variables later in code e.g. `var x=1; x=2;` 63 | "sub" : false, // true: Tolerate using `[]` notation when it can still be expressed in dot notation 64 | "supernew" : false, // true: Tolerate `new function () { ... };` and `new Object;` 65 | "validthis" : false, // true: Tolerate using this in a non-constructor function 66 | 67 | // Environments 68 | "browser" : true, // Web Browser (window, document, etc) 69 | "browserify" : false, // Browserify (node.js code in the browser) 70 | "couch" : false, // CouchDB 71 | "devel" : true, // Development/debugging (alert, confirm, etc) 72 | "dojo" : false, // Dojo Toolkit 73 | "jasmine" : false, // Jasmine 74 | "jquery" : false, // jQuery 75 | "mocha" : true, // Mocha 76 | "mootools" : false, // MooTools 77 | "node" : false, // Node.js 78 | "nonstandard" : false, // Widely adopted globals (escape, unescape, etc) 79 | "phantom" : false, // PhantomJS 80 | "prototypejs" : false, // Prototype and Scriptaculous 81 | "qunit" : false, // QUnit 82 | "rhino" : false, // Rhino 83 | "shelljs" : false, // ShellJS 84 | "typed" : false, // Globals for typed array constructions 85 | "worker" : false, // Web Workers 86 | "wsh" : false, // Windows Scripting Host 87 | "yui" : false, // Yahoo User Interface 88 | 89 | // Custom Globals 90 | "globals" : {} // additional predefined global variables 91 | } -------------------------------------------------------------------------------- /.vscode/.browse.VC.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jasine/Vue-AdminLte/76d76aeb464ed8554713d87b3eb02dfbbab35ca9/.vscode/.browse.VC.db -------------------------------------------------------------------------------- /.vscode/.browse.VC.db-shm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jasine/Vue-AdminLte/76d76aeb464ed8554713d87b3eb02dfbbab35ca9/.vscode/.browse.VC.db-shm -------------------------------------------------------------------------------- /.vscode/.browse.VC.db-wal: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jasine/Vue-AdminLte/76d76aeb464ed8554713d87b3eb02dfbbab35ca9/.vscode/.browse.VC.db-wal -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Vue-AdminLte 2 | 3 | > Vue-AdminLte 4 | 5 | ## Build Setup 6 | 7 | ``` bash 8 | # install dependencies 9 | npm install 10 | 11 | # serve with hot reload at localhost:8080 12 | npm run dev 13 | 14 | # build for production with minification 15 | npm run build 16 | 17 | # run unit tests 18 | npm run unit 19 | 20 | # run e2e tests 21 | npm run e2e 22 | 23 | # run all tests 24 | npm test 25 | ``` 26 | 27 | ## Loaded libraries 28 | 29 | * [Vue.js](https://github.com/vuejs/vue) 30 | * [jQuery](https://github.com/jquery/jquery) 31 | * [Bootstrap](https://github.com/twbs/bootstrap) 32 | * [Font-Awesome](https://github.com/FortAwesome/Font-Awesome) 33 | * [Vue-Strap](https://github.com/yuche/vue-strap) 34 | 35 | Enjoy -------------------------------------------------------------------------------- /api/db.json: -------------------------------------------------------------------------------- 1 | { 2 | "datesets": [ 3 | { 4 | "id": 0, 5 | "name": "Burke", 6 | "type": { 7 | "id": 2, 8 | "label": "测试集" 9 | }, 10 | "lable": "Quordate", 11 | "c_time": "Thursday, June 18, 2015 5:52 AM", 12 | "m_time": "Tuesday, April 8, 2014 9:46 AM", 13 | "URI": "http://placehold.it/32x32", 14 | "picCount": 24, 15 | "markCount": 9, 16 | "guid": "0329b0b5-cdfe-4011-97bf-7baf29f74bf8", 17 | "isActive": false, 18 | "data": { 19 | "pic": "http://placehold.it/90x60", 20 | "mark": "{\"name\": \"Adaline Carroll\",\"email\": \"Albina.Ledner@gmail.com\",\"address\": \"545 Fritsch Locks\",\"bio\": \"dolorem officiis doloribus ut\",\"image\": \"https://s3.amazonaws.com/uifaces/faces/twitter/joelhelin/128.jpg\"}" 21 | } 22 | }, 23 | { 24 | "id": 1, 25 | "name": "Jones", 26 | "type": { 27 | "id": 2, 28 | "label": "部分标注" 29 | }, 30 | "lable": "Xeronk", 31 | "c_time": "Saturday, May 2, 2015 10:11 AM", 32 | "m_time": "Sunday, November 8, 2015 10:46 AM", 33 | "URI": "http://placehold.it/32x32", 34 | "picCount": 18, 35 | "markCount": 5, 36 | "guid": "f2c1730b-ed09-4b13-a2b6-89622d8ec73a", 37 | "isActive": true, 38 | "data": { 39 | "pic": "http://placehold.it/90x60", 40 | "mark": "{\"name\": \"Adaline Carroll\",\"email\": \"Albina.Ledner@gmail.com\",\"address\": \"545 Fritsch Locks\",\"bio\": \"dolorem officiis doloribus ut\",\"image\": \"https://s3.amazonaws.com/uifaces/faces/twitter/joelhelin/128.jpg\"}" 41 | } 42 | }, 43 | { 44 | "id": 2, 45 | "name": "Bush", 46 | "type": { 47 | "id": 2, 48 | "label": "已标注" 49 | }, 50 | "lable": "Telequiet", 51 | "c_time": "Monday, December 1, 2014 3:34 AM", 52 | "m_time": "Wednesday, September 10, 2014 3:03 AM", 53 | "URI": "http://placehold.it/32x32", 54 | "picCount": 12, 55 | "markCount": 9, 56 | "guid": "d6cf2aca-c8c1-4cb2-a686-13177d83aa27", 57 | "isActive": false, 58 | "data": { 59 | "pic": "http://placehold.it/90x60", 60 | "mark": "{\"name\": \"Adaline Carroll\",\"email\": \"Albina.Ledner@gmail.com\",\"address\": \"545 Fritsch Locks\",\"bio\": \"dolorem officiis doloribus ut\",\"image\": \"https://s3.amazonaws.com/uifaces/faces/twitter/joelhelin/128.jpg\"}" 61 | } 62 | }, 63 | { 64 | "id": 3, 65 | "name": "Rachelle", 66 | "type": { 67 | "id": 1, 68 | "label": "部分标注" 69 | }, 70 | "lable": "Kaggle", 71 | "c_time": "Friday, January 24, 2014 10:09 AM", 72 | "m_time": "Friday, July 4, 2014 7:46 AM", 73 | "URI": "http://placehold.it/32x32", 74 | "picCount": 46, 75 | "markCount": 4, 76 | "guid": "f2937d3d-50c7-405a-aed7-e9e9364d4e66", 77 | "isActive": false, 78 | "data": { 79 | "pic": "http://placehold.it/90x60", 80 | "mark": "{\"name\": \"Adaline Carroll\",\"email\": \"Albina.Ledner@gmail.com\",\"address\": \"545 Fritsch Locks\",\"bio\": \"dolorem officiis doloribus ut\",\"image\": \"https://s3.amazonaws.com/uifaces/faces/twitter/joelhelin/128.jpg\"}" 81 | } 82 | }, 83 | { 84 | "id": 4, 85 | "name": "Lane", 86 | "type": { 87 | "id": 1, 88 | "label": "部分标注" 89 | }, 90 | "lable": "Roughies", 91 | "c_time": "Saturday, October 24, 2015 7:07 AM", 92 | "m_time": "Sunday, August 31, 2014 9:13 AM", 93 | "URI": "http://placehold.it/32x32", 94 | "picCount": 17, 95 | "markCount": 6, 96 | "guid": "bd3b37d8-0e9e-4dd4-b69c-21be2fd06121", 97 | "isActive": false, 98 | "data": { 99 | "pic": "http://placehold.it/90x60", 100 | "mark": "{\"name\": \"Adaline Carroll\",\"email\": \"Albina.Ledner@gmail.com\",\"address\": \"545 Fritsch Locks\",\"bio\": \"dolorem officiis doloribus ut\",\"image\": \"https://s3.amazonaws.com/uifaces/faces/twitter/joelhelin/128.jpg\"}" 101 | } 102 | }, 103 | { 104 | "id": 5, 105 | "name": "Clay", 106 | "type": { 107 | "id": 0, 108 | "label": "已标注" 109 | }, 110 | "lable": "Zillacom", 111 | "c_time": "Saturday, March 26, 2016 7:53 AM", 112 | "m_time": "Saturday, December 27, 2014 6:48 PM", 113 | "URI": "http://placehold.it/32x32", 114 | "picCount": 57, 115 | "markCount": 0, 116 | "guid": "d6aed5a2-debd-4f33-8ab3-95f83562357d", 117 | "isActive": false, 118 | "data": { 119 | "pic": "http://placehold.it/90x60", 120 | "mark": "{\"name\": \"Adaline Carroll\",\"email\": \"Albina.Ledner@gmail.com\",\"address\": \"545 Fritsch Locks\",\"bio\": \"dolorem officiis doloribus ut\",\"image\": \"https://s3.amazonaws.com/uifaces/faces/twitter/joelhelin/128.jpg\"}" 121 | } 122 | }, 123 | { 124 | "id": 6, 125 | "name": "Stark", 126 | "type": { 127 | "id": 1, 128 | "label": "已标注" 129 | }, 130 | "lable": "Netur", 131 | "c_time": "Sunday, April 27, 2014 6:27 AM", 132 | "m_time": "Wednesday, April 22, 2015 8:52 PM", 133 | "URI": "http://placehold.it/32x32", 134 | "picCount": 28, 135 | "markCount": 8, 136 | "guid": "859a2efa-49b8-4f2c-b037-eb2a556f161d", 137 | "isActive": false, 138 | "data": { 139 | "pic": "http://placehold.it/90x60", 140 | "mark": "{\"name\": \"Adaline Carroll\",\"email\": \"Albina.Ledner@gmail.com\",\"address\": \"545 Fritsch Locks\",\"bio\": \"dolorem officiis doloribus ut\",\"image\": \"https://s3.amazonaws.com/uifaces/faces/twitter/joelhelin/128.jpg\"}" 141 | } 142 | }, 143 | { 144 | "id": 7, 145 | "name": "Christensen", 146 | "type": { 147 | "id": 1, 148 | "label": "测试集" 149 | }, 150 | "lable": "Comstruct", 151 | "c_time": "Saturday, February 7, 2015 12:01 PM", 152 | "m_time": "Tuesday, October 6, 2015 7:43 AM", 153 | "URI": "http://placehold.it/32x32", 154 | "picCount": 57, 155 | "markCount": 2, 156 | "guid": "1377c5ad-fbd5-48b1-85ad-80813e70c7c2", 157 | "isActive": true, 158 | "data": { 159 | "pic": "http://placehold.it/90x60", 160 | "mark": "{\"name\": \"Adaline Carroll\",\"email\": \"Albina.Ledner@gmail.com\",\"address\": \"545 Fritsch Locks\",\"bio\": \"dolorem officiis doloribus ut\",\"image\": \"https://s3.amazonaws.com/uifaces/faces/twitter/joelhelin/128.jpg\"}" 161 | } 162 | }, 163 | { 164 | "id": 8, 165 | "name": "Madeline", 166 | "type": { 167 | "id": 1, 168 | "label": "部分标注" 169 | }, 170 | "lable": "Interfind", 171 | "c_time": "Friday, January 17, 2014 8:34 PM", 172 | "m_time": "Sunday, July 6, 2014 1:35 PM", 173 | "URI": "http://placehold.it/32x32", 174 | "picCount": 18, 175 | "markCount": 8, 176 | "guid": "b2c4c621-6acc-460f-8018-dce5e06d638f", 177 | "isActive": true, 178 | "data": { 179 | "pic": "http://placehold.it/90x60", 180 | "mark": "{\"name\": \"Adaline Carroll\",\"email\": \"Albina.Ledner@gmail.com\",\"address\": \"545 Fritsch Locks\",\"bio\": \"dolorem officiis doloribus ut\",\"image\": \"https://s3.amazonaws.com/uifaces/faces/twitter/joelhelin/128.jpg\"}" 181 | } 182 | }, 183 | { 184 | "id": 9, 185 | "name": "Wise", 186 | "type": { 187 | "id": 0, 188 | "label": "已标注" 189 | }, 190 | "lable": "Manglo", 191 | "c_time": "Thursday, March 27, 2014 2:23 PM", 192 | "m_time": "Thursday, March 12, 2015 7:21 AM", 193 | "URI": "http://placehold.it/32x32", 194 | "picCount": 42, 195 | "markCount": 8, 196 | "guid": "bab9c8fd-88c1-4e15-8480-7dde1031c24b", 197 | "isActive": true, 198 | "data": { 199 | "pic": "http://placehold.it/90x60", 200 | "mark": "{\"name\": \"Adaline Carroll\",\"email\": \"Albina.Ledner@gmail.com\",\"address\": \"545 Fritsch Locks\",\"bio\": \"dolorem officiis doloribus ut\",\"image\": \"https://s3.amazonaws.com/uifaces/faces/twitter/joelhelin/128.jpg\"}" 201 | } 202 | }, 203 | { 204 | "id": 10, 205 | "name": "Mooney", 206 | "type": { 207 | "id": 2, 208 | "label": "测试集" 209 | }, 210 | "lable": "Gonkle", 211 | "c_time": "Wednesday, November 19, 2014 9:03 AM", 212 | "m_time": "Friday, April 3, 2015 7:55 AM", 213 | "URI": "http://placehold.it/32x32", 214 | "picCount": 26, 215 | "markCount": 0, 216 | "guid": "791fab14-c726-48c0-9beb-474c458307c5", 217 | "isActive": true, 218 | "data": { 219 | "pic": "http://placehold.it/90x60", 220 | "mark": "{\"name\": \"Adaline Carroll\",\"email\": \"Albina.Ledner@gmail.com\",\"address\": \"545 Fritsch Locks\",\"bio\": \"dolorem officiis doloribus ut\",\"image\": \"https://s3.amazonaws.com/uifaces/faces/twitter/joelhelin/128.jpg\"}" 221 | } 222 | }, 223 | { 224 | "id": 11, 225 | "name": "Soto", 226 | "type": { 227 | "id": 2, 228 | "label": "已标注" 229 | }, 230 | "lable": "Avenetro", 231 | "c_time": "Friday, April 24, 2015 12:20 AM", 232 | "m_time": "Saturday, February 22, 2014 5:14 PM", 233 | "URI": "http://placehold.it/32x32", 234 | "picCount": 29, 235 | "markCount": 8, 236 | "guid": "cff3fbbd-1bba-4caf-872e-bc554de4b14f", 237 | "isActive": true, 238 | "data": { 239 | "pic": "http://placehold.it/90x60", 240 | "mark": "{\"name\": \"Adaline Carroll\",\"email\": \"Albina.Ledner@gmail.com\",\"address\": \"545 Fritsch Locks\",\"bio\": \"dolorem officiis doloribus ut\",\"image\": \"https://s3.amazonaws.com/uifaces/faces/twitter/joelhelin/128.jpg\"}" 241 | } 242 | }, 243 | { 244 | "id": 12, 245 | "name": "Elisabeth", 246 | "type": { 247 | "id": 1, 248 | "label": "测试集" 249 | }, 250 | "lable": "Vantage", 251 | "c_time": "Saturday, August 16, 2014 10:08 AM", 252 | "m_time": "Friday, April 4, 2014 5:30 PM", 253 | "URI": "http://placehold.it/32x32", 254 | "picCount": 31, 255 | "markCount": 9, 256 | "guid": "23757edf-d017-4299-a719-3e8293f2077b", 257 | "isActive": true, 258 | "data": { 259 | "pic": "http://placehold.it/90x60", 260 | "mark": "{\"name\": \"Adaline Carroll\",\"email\": \"Albina.Ledner@gmail.com\",\"address\": \"545 Fritsch Locks\",\"bio\": \"dolorem officiis doloribus ut\",\"image\": \"https://s3.amazonaws.com/uifaces/faces/twitter/joelhelin/128.jpg\"}" 261 | } 262 | }, 263 | { 264 | "id": 13, 265 | "name": "Bette", 266 | "type": { 267 | "id": 1, 268 | "label": "部分标注" 269 | }, 270 | "lable": "Recognia", 271 | "c_time": "Friday, December 18, 2015 10:35 AM", 272 | "m_time": "Friday, October 9, 2015 9:25 AM", 273 | "URI": "http://placehold.it/32x32", 274 | "picCount": 11, 275 | "markCount": 6, 276 | "guid": "f0581d66-1765-4407-8e9a-6fa3dc4c93be", 277 | "isActive": false, 278 | "data": { 279 | "pic": "http://placehold.it/90x60", 280 | "mark": "{\"name\": \"Adaline Carroll\",\"email\": \"Albina.Ledner@gmail.com\",\"address\": \"545 Fritsch Locks\",\"bio\": \"dolorem officiis doloribus ut\",\"image\": \"https://s3.amazonaws.com/uifaces/faces/twitter/joelhelin/128.jpg\"}" 281 | } 282 | }, 283 | { 284 | "id": 14, 285 | "name": "Duran", 286 | "type": { 287 | "id": 0, 288 | "label": "部分标注" 289 | }, 290 | "lable": "Deviltoe", 291 | "c_time": "Wednesday, October 1, 2014 11:33 PM", 292 | "m_time": "Friday, July 25, 2014 2:45 AM", 293 | "URI": "http://placehold.it/32x32", 294 | "picCount": 57, 295 | "markCount": 4, 296 | "guid": "fc3b9d27-f892-47a4-a803-e2c090325f8c", 297 | "isActive": false, 298 | "data": { 299 | "pic": "http://placehold.it/90x60", 300 | "mark": "{\"name\": \"Adaline Carroll\",\"email\": \"Albina.Ledner@gmail.com\",\"address\": \"545 Fritsch Locks\",\"bio\": \"dolorem officiis doloribus ut\",\"image\": \"https://s3.amazonaws.com/uifaces/faces/twitter/joelhelin/128.jpg\"}" 301 | } 302 | } 303 | ] 304 | } -------------------------------------------------------------------------------- /build/build.js: -------------------------------------------------------------------------------- 1 | // https://github.com/shelljs/shelljs 2 | require('shelljs/global') 3 | env.NODE_ENV = 'production' 4 | 5 | var path = require('path') 6 | var config = require('../config') 7 | var ora = require('ora') 8 | var webpack = require('webpack') 9 | var webpackConfig = require('./webpack.prod.conf') 10 | 11 | console.log( 12 | ' Tip:\n' + 13 | ' Built files are meant to be served over an HTTP server.\n' + 14 | ' Opening index.html over file:// won\'t work.\n' 15 | ) 16 | 17 | var spinner = ora('building for production...') 18 | spinner.start() 19 | 20 | var assetsPath = path.join(config.build.assetsRoot, config.build.assetsSubDirectory) 21 | rm('-rf', assetsPath) 22 | mkdir('-p', assetsPath) 23 | cp('-R', 'static/', assetsPath) 24 | 25 | webpack(webpackConfig, function (err, stats) { 26 | spinner.stop() 27 | if (err) throw err 28 | process.stdout.write(stats.toString({ 29 | colors: true, 30 | modules: false, 31 | children: false, 32 | chunks: false, 33 | chunkModules: false 34 | }) + '\n') 35 | }) 36 | -------------------------------------------------------------------------------- /build/dev-client.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | require('eventsource-polyfill') 3 | var hotClient = require('webpack-hot-middleware/client?noInfo=true&reload=true') 4 | 5 | hotClient.subscribe(function (event) { 6 | if (event.action === 'reload') { 7 | window.location.reload() 8 | } 9 | }) 10 | -------------------------------------------------------------------------------- /build/dev-server.js: -------------------------------------------------------------------------------- 1 | var path = require('path') 2 | var express = require('express') 3 | var webpack = require('webpack') 4 | var config = require('../config') 5 | var proxyMiddleware = require('http-proxy-middleware') 6 | var webpackConfig = process.env.NODE_ENV === 'testing' 7 | ? require('./webpack.prod.conf') 8 | : require('./webpack.dev.conf') 9 | 10 | 11 | 12 | var apiPort = process.env.APIPORT || config.dev.apiPort 13 | var jsonServer=require('json-server'); 14 | var server = jsonServer.create() 15 | // Set default middlewares (logger, static, cors and no-cache) 16 | server.use(jsonServer.defaults()) 17 | var router = jsonServer.router('api/db.json'); 18 | server.use(router) 19 | server.listen(apiPort) 20 | 21 | 22 | // default port where dev server listens for incoming traffic 23 | var port = process.env.PORT || config.dev.port 24 | // Define HTTP proxies to your custom API backend 25 | // https://github.com/chimurai/http-proxy-middleware 26 | var proxyTable = config.dev.proxyTable 27 | 28 | var app = express() 29 | var compiler = webpack(webpackConfig) 30 | 31 | 32 | var devMiddleware = require('webpack-dev-middleware')(compiler, { 33 | publicPath: webpackConfig.output.publicPath, 34 | stats: { 35 | colors: true, 36 | chunks: false 37 | } 38 | }) 39 | 40 | var hotMiddleware = require('webpack-hot-middleware')(compiler) 41 | // force page reload when html-webpack-plugin template changes 42 | compiler.plugin('compilation', function (compilation) { 43 | compilation.plugin('html-webpack-plugin-after-emit', function (data, cb) { 44 | hotMiddleware.publish({ action: 'reload' }) 45 | cb() 46 | }) 47 | }) 48 | 49 | var context = '/api'; // requests with this path will be proxied 50 | // use Array for multipath: ['/api', '/rest'] 51 | 52 | // configure proxy middleware options 53 | var options = { 54 | target: 'http://192.168.2.16:5001', // target host 55 | changeOrigin: true, // needed for virtual hosted sites 56 | ws: true, // proxy websockets 57 | pathRewrite: { 58 | '^/api' : '/' // rewrite path 59 | }, 60 | proxyTable: { 61 | // when request.headers.host == 'dev.localhost:3000', 62 | // override target 'http://www.example.org' to 'http://localhost:8000' 63 | //'dev.localhost:3000' : 'http://localhost:8081' 64 | } 65 | } 66 | // create the proxy 67 | var apiProxy = proxyMiddleware(context, options); 68 | 69 | app.use(apiProxy); 70 | 71 | // proxy api requests 72 | // Object.keys(proxyTable).forEach(function (context) { 73 | // var options = proxyTable[context] 74 | // if (typeof options === 'string') { 75 | // options = { target: options } 76 | // } 77 | // app.use(proxyMiddleware(context, options)) 78 | // }) 79 | 80 | // handle fallback for HTML5 history API 81 | app.use(require('connect-history-api-fallback')()) 82 | 83 | 84 | 85 | 86 | // serve webpack bundle output 87 | app.use(devMiddleware) 88 | 89 | // enable hot-reload and state-preserving 90 | // compilation error display 91 | app.use(hotMiddleware) 92 | 93 | 94 | 95 | 96 | 97 | // serve pure static assets 98 | var staticPath = path.posix.join(config.build.assetsPublicPath, config.build.assetsSubDirectory) 99 | app.use(staticPath, express.static('./static')) 100 | 101 | 102 | module.exports = app.listen(port, function (err) { 103 | if (err) { 104 | console.log(err) 105 | return 106 | } 107 | console.log('Listening at http://localhost:' + port + '\n') 108 | }) 109 | -------------------------------------------------------------------------------- /build/utils.js: -------------------------------------------------------------------------------- 1 | var path = require('path') 2 | var config = require('../config') 3 | var ExtractTextPlugin = require('extract-text-webpack-plugin') 4 | 5 | exports.assetsPath = function (_path) { 6 | return path.posix.join(config.build.assetsSubDirectory, _path) 7 | } 8 | 9 | exports.cssLoaders = function (options) { 10 | options = options || {} 11 | // generate loader string to be used with extract text plugin 12 | function generateLoaders (loaders) { 13 | var sourceLoader = loaders.map(function (loader) { 14 | var extraParamChar 15 | if (/\?/.test(loader)) { 16 | loader = loader.replace(/\?/, '-loader?') 17 | extraParamChar = '&' 18 | } else { 19 | loader = loader + '-loader' 20 | extraParamChar = '?' 21 | } 22 | return loader + (options.sourceMap ? extraParamChar + 'sourceMap' : '') 23 | }).join('!') 24 | 25 | if (options.extract) { 26 | return ExtractTextPlugin.extract('vue-style-loader', sourceLoader) 27 | } else { 28 | return ['vue-style-loader', sourceLoader].join('!') 29 | } 30 | } 31 | 32 | // http://vuejs.github.io/vue-loader/configurations/extract-css.html 33 | return { 34 | css: generateLoaders(['css']), 35 | postcss: generateLoaders(['css']), 36 | less: generateLoaders(['css', 'less']), 37 | sass: generateLoaders(['css', 'sass?indentedSyntax']), 38 | scss: generateLoaders(['css', 'sass']), 39 | stylus: generateLoaders(['css', 'stylus']), 40 | styl: generateLoaders(['css', 'stylus']) 41 | } 42 | } 43 | 44 | // Generate loaders for standalone style files (outside of .vue) 45 | exports.styleLoaders = function (options) { 46 | var output = [] 47 | var loaders = exports.cssLoaders(options) 48 | for (var extension in loaders) { 49 | var loader = loaders[extension] 50 | output.push({ 51 | test: new RegExp('\\.' + extension + '$'), 52 | loader: loader 53 | }) 54 | } 55 | return output 56 | } 57 | -------------------------------------------------------------------------------- /build/webpack.base.conf.js: -------------------------------------------------------------------------------- 1 | var path = require('path') 2 | var config = require('../config') 3 | var utils = require('./utils') 4 | var projectRoot = path.resolve(__dirname, '../') 5 | 6 | module.exports = { 7 | entry: {app:'./src/app.js'}, 8 | output: { 9 | path: config.build.assetsRoot, 10 | publicPath: config.build.assetsPublicPath, 11 | filename: '[name].js', 12 | }, 13 | resolve: { 14 | extensions: ['', '.js', '.vue'], 15 | fallback: [path.join(__dirname, '../node_modules')], 16 | alias: { 17 | 'src': path.resolve(__dirname, '../src'), 18 | 'assets': path.resolve(__dirname, '../src/assets'), 19 | 'components': path.resolve(__dirname, '../src/components'), 20 | // jquery: "jquery/dist/jquery.js" 21 | } 22 | }, 23 | resolveLoader: { 24 | fallback: [path.join(__dirname, '../node_modules')] 25 | }, 26 | module: { 27 | loaders: [ 28 | { 29 | test: /\.vue$/, 30 | loader: 'vue' 31 | }, 32 | { 33 | test: /\.js$/, 34 | loader: 'babel', 35 | include: projectRoot, 36 | exclude: /node_modules/ 37 | }, 38 | { 39 | test: /\.json$/, 40 | loader: 'json' 41 | }, 42 | { 43 | test: /\.html$/, 44 | loader: 'vue-html' 45 | }, 46 | { 47 | test: /\.(png|jpe?g|gif|svg|woff2?|eot|ttf|otf)(\?.*)?$/, 48 | loader: 'url', 49 | query: { 50 | limit: 10000, 51 | name: utils.assetsPath('[name].[hash:7].[ext]') 52 | } 53 | }, 54 | // { 55 | // test: /\.(ttf|eot|svg)(\?[\s\S]+)?$/, 56 | // loader: 'file' 57 | // } 58 | ] 59 | }, 60 | vue: { 61 | loaders: utils.cssLoaders() 62 | }, 63 | externals: { 64 | // require("jquery") is external and available 65 | // on the global var jQuery 66 | // "jquery": "jQuery" 67 | 68 | } 69 | 70 | 71 | } 72 | -------------------------------------------------------------------------------- /build/webpack.dev.conf.js: -------------------------------------------------------------------------------- 1 | var webpack = require('webpack') 2 | var merge = require('webpack-merge') 3 | var utils = require('./utils') 4 | var baseWebpackConfig = require('./webpack.base.conf') 5 | var HtmlWebpackPlugin = require('html-webpack-plugin') 6 | 7 | // add hot-reload related code to entry chunks 8 | Object.keys(baseWebpackConfig.entry).forEach(function (name) { 9 | baseWebpackConfig.entry[name] = ['./build/dev-client'].concat(baseWebpackConfig.entry[name]) 10 | }) 11 | 12 | module.exports = merge(baseWebpackConfig, { 13 | module: { 14 | loaders: utils.styleLoaders() 15 | }, 16 | // eval-source-map is faster for development 17 | devtool: '#eval-source-map', 18 | plugins: [ 19 | // https://github.com/glenjamin/webpack-hot-middleware#installation--usage 20 | new webpack.optimize.OccurenceOrderPlugin(), 21 | new webpack.HotModuleReplacementPlugin(), 22 | new webpack.NoErrorsPlugin(), 23 | // https://github.com/ampedandwired/html-webpack-plugin 24 | new HtmlWebpackPlugin({ 25 | filename: 'index.html', 26 | template: 'index.html', 27 | inject: true 28 | }), 29 | new webpack.ProvidePlugin({ 30 | $: "jquery", 31 | jQuery: "jquery", 32 | "window.jQuery": "jquery" 33 | }) 34 | ] 35 | }) 36 | -------------------------------------------------------------------------------- /build/webpack.prod.conf.js: -------------------------------------------------------------------------------- 1 | var config = require('../config') 2 | var utils = require('./utils') 3 | var webpack = require('webpack') 4 | var merge = require('webpack-merge') 5 | var baseWebpackConfig = require('./webpack.base.conf') 6 | var ExtractTextPlugin = require('extract-text-webpack-plugin') 7 | var HtmlWebpackPlugin = require('html-webpack-plugin') 8 | 9 | module.exports = merge(baseWebpackConfig, { 10 | module: { 11 | loaders: utils.styleLoaders({ sourceMap: config.build.productionSourceMap, extract: true }) 12 | }, 13 | devtool: config.build.productionSourceMap ? '#source-map' : false, 14 | output: { 15 | path: config.build.assetsRoot, 16 | filename: utils.assetsPath('[name].[chunkhash].js'), 17 | chunkFilename: utils.assetsPath('[id].[chunkhash].js') 18 | }, 19 | vue: { 20 | loaders: utils.cssLoaders({ 21 | sourceMap: config.build.productionSourceMap, 22 | extract: true 23 | }) 24 | }, 25 | plugins: [ 26 | // http://vuejs.github.io/vue-loader/workflow/production.html 27 | new webpack.DefinePlugin({ 28 | 'process.env': { 29 | NODE_ENV: '"production"' 30 | } 31 | }), 32 | new webpack.optimize.UglifyJsPlugin({ 33 | compress: { 34 | warnings: false 35 | } 36 | }), 37 | new webpack.optimize.OccurenceOrderPlugin(), 38 | // extract css into its own file 39 | new ExtractTextPlugin(utils.assetsPath('[name].[contenthash].css')), 40 | // generate dist index.html with correct asset hash for caching. 41 | // you can customize output by editing /index.html 42 | // see https://github.com/ampedandwired/html-webpack-plugin 43 | new HtmlWebpackPlugin({ 44 | filename: process.env.NODE_ENV === 'testing' 45 | ? 'index.html' 46 | : config.build.index, 47 | template: 'index.html', 48 | inject: true, 49 | minify: { 50 | removeComments: true, 51 | collapseWhitespace: true, 52 | removeAttributeQuotes: true 53 | // more options: 54 | // https://github.com/kangax/html-minifier#options-quick-reference 55 | } 56 | }), 57 | new webpack.ProvidePlugin({ 58 | $: "jquery", 59 | jQuery: "jquery", 60 | "window.jQuery": "jquery" 61 | }) 62 | ] 63 | }) 64 | -------------------------------------------------------------------------------- /config.js: -------------------------------------------------------------------------------- 1 | // see http://vuejs-templates.github.io/webpack for documentation. 2 | var path = require('path') 3 | 4 | module.exports = { 5 | build: { 6 | index: path.resolve(__dirname, 'dist/index.html'), 7 | assetsRoot: path.resolve(__dirname, 'dist'), 8 | assetsSubDirectory: 'static', 9 | assetsPublicPath: '/', 10 | productionSourceMap: true 11 | }, 12 | dev: { 13 | port: 8080, 14 | proxyTable: { 15 | 'dev.localhost:3000' : 'http://localhost:8081' 16 | }, 17 | apiPort:8081 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | HOGO 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /jsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | // See http://go.microsoft.com/fwlink/?LinkId=759670 3 | // for the documentation about the jsconfig.json format 4 | "compilerOptions": { 5 | "target": "es6" 6 | }, 7 | "exclude": [ 8 | "node_modules", 9 | "bower_components", 10 | "jspm_packages", 11 | "tmp", 12 | "temp" 13 | ] 14 | } 15 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vue-admin-lte", 3 | "version": "1.0.0", 4 | "description": "HOGO ", 5 | "author": "jasine ", 6 | "private": true, 7 | "scripts": { 8 | "dev": "node build/dev-server.js", 9 | "build": "node build/build.js", 10 | "unit": "karma start test/unit/karma.conf.js --single-run", 11 | "e2e": "node test/e2e/runner.js", 12 | "test": "npm run unit && npm run e2e" 13 | }, 14 | "dependencies": { 15 | "admin-lte": "^2.3.3", 16 | "babel-runtime": "^5.8.0", 17 | "font-awesome": "^4.6.1", 18 | "jquery": "^2.2.3", 19 | "jsoneditor": "^5.5.2", 20 | "vue": "^1.0.18", 21 | "vue-router": "^0.7.13", 22 | "vue-strap": "^1.0.7" 23 | }, 24 | "devDependencies": { 25 | "babel-core": "^6.0.0", 26 | "babel-loader": "^6.0.0", 27 | "babel-plugin-transform-runtime": "^6.0.0", 28 | "babel-preset-es2015": "^6.0.0", 29 | "babel-preset-stage-2": "^6.0.0", 30 | "bootstrap-loader": "^1.0.10", 31 | "bootstrap-sass": "^3.3.6", 32 | "chai": "^3.5.0", 33 | "chromedriver": "^2.21.2", 34 | "connect-history-api-fallback": "^1.1.0", 35 | "cross-spawn": "^2.1.5", 36 | "css-loader": "^0.23.1", 37 | "eventsource-polyfill": "^0.9.6", 38 | "exports-loader": "^0.6.3", 39 | "express": "^4.13.3", 40 | "extract-text-webpack-plugin": "^1.0.1", 41 | "file-loader": "^0.8.5", 42 | "font-awesome-loader": "^0.0.1", 43 | "font-loader": "^0.1.2", 44 | "function-bind": "^1.0.2", 45 | "html-webpack-plugin": "^2.8.1", 46 | "http-proxy-middleware": "^0.12.0", 47 | "imports-loader": "^0.6.5", 48 | "inject-loader": "^2.0.1", 49 | "install": "^0.6.1", 50 | "isparta-loader": "^2.0.0", 51 | "json-loader": "^0.5.4", 52 | "json-server": "^0.8.10", 53 | "karma": "^0.13.15", 54 | "karma-coverage": "^0.5.5", 55 | "karma-mocha": "^0.2.2", 56 | "karma-phantomjs-launcher": "^1.0.0", 57 | "karma-sinon-chai": "^1.2.0", 58 | "karma-sourcemap-loader": "^0.3.7", 59 | "karma-spec-reporter": "0.0.24", 60 | "karma-webpack": "^1.7.0", 61 | "lolex": "^1.4.0", 62 | "mocha": "^2.4.5", 63 | "nightwatch": "^0.8.18", 64 | "node-sass": "^3.4.2", 65 | "ora": "^0.2.0", 66 | "phantomjs-prebuilt": "^2.1.3", 67 | "resolve-url-loader": "^1.4.3", 68 | "sass-loader": "^3.2.0", 69 | "selenium-server": "2.53.0", 70 | "shelljs": "^0.6.0", 71 | "sinon": "^1.17.3", 72 | "sinon-chai": "^2.8.0", 73 | "style-loader": "^0.13.1", 74 | "url-loader": "^0.5.7", 75 | "vue-hot-reload-api": "^1.2.0", 76 | "vue-html-loader": "^1.0.0", 77 | "vue-loader": "^8.2.1", 78 | "vue-style-loader": "^1.0.0", 79 | "webpack": "^1.12.2", 80 | "webpack-dev-middleware": "^1.4.0", 81 | "webpack-hot-middleware": "^2.6.0", 82 | "webpack-merge": "^0.8.3" 83 | } 84 | } -------------------------------------------------------------------------------- /src/app.js: -------------------------------------------------------------------------------- 1 | var Vue = require('vue'); 2 | var Router = require('vue-router'); 3 | 4 | require('font-awesome-loader'); 5 | require('bootstrap-loader'); 6 | 7 | require('admin-lte'); 8 | require("!style!css!admin-lte/dist/css/skins/_all-skins.css"); 9 | require("!style!css!admin-lte/dist/css/AdminLTE.css"); 10 | 11 | var App = require('./components/container.vue'); 12 | 13 | //图片路径转换 14 | Vue.filter('imgPath', function (value) { 15 | return 'http://192.168.2.16:3002'+value; 16 | }); 17 | 18 | // install router 19 | Vue.use(Router); 20 | 21 | // routing 22 | var router = new Router(); 23 | 24 | router.map({ 25 | '*' : { 26 | component: require('./components/not-found.vue') 27 | }, 28 | '/': { 29 | component: require('./components/dashboard.vue') 30 | }, 31 | '/tasks': { 32 | component: require('./components/tasks/index.vue') 33 | }, 34 | '/data': { 35 | component: require('./components/data/index.vue') 36 | }, 37 | '/users': { 38 | component: require('./components/users/index.vue') 39 | }, 40 | '/user/new': { 41 | component: require('./components/users/new.vue') 42 | } 43 | }); 44 | 45 | router.start(App, '#app'); 46 | -------------------------------------------------------------------------------- /src/assets/image/avatar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jasine/Vue-AdminLte/76d76aeb464ed8554713d87b3eb02dfbbab35ca9/src/assets/image/avatar.png -------------------------------------------------------------------------------- /src/assets/image/avatar04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jasine/Vue-AdminLte/76d76aeb464ed8554713d87b3eb02dfbbab35ca9/src/assets/image/avatar04.png -------------------------------------------------------------------------------- /src/assets/image/avatar2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jasine/Vue-AdminLte/76d76aeb464ed8554713d87b3eb02dfbbab35ca9/src/assets/image/avatar2.png -------------------------------------------------------------------------------- /src/assets/image/avatar3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jasine/Vue-AdminLte/76d76aeb464ed8554713d87b3eb02dfbbab35ca9/src/assets/image/avatar3.png -------------------------------------------------------------------------------- /src/assets/image/avatar5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jasine/Vue-AdminLte/76d76aeb464ed8554713d87b3eb02dfbbab35ca9/src/assets/image/avatar5.png -------------------------------------------------------------------------------- /src/assets/image/boxed-bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jasine/Vue-AdminLte/76d76aeb464ed8554713d87b3eb02dfbbab35ca9/src/assets/image/boxed-bg.jpg -------------------------------------------------------------------------------- /src/assets/image/boxed-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jasine/Vue-AdminLte/76d76aeb464ed8554713d87b3eb02dfbbab35ca9/src/assets/image/boxed-bg.png -------------------------------------------------------------------------------- /src/assets/image/default-50x50.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jasine/Vue-AdminLte/76d76aeb464ed8554713d87b3eb02dfbbab35ca9/src/assets/image/default-50x50.gif -------------------------------------------------------------------------------- /src/assets/image/icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jasine/Vue-AdminLte/76d76aeb464ed8554713d87b3eb02dfbbab35ca9/src/assets/image/icons.png -------------------------------------------------------------------------------- /src/assets/image/photo1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jasine/Vue-AdminLte/76d76aeb464ed8554713d87b3eb02dfbbab35ca9/src/assets/image/photo1.png -------------------------------------------------------------------------------- /src/assets/image/photo2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jasine/Vue-AdminLte/76d76aeb464ed8554713d87b3eb02dfbbab35ca9/src/assets/image/photo2.png -------------------------------------------------------------------------------- /src/assets/image/photo3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jasine/Vue-AdminLte/76d76aeb464ed8554713d87b3eb02dfbbab35ca9/src/assets/image/photo3.jpg -------------------------------------------------------------------------------- /src/assets/image/photo4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jasine/Vue-AdminLte/76d76aeb464ed8554713d87b3eb02dfbbab35ca9/src/assets/image/photo4.jpg -------------------------------------------------------------------------------- /src/assets/image/user1-128x128.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jasine/Vue-AdminLte/76d76aeb464ed8554713d87b3eb02dfbbab35ca9/src/assets/image/user1-128x128.jpg -------------------------------------------------------------------------------- /src/assets/image/user2-160x160.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jasine/Vue-AdminLte/76d76aeb464ed8554713d87b3eb02dfbbab35ca9/src/assets/image/user2-160x160.jpg -------------------------------------------------------------------------------- /src/assets/image/user3-128x128.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jasine/Vue-AdminLte/76d76aeb464ed8554713d87b3eb02dfbbab35ca9/src/assets/image/user3-128x128.jpg -------------------------------------------------------------------------------- /src/assets/image/user4-128x128.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jasine/Vue-AdminLte/76d76aeb464ed8554713d87b3eb02dfbbab35ca9/src/assets/image/user4-128x128.jpg -------------------------------------------------------------------------------- /src/assets/image/user5-128x128.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jasine/Vue-AdminLte/76d76aeb464ed8554713d87b3eb02dfbbab35ca9/src/assets/image/user5-128x128.jpg -------------------------------------------------------------------------------- /src/assets/image/user6-128x128.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jasine/Vue-AdminLte/76d76aeb464ed8554713d87b3eb02dfbbab35ca9/src/assets/image/user6-128x128.jpg -------------------------------------------------------------------------------- /src/assets/image/user7-128x128.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jasine/Vue-AdminLte/76d76aeb464ed8554713d87b3eb02dfbbab35ca9/src/assets/image/user7-128x128.jpg -------------------------------------------------------------------------------- /src/assets/image/user8-128x128.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jasine/Vue-AdminLte/76d76aeb464ed8554713d87b3eb02dfbbab35ca9/src/assets/image/user8-128x128.jpg -------------------------------------------------------------------------------- /src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jasine/Vue-AdminLte/76d76aeb464ed8554713d87b3eb02dfbbab35ca9/src/assets/logo.png -------------------------------------------------------------------------------- /src/components/common/data-define.js: -------------------------------------------------------------------------------- 1 | var dataSet=function(){ 2 | var id; 3 | var name; 4 | } -------------------------------------------------------------------------------- /src/components/common/info-panel.vue: -------------------------------------------------------------------------------- 1 | 17 | 18 | 47 | 48 | 51 | -------------------------------------------------------------------------------- /src/components/common/jsonview.vue: -------------------------------------------------------------------------------- 1 | 11 | 63 | -------------------------------------------------------------------------------- /src/components/common/slide-panel.vue: -------------------------------------------------------------------------------- 1 | 27 | 28 | 79 | 80 | -------------------------------------------------------------------------------- /src/components/container.vue: -------------------------------------------------------------------------------- 1 | 33 | 34 | 81 | -------------------------------------------------------------------------------- /src/components/dashboard.vue: -------------------------------------------------------------------------------- 1 | 13 | 14 | 33 | 44 | -------------------------------------------------------------------------------- /src/components/data/detail.vue: -------------------------------------------------------------------------------- 1 | 46 | 137 | -------------------------------------------------------------------------------- /src/components/data/index.vue: -------------------------------------------------------------------------------- 1 | 70 | 71 | 144 | 145 | -------------------------------------------------------------------------------- /src/components/data/new-set.vue: -------------------------------------------------------------------------------- 1 | 53 | 59 | -------------------------------------------------------------------------------- /src/components/layout/content.vue: -------------------------------------------------------------------------------- 1 | 26 | 27 | -------------------------------------------------------------------------------- /src/components/layout/footer.vue: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/components/layout/header.vue: -------------------------------------------------------------------------------- 1 | 255 | 257 | -------------------------------------------------------------------------------- /src/components/layout/menu.vue: -------------------------------------------------------------------------------- 1 | 54 | 55 | 65 | -------------------------------------------------------------------------------- /src/components/login.vue: -------------------------------------------------------------------------------- 1 | 52 | 53 | -------------------------------------------------------------------------------- /src/components/not-found.vue: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/components/tasks/detail.vue: -------------------------------------------------------------------------------- 1 | 33 | 42 | -------------------------------------------------------------------------------- /src/components/tasks/index.vue: -------------------------------------------------------------------------------- 1 | 156 | 157 | 191 | 192 | -------------------------------------------------------------------------------- /src/components/tasks/new-task.vue: -------------------------------------------------------------------------------- 1 | 95 | 101 | -------------------------------------------------------------------------------- /src/components/users/index.vue: -------------------------------------------------------------------------------- 1 | 65 | 66 | 87 | 88 | -------------------------------------------------------------------------------- /src/components/users/new.vue: -------------------------------------------------------------------------------- 1 | 13 | 14 | 29 | 30 | -------------------------------------------------------------------------------- /src/config/menus.js: -------------------------------------------------------------------------------- 1 | module.exports = [ 2 | { 3 | name: '控制台', 4 | link: '/', 5 | icon: 'fa-home', 6 | child:[] 7 | }, 8 | { 9 | name: '测试任务', 10 | link: '/tasks', 11 | icon: 'fa-cogs', 12 | child:[] 13 | }, 14 | { 15 | name: '数据集管理', 16 | link: '/data', 17 | icon: 'fa-database', 18 | child:[] 19 | }, 20 | // { 21 | // name: 'Users', 22 | // link: '/users', 23 | // icon: 'fa-user', 24 | // child: [ 25 | // { 26 | // name: 'New', 27 | // link: '/user/new', 28 | // icon: 'fa-circle-o', 29 | // }, 30 | // { 31 | // name: 'Lists', 32 | // link: '/users', 33 | // icon: 'fa-circle-o', 34 | // child:[] 35 | 36 | // } 37 | // ] 38 | // } 39 | 40 | ] -------------------------------------------------------------------------------- /static/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jasine/Vue-AdminLte/76d76aeb464ed8554713d87b3eb02dfbbab35ca9/static/.gitkeep -------------------------------------------------------------------------------- /static/css/style.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jasine/Vue-AdminLte/76d76aeb464ed8554713d87b3eb02dfbbab35ca9/static/css/style.css -------------------------------------------------------------------------------- /test/e2e/custom-assertions/elementCount.js: -------------------------------------------------------------------------------- 1 | // A custom Nightwatch assertion. 2 | // the name of the method is the filename. 3 | // can be used in tests like this: 4 | // 5 | // browser.assert.elementCount(selector, count) 6 | // 7 | // for how to write custom assertions see 8 | // http://nightwatchjs.org/guide#writing-custom-assertions 9 | exports.assertion = function (selector, count) { 10 | this.message = 'Testing if element <' + selector + '> has count: ' + count 11 | this.expected = count 12 | this.pass = function (val) { 13 | return val === this.expected 14 | } 15 | this.value = function (res) { 16 | return res.value 17 | } 18 | this.command = function (cb) { 19 | var self = this 20 | return this.api.execute(function (selector) { 21 | return document.querySelectorAll(selector).length 22 | }, [selector], function (res) { 23 | cb.call(self, res) 24 | }) 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /test/e2e/nightwatch.conf.js: -------------------------------------------------------------------------------- 1 | // http://nightwatchjs.org/guide#settings-file 2 | module.exports = { 3 | "src_folders": ["test/e2e/specs"], 4 | "output_folder": "test/e2e/reports", 5 | "custom_assertions_path": ["test/e2e/custom-assertions"], 6 | 7 | "selenium": { 8 | "start_process": true, 9 | "server_path": "node_modules/selenium-server/lib/runner/selenium-server-standalone-2.53.0.jar", 10 | "host": "127.0.0.1", 11 | "port": 4444, 12 | "cli_args": { 13 | "webdriver.chrome.driver": require('chromedriver').path 14 | } 15 | }, 16 | 17 | "test_settings": { 18 | "default": { 19 | "selenium_port": 4444, 20 | "selenium_host": "localhost", 21 | "silent": true 22 | }, 23 | 24 | "chrome": { 25 | "desiredCapabilities": { 26 | "browserName": "chrome", 27 | "javascriptEnabled": true, 28 | "acceptSslCerts": true 29 | } 30 | }, 31 | 32 | "firefox": { 33 | "desiredCapabilities": { 34 | "browserName": "firefox", 35 | "javascriptEnabled": true, 36 | "acceptSslCerts": true 37 | } 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /test/e2e/runner.js: -------------------------------------------------------------------------------- 1 | // 1. start the dev server using production config 2 | process.env.NODE_ENV = 'testing' 3 | var server = require('../../build/dev-server.js') 4 | 5 | // 2. run the nightwatch test suite against it 6 | // to run in additional browsers: 7 | // 1. add an entry in test/e2e/nightwatch.conf.json under "test_settings" 8 | // 2. add it to the --env flag below 9 | // For more information on Nightwatch's config file, see 10 | // http://nightwatchjs.org/guide#settings-file 11 | var spawn = require('cross-spawn') 12 | var runner = spawn( 13 | './node_modules/.bin/nightwatch', 14 | [ 15 | '--config', 'test/e2e/nightwatch.conf.js', 16 | '--env', 'chrome,firefox' 17 | ], 18 | { 19 | stdio: 'inherit' 20 | } 21 | ) 22 | 23 | runner.on('exit', function (code) { 24 | server.close() 25 | process.exit(code) 26 | }) 27 | 28 | runner.on('error', function (err) { 29 | server.close() 30 | throw err 31 | }) 32 | -------------------------------------------------------------------------------- /test/e2e/specs/test.js: -------------------------------------------------------------------------------- 1 | // For authoring Nightwatch tests, see 2 | // http://nightwatchjs.org/guide#usage 3 | 4 | module.exports = { 5 | 'default e2e tests': function (browser) { 6 | browser 7 | .url('http://localhost:8080') 8 | .waitForElementVisible('#app', 5000) 9 | .assert.elementPresent('.logo') 10 | .assert.containsText('h1', 'Hello World!') 11 | .assert.elementCount('p', 3) 12 | .end() 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /test/unit/.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "mocha": true 4 | }, 5 | "globals": { 6 | "expect": true, 7 | "sinon": true 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /test/unit/index.js: -------------------------------------------------------------------------------- 1 | // Polyfill fn.bind() for PhantomJS 2 | /* eslint-disable no-extend-native */ 3 | Function.prototype.bind = require('function-bind') 4 | 5 | // require all test files (files that ends with .spec.js) 6 | var testsContext = require.context('./specs', true, /\.spec$/) 7 | testsContext.keys().forEach(testsContext) 8 | 9 | // require all src files except main.js for coverage. 10 | // you can also change this to match only the subset of files that 11 | // you want coverage for. 12 | var srcContext = require.context('../../src', true, /^\.\/(?!main(\.js)?$)/) 13 | srcContext.keys().forEach(srcContext) 14 | -------------------------------------------------------------------------------- /test/unit/karma.conf.js: -------------------------------------------------------------------------------- 1 | // This is a karma config file. For more details see 2 | // http://karma-runner.github.io/0.13/config/configuration-file.html 3 | // we are also using it with karma-webpack 4 | // https://github.com/webpack/karma-webpack 5 | 6 | var path = require('path') 7 | var merge = require('webpack-merge') 8 | var baseConfig = require('../../build/webpack.base.conf') 9 | var utils = require('../../build/utils') 10 | var projectRoot = path.resolve(__dirname, '../../') 11 | 12 | var webpackConfig = merge(baseConfig, { 13 | // use inline sourcemap for karma-sourcemap-loader 14 | module: { 15 | loaders: utils.styleLoaders() 16 | }, 17 | devtool: '#inline-source-map', 18 | vue: { 19 | loaders: { 20 | js: 'isparta' 21 | } 22 | } 23 | }) 24 | 25 | // no need for app entry during tests 26 | delete webpackConfig.entry 27 | 28 | // make sure isparta loader is applied before eslint 29 | webpackConfig.module.preLoaders = webpackConfig.module.preLoaders || [] 30 | webpackConfig.module.preLoaders.unshift({ 31 | test: /\.js$/, 32 | loader: 'isparta', 33 | include: projectRoot, 34 | exclude: /test\/unit|node_modules/ 35 | }) 36 | 37 | // only apply babel for test files when using isparta 38 | webpackConfig.module.loaders.some(function (loader, i) { 39 | if (loader.loader === 'babel') { 40 | loader.include = /test\/unit/ 41 | return true 42 | } 43 | }) 44 | 45 | module.exports = function (config) { 46 | config.set({ 47 | // to run in additional browsers: 48 | // 1. install corresponding karma launcher 49 | // http://karma-runner.github.io/0.13/config/browsers.html 50 | // 2. add it to the `browsers` array below. 51 | browsers: ['PhantomJS'], 52 | frameworks: ['mocha', 'sinon-chai'], 53 | reporters: ['spec', 'coverage'], 54 | files: ['./index.js'], 55 | preprocessors: { 56 | './index.js': ['webpack', 'sourcemap'] 57 | }, 58 | webpack: webpackConfig, 59 | webpackMiddleware: { 60 | noInfo: true 61 | }, 62 | coverageReporter: { 63 | dir: './coverage', 64 | reporters: [ 65 | { type: 'lcov', subdir: '.' }, 66 | { type: 'text-summary' } 67 | ] 68 | } 69 | }) 70 | } 71 | -------------------------------------------------------------------------------- /test/unit/specs/Hello.spec.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import Hello from 'src/components/Hello' 3 | 4 | describe('Hello.vue', () => { 5 | it('should render correct contents', () => { 6 | const vm = new Vue({ 7 | template: '
', 8 | components: { Hello } 9 | }).$mount() 10 | expect(vm.$el.querySelector('.hello h1').textContent).to.contain('Hello World!') 11 | }) 12 | }) 13 | --------------------------------------------------------------------------------