├── static └── .gitkeep ├── .eslintignore ├── config ├── prod.env.js ├── test.env.js ├── dev.env.js └── index.js ├── src ├── assets │ └── logo.png ├── views │ ├── home.vue │ ├── UserMG │ │ ├── AddressManagement.vue │ │ ├── PendingUserMg │ │ │ ├── PendingUserMG.vue │ │ │ └── PuMGtable.vue │ │ ├── systemUserMg │ │ │ ├── systemUserMG.vue │ │ │ └── sUserMGtable.vue │ │ └── userMg │ │ │ ├── userManagement.vue │ │ │ ├── BankAccount.vue │ │ │ ├── ShippingAddress.vue │ │ │ ├── userInformation.vue │ │ │ ├── userIMCC.vue │ │ │ └── userMgTable.vue │ ├── DebtMG │ │ ├── debtQuery │ │ │ ├── orderFlow.vue │ │ │ ├── debtQuery.vue │ │ │ ├── orderDetails.vue │ │ │ └── debtQueryTable.vue │ │ └── pendingDebt │ │ │ ├── orderFlow.vue │ │ │ ├── pendingDebt.vue │ │ │ ├── orderDetails.vue │ │ │ └── pDebtTable.vue │ ├── OrderMG │ │ ├── orderQuery │ │ │ ├── orderFlow.vue │ │ │ ├── orderQuery.vue │ │ │ ├── orderDetails.vue │ │ │ └── oQtable.vue │ │ └── pendingOrder │ │ │ ├── orderFlow.vue │ │ │ ├── orderQuery.vue │ │ │ ├── pendingOrder.vue │ │ │ ├── orderDetails.vue │ │ │ └── pQtable.vue │ ├── NewsMG │ │ ├── newsChannelMg │ │ │ ├── newsChannelMG.vue │ │ │ └── nCtable.vue │ │ └── newsMg │ │ │ ├── newsMG.vue │ │ │ └── nMtable.vue │ └── SystemMG │ │ ├── poundageMG.vue │ │ ├── roleMg │ │ ├── roleMG.vue │ │ └── roleTable.vue │ │ ├── BPtable.vue │ │ ├── accountSecurity.vue │ │ ├── poundageTable.vue │ │ ├── dataStatistics.vue │ │ └── BatchPayment.vue ├── vuex │ ├── actions.js │ └── store.js ├── components │ ├── cb-content.vue │ ├── common │ │ ├── vue │ │ │ ├── pagination.vue │ │ │ ├── table.vue │ │ │ ├── top_serch_button.vue │ │ │ └── dialog.vue │ │ └── css │ │ │ └── reset.css │ ├── BPtable.vue │ └── cb-nav.vue ├── services │ ├── user │ │ └── user.js │ └── ajax.js ├── App.vue ├── router.js └── main.js ├── .babelrc ├── .gitignore ├── test ├── unit │ ├── .eslintrc │ ├── specs │ │ └── Hello.spec.js │ ├── index.js │ └── karma.conf.js └── e2e │ ├── specs │ └── test.js │ ├── custom-assertions │ └── elementCount.js │ ├── runner.js │ └── nightwatch.conf.js ├── .idea ├── watcherTasks.xml ├── misc.xml ├── vcs.xml ├── modules.xml ├── jsLibraryMappings.xml ├── vue-webpack.iml └── workspace.xml ├── .editorconfig ├── index.html ├── README.md ├── .eslintrc.js ├── .project └── package.json /static/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | build/*.js 2 | config/*.js 3 | -------------------------------------------------------------------------------- /config/prod.env.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | NODE_ENV: '"production"' 3 | } 4 | -------------------------------------------------------------------------------- /src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Yizo/vue-webpack2/HEAD/src/assets/logo.png -------------------------------------------------------------------------------- /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["es2015", "stage-2"], 3 | "plugins": ["transform-runtime"], 4 | "comments": false 5 | } 6 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules/ 3 | dist/ 4 | npm-debug.log 5 | test/unit/coverage 6 | test/e2e/reports 7 | selenium-debug.log 8 | -------------------------------------------------------------------------------- /src/views/home.vue: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /test/unit/.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "mocha": true 4 | }, 5 | "globals": { 6 | "expect": true, 7 | "sinon": true 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /.idea/watcherTasks.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /config/test.env.js: -------------------------------------------------------------------------------- 1 | var merge = require('webpack-merge') 2 | var devEnv = require('./dev.env') 3 | 4 | module.exports = merge(devEnv, { 5 | NODE_ENV: '"testing"' 6 | }) 7 | -------------------------------------------------------------------------------- /config/dev.env.js: -------------------------------------------------------------------------------- 1 | var merge = require('webpack-merge') 2 | var prodEnv = require('./prod.env') 3 | 4 | module.exports = merge(prodEnv, { 5 | NODE_ENV: '"development"' 6 | }) 7 | -------------------------------------------------------------------------------- /.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 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/vuex/actions.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by Administrator on 2016/11/22 0022. 3 | */ 4 | 5 | //更新用户数据 6 | export const upData = ({dispatch},data) => { 7 | dispatch('UP_DATA') 8 | } 9 | 10 | //更新索引 11 | export const upIndex = ({ dispatch },index) => { 12 | dispatch('UP_INDEX') 13 | 14 | } 15 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | vue-webpack 6 | 7 | 8 |
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/components/cb-content.vue: -------------------------------------------------------------------------------- 1 | 6 | 16 | -------------------------------------------------------------------------------- /src/services/user/user.js: -------------------------------------------------------------------------------- 1 | import ajax from '../ajax' 2 | 3 | const domain = '/api/appVersion/queryNewVersion.do' 4 | 5 | export default { 6 | getList(options){ 7 | ajax({ 8 | url:domain, 9 | method:POST, 10 | data:{ 11 | platformType:android, 12 | oldVersion:0.01 13 | }, 14 | succes:function(){ 15 | 16 | } 17 | }) 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /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 | el: document.createElement('div'), 8 | render: (h) => h(Hello) 9 | }) 10 | expect(vm.$el.querySelector('.hello h1').textContent) 11 | .to.equal('Welcome to Your Vue.js App') 12 | }) 13 | }) 14 | -------------------------------------------------------------------------------- /.idea/jsLibraryMappings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/views/UserMG/AddressManagement.vue: -------------------------------------------------------------------------------- 1 | 7 | 16 | 17 | 26 | 27 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # vue-webpack 2 | 3 | > A Vue.js project 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 | For detailed explanation on how things work, checkout the [guide](http://vuejs-templates.github.io/webpack/) and [docs for vue-loader](http://vuejs.github.io/vue-loader). 28 | -------------------------------------------------------------------------------- /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 | const 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 | const srcContext = require.context('../../src', true, /^\.\/(?!main(\.js)?$)/) 13 | srcContext.keys().forEach(srcContext) 14 | -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | parser: 'babel-eslint', 4 | parserOptions: { 5 | sourceType: 'module' 6 | }, 7 | // https://github.com/feross/standard/blob/master/RULES.md#javascript-standard-style 8 | extends: 'standard', 9 | // required to lint *.vue files 10 | plugins: [ 11 | 'html' 12 | ], 13 | // add your custom rules here 14 | 'rules': { 15 | // allow paren-less arrow functions 16 | 'arrow-parens': 0, 17 | // allow async-await 18 | 'generator-star-spacing': 0, 19 | // allow debugger during development 20 | 'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /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 | // automatically uses dev Server port from /config.index.js 7 | // default: http://localhost:8080 8 | // see nightwatch.conf.js 9 | const devServer = browser.globals.devServerURL 10 | 11 | browser 12 | .url(devServer) 13 | .waitForElementVisible('#app', 5000) 14 | .assert.elementPresent('.hello') 15 | .assert.containsText('h1', 'Welcome to Your Vue.js App') 16 | .assert.elementCount('img', 1) 17 | .end() 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/App.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 19 | 20 | 34 | -------------------------------------------------------------------------------- /src/components/common/vue/pagination.vue: -------------------------------------------------------------------------------- 1 | 14 | 26 | 31 | -------------------------------------------------------------------------------- /.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | vue-webpack2 4 | 5 | 6 | 7 | 8 | 9 | com.aptana.ide.core.unifiedBuilder 10 | 11 | 12 | 13 | 14 | 15 | com.aptana.projects.webnature 16 | 17 | 18 | 19 | 1480072715288 20 | 21 | 26 22 | 23 | org.eclipse.ui.ide.multiFilter 24 | 1.0-name-matches-false-false-node_modules 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /.idea/vue-webpack.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /src/views/DebtMG/debtQuery/orderFlow.vue: -------------------------------------------------------------------------------- 1 | 16 | 17 | 29 | -------------------------------------------------------------------------------- /src/views/DebtMG/pendingDebt/orderFlow.vue: -------------------------------------------------------------------------------- 1 | 16 | 17 | 29 | -------------------------------------------------------------------------------- /src/views/OrderMG/orderQuery/orderFlow.vue: -------------------------------------------------------------------------------- 1 | 16 | 17 | 29 | -------------------------------------------------------------------------------- /src/views/OrderMG/pendingOrder/orderFlow.vue: -------------------------------------------------------------------------------- 1 | 16 | 17 | 29 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /src/vuex/store.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import Vuex from 'vuex' 3 | 4 | Vue.use(Vuex) 5 | 6 | //state 7 | const state = { 8 | //数据 9 | "uData":[], 10 | //当前行数据 11 | "thisData":[] 12 | } 13 | 14 | //getters 15 | const getters = { 16 | uData:function(state){ 17 | return state.uData 18 | }, 19 | thisData:function(state){ 20 | return state.thisData 21 | } 22 | } 23 | 24 | //mutations 25 | const mutations = { 26 | //更新数据 27 | UP_DATA(state,data){ 28 | state.uData = { ...state.uData,data } 29 | }, 30 | //更新当前行数据 31 | UP_INDEX(state,data){ 32 | state.thisData.splice(0,state.thisData.length) 33 | state.thisData.push(data) 34 | } 35 | } 36 | 37 | //actions 38 | //更新用户数据 39 | const actions = { 40 | C_upData({ commit },data){ 41 | commit('UP_DATA',data) 42 | }, 43 | C_index({ commit },data){ 44 | commit('UP_INDEX',data) 45 | } 46 | } 47 | 48 | export default new Vuex.Store({ 49 | state,mutations,getters,actions 50 | }) 51 | -------------------------------------------------------------------------------- /src/views/NewsMG/newsChannelMg/newsChannelMG.vue: -------------------------------------------------------------------------------- 1 | 18 | 19 | 22 | 40 | -------------------------------------------------------------------------------- /src/views/OrderMG/pendingOrder/orderQuery.vue: -------------------------------------------------------------------------------- 1 | 17 | 18 | 21 | 42 | -------------------------------------------------------------------------------- /src/views/NewsMG/newsMg/newsMG.vue: -------------------------------------------------------------------------------- 1 | 18 | 19 | 22 | 43 | -------------------------------------------------------------------------------- /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 | // or override the environment flag, for example: `npm run e2e -- --env chrome,firefox` 10 | // For more information on Nightwatch's config file, see 11 | // http://nightwatchjs.org/guide#settings-file 12 | var opts = process.argv.slice(2) 13 | if (opts.indexOf('--config') === -1) { 14 | opts = opts.concat(['--config', 'test/e2e/nightwatch.conf.js']) 15 | } 16 | if (opts.indexOf('--env') === -1) { 17 | opts = opts.concat(['--env', 'chrome']) 18 | } 19 | 20 | var spawn = require('cross-spawn') 21 | var runner = spawn('./node_modules/.bin/nightwatch', opts, { stdio: 'inherit' }) 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 | -------------------------------------------------------------------------------- /src/views/UserMG/PendingUserMg/PendingUserMG.vue: -------------------------------------------------------------------------------- 1 | 18 | 19 | 22 | 42 | -------------------------------------------------------------------------------- /src/views/SystemMG/poundageMG.vue: -------------------------------------------------------------------------------- 1 | 18 | 19 | 22 | 43 | -------------------------------------------------------------------------------- /src/views/OrderMG/orderQuery/orderQuery.vue: -------------------------------------------------------------------------------- 1 | 18 | 19 | 22 | 43 | -------------------------------------------------------------------------------- /src/views/DebtMG/debtQuery/debtQuery.vue: -------------------------------------------------------------------------------- 1 | 18 | 19 | 22 | 43 | -------------------------------------------------------------------------------- /src/views/DebtMG/pendingDebt/pendingDebt.vue: -------------------------------------------------------------------------------- 1 | 18 | 19 | 22 | 43 | -------------------------------------------------------------------------------- /src/views/OrderMG/pendingOrder/pendingOrder.vue: -------------------------------------------------------------------------------- 1 | 18 | 19 | 22 | 43 | -------------------------------------------------------------------------------- /src/views/UserMG/systemUserMg/systemUserMG.vue: -------------------------------------------------------------------------------- 1 | 18 | 19 | 22 | 44 | -------------------------------------------------------------------------------- /src/views/UserMG/userMg/userManagement.vue: -------------------------------------------------------------------------------- 1 | 18 | 19 | 22 | 45 | -------------------------------------------------------------------------------- /src/views/SystemMG/roleMg/roleMG.vue: -------------------------------------------------------------------------------- 1 | 18 | 19 | 22 | 45 | -------------------------------------------------------------------------------- /test/e2e/nightwatch.conf.js: -------------------------------------------------------------------------------- 1 | require('babel-register') 2 | var config = require('../../config') 3 | 4 | // http://nightwatchjs.org/guide#settings-file 5 | module.exports = { 6 | "src_folders": ["test/e2e/specs"], 7 | "output_folder": "test/e2e/reports", 8 | "custom_assertions_path": ["test/e2e/custom-assertions"], 9 | 10 | "selenium": { 11 | "start_process": true, 12 | "server_path": "node_modules/selenium-server/lib/runner/selenium-server-standalone-2.53.1.jar", 13 | "host": "127.0.0.1", 14 | "port": 4444, 15 | "cli_args": { 16 | "webdriver.chrome.driver": require('chromedriver').path 17 | } 18 | }, 19 | 20 | "test_settings": { 21 | "default": { 22 | "selenium_port": 4444, 23 | "selenium_host": "localhost", 24 | "silent": true, 25 | "globals": { 26 | "devServerURL": "http://localhost:" + (process.env.PORT || config.dev.port) 27 | } 28 | }, 29 | 30 | "chrome": { 31 | "desiredCapabilities": { 32 | "browserName": "chrome", 33 | "javascriptEnabled": true, 34 | "acceptSslCerts": true 35 | } 36 | }, 37 | 38 | "firefox": { 39 | "desiredCapabilities": { 40 | "browserName": "firefox", 41 | "javascriptEnabled": true, 42 | "acceptSslCerts": true 43 | } 44 | } 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /src/components/common/vue/table.vue: -------------------------------------------------------------------------------- 1 | 28 | 29 | 54 | -------------------------------------------------------------------------------- /src/views/UserMG/userMg/BankAccount.vue: -------------------------------------------------------------------------------- 1 | 37 | 38 | 63 | -------------------------------------------------------------------------------- /src/components/common/vue/top_serch_button.vue: -------------------------------------------------------------------------------- 1 | 26 | 44 | 50 | -------------------------------------------------------------------------------- /src/views/DebtMG/debtQuery/orderDetails.vue: -------------------------------------------------------------------------------- 1 | 36 | 37 | 59 | -------------------------------------------------------------------------------- /src/views/DebtMG/pendingDebt/orderDetails.vue: -------------------------------------------------------------------------------- 1 | 36 | 37 | 59 | -------------------------------------------------------------------------------- /src/views/OrderMG/orderQuery/orderDetails.vue: -------------------------------------------------------------------------------- 1 | 36 | 37 | 59 | -------------------------------------------------------------------------------- /src/views/OrderMG/pendingOrder/orderDetails.vue: -------------------------------------------------------------------------------- 1 | 36 | 37 | 59 | -------------------------------------------------------------------------------- /src/views/UserMG/userMg/ShippingAddress.vue: -------------------------------------------------------------------------------- 1 | 45 | 46 | 71 | -------------------------------------------------------------------------------- /src/components/BPtable.vue: -------------------------------------------------------------------------------- 1 | 20 | 21 | 58 | 60 | -------------------------------------------------------------------------------- /src/views/SystemMG/BPtable.vue: -------------------------------------------------------------------------------- 1 | 20 | 21 | 58 | 60 | -------------------------------------------------------------------------------- /config/index.js: -------------------------------------------------------------------------------- 1 | // see http://vuejs-templates.github.io/webpack for documentation. 2 | var path = require('path') 3 | 4 | module.exports = { 5 | build: { 6 | env: require('./prod.env'), 7 | index: path.resolve(__dirname, '../dist/index.html'), 8 | assetsRoot: path.resolve(__dirname, '../dist'), 9 | assetsSubDirectory: 'static', 10 | assetsPublicPath: '/', 11 | productionSourceMap: true, 12 | // Gzip off by default as many popular static hosts such as 13 | // Surge or Netlify already gzip all static assets for you. 14 | // Before setting to `true`, make sure to: 15 | // npm install --save-dev compression-webpack-plugin 16 | productionGzip: false, 17 | productionGzipExtensions: ['js', 'css'] 18 | }, 19 | dev: { 20 | env: require('./dev.env'), 21 | port: 8080, 22 | assetsSubDirectory: 'static', 23 | assetsPublicPath: '/', 24 | proxyTable: { 25 | '/toutiao': { 26 | target: 'http://v.juhe.cn', 27 | changeOrigin: true, 28 | pathRewrite: { 29 | '^/toutiao': '/toutiao', 30 | } 31 | }, 32 | '/boxoffice':{ 33 | target: 'http://v.juhe.cn', 34 | changeOrigin: true, 35 | pathRewrite: { 36 | '^/boxoffice': '/boxoffice', 37 | } 38 | }, 39 | '/meinv':{ 40 | target: 'http://api.tianapi.com', 41 | changeOrigin: true, 42 | pathRewrite: { 43 | '^/meinv': '/meinv', 44 | }, 45 | }, 46 | 47 | }, 48 | // CSS Sourcemaps off by default because relative paths are "buggy" 49 | // with this option, according to the CSS-Loader README 50 | // (https://github.com/webpack/css-loader#sourcemaps) 51 | // In our experience, they generally work as expected, 52 | // just be aware of this issue when enabling this option. 53 | cssSourceMap: false 54 | }, 55 | 56 | } 57 | -------------------------------------------------------------------------------- /src/components/common/css/reset.css: -------------------------------------------------------------------------------- 1 | @charset "utf-8"; 2 | html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, font, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td { margin: 0; padding: 0; border: 0; outline: 0; vertical-align: baseline; background: transparent; } 3 | body { 4 | font-family: "Helvetica Neue",Helvetica,Arial,"Microsoft Yahei UI","Microsoft YaHei",SimHei,"宋体",simsun,sans-serif; 5 | margin:0 auto; 6 | background-color:#ebebeb; 7 | } 8 | html{ 9 | font-size: 625%; 10 | } 11 | a { text-decoration: none;color: #555756;cursor: pointer; } 12 | a:hover { color: #141414; text-decoration: none; } 13 | a img { border: none;vertical-align: bottom; } 14 | ol, ul,li{ list-style: none; } 15 | blockquote, q { quotes: none; } 16 | blockquote:before, blockquote:after, q:before, q:after { content: ''; content: none; } 17 | /* remember to define focus styles! */ 18 | :focus { outline: 0; } 19 | /* remember to highlight inserts somehow! */ 20 | ins { text-decoration: none; } 21 | del { text-decoration: line-through; } 22 | /* tables still need 'cellspacing="0"' in the markup */ 23 | table { border-collapse: collapse; border-spacing: 0; } 24 | /* 禁用iPhone中Safari的字号自动调整 */ 25 | html { -webkit-text-size-adjust: none;} 26 | /* 设置HTML5元素为块 */ 27 | article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section { display: block; } 28 | /* 设置图片视频等自适应调整 */ 29 | img { max-width: 100%; height: auto; width: auto9; 30 | /*windows平台避免图片失真*/ 31 | -ms-interpolation-mode: bicubic; 32 | /* ie8 */ } 33 | .clearfix:after { 34 | visibility:hidden; 35 | display:block; 36 | font-size:0; 37 | content:" "; 38 | clear:both; 39 | height:0; 40 | } 41 | .clearfix { 42 | zoom:1; 43 | } 44 | -------------------------------------------------------------------------------- /src/views/SystemMG/accountSecurity.vue: -------------------------------------------------------------------------------- 1 | 30 | 50 | 63 | -------------------------------------------------------------------------------- /src/views/SystemMG/roleMg/roleTable.vue: -------------------------------------------------------------------------------- 1 | 34 | 35 | 86 | -------------------------------------------------------------------------------- /src/services/ajax.js: -------------------------------------------------------------------------------- 1 | /* 2 | * author:yizuohua 3 | * time:2016.9.12 4 | * parameters: 5 | * opts:{'实际参数'} 6 | * method:请求方式:get/post,默认值:'get'; 7 | * url:发送请求的地址,默认值:当前页地址; 8 | * data:string,json; 9 | * async:是否异步:true/false,默认值:true; 10 | * cache:是否缓存:true/false,默认值:true; 11 | * contentType:HTTP头信息,默认值:'application/x-www-form-urlencoded'; 12 | * success:请求成功的回调函数; 13 | * error:请求失败后的回调函数; 14 | */ 15 | export function ajax(opts){ 16 | //一.//设置默认参数 17 | var defaults = { 18 | method:'GET', 19 | url:'', 20 | data:'', 21 | async:true, 22 | cache:true, 23 | contentType:'application/x-www-form-urlencoded', 24 | success:function(){}, 25 | error:function(){} 26 | } 27 | //二.用户参数覆盖默认参数 28 | for(var key in opts){ 29 | defaults[key] = opts[key]; 30 | } 31 | //三.对数据进行处理 32 | if(typeof defaults.data === 'object'){ 33 | var str = ''; 34 | for(var key in defaults.data){ 35 | str += key + '=' + defaults.data[key] + "&"; 36 | } 37 | defaults.data = str.substring(0,str.length - 1); 38 | } 39 | 40 | defaults.method = defaults.method.toUpperCase(); 41 | //添加时间戳,处理缓存 42 | defaults.cache = defaults.cache ? '' : "&" + new Date().getTime(); 43 | if(defaults.method === 'GET' && (defaults.data || defaults.cache)){ 44 | defaults.url += '?' + defaults.data + defaults.cache; 45 | } 46 | 47 | //四.编写ajax 48 | //1.创建ajax对象 49 | var oXhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP'); 50 | //2.和服务器建立连接 51 | oXhr.open(defaults.method,defaults.url,defaults.async); 52 | //3.发送请求 53 | if(defaults.method === 'GET') 54 | oXhr.send(null); 55 | else{ 56 | oXhr.setRequestHeader("Content-type",defaults.contentType); 57 | oXhr.send(defaults.data); 58 | } 59 | //4.等待服务器回应 60 | if(defaults.async){ 61 | oXhr.onreadystatechange = function(){ 62 | if(oXhr.readyState === 4){ 63 | if(oXhr.status === 200) 64 | defaults.success.call(oXhr,oXhr.responseText); 65 | else{ 66 | defaults.error(); 67 | } 68 | } 69 | }; 70 | }else{ 71 | if(oXhr.status === 200) 72 | defaults.success.call(oXhr,oXhr.responseText); 73 | else{ 74 | defaults.error(); 75 | } 76 | } 77 | } 78 | -------------------------------------------------------------------------------- /src/views/UserMG/userMg/userInformation.vue: -------------------------------------------------------------------------------- 1 | 37 | 54 | 55 | 95 | -------------------------------------------------------------------------------- /src/views/SystemMG/poundageTable.vue: -------------------------------------------------------------------------------- 1 | 38 | 39 | 90 | -------------------------------------------------------------------------------- /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 webpack = require('webpack') 11 | var projectRoot = path.resolve(__dirname, '../../') 12 | 13 | var webpackConfig = merge(baseConfig, { 14 | // use inline sourcemap for karma-sourcemap-loader 15 | module: { 16 | loaders: utils.styleLoaders() 17 | }, 18 | devtool: '#inline-source-map', 19 | vue: { 20 | loaders: { 21 | js: 'isparta' 22 | } 23 | }, 24 | plugins: [ 25 | new webpack.DefinePlugin({ 26 | 'process.env': require('../../config/test.env') 27 | }) 28 | ] 29 | }) 30 | 31 | // no need for app entry during tests 32 | delete webpackConfig.entry 33 | 34 | // make sure isparta loader is applied before eslint 35 | webpackConfig.module.preLoaders = webpackConfig.module.preLoaders || [] 36 | webpackConfig.module.preLoaders.unshift({ 37 | test: /\.js$/, 38 | loader: 'isparta', 39 | include: path.resolve(projectRoot, 'src') 40 | }) 41 | 42 | // only apply babel for test files when using isparta 43 | webpackConfig.module.loaders.some(function (loader, i) { 44 | if (loader.loader === 'babel') { 45 | loader.include = path.resolve(projectRoot, 'test/unit') 46 | return true 47 | } 48 | }) 49 | 50 | module.exports = function (config) { 51 | config.set({ 52 | // to run in additional browsers: 53 | // 1. install corresponding karma launcher 54 | // http://karma-runner.github.io/0.13/config/browsers.html 55 | // 2. add it to the `browsers` array below. 56 | browsers: ['PhantomJS'], 57 | frameworks: ['mocha', 'sinon-chai'], 58 | reporters: ['spec', 'coverage'], 59 | files: ['./index.js'], 60 | preprocessors: { 61 | './index.js': ['webpack', 'sourcemap'] 62 | }, 63 | webpack: webpackConfig, 64 | webpackMiddleware: { 65 | noInfo: true 66 | }, 67 | coverageReporter: { 68 | dir: './coverage', 69 | reporters: [ 70 | { type: 'lcov', subdir: '.' }, 71 | { type: 'text-summary' } 72 | ] 73 | } 74 | }) 75 | } 76 | -------------------------------------------------------------------------------- /src/views/UserMG/userMg/userIMCC.vue: -------------------------------------------------------------------------------- 1 | 2 | 59 | 72 | 73 | 91 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vue-webpack", 3 | "version": "1.0.0", 4 | "description": "A Vue.js project", 5 | "author": "", 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 | "lint": "eslint --ext .js,.vue src test/unit/specs test/e2e/specs" 14 | }, 15 | "dependencies": { 16 | "vue": "^2.0.1", 17 | "vue-resource": "^1.0.3", 18 | "vue-router": "^2.0.1", 19 | "vuex": "^2.0.0" 20 | }, 21 | "devDependencies": { 22 | "autoprefixer": "^6.4.0", 23 | "babel-core": "^6.0.0", 24 | "babel-eslint": "^7.0.0", 25 | "babel-loader": "^6.0.0", 26 | "babel-plugin-transform-runtime": "^6.0.0", 27 | "babel-preset-es2015": "^6.0.0", 28 | "babel-preset-stage-2": "^6.0.0", 29 | "babel-register": "^6.0.0", 30 | "babel-runtime": "^6.18.0", 31 | "chai": "^3.5.0", 32 | "chalk": "^1.1.3", 33 | "chromedriver": "^2.21.2", 34 | "connect-history-api-fallback": "^1.1.0", 35 | "cross-spawn": "^4.0.2", 36 | "css-loader": "^0.25.0", 37 | "element-ui": "^1.0.0-rc.8", 38 | "eslint": "^3.7.1", 39 | "eslint-config-standard": "^6.1.0", 40 | "eslint-friendly-formatter": "^2.0.5", 41 | "eslint-loader": "^1.5.0", 42 | "eslint-plugin-html": "^1.3.0", 43 | "eslint-plugin-promise": "^2.0.1", 44 | "eslint-plugin-standard": "^2.0.1", 45 | "eventsource-polyfill": "^0.9.6", 46 | "express": "^4.13.3", 47 | "extract-text-webpack-plugin": "^1.0.1", 48 | "file-loader": "^0.9.0", 49 | "function-bind": "^1.0.2", 50 | "html-webpack-plugin": "^2.8.1", 51 | "http-proxy-middleware": "^0.17.2", 52 | "inject-loader": "^2.0.1", 53 | "isparta-loader": "^2.0.0", 54 | "json-loader": "^0.5.4", 55 | "karma": "^1.3.0", 56 | "karma-coverage": "^1.1.1", 57 | "karma-mocha": "^1.2.0", 58 | "karma-phantomjs-launcher": "^1.0.0", 59 | "karma-sinon-chai": "^1.2.0", 60 | "karma-sourcemap-loader": "^0.3.7", 61 | "karma-spec-reporter": "0.0.26", 62 | "karma-webpack": "^1.7.0", 63 | "lolex": "^1.4.0", 64 | "mocha": "^3.1.0", 65 | "nightwatch": "^0.9.8", 66 | "opn": "^4.0.2", 67 | "ora": "^0.3.0", 68 | "phantomjs-prebuilt": "^2.1.3", 69 | "selenium-server": "2.53.1", 70 | "semver": "^5.3.0", 71 | "shelljs": "^0.7.4", 72 | "sinon": "^1.17.3", 73 | "sinon-chai": "^2.8.0", 74 | "stylus-loader": "^2.3.1", 75 | "url-loader": "^0.5.7", 76 | "vue-loader": "^9.4.0", 77 | "vue-style-loader": "^1.0.0", 78 | "webpack": "^1.13.2", 79 | "webpack-dev-middleware": "^1.8.3", 80 | "webpack-hot-middleware": "^2.12.2", 81 | "webpack-merge": "^0.14.1" 82 | }, 83 | "engines": { 84 | "node": ">= 4.0.0", 85 | "npm": ">= 3.0.0" 86 | } 87 | } 88 | -------------------------------------------------------------------------------- /src/components/cb-nav.vue: -------------------------------------------------------------------------------- 1 | 43 | 56 | -------------------------------------------------------------------------------- /src/router.js: -------------------------------------------------------------------------------- 1 | //创建一个路由实例并配置路由规则 2 | export default { 3 | //默认路由 4 | '/': { 5 | name: 'home', 6 | linkActiveClass: 'active', 7 | component: require('./views/home.vue') 8 | }, 9 | //首页 10 | '/home': { 11 | name: 'home', 12 | linkActiveClass: 'active', 13 | component: require('./views/home.vue') 14 | }, 15 | //用户管理 16 | //用户管理 17 | '/userManagement': { 18 | name: 'userManagement', 19 | linkActiveClass: 'active', 20 | component: require('./views/UserMG/userMg/userManagement.vue'), 21 | }, 22 | //收货地址 23 | '/userManagement/ShippingAddress': { 24 | 25 | name: 'ShippingAddress', 26 | component: require('./views/UserMG/AddressManagement.vue') 27 | }, 28 | //银行账户 29 | '/userManagement/BankAccount': { 30 | 31 | name: 'BankAccount', 32 | component: require('./views/UserMG/userMg/BankAccount.vue') 33 | }, 34 | //用户基本资料 35 | '/userManagement/userInformation': { 36 | 37 | name: 'userInformation', 38 | component: require('./views/UserMG/userMg/userInformation.vue') 39 | }, 40 | //用户基本资料 41 | '/userManagement/userIMCC': { 42 | 43 | name: 'userIMCC', 44 | component: require('./views/UserMG/userMg/userIMCC.vue') 45 | }, 46 | //后台用户管理 47 | '/userManagement/systemUserMG': { 48 | 49 | name: 'systemUserMG', 50 | component: require('./views/UserMG/systemUserMg/systemUserMG.vue') 51 | }, 52 | //待审核用户管理 53 | '/userManagement/PendingUsersMG': { 54 | 55 | name: 'PendingUsersMG', 56 | component: require('./views/UserMG/PendingUserMg/PendingUserMG.vue') 57 | }, 58 | //资讯管理 59 | //新闻频道管理 60 | '/NewsMG/newsChannelMG': { 61 | 62 | name: 'newsChannelMG', 63 | component: require('./views/NewsMG/newsChannelMg/newsChannelMG.vue') 64 | }, 65 | //新闻管理 66 | '/NewsMG/newsMG': { 67 | 68 | name: 'newsMG', 69 | component: require('./views/NewsMG/newsMg/newsMG.vue') 70 | }, 71 | //订单管理 72 | //订单管理 73 | '/OrderMG/orderQuery': { 74 | 75 | name: 'orderQuery', 76 | component: require('./views/OrderMG/orderQuery/orderQuery.vue') 77 | }, 78 | //待转账订单 79 | '/OrderMG/pendingOrder': { 80 | 81 | name: 'pendingOrder', 82 | component: require('./views/OrderMG/pendingOrder/pendingOrder.vue') 83 | }, 84 | //债权管理 85 | //债权查询 86 | '/DebtMG/debtQuery': { 87 | 88 | name: 'debtQuery', 89 | component: require('./views/DebtMG/debtQuery/debtQuery.vue') 90 | }, 91 | //待转账债权 92 | '/DebtMG/pendingDebt': { 93 | 94 | name: 'pendingDebt', 95 | component: require('./views/DebtMG/pendingDebt/pendingDebt.vue') 96 | }, 97 | //系统管理 98 | //手续费管理 99 | '/SystemMG/poundageMG': { 100 | 101 | name: 'poundageMG', 102 | component: require('./views/SystemMG/poundageMG.vue') 103 | }, 104 | //角色管理 105 | '/SystemMG/roleMG': { 106 | 107 | name: 'roleMG', 108 | component: require('./views/SystemMG/roleMg/roleMG.vue') 109 | }, 110 | //数据统计 111 | '/SystemMG/dataStatistics': { 112 | 113 | name: 'dataStatistics', 114 | component: require('./views/SystemMG/dataStatistics.vue') 115 | }, 116 | //账户安全 117 | '/SystemMG/accountSecurity': { 118 | 119 | name: 'accountSecurity', 120 | component: require('./views/SystemMG/accountSecurity.vue') 121 | }, 122 | //批量付款 123 | '/SystemMG/BatchPayment': { 124 | 125 | name: 'BatchPayment', 126 | component: require('./views/SystemMG/BatchPayment.vue') 127 | }, 128 | } 129 | -------------------------------------------------------------------------------- /src/views/SystemMG/dataStatistics.vue: -------------------------------------------------------------------------------- 1 | 64 | 77 | 97 | 98 | 99 | -------------------------------------------------------------------------------- /src/views/UserMG/systemUserMg/sUserMGtable.vue: -------------------------------------------------------------------------------- 1 | 95 | 96 | 121 | 126 | -------------------------------------------------------------------------------- /src/views/SystemMG/BatchPayment.vue: -------------------------------------------------------------------------------- 1 | 56 | 98 | 122 | -------------------------------------------------------------------------------- /src/views/UserMG/userMg/userMgTable.vue: -------------------------------------------------------------------------------- 1 | 66 | 137 | 144 | -------------------------------------------------------------------------------- /src/views/OrderMG/orderQuery/oQtable.vue: -------------------------------------------------------------------------------- 1 | 63 | 64 | 141 | 153 | -------------------------------------------------------------------------------- /src/views/DebtMG/pendingDebt/pDebtTable.vue: -------------------------------------------------------------------------------- 1 | 63 | 64 | 138 | 150 | -------------------------------------------------------------------------------- /src/views/DebtMG/debtQuery/debtQueryTable.vue: -------------------------------------------------------------------------------- 1 | 63 | 64 | 138 | 150 | -------------------------------------------------------------------------------- /src/views/OrderMG/pendingOrder/pQtable.vue: -------------------------------------------------------------------------------- 1 | 63 | 64 | 141 | 153 | -------------------------------------------------------------------------------- /src/main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import ElementUI from 'element-ui' 3 | import 'element-ui/lib/theme-default/index.css' 4 | import './components/common/css/reset.css' 5 | import VueRouter from 'vue-router' 6 | import resource from 'vue-resource' 7 | import routerConfig from './router' 8 | import App from './App' 9 | 10 | Vue.config.debug = true; 11 | 12 | Vue.use(ElementUI) 13 | Vue.use(VueRouter) 14 | Vue.use(resource) 15 | 16 | //创建一个路由实例并配置路由规则 17 | const router = new VueRouter({ 18 | mode: 'history', 19 | base: __dirname, 20 | routes: [ 21 | //默认路由 22 | { 23 | path: '/', 24 | name:'home', 25 | linkActiveClass:'active', 26 | component: require('./views/home.vue') 27 | }, 28 | //首页 29 | { 30 | path: '/home', 31 | name:'home', 32 | linkActiveClass:'active', 33 | component: require('./views/home.vue') 34 | }, 35 | //用户管理 36 | //用户管理 37 | { 38 | path: '/userManagement', 39 | name:'userManagement', 40 | linkActiveClass:'active', 41 | component: require('./views/UserMG/userMg/userManagement.vue'), 42 | }, 43 | //收货地址 44 | { 45 | path:'/userManagement/ShippingAddress', 46 | name:'ShippingAddress', 47 | component:require('./views/UserMG/AddressManagement.vue') 48 | }, 49 | //银行账户 50 | { 51 | path:'/userManagement/BankAccount', 52 | name:'BankAccount', 53 | component:require('./views/UserMG/userMg/BankAccount.vue') 54 | }, 55 | //用户基本资料 56 | { 57 | path:'/userManagement/userInformation', 58 | name:'userInformation', 59 | component:require('./views/UserMG/userMg/userInformation.vue') 60 | }, 61 | //用户基本资料 62 | { 63 | path:'/userManagement/userIMCC', 64 | name:'userIMCC', 65 | component:require('./views/UserMG/userMg/userIMCC.vue') 66 | }, 67 | //后台用户管理 68 | { 69 | path:'/userManagement/systemUserMG', 70 | name:'systemUserMG', 71 | component:require('./views/UserMG/systemUserMg/systemUserMG.vue') 72 | }, 73 | //待审核用户管理 74 | { 75 | path:'/userManagement/PendingUsersMG', 76 | name:'PendingUsersMG', 77 | component:require('./views/UserMG/PendingUserMg/PendingUserMG.vue') 78 | }, 79 | //资讯管理 80 | //新闻频道管理 81 | { 82 | path:'/NewsMG/newsChannelMG', 83 | name:'newsChannelMG', 84 | component:require('./views/NewsMG/newsChannelMg/newsChannelMG.vue') 85 | }, 86 | //新闻管理 87 | { 88 | path:'/NewsMG/newsMG', 89 | name:'newsMG', 90 | component:require('./views/NewsMG/newsMg/newsMG.vue') 91 | }, 92 | //订单管理 93 | //订单管理 94 | { 95 | path:'/OrderMG/orderQuery', 96 | name:'orderQuery', 97 | component:require('./views/OrderMG/orderQuery/orderQuery.vue') 98 | }, 99 | //待转账订单 100 | { 101 | path:'/OrderMG/pendingOrder', 102 | name:'pendingOrder', 103 | component:require('./views/OrderMG/pendingOrder/pendingOrder.vue') 104 | }, 105 | //债权管理 106 | //债权查询 107 | { 108 | path:'/DebtMG/debtQuery', 109 | name:'debtQuery', 110 | component:require('./views/DebtMG/debtQuery/debtQuery.vue') 111 | }, 112 | //待转账债权 113 | { 114 | path:'/DebtMG/pendingDebt', 115 | name:'pendingDebt', 116 | component:require('./views/DebtMG/pendingDebt/pendingDebt.vue') 117 | }, 118 | //系统管理 119 | //手续费管理 120 | { 121 | path:'/SystemMG/poundageMG', 122 | name:'poundageMG', 123 | component:require('./views/SystemMG/poundageMG.vue') 124 | }, 125 | //角色管理 126 | { 127 | path:'/SystemMG/roleMG', 128 | name:'roleMG', 129 | component:require('./views/SystemMG/roleMg/roleMG.vue') 130 | }, 131 | //数据统计 132 | { 133 | path:'/SystemMG/dataStatistics', 134 | name:'dataStatistics', 135 | component:require('./views/SystemMG/dataStatistics.vue') 136 | }, 137 | //账户安全 138 | { 139 | path:'/SystemMG/accountSecurity', 140 | name:'accountSecurity', 141 | component:require('./views/SystemMG/accountSecurity.vue') 142 | }, 143 | //批量付款 144 | { 145 | path:'/SystemMG/BatchPayment', 146 | name:'BatchPayment', 147 | component:require('./views/SystemMG/BatchPayment.vue') 148 | }, 149 | 150 | ] 151 | }) 152 | 153 | //启动路由 154 | const app = new Vue({ 155 | router:router, 156 | render:h=>h(App) 157 | }).$mount('#app'); 158 | 159 | 160 | -------------------------------------------------------------------------------- /src/views/UserMG/PendingUserMg/PuMGtable.vue: -------------------------------------------------------------------------------- 1 | 74 | 75 | 142 | 166 | -------------------------------------------------------------------------------- /src/views/NewsMG/newsChannelMg/nCtable.vue: -------------------------------------------------------------------------------- 1 | 80 | 81 | 161 | 174 | -------------------------------------------------------------------------------- /src/views/NewsMG/newsMg/nMtable.vue: -------------------------------------------------------------------------------- 1 | 83 | 84 | 175 | 180 | -------------------------------------------------------------------------------- /src/components/common/vue/dialog.vue: -------------------------------------------------------------------------------- 1 | 16 | 26 | 282 | -------------------------------------------------------------------------------- /.idea/workspace.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 33 | 34 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 118 | 119 | 120 | 122 | 123 | 178 | 179 | 180 | 181 | 182 | true 183 | DEFINITION_ORDER 184 | 185 | 186 | 187 | 188 | 189 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 226 | 227 | 228 | 229 | 232 | 233 | 236 | 237 | 238 | 239 | 242 | 243 | 246 | 247 | 250 | 251 | 252 | 253 | 256 | 257 | 260 | 261 | 264 | 265 | 268 | 269 | 270 | 271 | 274 | 275 | 278 | 279 | 282 | 283 | 286 | 287 | 288 | 289 | 292 | 293 | 296 | 297 | 300 | 301 | 304 | 305 | 308 | 309 | 310 | 311 | 314 | 315 | 318 | 319 | 322 | 323 | 326 | 327 | 330 | 331 | 334 | 335 | 336 | 337 | 340 | 341 | 344 | 345 | 348 | 349 | 352 | 353 | 354 | 355 | 358 | 359 | 362 | 363 | 366 | 367 | 370 | 371 | 374 | 375 | 378 | 379 | 380 | 381 | 384 | 385 | 388 | 389 | 392 | 393 | 396 | 397 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 419 | 420 | 421 | 422 | 423 | 424 | 425 | 426 | 427 | 428 | 429 | 430 | 431 | 432 | 433 | 434 | 435 | 436 | 437 | 438 | 439 | 440 | 441 | 442 | 443 | 444 | 445 | 446 | 447 | 448 | 449 | 450 | 451 | 452 | 453 | 454 | 455 | 456 | 457 | 458 | 459 | 460 | 465 | 466 | project 467 | 468 | 469 | 470 | 471 | 472 | 473 | 474 | 475 | 476 | 477 | 478 | 479 | 480 | 481 | 482 | project 483 | 484 | 485 | true 486 | 487 | 488 | 489 | DIRECTORY 490 | 491 | false 492 | 493 | 494 | 495 | 496 | 497 | 498 | 499 | 500 | 501 | 502 | 503 | 504 | 506 | 507 | 508 | 509 | 1477897846764 510 | 555 | 556 | 557 | 558 | 560 | 561 | 562 | 563 | 564 | 565 | 566 | 567 | 568 | 569 | 570 | 571 | 572 | 573 | 574 | 575 | 576 | 577 | 578 | 579 | 580 | 581 | 582 | 583 | 584 | 585 | 586 | 587 | 588 | 589 | 590 | 591 | 592 | 593 | 594 | 595 | 596 | 597 | 598 | 599 | 600 | 601 | 602 | 603 | 604 | 605 | 606 | 607 | 608 | 609 | 610 | 612 | 613 | 616 | 619 | 620 | 621 | 623 | 624 | 625 | 627 | 628 | 629 | 630 | 631 | 632 | 633 | 634 | 635 | 636 | 637 | 638 | 639 | 640 | 641 | 642 | 643 | 644 | 645 | 646 | 647 | 648 | 649 | 650 | 651 | 652 | 653 | 654 | 655 | 656 | 657 | 658 | 659 | 660 | 661 | 662 | 663 | 664 | 665 | 666 | 667 | 668 | 669 | 670 | 671 | 672 | 673 | 674 | 675 | 676 | 677 | 678 | 679 | 680 | 681 | 682 | 683 | 684 | 685 | 686 | 687 | 688 | 689 | 690 | 691 | 692 | 693 | 694 | 695 | 696 | 697 | 698 | 699 | 700 | 701 | 702 | 703 | 704 | 705 | 706 | 707 | 708 | 709 | 710 | 711 | 712 | 713 | 714 | 715 | 716 | 717 | 718 | 719 | 720 | 721 | 722 | 723 | 724 | 725 | 726 | 727 | 728 | 729 | 730 | 731 | 732 | 733 | 734 | 735 | 736 | 737 | 738 | 739 | 740 | 741 | 742 | 743 | 744 | 745 | 746 | 747 | 748 | 749 | 750 | 751 | 752 | 753 | 754 | 755 | 756 | 757 | 758 | 759 | 760 | 761 | 762 | 763 | 764 | 765 | 766 | 767 | 768 | 769 | 770 | 771 | 772 | 773 | 774 | 775 | 776 | 777 | 778 | 779 | 780 | 781 | 782 | 783 | 784 | 785 | 786 | 787 | 788 | 789 | 790 | 791 | 792 | 793 | 794 | 795 | 796 | 797 | 798 | 799 | 800 | 801 | 802 | 803 | 804 | 805 | 806 | 807 | 808 | 809 | 810 | 811 | 812 | 813 | 814 | 815 | 816 | 817 | 818 | 819 | 820 | 821 | 822 | 823 | 824 | 825 | 826 | 827 | 828 | 829 | 830 | 831 | 832 | 833 | 834 | 835 | 836 | 837 | 838 | 839 | 840 | 841 | 842 | 843 | 844 | 845 | 846 | 847 | 848 | 849 | 850 | 851 | 852 | 853 | 854 | 855 | 856 | 857 | 858 | 859 | 860 | 861 | 862 | 863 | 864 | 865 | 866 | 867 | 868 | 869 | 870 | 871 | 872 | 873 | 874 | 875 | 876 | 877 | 878 | 879 | 880 | 881 | 882 | 883 | 884 | 885 | 886 | 887 | 888 | 889 | 890 | 891 | 892 | 893 | 894 | 895 | 896 | 897 | 898 | 899 | 900 | 901 | 902 | 903 | 904 | 905 | 906 | 907 | 908 | 909 | 910 | 911 | 912 | 913 | 914 | 915 | 916 | 917 | 918 | 919 | 920 | 921 | 922 | 923 | 924 | 925 | 926 | 927 | 928 | 929 | 930 | 931 | 932 | --------------------------------------------------------------------------------