├── static
├── .gitkeep
└── img
│ ├── 1.png
│ ├── 2.png
│ └── 3.png
├── doc
└── 项目环境搭建步骤.doc
├── config
├── prod.env.js
├── dev.env.js
└── index.js
├── src
├── assets
│ ├── car.ico
│ ├── logo.png
│ ├── js
│ │ ├── datamap.js
│ │ └── simulationapi.js
│ ├── images
│ │ ├── card.jpg
│ │ ├── downloadcode.png
│ │ └── totalnumber.jpg
│ ├── fonts
│ │ ├── iconfont.eot
│ │ ├── iconfont.ttf
│ │ ├── iconfont.woff
│ │ └── iconfont.svg
│ ├── iconfont.css
│ └── css
│ │ └── style.css
├── components
│ ├── dgTable
│ │ ├── js
│ │ │ ├── Bus.js
│ │ │ └── index.js
│ │ ├── index.js
│ │ ├── componentsTem
│ │ │ ├── customizemenu.vue
│ │ │ ├── columcomponent.vue
│ │ │ └── customizefilter.vue
│ │ ├── css
│ │ │ └── common.css
│ │ ├── Filters
│ │ │ ├── edit.vue
│ │ │ ├── range.vue
│ │ │ ├── date.vue
│ │ │ ├── cascader.vue
│ │ │ ├── search.vue
│ │ │ └── radio.vue
│ │ └── dg-table.vue
│ ├── 404.vue
│ ├── treeTable
│ │ ├── eval.js
│ │ ├── index.vue
│ │ ├── tree-item.vue
│ │ └── indexNew.vue
│ ├── nav
│ │ ├── leftNav.vue
│ │ └── topNav.vue
│ ├── selectTable
│ │ └── index.vue
│ ├── tableChoice
│ │ └── index.vue
│ ├── treeTransfer
│ │ └── index.vue
│ └── elGrid
│ │ └── index.vue
├── views
│ ├── permission
│ │ ├── 菜单权限.txt
│ │ ├── index.vue
│ │ └── menuBtnConfig.vue
│ ├── table
│ │ ├── tableChoice.vue
│ │ ├── elTable.vue
│ │ ├── treeTable.vue
│ │ ├── dgTable.vue
│ │ └── indexTreeTable.vue
│ ├── treeTransfer
│ │ ├── treeDragTransfer.vue
│ │ └── index.vue
│ ├── home.vue
│ ├── tool
│ │ ├── animation.vue
│ │ ├── uploadImg.vue
│ │ ├── horseRaceLamp.vue
│ │ └── export.vue
│ ├── markdown
│ │ └── editor.vue
│ └── select
│ │ └── index.vue
├── api
│ ├── env.js
│ ├── api_enterprise.js
│ └── index.js
├── store.js
├── common
│ └── util.js
├── main.js
├── app.vue
├── vendor
│ ├── Export2Excel.js
│ └── Blob.js
└── router
│ └── index.js
├── vueTool
├── static
│ ├── img
│ │ ├── 1.png
│ │ ├── 2.png
│ │ └── 3.png
│ ├── fonts
│ │ ├── element-icons.535877f.woff
│ │ └── element-icons.732389d.ttf
│ └── js
│ │ ├── manifest.c671b31a6294c60d458b.js
│ │ └── manifest.c671b31a6294c60d458b.js.map
└── index.html
├── .editorconfig
├── .postcssrc.js
├── .gitignore
├── .babelrc
├── index.html
├── README.md
└── package.json
/static/.gitkeep:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/doc/项目环境搭建步骤.doc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gengbingbing/vue-tools/HEAD/doc/项目环境搭建步骤.doc
--------------------------------------------------------------------------------
/static/img/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gengbingbing/vue-tools/HEAD/static/img/1.png
--------------------------------------------------------------------------------
/static/img/2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gengbingbing/vue-tools/HEAD/static/img/2.png
--------------------------------------------------------------------------------
/static/img/3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gengbingbing/vue-tools/HEAD/static/img/3.png
--------------------------------------------------------------------------------
/config/prod.env.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 | module.exports = {
3 | NODE_ENV: '"production"'
4 | }
5 |
--------------------------------------------------------------------------------
/src/assets/car.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gengbingbing/vue-tools/HEAD/src/assets/car.ico
--------------------------------------------------------------------------------
/src/assets/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gengbingbing/vue-tools/HEAD/src/assets/logo.png
--------------------------------------------------------------------------------
/src/assets/js/datamap.js:
--------------------------------------------------------------------------------
1 | export const GENDER = Object.freeze({
2 | 1: '男',
3 | 2: '女'
4 | })
5 |
--------------------------------------------------------------------------------
/vueTool/static/img/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gengbingbing/vue-tools/HEAD/vueTool/static/img/1.png
--------------------------------------------------------------------------------
/vueTool/static/img/2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gengbingbing/vue-tools/HEAD/vueTool/static/img/2.png
--------------------------------------------------------------------------------
/vueTool/static/img/3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gengbingbing/vue-tools/HEAD/vueTool/static/img/3.png
--------------------------------------------------------------------------------
/src/assets/images/card.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gengbingbing/vue-tools/HEAD/src/assets/images/card.jpg
--------------------------------------------------------------------------------
/src/assets/fonts/iconfont.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gengbingbing/vue-tools/HEAD/src/assets/fonts/iconfont.eot
--------------------------------------------------------------------------------
/src/assets/fonts/iconfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gengbingbing/vue-tools/HEAD/src/assets/fonts/iconfont.ttf
--------------------------------------------------------------------------------
/src/assets/fonts/iconfont.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gengbingbing/vue-tools/HEAD/src/assets/fonts/iconfont.woff
--------------------------------------------------------------------------------
/src/components/dgTable/js/Bus.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 |
3 | const Bus = new Vue()
4 |
5 | export default Bus
6 |
--------------------------------------------------------------------------------
/src/views/permission/菜单权限.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gengbingbing/vue-tools/HEAD/src/views/permission/菜单权限.txt
--------------------------------------------------------------------------------
/src/assets/images/downloadcode.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gengbingbing/vue-tools/HEAD/src/assets/images/downloadcode.png
--------------------------------------------------------------------------------
/src/assets/images/totalnumber.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gengbingbing/vue-tools/HEAD/src/assets/images/totalnumber.jpg
--------------------------------------------------------------------------------
/vueTool/static/fonts/element-icons.535877f.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gengbingbing/vue-tools/HEAD/vueTool/static/fonts/element-icons.535877f.woff
--------------------------------------------------------------------------------
/vueTool/static/fonts/element-icons.732389d.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gengbingbing/vue-tools/HEAD/vueTool/static/fonts/element-icons.732389d.ttf
--------------------------------------------------------------------------------
/src/components/dgTable/index.js:
--------------------------------------------------------------------------------
1 | import DGTable from './dg-table'
2 |
3 | DGTable.install = (Vue) => {
4 | Vue.component(DGTable.name, DGTable)
5 | }
6 | export default DGTable
7 |
--------------------------------------------------------------------------------
/config/dev.env.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 | const merge = require('webpack-merge')
3 | const prodEnv = require('./prod.env')
4 |
5 | module.exports = merge(prodEnv, {
6 | NODE_ENV: '"development"'
7 | })
8 |
--------------------------------------------------------------------------------
/.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 |
--------------------------------------------------------------------------------
/src/api/env.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by yqr on 2018/4/13.
3 | * 设置api请求的baseURL
4 | * 实际项目中建议该文件不纳入版本管理
5 | */
6 | export default {
7 | baseURL: 'http://localhost:8090',
8 | isDev: true
9 | }
10 |
--------------------------------------------------------------------------------
/.postcssrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | "plugins": {
3 | "postcss-import": {},
4 | "postcss-url": {},
5 | // to edit target browsers: use "browserslist" field in package.json
6 | "autoprefixer": {}
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules/
3 | /dist/
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 |
8 | # Editor directories and files
9 | .idea
10 | .vscode
11 | *.suo
12 | *.ntvs*
13 | *.njsproj
14 | *.sln
15 |
--------------------------------------------------------------------------------
/src/store.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import Vuex from 'vuex'
3 |
4 | Vue.use(Vuex)
5 |
6 | const state = {
7 | topNavState: 'home',
8 | leftNavState: 'home'
9 | }
10 |
11 | export default new Vuex.Store({
12 | state
13 | })
14 |
--------------------------------------------------------------------------------
/src/components/404.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
404 NOT FOUNT o(╯□╰)o
4 |
5 |
6 |
15 |
--------------------------------------------------------------------------------
/src/common/util.js:
--------------------------------------------------------------------------------
1 | var TEL_REGEXP = /^1([38]\d|5[0-35-9]|7[3678])\d{8}$/;
2 |
3 | export default {
4 | checkTel: {
5 | validateTel: function(tel){
6 | if(TEL_REGEXP.test(tel)){
7 | return true;
8 | }
9 | return false;
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [
3 | ["env", {
4 | "modules": false,
5 | "targets": {
6 | "browsers": ["> 1%", "last 2 versions", "not ie <= 8"]
7 | }
8 | }],
9 | "stage-2"
10 | ],
11 | "plugins": ["jsx-v-model", "transform-vue-jsx", "transform-runtime"]
12 | }
13 |
--------------------------------------------------------------------------------
/src/api/api_enterprise.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by yqr on 2018/4/13.
3 | */
4 | import * as API from './'
5 |
6 | export default {
7 | //查询列表
8 | findList: params => {
9 | return API.GET('/json', params)
10 | },
11 | findById: id => {
12 | return API.GET(`/api/enterprise/list/${id}`)
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | tools 集锦
8 |
9 |
10 |
11 |
12 |
17 |
18 |
--------------------------------------------------------------------------------
/src/components/dgTable/componentsTem/customizemenu.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 | click1
4 | click2
5 |
6 |
7 |
20 |
21 |
--------------------------------------------------------------------------------
/vueTool/index.html:
--------------------------------------------------------------------------------
1 | tools 集锦
--------------------------------------------------------------------------------
/src/components/dgTable/componentsTem/columcomponent.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 | {{gendermap[row.gender]}}
4 | {{gendermap[row.gender]}}
5 |
6 |
7 |
18 |
19 |
27 |
--------------------------------------------------------------------------------
/src/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './App'
3 | import router from './router'
4 | import ElementUI from 'element-ui'
5 | import echarts from 'echarts'
6 | import Blob from './vendor/Blob.js'
7 | import Export2Excel from './vendor/Export2Excel.js'
8 |
9 | import store from './store.js'
10 | import 'element-ui/lib/theme-chalk/index.css'
11 | import '@/assets/iconfont.css'
12 | import '@/assets/css/style.css'
13 | import 'echarts/map/js/china'
14 | import $ from 'jquery'
15 |
16 | Vue.config.productionTip = false
17 | Vue.prototype.$echarts = echarts
18 | Vue.use(ElementUI)
19 |
20 | new Vue({
21 | router,
22 | store,
23 | el: '#app',
24 | render: h => h(App)
25 | })
26 |
--------------------------------------------------------------------------------
/vueTool/static/js/manifest.c671b31a6294c60d458b.js:
--------------------------------------------------------------------------------
1 | !function(r){var n=window.webpackJsonp;window.webpackJsonp=function(e,u,c){for(var f,i,p,a=0,l=[];a
2 |
3 |
打开弹出框
4 |
5 |
6 |
{{getSelData}}
7 |
8 |
9 |
10 |
32 |
33 |
--------------------------------------------------------------------------------
/src/components/treeTable/eval.js:
--------------------------------------------------------------------------------
1 | /**
2 | * @Author: gengbingbing
3 | * @Date: 2019/6/9
4 | */
5 | 'use strict'
6 | import Vue from 'vue'
7 | export default function treeToArray(data, expandAll, parent = null, level = null) {
8 | let tmp = []
9 | Array.from(data).forEach(function (record) {
10 | if (record._expanded === undefined) {
11 | Vue.set(record, '_expanded', expandAll)
12 | }
13 | let _level = 1
14 | if (level !== undefined && level !== null) {
15 | _level = level + 1
16 | }
17 | Vue.set(record, '_level', _level)
18 | // 如果有父元素
19 | if (parent) {
20 | Vue.set(record, 'parent', parent)
21 | }
22 | tmp.push(record)
23 | if (record.children && record.children.length > 0) {
24 | const children = treeToArray(record.children, expandAll, record, _level)
25 | tmp = tmp.concat(children)
26 | }
27 | })
28 | return tmp
29 | }
--------------------------------------------------------------------------------
/src/views/treeTransfer/treeDragTransfer.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/src/components/dgTable/css/common.css:
--------------------------------------------------------------------------------
1 | .filterWrap {
2 | min-width: 100px;
3 | border: 1px solid #ebeef5;
4 | border-radius: 2px;
5 | background-color: #fff;
6 | box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
7 | box-sizing: border-box;
8 | margin: 2px 0;
9 | position: absolute;
10 | z-index: 9;
11 | }
12 | .editFilter {
13 | position: absolute;
14 | width: 300px;
15 | }
16 | .filterWrap.hideBg {
17 | opacity:0;
18 | box-shadow:none;
19 | }
20 | /* .filterWrap .filterContainer {
21 | padding: 10px;
22 | } */
23 | .filterWrap .filterBottom {
24 | padding: 8px;
25 | border-top: 1px solid #ebeef5;
26 | }
27 | .filterWrap .filterBottom button {
28 | background: transparent;
29 | border: none;
30 | color: #606266;
31 | cursor: pointer;
32 | font-size: 13px;
33 | padding: 0 3px;
34 | }
35 | .filterWrap .filterBottom button.is-disabled {
36 | color: #c0c4cc;
37 | cursor: not-allowed;
38 | }
--------------------------------------------------------------------------------
/src/assets/iconfont.css:
--------------------------------------------------------------------------------
1 |
2 | @font-face {font-family: "iconfont";
3 | src: url('fonts/iconfont.eot?t=1524894158375'); /* IE9*/
4 | src: url('fonts/iconfont.eot?t=1524894158375#iefix') format('embedded-opentype'), /* IE6-IE8 */
5 | url('fonts/iconfont.woff?t=1524894158375') format('woff'),
6 | url('fonts/iconfont.ttf?t=1524894158375') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/
7 | url('fonts/iconfont.svg?t=1524894158375#iconfont') format('svg'); /* iOS 4.1- */
8 | }
9 |
10 | .iconfont {
11 | font-family:"iconfont" !important;
12 | font-size:16px;
13 | font-style:normal;
14 | -webkit-font-smoothing: antialiased;
15 | -moz-osx-font-smoothing: grayscale;
16 | }
17 |
18 | .icon-home:before { content: "\e626"; }
19 |
20 | .icon-user:before { content: "\ec52"; }
21 |
22 | .icon-indent:before { content: "\e62b"; }
23 |
24 | .icon-outdent:before { content: "\e62c"; }
25 |
26 | .icon-caret-down:before { content: "\e631"; }
27 |
28 |
--------------------------------------------------------------------------------
/src/views/home.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
31 |
36 |
--------------------------------------------------------------------------------
/src/components/dgTable/js/index.js:
--------------------------------------------------------------------------------
1 |
2 | /* eslint-disable */
3 | // 这个js文件是用于
4 | // 从筛选器中得到的数据传输到你的page中
5 | // 如果在多个组建中引用这个文件 要调用initFilterData
6 | let _filters = {}
7 | export const getFilter = val => {
8 | var _t = []
9 | var _ft = {}
10 | if (val.label) {
11 | _filters[val.key] = {
12 | label: val.label,
13 | ftn: val.ftn,
14 | value: val.value,
15 | key: val.key
16 | }
17 | } else {
18 | if (_filters.hasOwnProperty(val.key)) {
19 | delete _filters[val.key]
20 | }
21 | }
22 | for (var k in _filters) {
23 | _t.push(_filters[k])
24 | _ft[k] = _filters[k].value
25 | }
26 | return { showfilter: _t, dofilter: _ft }
27 | }
28 | export const doDeleteFilter = tag => {
29 | var dkey = tag.key
30 | delete _filters[dkey]
31 | var _ft = {}
32 | for (var k in _filters) {
33 | _ft[k] = _filters[k].value
34 | }
35 | return _ft
36 | }
37 | export const initFilterData = (inittags = {}) => {
38 | _filters = inittags
39 | }
40 |
--------------------------------------------------------------------------------
/src/components/dgTable/componentsTem/customizefilter.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
我是一个用户自定义的筛选器
4 |
点击我进行筛选
5 |
6 |
7 |
8 |
39 |
40 |
48 |
--------------------------------------------------------------------------------
/src/views/tool/animation.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
11 |
12 |
13 |
14 |
45 |
46 |
--------------------------------------------------------------------------------
/src/app.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
11 |
50 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Vue Tools
2 |
3 | > A Vue.js project
4 | ## 一些组件截图
5 | 
6 |
7 | 
8 |
9 | 
10 | ## Build Setup
11 |
12 | ``` bash
13 | # install dependencies
14 | npm install
15 |
16 | # serve with hot reload at localhost:8080
17 | npm run dev
18 |
19 | # build for production with minification
20 | npm run build
21 |
22 | # build for production and view the bundle analyzer report
23 | npm run build --report
24 | ```
25 |
26 |
27 | For a detailed explanation on how things work, check out the [guide](http://vuejs-templates.github.io/webpack/) and [docs for vue-loader](http://vuejs.github.io/vue-loader).
28 |
29 | # Vue Tools
30 |
--------------------------------------------------------------------------------
/src/views/markdown/editor.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
13 |
14 |
15 | 提交
16 |
17 |
18 |
--------------------------------------------------------------------------------
/src/components/dgTable/Filters/edit.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
13 |
14 |
15 |
16 |
17 |
65 |
66 |
77 |
--------------------------------------------------------------------------------
/src/views/select/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
下拉表格,带复选框
4 |
9 |
10 |
11 |
12 |
13 |
64 |
65 |
--------------------------------------------------------------------------------
/src/api/index.js:
--------------------------------------------------------------------------------
1 | import Env from './env';
2 | import axios from 'axios'
3 | axios.defaults.withCredentials = true;
4 | // axios.defaults.headers.common['Authorization'] = AUTH_TOKEN;
5 | // axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8';//配置请求头
6 |
7 | //添加一个请求拦截器
8 | axios.interceptors.response.use(response => {
9 | return response;
10 | }, error => {
11 | if (error.response) {
12 | switch (error.response.status) {
13 | // 返回401,清除token信息并跳转到登录页面
14 | case 401:
15 | router.replace({
16 | path: '/404'
17 | //登录成功后跳入浏览的当前页面
18 | // query: {redirect: router.currentRoute.fullPath}
19 | })
20 | }
21 | // 返回接口返回的错误信息
22 | return Promise.reject(error.response.data);
23 | }
24 | });
25 |
26 | /* axios.interceptors.request.use(function (config) {
27 | console.dir(config);
28 | return config;
29 | }, function (error) {
30 | // Do something with request error
31 | return Promise.reject(error);
32 | }); */
33 |
34 |
35 | //基地址
36 | let base = Env.baseURL;
37 |
38 | //测试使用
39 | export const ISDEV = Env.isDev;
40 |
41 | //通用方法
42 | export const POST = (url, params) => {
43 | return axios.post(`${base}${url}`, params).then(res => res.data)
44 | }
45 |
46 | export const GET = (url, params) => {
47 | return axios.get(`${base}${url}`, {params: params}).then(res => res.data)
48 | }
49 |
50 | export const PUT = (url, params) => {
51 | return axios.put(`${base}${url}`, params).then(res => res.data)
52 | }
53 |
54 | export const DELETE = (url, params) => {
55 | return axios.delete(`${base}${url}`, {params: params}).then(res => res.data)
56 | }
57 |
58 | export const PATCH = (url, params) => {
59 | return axios.patch(`${base}${url}`, params).then(res => res.data)
60 | }
61 |
--------------------------------------------------------------------------------
/src/views/tool/uploadImg.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
上传图片(头像)
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
36 |
65 |
--------------------------------------------------------------------------------
/src/components/dgTable/Filters/range.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | {{unit}}
9 |
10 |
11 |
至
12 |
13 |
14 | {{unit}}
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
61 |
62 |
75 |
--------------------------------------------------------------------------------
/src/components/nav/leftNav.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
27 |
28 |
48 |
49 |
--------------------------------------------------------------------------------
/src/components/selectTable/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
18 |
19 |
20 |
21 |
29 |
30 |
31 | 搜索
32 |
33 |
34 |
35 |
73 |
74 |
--------------------------------------------------------------------------------
/config/index.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 | // Template version: 1.3.1
3 | // see http://vuejs-templates.github.io/webpack for documentation.
4 |
5 | const path = require('path')
6 |
7 | module.exports = {
8 | dev: {
9 |
10 | // Paths
11 | assetsSubDirectory: 'static',
12 | assetsPublicPath: '/',
13 | proxyTable: {
14 | // '/api': {
15 | // target: 'http://localhost:8080',//设置你调用的接口域名和端口号 别忘了加http
16 | // changeOrigin: true,
17 | // pathRewrite: {
18 | // '^/api': ''//这里理解成用‘/api’代替target里面的地址,后面组件中我们掉接口时直接用api代替 比如我要调用'http://40.00.100.100:3002/user/add',直接写‘/api/user/add’即可
19 | // }
20 | // }
21 | },
22 |
23 | // Various Dev Server settings
24 | host: 'localhost', // can be overwritten by process.env.HOST
25 | port: 8081, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined
26 | autoOpenBrowser: false,
27 | errorOverlay: true,
28 | notifyOnErrors: true,
29 | poll: false, // https://webpack.js.org/configuration/dev-server/#devserver-watchoptions-
30 |
31 |
32 | /**
33 | * Source Maps
34 | */
35 |
36 | // https://webpack.js.org/configuration/devtool/#development
37 | devtool: 'cheap-module-eval-source-map',
38 |
39 | // If you have problems debugging vue-files in devtools,
40 | // set this to false - it *may* help
41 | // https://vue-loader.vuejs.org/en/options.html#cachebusting
42 | cacheBusting: true,
43 |
44 | cssSourceMap: true
45 | },
46 |
47 | build: {
48 | // Template for index.html
49 | index: path.resolve(__dirname, '../vueTool/index.html'),
50 |
51 | // Paths
52 | assetsRoot: path.resolve(__dirname, '../vueTool'),
53 | assetsSubDirectory: 'static',
54 | assetsPublicPath: './',
55 |
56 | /**
57 | * Source Maps
58 | */
59 |
60 | productionSourceMap: true,
61 | // https://webpack.js.org/configuration/devtool/#production
62 | devtool: '#source-map',
63 |
64 | // Gzip off by default as many popular static hosts such as
65 | // Surge or Netlify already gzip all static assets for you.
66 | // Before setting to `true`, make sure to:
67 | // npm install --save-dev compression-webpack-plugin
68 | productionGzip: false,
69 | productionGzipExtensions: ['js', 'css'],
70 |
71 | // Run the build command with an extra argument to
72 | // View the bundle analyzer report after build finishes:
73 | // `npm run build --report`
74 | // Set to `true` or `false` to always turn it on or off
75 | bundleAnalyzerReport: process.env.npm_config_report
76 | }
77 | }
78 |
--------------------------------------------------------------------------------
/src/views/tool/horseRaceLamp.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | -
5 | {{item.name}}
6 | {{item.site}}
7 | {{item.gsmc}}
8 |
9 |
10 |
11 |
12 |
65 |
66 |
--------------------------------------------------------------------------------
/src/components/dgTable/Filters/date.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
17 |
18 |
19 |
20 |
21 |
95 |
96 |
99 |
--------------------------------------------------------------------------------
/src/components/dgTable/Filters/cascader.vue:
--------------------------------------------------------------------------------
1 |
2 |
4 |
12 |
13 |
14 |
15 |
16 |
95 |
96 |
102 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "tengyu",
3 | "version": "1.0.0",
4 | "description": "A Vue.js project",
5 | "author": "gengbingbing",
6 | "private": true,
7 | "scripts": {
8 | "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
9 | "start": "npm run dev",
10 | "serve": "npm run dev",
11 | "build": "node build/build.js"
12 | },
13 | "dependencies": {
14 | "axios": "^0.18.0",
15 | "babel-polyfill": "^6.26.0",
16 | "babel-runtime": "^6.26.0",
17 | "countup.js": "^1.9.3",
18 | "dg-table": "^0.2.0",
19 | "echarts": "^4.0.4",
20 | "el-tree-transfer": "^2.2.0",
21 | "element-ui": "^2.9.1",
22 | "file-saver": "^1.3.8",
23 | "less": "^3.9.0",
24 | "mavon-editor": "^2.9.0",
25 | "vue": "^2.5.2",
26 | "vue-countup-v2": "^1.0.3",
27 | "vue-router": "^3.0.1",
28 | "vuex": "^3.0.1",
29 | "webpack-cli": "^3.3.3",
30 | "xlsx": "^0.14.0"
31 | },
32 | "devDependencies": {
33 | "autoprefixer": "^7.1.2",
34 | "babel-core": "^6.22.1",
35 | "babel-helper-vue-jsx-merge-props": "^2.0.3",
36 | "babel-loader": "^7.1.1",
37 | "babel-plugin-jsx-v-model": "^2.0.3",
38 | "babel-plugin-syntax-jsx": "^6.18.0",
39 | "babel-plugin-transform-runtime": "^6.22.0",
40 | "babel-plugin-transform-vue-jsx": "^3.5.0",
41 | "babel-preset-env": "^1.3.2",
42 | "babel-preset-stage-2": "^6.22.0",
43 | "less": "^2.7.2",
44 | "less-loader": "^4.0.5",
45 | "chalk": "^2.0.1",
46 | "copy-webpack-plugin": "^4.0.1",
47 | "css-loader": "^0.28.0",
48 | "extract-text-webpack-plugin": "^3.0.0",
49 | "file-loader": "^1.1.4",
50 | "friendly-errors-webpack-plugin": "^1.6.1",
51 | "html-webpack-plugin": "^2.30.1",
52 | "jquery": "^3.3.1",
53 | "node-notifier": "^5.1.2",
54 | "node-sass": "^4.9.0",
55 | "optimize-css-assets-webpack-plugin": "^3.2.0",
56 | "ora": "^1.2.0",
57 | "portfinder": "^1.0.13",
58 | "postcss-import": "^11.0.0",
59 | "postcss-loader": "^2.0.8",
60 | "postcss-url": "^7.2.1",
61 | "rimraf": "^2.6.0",
62 | "sass-loader": "^7.0.1",
63 | "script-loader": "^0.7.2",
64 | "semver": "^5.3.0",
65 | "shelljs": "^0.7.6",
66 | "uglifyjs-webpack-plugin": "^1.1.1",
67 | "url-loader": "^0.5.8",
68 | "vue-loader": "^13.3.0",
69 | "vue-style-loader": "^3.0.1",
70 | "vue-template-compiler": "^2.5.2",
71 | "webpack": "^3.6.0",
72 | "webpack-bundle-analyzer": "^3.3.2",
73 | "webpack-dev-server": "^2.9.7",
74 | "webpack-merge": "^4.1.0"
75 | },
76 | "engines": {
77 | "node": ">= 6.0.0",
78 | "npm": ">= 3.0.0"
79 | },
80 | "browserslist": [
81 | "> 1%",
82 | "last 2 versions",
83 | "not ie <= 8"
84 | ]
85 | }
86 |
--------------------------------------------------------------------------------
/src/components/dgTable/Filters/search.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
10 |
11 | {{ item[showkey] }}
12 |
13 |
14 |
15 |
16 |
17 |
18 |
84 |
85 |
107 |
--------------------------------------------------------------------------------
/src/views/table/elTable.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
{{ title }}
4 |
11 |
12 |
13 |
14 |
17 |
106 |
--------------------------------------------------------------------------------
/src/components/dgTable/Filters/radio.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
9 | {{item.label}}
10 |
11 |
17 | {{item.label}}
18 |
19 |
20 |
21 |
22 |
102 |
103 |
126 |
--------------------------------------------------------------------------------
/src/components/nav/topNav.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |

7 |
8 |
11 |
12 |
13 |
14 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
102 |
--------------------------------------------------------------------------------
/src/views/table/treeTable.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
118 |
119 |
--------------------------------------------------------------------------------
/src/components/treeTable/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 | {{ scope.$index }}
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 | {{ scope.row[column.value] }}
23 |
24 |
25 |
26 |
27 |
28 |
29 |
92 |
110 |
111 |
--------------------------------------------------------------------------------
/src/components/treeTable/tree-item.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
17 |
18 | 编辑
19 |
20 | 删除
21 |
22 |
23 | {{ model[item.id] }}
24 |
25 | |
26 |
27 |
28 | |
29 |
30 |
31 |
32 |
43 |
44 |
45 |
46 |
47 |
48 |
126 |
--------------------------------------------------------------------------------
/src/components/tableChoice/index.vue:
--------------------------------------------------------------------------------
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 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 | 提交({{num}})
37 | 取消
38 |
39 |
40 |
41 |
42 |
43 |
109 |
--------------------------------------------------------------------------------
/src/views/tool/export.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 | 导出Excel
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
22 |
23 |
--------------------------------------------------------------------------------
/vueTool/static/js/manifest.c671b31a6294c60d458b.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"sources":["webpack:///webpack/bootstrap 3b00f022c1a3aee8bca2"],"names":["parentJsonpFunction","window","chunkIds","moreModules","executeModules","moduleId","chunkId","result","i","resolves","length","installedChunks","push","Object","prototype","hasOwnProperty","call","modules","shift","__webpack_require__","s","installedModules","1","exports","module","l","m","c","d","name","getter","o","defineProperty","configurable","enumerable","get","n","__esModule","object","property","p","oe","err","console","error"],"mappings":"aACA,IAAAA,EAAAC,OAAA,aACAA,OAAA,sBAAAC,EAAAC,EAAAC,GAIA,IADA,IAAAC,EAAAC,EAAAC,EAAAC,EAAA,EAAAC,KACQD,EAAAN,EAAAQ,OAAoBF,IAC5BF,EAAAJ,EAAAM,GACAG,EAAAL,IACAG,EAAAG,KAAAD,EAAAL,GAAA,IAEAK,EAAAL,GAAA,EAEA,IAAAD,KAAAF,EACAU,OAAAC,UAAAC,eAAAC,KAAAb,EAAAE,KACAY,EAAAZ,GAAAF,EAAAE,IAIA,IADAL,KAAAE,EAAAC,EAAAC,GACAK,EAAAC,QACAD,EAAAS,OAAAT,GAEA,GAAAL,EACA,IAAAI,EAAA,EAAYA,EAAAJ,EAAAM,OAA2BF,IACvCD,EAAAY,IAAAC,EAAAhB,EAAAI,IAGA,OAAAD,GAIA,IAAAc,KAGAV,GACAW,EAAA,GAIA,SAAAH,EAAAd,GAGA,GAAAgB,EAAAhB,GACA,OAAAgB,EAAAhB,GAAAkB,QAGA,IAAAC,EAAAH,EAAAhB,IACAG,EAAAH,EACAoB,GAAA,EACAF,YAUA,OANAN,EAAAZ,GAAAW,KAAAQ,EAAAD,QAAAC,IAAAD,QAAAJ,GAGAK,EAAAC,GAAA,EAGAD,EAAAD,QAKAJ,EAAAO,EAAAT,EAGAE,EAAAQ,EAAAN,EAGAF,EAAAS,EAAA,SAAAL,EAAAM,EAAAC,GACAX,EAAAY,EAAAR,EAAAM,IACAhB,OAAAmB,eAAAT,EAAAM,GACAI,cAAA,EACAC,YAAA,EACAC,IAAAL,KAMAX,EAAAiB,EAAA,SAAAZ,GACA,IAAAM,EAAAN,KAAAa,WACA,WAA2B,OAAAb,EAAA,SAC3B,WAAiC,OAAAA,GAEjC,OADAL,EAAAS,EAAAE,EAAA,IAAAA,GACAA,GAIAX,EAAAY,EAAA,SAAAO,EAAAC,GAAsD,OAAA1B,OAAAC,UAAAC,eAAAC,KAAAsB,EAAAC,IAGtDpB,EAAAqB,EAAA,KAGArB,EAAAsB,GAAA,SAAAC,GAA8D,MAApBC,QAAAC,MAAAF,GAAoBA","file":"static/js/manifest.c671b31a6294c60d458b.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tvar parentJsonpFunction = window[\"webpackJsonp\"];\n \twindow[\"webpackJsonp\"] = function webpackJsonpCallback(chunkIds, moreModules, executeModules) {\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [], result;\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules, executeModules);\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n \t\tif(executeModules) {\n \t\t\tfor(i=0; i < executeModules.length; i++) {\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = executeModules[i]);\n \t\t\t}\n \t\t}\n \t\treturn result;\n \t};\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// objects to store loaded and loading chunks\n \tvar installedChunks = {\n \t\t1: 0\n \t};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"./\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 3b00f022c1a3aee8bca2"],"sourceRoot":""}
--------------------------------------------------------------------------------
/src/vendor/Export2Excel.js:
--------------------------------------------------------------------------------
1 | /* eslint-disable */
2 | require('script-loader!file-saver');
3 | require('script-loader!vendor/Blob');
4 | require('script-loader!xlsx/dist/xlsx.core.min');
5 | function generateArray(table) {
6 | var out = [];
7 | var rows = table.querySelectorAll('tr');
8 | var ranges = [];
9 | for (var R = 0; R < rows.length; ++R) {
10 | var outRow = [];
11 | var row = rows[R];
12 | var columns = row.querySelectorAll('td');
13 | for (var C = 0; C < columns.length; ++C) {
14 | var cell = columns[C];
15 | var colspan = cell.getAttribute('colspan');
16 | var rowspan = cell.getAttribute('rowspan');
17 | var cellValue = cell.innerText;
18 | if (cellValue !== "" && cellValue == +cellValue) cellValue = +cellValue;
19 |
20 | //Skip ranges
21 | ranges.forEach(function (range) {
22 | if (R >= range.s.r && R <= range.e.r && outRow.length >= range.s.c && outRow.length <= range.e.c) {
23 | for (var i = 0; i <= range.e.c - range.s.c; ++i) outRow.push(null);
24 | }
25 | });
26 |
27 | //Handle Row Span
28 | if (rowspan || colspan) {
29 | rowspan = rowspan || 1;
30 | colspan = colspan || 1;
31 | ranges.push({s: {r: R, c: outRow.length}, e: {r: R + rowspan - 1, c: outRow.length + colspan - 1}});
32 | }
33 | ;
34 |
35 | //Handle Value
36 | outRow.push(cellValue !== "" ? cellValue : null);
37 |
38 | //Handle Colspan
39 | if (colspan) for (var k = 0; k < colspan - 1; ++k) outRow.push(null);
40 | }
41 | out.push(outRow);
42 | }
43 | return [out, ranges];
44 | };
45 |
46 | function datenum(v, date1904) {
47 | if (date1904) v += 1462;
48 | var epoch = Date.parse(v);
49 | return (epoch - new Date(Date.UTC(1899, 11, 30))) / (24 * 60 * 60 * 1000);
50 | }
51 |
52 | function sheet_from_array_of_arrays(data, opts) {
53 | var ws = {};
54 | var range = {s: {c: 10000000, r: 10000000}, e: {c: 0, r: 0}};
55 | for (var R = 0; R != data.length; ++R) {
56 | for (var C = 0; C != data[R].length; ++C) {
57 | if (range.s.r > R) range.s.r = R;
58 | if (range.s.c > C) range.s.c = C;
59 | if (range.e.r < R) range.e.r = R;
60 | if (range.e.c < C) range.e.c = C;
61 | var cell = {v: data[R][C]};
62 | if (cell.v == null) continue;
63 | var cell_ref = XLSX.utils.encode_cell({c: C, r: R});
64 |
65 | if (typeof cell.v === 'number') cell.t = 'n';
66 | else if (typeof cell.v === 'boolean') cell.t = 'b';
67 | else if (cell.v instanceof Date) {
68 | cell.t = 'n';
69 | cell.z = XLSX.SSF._table[14];
70 | cell.v = datenum(cell.v);
71 | }
72 | else cell.t = 's';
73 |
74 | ws[cell_ref] = cell;
75 | }
76 | }
77 | if (range.s.c < 10000000) ws['!ref'] = XLSX.utils.encode_range(range);
78 | return ws;
79 | }
80 |
81 | function Workbook() {
82 | if (!(this instanceof Workbook)) return new Workbook();
83 | this.SheetNames = [];
84 | this.Sheets = {};
85 | }
86 |
87 | function s2ab(s) {
88 | var buf = new ArrayBuffer(s.length);
89 | var view = new Uint8Array(buf);
90 | for (var i = 0; i != s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;
91 | return buf;
92 | }
93 |
94 | export function export_table_to_excel(id) {
95 | var theTable = document.getElementById(id);
96 | console.log('a')
97 | var oo = generateArray(theTable);
98 | var ranges = oo[1];
99 |
100 | /* original data */
101 | var data = oo[0];
102 | var ws_name = "SheetJS";
103 | console.log(data);
104 |
105 | var wb = new Workbook(), ws = sheet_from_array_of_arrays(data);
106 |
107 | /* add ranges to worksheet */
108 | // ws['!cols'] = ['apple', 'banan'];
109 | ws['!merges'] = ranges;
110 |
111 | /* add worksheet to workbook */
112 | wb.SheetNames.push(ws_name);
113 | wb.Sheets[ws_name] = ws;
114 |
115 | var wbout = XLSX.write(wb, {bookType: 'xlsx', bookSST: false, type: 'binary'});
116 |
117 | saveAs(new Blob([s2ab(wbout)], {type: "application/octet-stream"}), "test.xlsx")
118 | }
119 |
120 | function formatJson(jsonData) {
121 | console.log(jsonData)
122 | }
123 | export function export_json_to_excel(th, jsonData, defaultTitle) {
124 |
125 | /* original data */
126 |
127 | var data = jsonData;
128 | data.unshift(th);
129 | var ws_name = "SheetJS";
130 |
131 | var wb = new Workbook(), ws = sheet_from_array_of_arrays(data);
132 |
133 |
134 | /* add worksheet to workbook */
135 | wb.SheetNames.push(ws_name);
136 | wb.Sheets[ws_name] = ws;
137 |
138 | var wbout = XLSX.write(wb, {bookType: 'xlsx', bookSST: false, type: 'binary'});
139 | var title = defaultTitle || '列表'
140 | saveAs(new Blob([s2ab(wbout)], {type: "application/octet-stream"}), title + ".xlsx")
141 | }
142 |
--------------------------------------------------------------------------------
/src/views/permission/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/src/assets/fonts/iconfont.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
49 |
--------------------------------------------------------------------------------
/src/views/treeTransfer/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
树形穿越框
4 |
5 |
16 |
17 |
18 |
19 |
20 |
使用方法:
21 |
22 | npm install el-tree-transfer --save
23 |
24 |
参数说明:
25 |
26 | - 参数:width 说明:宽度 类型:String 必填:false 默认:100% 补充:建议在外部盒子设定宽度和位置
27 | - 参数:height 说明:高度 类型:String 必填:false 默认:320px
28 | - 参数:title 说明:标题 类型:Array 必填:false 默认:["源列表", "目标列表"]
29 | - 参数:button_text 说明:按钮名字 类型:Array 必填:false 默认:空
30 | - 参数:from_data 说明:源数据 类型:Array 必填:true 补充:数据格式同 element-ui tree 组件,但必须有 id 和 pid
31 | - 参数:to_data 说明:目标数据 类型:Array 必填:true 补充:数据格式同 element-ui tree 组件,但必须有 id 和 pid
32 | - 参数:defaultProps 说明:配置项 - 同 el-tree 中 props 必填: false 补充:用法和 el-tree 的 props 一样
33 | - 参数:node_key 说明:自定义 node-key 的值,默认为id 必填:false 补充:必须与 treedata 数据内的 id 参数名一致,必须唯一
34 | - 参数:pid 说明:自定义 pid 的参数名,默认为
"pid" 必填:false 补充:有网友提出后台给的字段名不叫 pid,因此增加自定义支持
35 | - 参数:leafOnly 说明:是否只返回叶子节点 类型:Boolean 必填:false 补充:默认 false,如果你只需要返回的末端子节点可使用此参数
36 | - 参数:filter 说明:是否开启筛选功能 类型:Boolean 必填:false
37 | - 参数:openAll 说明:是否默认展开全部 类型:Boolean 必填:false
38 | - 参数:renderContent 说明:自定义树节点 类型:Function 必填:false 补充:用法同 element-ui tree
39 | - 参数:mode 说明:设置模式,字段可选值为 transfer|addressList 类型:String 必填:false 补充:mode 默认为 transfer 模式,即树形穿梭框模式,可配置字段为 addressList 改为通讯录模式,通讯录模式时按钮不可自定义名字,如要自定义标题名在 title 数组传入四个值即可,addressList 模式时标题默认为通讯录、收件人、抄送人、密送人
40 | - 参数:transferOpenNode 说明:穿梭后是否展开穿梭的节点 类型:Boolean 必填:false 补充:默认为 true 即展开穿梭的节点,便于视觉查看,增加此参数是因为数据量大时展开会有明显卡顿问题,但注意,如此参数设置为 false 则穿梭后不展开,毕竟无法确定第几层就会有庞大数据
41 | - 参数:defaultCheckedKeys 说明:默认展开节点 类型:Array 必填:false 补充:只匹配初始时默认节点,不会在你操作后动态改变默认节点
42 | - 参数:placeholder 说明:设置搜索框提示语 类型:String 必填:false 补充:默认为请输入关键词进行筛选
43 | - 参数:defaultTransfer 说明:是否自动穿梭一次默认选中 defaultCheckedKeys 的节点 类型:Boolean 必填:false 补充:默认 false,用来满足用户不想将数据拆分成 fromData 和 toData 的需求事件:addBtn 说明:点击添加按钮时触发的事件 回调
44 | - 参数:function (fromData,toData,obj), 树形穿梭框 transfer 模式分别为
45 |
1. 移动后左侧数据,
46 |
2. 移动后右侧数据,
47 |
3. 移动的节点 keys、nodes、halfKeys、halfNodes 对象;通讯录 addressList 模式时返回参数为右侧收件人列表、右侧抄送人列表、右侧密送人列表事件:removeBtn 说明:点击移除按钮时触发的事件 回调
48 |
49 | - 参数:function (fromData,toData,obj), 树形穿梭框 transfer 模式分别为
50 |
1. 移动后左侧数据,
51 |
2. 移动后右侧数据,
52 |
3. 移动的节点 keys、nodes、halfKeys、halfNodes 对象;通讯录 addressList 模式时返回参数为右侧收件人列表、右侧抄送人列表、右侧密送人列表
53 |
54 |
55 |
56 |
57 |
58 |
126 |
137 |
--------------------------------------------------------------------------------
/src/views/table/dgTable.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
15 |
16 |
17 |
18 |
197 |
198 |
--------------------------------------------------------------------------------
/src/assets/css/style.css:
--------------------------------------------------------------------------------
1 | * {
2 | margin: 0;
3 | padding: 0;
4 | }
5 |
6 | html {
7 | font-size: 14px;
8 | }
9 |
10 | @media all and (max-width: 768px) {
11 | html {
12 | font-size: 12px;
13 | }
14 | }
15 |
16 | body {
17 | margin: 0;
18 | padding: 0;
19 | }
20 |
21 | a {
22 | text-decoration: none;
23 | }
24 |
25 | ul {
26 | list-style: none;
27 | margin-bottom: 0;
28 | }
29 |
30 | #app {
31 | font-family: 'Avenir', Helvetica, Arial, sans-serif;
32 | -webkit-font-smoothing: antialiased;
33 | -moz-osx-font-smoothing: grayscale;
34 | color: #2c3e50;
35 | margin-top: 60px;
36 | }
37 |
38 | .container {
39 | position: absolute;
40 | top: 0px;
41 | bottom: 0px;
42 | width: 100%;
43 | }
44 |
45 | .container .topbar-wrap {
46 | height: 50px;
47 | line-height: 50px;
48 | background: #373d41;
49 | padding: 0px;
50 | }
51 |
52 | .container .topbar-wrap .topbar-btn {
53 | color: #fff;
54 | }
55 |
56 | .container .topbar-wrap .topbar-logo {
57 | float: left;
58 | width: 48px;
59 | line-height: 26px;
60 | }
61 |
62 | .container .topbar-wrap .topbar-logos {
63 | float: left;
64 | width: 140px;
65 | line-height: 48px;
66 | font-size: 14px;
67 | }
68 |
69 | .container .topbar-wrap .topbar-logo img, .container .topbar-wrap .topbar-logos img {
70 | height: 30px;
71 | margin-top: 12px;
72 | margin-left: 2px;
73 | }
74 |
75 | .container .topbar-wrap .topbar-title {
76 | float: left;
77 | text-align: left;
78 | padding-left: 10px;
79 | border-left: 1px solid #000;
80 | }
81 |
82 | .topbar-title .el-menu--horizontal {
83 | background-color: transparent;
84 | }
85 |
86 | .el-menu--horizontal > .el-menu-item:not(.is-disabled):hover, .el-menu--horizontal > .el-menu-item:not(.is-disabled):focus, .el-menu--horizontal > .el-menu-item.is-active {
87 | color: #fff;
88 | background-color: transparent;
89 | border-bottom: 2px solid #409EFF !important;
90 | }
91 |
92 | .topbar-title .el-menu--horizontal > .el-menu-item {
93 | height: 50px;
94 | line-height: 50px;
95 | color: #fff;
96 | }
97 |
98 | .el-menu-item .iconfont {
99 | margin-right: 5px;
100 | display: inline-block;
101 | width: 24px;
102 | text-align: center;
103 | font-size: 18px;
104 | vertical-align: middle;
105 | }
106 |
107 | .container .topbar-wrap .topbar-account {
108 | float: right;
109 | padding-right: 12px;
110 | }
111 |
112 | .container .topbar-wrap .topbar-timer {
113 | display: inline-block;
114 | }
115 |
116 | .container .topbar-wrap .topbar-timer span {
117 | display: inline-block;
118 | vertical-align: middle;
119 | }
120 |
121 | .container .topbar-wrap .topbar-timer .login-name {
122 | margin: 0 6px;
123 | font-style: normal;
124 | }
125 |
126 | .container .topbar-wrap .userinfo-inner {
127 | cursor: pointer;
128 | color: #fff;
129 | padding-left: 10px;
130 | }
131 |
132 | .container .topbar-wrap .userinfo-inner img {
133 | margin-left: 6px;
134 | width: 42px;
135 | height: 42px;
136 | border: 1px solid #504d4d;
137 | -webkit-border-radius: 50%;
138 | -moz-border-radius: 50%;
139 | border-radius: 50%;
140 | vertical-align: middle;
141 | }
142 |
143 | .container .menu-toggle {
144 | background: #4A5064;
145 | text-align: center;
146 | color: white;
147 | height: 26px;
148 | line-height: 30px;
149 | }
150 |
151 | .container .menu-toggle .iconfont:hover {
152 | cursor: pointer;
153 | }
154 |
155 | aside .el-menu-item, aside .el-submenu__title {
156 | color: #fff;
157 | text-align: left;
158 | }
159 |
160 | aside .el-menu-item:hover, aside .el-submenu .el-menu-item:hover, aside .el-submenu__title:hover {
161 | background-color: #7ed2df;
162 | }
163 |
164 | aside .el-submenu .el-menu-item {
165 | background-color: #333744;
166 | }
167 |
168 | aside .el-submenu .el-menu-item:hover {
169 | background-color: #4A5064;
170 | }
171 |
172 | aside .el-submenu .el-menu-item.is-active, aside .el-menu-item.is-active,
173 | aside .el-submenu .el-menu-item.is-active:hover, aside .el-menu-item.is-active:hover {
174 | background-color: #00C1DE;
175 | color: #fff;
176 | }
177 |
178 | aside .warp-breadcrum {
179 | margin: 5px 10px 15px 0px;
180 | }
181 |
182 | .container aside {
183 | min-width: 50px;
184 | background: #333744;
185 | }
186 |
187 | .container aside::-webkit-scrollbar {
188 | display: none;
189 | }
190 |
191 | .container aside.showSidebar {
192 | overflow-x: hidden;
193 | overflow-y: auto;
194 | }
195 |
196 | .container aside .el-menu {
197 | height: 100%; /*写给不支持calc()的浏览器*/
198 | height: calc(100% - 80px);
199 | border-radius: 0px;
200 | background-color: #333744;
201 | border-right: 0px;
202 | }
203 |
204 | .container aside .el-submenu .el-menu-item {
205 | min-width: 60px;
206 | }
207 |
208 | .container aside .el-menu {
209 | width: 189px;
210 | }
211 |
212 | .container aside .el-menu--collapse {
213 | width: 60px;
214 | }
215 |
216 | .container aside .el-menu .el-menu-item, .container aside .el-submenu .el-submenu__title {
217 | height: 46px;
218 | line-height: 46px;
219 | }
220 |
221 | .container aside .el-menu-item:hover, .container aside .el-submenu .el-menu-item:hover, .container aside .el-submenu__title:hover {
222 | background-color: #7ed2df;
223 | }
224 |
225 | .container .main {
226 | display: -ms-flexbox;
227 | display: flex;
228 | position: absolute;
229 | top: 50px;
230 | bottom: 0px;
231 | overflow: hidden;
232 | }
233 |
234 | .container .content-container {
235 | background: #fff;
236 | -ms-flex: 1;
237 | flex: 1;
238 | overflow-y: auto;
239 | padding: 10px;
240 | padding-bottom: 1px;
241 | }
242 |
243 | .container .content-container .content-wrapper {
244 | background-color: #fff;
245 | box-sizing: border-box;
246 | }
247 |
248 | .footer {
249 | position: fixed;
250 | bottom: 0;
251 | left: 0;
252 | padding: 20px 0;
253 | width: 100%;
254 | background-color: #2d2e2e;
255 | }
256 |
257 | .footer .footer-msg {
258 | max-width: 800px;
259 | margin: 0 auto;
260 | text-align: center;
261 | font-size: 1.08rem;
262 | color: #666;
263 | }
264 |
265 | .footer .footer-msg a {
266 | color: #428bca;
267 | text-decoration: none;
268 | }
269 |
270 | .footer .footer-msg a:hover,
271 | .footer .footer-msg a:focus,
272 | .footer .footer-msg a:active {
273 | color: #2a6496;
274 | text-decoration: underline;
275 | outline: 0;
276 | }
277 |
--------------------------------------------------------------------------------
/src/views/permission/menuBtnConfig.vue:
--------------------------------------------------------------------------------
1 |
2 |
27 |
28 |
29 |
165 |
166 |
--------------------------------------------------------------------------------
/src/router/index.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import Router from 'vue-router'
3 | import TopNav from '@/components/nav/topNav.vue'
4 | import LeftNav from '@/components/nav/leftNav.vue'
5 | import NotFound from '@/components/404.vue'
6 | import Home from '@/views/home.vue'
7 | import MainIndex from '@/views/main/index.vue'
8 | import Export from '@/views/tool/export.vue'
9 | import Animation from '@/views/tool/animation.vue'
10 | import HorseRaceLamp from '@/views/tool/horseRaceLamp.vue'
11 | import UploadImg from '@/views/tool/uploadImg.vue'
12 | import elTable from '@/views/table/elTable.vue'
13 | import dgTable from '@/views/table/dgTable.vue'
14 | import indexTreeTable from '@/views/table/indexTreeTable.vue'
15 | import treeTable from '@/views/table/treeTable.vue'
16 | import treeTransfer from '@/views/treeTransfer/index.vue'
17 | import treeDragTransfer from '@/views/treeTransfer/treeDragTransfer.vue'
18 | import selectTable from '@/views/select/index.vue'
19 | import tableChoice from '@/views/table/tableChoice.vue'
20 | import MarkdownEditor from '@/views/markdown/editor.vue'
21 |
22 | // 懒加载方式,当路由被访问的时候才加载对应组件
23 | Vue.use(Router)
24 |
25 | let router = new Router({
26 | routes: [
27 | {
28 | path: '/',
29 | name: 'home',
30 | component: Home,
31 | menuShow: true,
32 | children: [
33 | {
34 | path: '/',
35 | name: 'elGrid 表格',
36 | components: {
37 | default: elTable,
38 | // top: TopNav,
39 | aside: LeftNav
40 | },
41 | leaf: true,
42 | // iconCls: 'el-icon-setting',
43 | menuShow: true,
44 |
45 | },
46 | {
47 | path: '/dgTable',
48 | name: 'dgTable 表格',
49 | components: {
50 | default: dgTable,
51 | // top: TopNav,
52 | aside: LeftNav
53 | },
54 | leaf: true,
55 | // iconCls: 'el-icon-setting',
56 | menuShow: true,
57 |
58 | },
59 | {
60 | path: '/indexTreeTable',
61 | name: '自定义treeTable',
62 | components: {
63 | default: indexTreeTable,
64 | // top: TopNav,
65 | aside: LeftNav
66 | },
67 | leaf: true,
68 | // iconCls: 'el-icon-setting',
69 | menuShow: true,
70 |
71 | },
72 | {
73 | path: '/treeTable',
74 | name: 'treeTable 表格',
75 | components: {
76 | default: treeTable,
77 | // top: TopNav,
78 | aside: LeftNav
79 | },
80 | leaf: true,
81 | // iconCls: 'el-icon-setting',
82 | menuShow: true,
83 |
84 | },
85 | {
86 | path: '/tableChoice',
87 | name: '表格弹出选择框',
88 | components: {
89 | default: tableChoice,
90 | // top: TopNav,
91 | aside: LeftNav
92 | },
93 | leaf: true,
94 | // iconCls: 'el-icon-setting',
95 | menuShow: true,
96 |
97 | },
98 | {
99 | path: '/treeTransfer',
100 | name: '树形穿越框',
101 | components: {
102 | default: treeTransfer,
103 | // top: TopNav,
104 | aside: LeftNav
105 | },
106 | leaf: true,
107 | // iconCls: 'el-icon-setting',
108 | menuShow: true,
109 |
110 | },
111 | {
112 | path: '/treeDragTransfer',
113 | name: '树形可拖拽穿越框',
114 | components: {
115 | default: treeDragTransfer,
116 | // top: TopNav,
117 | aside: LeftNav
118 | },
119 | leaf: true,
120 | // iconCls: 'el-icon-setting',
121 | menuShow: true,
122 |
123 | },
124 | {
125 | path: '/selectTable',
126 | name: '下拉表格(带复选框)',
127 | components: {
128 | default: selectTable,
129 | // top: TopNav,
130 | aside: LeftNav
131 | },
132 | leaf: true,
133 | // iconCls: 'el-icon-setting',
134 | menuShow: true,
135 |
136 | },
137 | {
138 | path: '/ChinaMap',
139 | name: '中国地图',
140 | components: {
141 | default: MainIndex,
142 | // top: TopNav,
143 | aside: LeftNav
144 | },
145 | leaf: true,
146 | // iconCls: 'el-icon-setting',
147 | menuShow: true,
148 |
149 | },
150 | {
151 | path: '/tool/index',
152 | name: '导出/入Excel',
153 | components: {
154 | default: Export,
155 | // top: TopNav,
156 | aside: LeftNav
157 | },
158 | leaf: true,
159 | // iconCls: 'el-icon-setting',
160 | menuShow: true,
161 |
162 | },
163 | {
164 | path: '/tool/animation',
165 | name: '数字动画',
166 | components: {
167 | default: Animation,
168 | // top: TopNav,
169 | aside: LeftNav
170 | },
171 | leaf: true,
172 | // iconCls: 'el-icon-setting',
173 | menuShow: true
174 | },
175 | {
176 | path: '/tool/horseRaceLamp',
177 | name: 'vue跑马灯',
178 | components: {
179 | default: HorseRaceLamp,
180 | // top: TopNav,
181 | aside: LeftNav
182 | },
183 | leaf: true,
184 | // iconCls: 'el-icon-menu',
185 | menuShow: true
186 | },
187 | {
188 | path: '/tool/uploadImg',
189 | name: '上传图片',
190 | components: {
191 | default: UploadImg,
192 | // top: TopNav,
193 | aside: LeftNav
194 | },
195 | leaf: true,
196 | // iconCls: 'el-icon-menu',
197 | menuShow: true
198 | },
199 | {
200 | path: '/markdown',
201 | name: 'vue-markdown-editor',
202 | components: {
203 | default: MarkdownEditor,
204 | // top: TopNav,
205 | aside: LeftNav
206 | },
207 | leaf: true,
208 | // iconCls: 'el-icon-menu',
209 | menuShow: true
210 | }
211 | ]
212 | }
213 | ]
214 | });
215 |
216 | router.beforeEach((to, from, next) => {
217 | next()
218 | });
219 |
220 | export default router
221 |
--------------------------------------------------------------------------------
/src/vendor/Blob.js:
--------------------------------------------------------------------------------
1 | /* eslint-disable */
2 | /* Blob.js
3 | * A Blob implementation.
4 | * 2014-05-27
5 | *
6 | * By Eli Grey, http://eligrey.com
7 | * By Devin Samarin, https://github.com/eboyjr
8 | * License: X11/MIT
9 | * See LICENSE.md
10 | */
11 |
12 | /*global self, unescape */
13 | /*jslint bitwise: true, regexp: true, confusion: true, es5: true, vars: true, white: true,
14 | plusplus: true */
15 |
16 | /*! @source http://purl.eligrey.com/github/Blob.js/blob/master/Blob.js */
17 |
18 | (function (view) {
19 | "use strict";
20 |
21 | view.URL = view.URL || view.webkitURL;
22 |
23 | if (view.Blob && view.URL) {
24 | try {
25 | new Blob;
26 | return;
27 | } catch (e) {}
28 | }
29 |
30 | // Internally we use a BlobBuilder implementation to base Blob off of
31 | // in order to support older browsers that only have BlobBuilder
32 | var BlobBuilder = view.BlobBuilder || view.WebKitBlobBuilder || view.MozBlobBuilder || (function(view) {
33 | var
34 | get_class = function(object) {
35 | return Object.prototype.toString.call(object).match(/^\[object\s(.*)\]$/)[1];
36 | }
37 | , FakeBlobBuilder = function BlobBuilder() {
38 | this.data = [];
39 | }
40 | , FakeBlob = function Blob(data, type, encoding) {
41 | this.data = data;
42 | this.size = data.length;
43 | this.type = type;
44 | this.encoding = encoding;
45 | }
46 | , FBB_proto = FakeBlobBuilder.prototype
47 | , FB_proto = FakeBlob.prototype
48 | , FileReaderSync = view.FileReaderSync
49 | , FileException = function(type) {
50 | this.code = this[this.name = type];
51 | }
52 | , file_ex_codes = (
53 | "NOT_FOUND_ERR SECURITY_ERR ABORT_ERR NOT_READABLE_ERR ENCODING_ERR "
54 | + "NO_MODIFICATION_ALLOWED_ERR INVALID_STATE_ERR SYNTAX_ERR"
55 | ).split(" ")
56 | , file_ex_code = file_ex_codes.length
57 | , real_URL = view.URL || view.webkitURL || view
58 | , real_create_object_URL = real_URL.createObjectURL
59 | , real_revoke_object_URL = real_URL.revokeObjectURL
60 | , URL = real_URL
61 | , btoa = view.btoa
62 | , atob = view.atob
63 |
64 | , ArrayBuffer = view.ArrayBuffer
65 | , Uint8Array = view.Uint8Array
66 | ;
67 | FakeBlob.fake = FB_proto.fake = true;
68 | while (file_ex_code--) {
69 | FileException.prototype[file_ex_codes[file_ex_code]] = file_ex_code + 1;
70 | }
71 | if (!real_URL.createObjectURL) {
72 | URL = view.URL = {};
73 | }
74 | URL.createObjectURL = function(blob) {
75 | var
76 | type = blob.type
77 | , data_URI_header
78 | ;
79 | if (type === null) {
80 | type = "application/octet-stream";
81 | }
82 | if (blob instanceof FakeBlob) {
83 | data_URI_header = "data:" + type;
84 | if (blob.encoding === "base64") {
85 | return data_URI_header + ";base64," + blob.data;
86 | } else if (blob.encoding === "URI") {
87 | return data_URI_header + "," + decodeURIComponent(blob.data);
88 | } if (btoa) {
89 | return data_URI_header + ";base64," + btoa(blob.data);
90 | } else {
91 | return data_URI_header + "," + encodeURIComponent(blob.data);
92 | }
93 | } else if (real_create_object_URL) {
94 | return real_create_object_URL.call(real_URL, blob);
95 | }
96 | };
97 | URL.revokeObjectURL = function(object_URL) {
98 | if (object_URL.substring(0, 5) !== "data:" && real_revoke_object_URL) {
99 | real_revoke_object_URL.call(real_URL, object_URL);
100 | }
101 | };
102 | FBB_proto.append = function(data/*, endings*/) {
103 | var bb = this.data;
104 | // decode data to a binary string
105 | if (Uint8Array && (data instanceof ArrayBuffer || data instanceof Uint8Array)) {
106 | var
107 | str = ""
108 | , buf = new Uint8Array(data)
109 | , i = 0
110 | , buf_len = buf.length
111 | ;
112 | for (; i < buf_len; i++) {
113 | str += String.fromCharCode(buf[i]);
114 | }
115 | bb.push(str);
116 | } else if (get_class(data) === "Blob" || get_class(data) === "File") {
117 | if (FileReaderSync) {
118 | var fr = new FileReaderSync;
119 | bb.push(fr.readAsBinaryString(data));
120 | } else {
121 | // async FileReader won't work as BlobBuilder is sync
122 | throw new FileException("NOT_READABLE_ERR");
123 | }
124 | } else if (data instanceof FakeBlob) {
125 | if (data.encoding === "base64" && atob) {
126 | bb.push(atob(data.data));
127 | } else if (data.encoding === "URI") {
128 | bb.push(decodeURIComponent(data.data));
129 | } else if (data.encoding === "raw") {
130 | bb.push(data.data);
131 | }
132 | } else {
133 | if (typeof data !== "string") {
134 | data += ""; // convert unsupported types to strings
135 | }
136 | // decode UTF-16 to binary string
137 | bb.push(unescape(encodeURIComponent(data)));
138 | }
139 | };
140 | FBB_proto.getBlob = function(type) {
141 | if (!arguments.length) {
142 | type = null;
143 | }
144 | return new FakeBlob(this.data.join(""), type, "raw");
145 | };
146 | FBB_proto.toString = function() {
147 | return "[object BlobBuilder]";
148 | };
149 | FB_proto.slice = function(start, end, type) {
150 | var args = arguments.length;
151 | if (args < 3) {
152 | type = null;
153 | }
154 | return new FakeBlob(
155 | this.data.slice(start, args > 1 ? end : this.data.length)
156 | , type
157 | , this.encoding
158 | );
159 | };
160 | FB_proto.toString = function() {
161 | return "[object Blob]";
162 | };
163 | FB_proto.close = function() {
164 | this.size = this.data.length = 0;
165 | };
166 | return FakeBlobBuilder;
167 | }(view));
168 |
169 | view.Blob = function Blob(blobParts, options) {
170 | var type = options ? (options.type || "") : "";
171 | var builder = new BlobBuilder();
172 | if (blobParts) {
173 | for (var i = 0, len = blobParts.length; i < len; i++) {
174 | builder.append(blobParts[i]);
175 | }
176 | }
177 | return builder.getBlob(type);
178 | };
179 | }(typeof self !== "undefined" && self || typeof window !== "undefined" && window || this.content || this));
180 |
--------------------------------------------------------------------------------
/src/components/treeTransfer/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | 待选列
6 |
7 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 | 已选列
28 |
29 |
41 |
42 |
43 |
44 |
45 |
46 | 确定
47 | 取消
48 |
49 |
50 |
51 |
52 |
175 |
176 |
216 |
--------------------------------------------------------------------------------
/src/components/elGrid/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
15 |
16 |
17 |
24 |
25 | {{ scope.row[item.prop] }}
26 |
27 |
28 |
29 |
30 |
31 |
218 |
219 |
225 |
--------------------------------------------------------------------------------
/src/components/treeTable/indexNew.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
10 | {{item.header}}
11 |
12 |
16 |
17 |
18 | 确定
19 | 取消
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 | |
28 |
29 |
30 |
31 |
55 |
56 |
65 |
66 |
67 |
68 |
69 |
70 |
169 |
170 |
--------------------------------------------------------------------------------
/src/views/table/indexTreeTable.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
树表格
4 |
14 |
15 |
16 |
17 |
399 |
400 |
406 |
--------------------------------------------------------------------------------
/src/components/dgTable/dg-table.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
14 |
17 | {{item.ftn}}:
18 |
19 | {{item.label}}
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
50 |
54 |
55 |
56 |
61 |
64 |
65 |
71 | {{item.label}}
72 |
73 |
74 |
75 |
76 |
79 | {{item.label}}
80 |
81 |
82 |
83 |
84 |
85 |
86 |
89 | {{getTime(row[item.prop])}}
90 |
93 | {{getTime(row[item.prop], 'y-m-d h:s:m')}}
94 |
97 | {{item.processdata(row, item.prop)}}
98 |
101 | {{getText({cc: item, s: row})}}
102 |
103 |
104 |
105 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
122 |
123 |
126 | {{actionConfig.label}}
127 |
128 |
129 |
130 |
134 |
135 |
138 | {{actionConfig.label}}
139 |
140 |
141 |
142 |
146 |
147 |
153 |
154 |
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 |
166 |
167 |
181 |
182 |
183 |
184 |
185 |
186 |
187 |
199 |
200 |
201 |
543 |
544 |
572 |
--------------------------------------------------------------------------------
/src/assets/js/simulationapi.js:
--------------------------------------------------------------------------------
1 | // 用于模拟搜索的数据
2 | let allusers = [] // 全部数据
3 | let CUR_FILTERDATA = [] // 过滤后的数据
4 |
5 | let perpagecount = 10 // 每页显示的数量
6 | // let CUR_PAGE = 1
7 |
8 | export const searchdata = (k = {}) => {
9 | let data = []
10 | for (let i = 0; i < allusers.length; i++) {
11 | if (allusers[i].name.indexOf(k.name) !== -1) {
12 | data.push(allusers[i])
13 | }
14 | }
15 | return Promise.resolve(data)
16 | }
17 | export const dofilter = (allfilter = {}) => {
18 | let data = []
19 | let filter = allfilter.filters
20 | let page = allfilter.page
21 | for (let i = 0; i < allusers.length; i++) {
22 | let sameKeyNum = 0
23 | for (let k in filter) {
24 | if (k === 'birthPlace') {
25 | if (allusers[i][k].child.code === filter[k] + '') sameKeyNum++
26 | }
27 | if (k === 'birthDay') {
28 | var gt = new Date(filter[k]['gt']).getTime()
29 | var lt = new Date(filter[k]['lt']).getTime()
30 | var usertime = new Date(allusers[i][k]).getTime()
31 | if (usertime <= lt && usertime >= gt) {
32 | sameKeyNum++
33 | }
34 | }
35 | if (k === 'age') {
36 | let agea = filter[k].split(',')
37 | if (allusers[i][k] <= agea[1] && allusers[i][k] >= agea[0]) {
38 | sameKeyNum++
39 | }
40 | }
41 | if (allusers[i][k] === filter[k] + '') {
42 | sameKeyNum++
43 | }
44 | }
45 | if (sameKeyNum === Object.keys(filter).length) data.push(allusers[i])
46 | }
47 | if (Object.keys(filter).length === 0) data = allusers
48 | CUR_FILTERDATA = data
49 | let rdata = CUR_FILTERDATA.slice(perpagecount * (page - 1), perpagecount * (page - 1) + perpagecount)
50 | let _page = Math.ceil(data.length / perpagecount) ? Math.ceil(data.length / perpagecount) : 1
51 | let res = {
52 | data: rdata,
53 | pagenum: _page
54 | }
55 | return res
56 | }
57 | // 模拟radio
58 | export const radiodata = () => {
59 | let data = [
60 | { label: '项目1', value: 1 },
61 | { label: '项目2', value: 2 },
62 | { label: '项目3', value: 3 },
63 | { label: '项目4', value: 4 },
64 | { label: '项目5', value: 5 }
65 | ]
66 | return Promise.resolve(data)
67 | }
68 | // 随机生成表数据
69 | export const createTableDataByRandom = (len) => {
70 | let users = []
71 | const xarr = ['王', '黄', '陈', '方', '林', '刘', '张', '吴', '蔡', '龚', '杨', '潘', '俞', '庄', '许', '徐', '欧阳', '欧', '诸葛', '肖', '涂', '严', '颜', '冯', '曾']
72 | const nchar = ['容止', '羡林', '芷', '回', '言蹊', '思睿', '怀瑾', '瑾', '遇', '道韫', '弦', '柳', '酒', '梦', '桑', '遥', '雨夕', '风遥', '雁白', '青沐', '合', '逸思', '霏', '清疏', '秋荻', '廷轩', '轩', '宇', '絮影', '清淮', '柳依', '寒箫', '箫', '惜夏', '意轩', '旖旎', '慕青', '宣', '晓', '沛', '斯年', '莲舟', '依凝', '井与', '予锦', '艳', '淑芬', '思哲', '湛', '梦文', '承嗣', '博艺', '玲杰', '德馨', '琪维', '俊', '钰', '蔚', '彬郁', '诗嘉', '津媛', '艺歆', '奕然', '雯梦', '思佳']
73 | const phead = ['134', '135', '137', '138', '155', '130', '186', '133', '153', '180', '150', '151', '188']
74 | const numstr = '0123456789'
75 | const gchar = ['1', '2']
76 | const csign = ['+', '-']
77 | const bcity = cities()
78 | let byear = 1996
79 | for (let i = 0; i < len; i++) {
80 | let curuser = {}
81 | let cursing = csign[Math.floor(Math.random() * csign.length)]
82 |
83 | let curx = xarr[Math.floor(Math.random() * xarr.length)]
84 | let curn = nchar[Math.floor(Math.random() * nchar.length)]
85 | let cury = 1996
86 | let curm = Math.floor(Math.random() * 11) + 1
87 | let curd = Math.floor(Math.random() * 29) + 1
88 | let gender = gchar[Math.floor(Math.random() * gchar.length)]
89 | if (cursing === '+') cury = byear + Math.floor(Math.random() * 10)
90 | if (cursing === '-') cury = byear - Math.floor(Math.random() * 10)
91 | let age = 2018 - cury
92 | // 获取手机号
93 | let phone = phead[Math.floor(Math.random() * phead.length)]
94 | for (let j = 0; j < 8; j++) {
95 | phone += numstr.charAt(Math.floor(Math.random() * numstr.length))
96 | }
97 | let province = bcity[Math.floor(Math.random() * bcity.length)]
98 | let city = province.children[Math.floor(Math.random() * province.children.length)]
99 | let birthPlace = JSON.parse(JSON.stringify(province))
100 | birthPlace.child = city
101 | delete birthPlace.children
102 | curuser = {
103 | gender,
104 | age,
105 | phone,
106 | birthPlace,
107 | name: curx + curn,
108 | uid: randomString(16),
109 | birthDay: cury + '.' + curm + '.' + curd
110 | }
111 | users.push(curuser)
112 | }
113 | allusers = JSON.parse(JSON.stringify(users))
114 | let _page = Math.ceil(users.length / perpagecount) ? Math.ceil(users.length / perpagecount) : 1
115 | let rdata = users.slice(0, perpagecount)
116 | let res = {
117 | data: rdata,
118 | pagenum: _page
119 | }
120 | return res
121 | }
122 | // 获取uid
123 | const randomString = function (len) {
124 | len = len || 32
125 | var $chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678'
126 | var maxPos = $chars.length
127 | var pwd = ''
128 | for (let i = 0; i < len; i++) {
129 | pwd += $chars.charAt(Math.floor(Math.random() * maxPos))
130 | }
131 | return 'uid_' + pwd
132 | }
133 | // 表数据
134 | export const tabledata = () => {
135 | let data = []
136 | return Promise.resolve(data)
137 | }
138 |
139 | // 获取城市
140 | export const cities = () => {
141 | let data = [{ 'code': '11', 'name': '北京市', 'children': [{ 'code': '1101', 'name': '北京市辖区' }] }, { 'code': '12', 'name': '天津市', 'children': [{ 'code': '1201', 'name': '天津市辖区' }] }, { 'code': '13', 'name': '河北省', 'children': [{ 'code': '1301', 'name': '石家庄市' }, { 'code': '1302', 'name': '唐山市' }, { 'code': '1303', 'name': '秦皇岛市' }, { 'code': '1304', 'name': '邯郸市' }, { 'code': '1305', 'name': '邢台市' }, { 'code': '1306', 'name': '保定市' }, { 'code': '1307', 'name': '张家口市' }, { 'code': '1308', 'name': '承德市' }, { 'code': '1309', 'name': '沧州市' }, { 'code': '1310', 'name': '廊坊市' }, { 'code': '1311', 'name': '衡水市' }] }, { 'code': '14', 'name': '山西省', 'children': [{ 'code': '1401', 'name': '太原市' }, { 'code': '1402', 'name': '大同市' }, { 'code': '1403', 'name': '阳泉市' }, { 'code': '1404', 'name': '长治市' }, { 'code': '1405', 'name': '晋城市' }, { 'code': '1406', 'name': '朔州市' }, { 'code': '1407', 'name': '晋中市' }, { 'code': '1408', 'name': '运城市' }, { 'code': '1409', 'name': '忻州市' }, { 'code': '1410', 'name': '临汾市' }, { 'code': '1411', 'name': '吕梁市' }] }, { 'code': '15', 'name': '内蒙古自治区', 'children': [{ 'code': '1501', 'name': '呼和浩特市' }, { 'code': '1502', 'name': '包头市' }, { 'code': '1503', 'name': '乌海市' }, { 'code': '1504', 'name': '赤峰市' }, { 'code': '1505', 'name': '通辽市' }, { 'code': '1506', 'name': '鄂尔多斯市' }, { 'code': '1507', 'name': '呼伦贝尔市' }, { 'code': '1508', 'name': '巴彦淖尔市' }, { 'code': '1509', 'name': '乌兰察布市' }, { 'code': '1522', 'name': '兴安盟' }, { 'code': '1525', 'name': '锡林郭勒盟' }, { 'code': '1529', 'name': '阿拉善盟' }] }, { 'code': '21', 'name': '辽宁省', 'children': [{ 'code': '2101', 'name': '沈阳市' }, { 'code': '2102', 'name': '大连市' }, { 'code': '2103', 'name': '鞍山市' }, { 'code': '2104', 'name': '抚顺市' }, { 'code': '2105', 'name': '本溪市' }, { 'code': '2106', 'name': '丹东市' }, { 'code': '2107', 'name': '锦州市' }, { 'code': '2108', 'name': '营口市' }, { 'code': '2109', 'name': '阜新市' }, { 'code': '2110', 'name': '辽阳市' }, { 'code': '2111', 'name': '盘锦市' }, { 'code': '2112', 'name': '铁岭市' }, { 'code': '2113', 'name': '朝阳市' }, { 'code': '2114', 'name': '葫芦岛市' }] }, { 'code': '22', 'name': '吉林省', 'children': [{ 'code': '2201', 'name': '长春市' }, { 'code': '2202', 'name': '吉林市' }, { 'code': '2203', 'name': '四平市' }, { 'code': '2204', 'name': '辽源市' }, { 'code': '2205', 'name': '通化市' }, { 'code': '2206', 'name': '白山市' }, { 'code': '2207', 'name': '松原市' }, { 'code': '2208', 'name': '白城市' }, { 'code': '2224', 'name': '延边朝鲜族自治州' }] }, { 'code': '23', 'name': '黑龙江省', 'children': [{ 'code': '2301', 'name': '哈尔滨市' }, { 'code': '2302', 'name': '齐齐哈尔市' }, { 'code': '2303', 'name': '鸡西市' }, { 'code': '2304', 'name': '鹤岗市' }, { 'code': '2305', 'name': '双鸭山市' }, { 'code': '2306', 'name': '大庆市' }, { 'code': '2307', 'name': '伊春市' }, { 'code': '2308', 'name': '佳木斯市' }, { 'code': '2309', 'name': '七台河市' }, { 'code': '2310', 'name': '牡丹江市' }, { 'code': '2311', 'name': '黑河市' }, { 'code': '2312', 'name': '绥化市' }, { 'code': '2327', 'name': '大兴安岭地区' }] }, { 'code': '31', 'name': '上海市', 'children': [{ 'code': '3101', 'name': '上海市辖区' }] }, { 'code': '32', 'name': '江苏省', 'children': [{ 'code': '3201', 'name': '南京市' }, { 'code': '3202', 'name': '无锡市' }, { 'code': '3203', 'name': '徐州市' }, { 'code': '3204', 'name': '常州市' }, { 'code': '3205', 'name': '苏州市' }, { 'code': '3206', 'name': '南通市' }, { 'code': '3207', 'name': '连云港市' }, { 'code': '3208', 'name': '淮安市' }, { 'code': '3209', 'name': '盐城市' }, { 'code': '3210', 'name': '扬州市' }, { 'code': '3211', 'name': '镇江市' }, { 'code': '3212', 'name': '泰州市' }, { 'code': '3213', 'name': '宿迁市' }] }, { 'code': '33', 'name': '浙江省', 'children': [{ 'code': '3301', 'name': '杭州市' }, { 'code': '3302', 'name': '宁波市' }, { 'code': '3303', 'name': '温州市' }, { 'code': '3304', 'name': '嘉兴市' }, { 'code': '3305', 'name': '湖州市' }, { 'code': '3306', 'name': '绍兴市' }, { 'code': '3307', 'name': '金华市' }, { 'code': '3308', 'name': '衢州市' }, { 'code': '3309', 'name': '舟山市' }, { 'code': '3310', 'name': '台州市' }, { 'code': '3311', 'name': '丽水市' }] }, { 'code': '34', 'name': '安徽省', 'children': [{ 'code': '3401', 'name': '合肥市' }, { 'code': '3402', 'name': '芜湖市' }, { 'code': '3403', 'name': '蚌埠市' }, { 'code': '3404', 'name': '淮南市' }, { 'code': '3405', 'name': '马鞍山市' }, { 'code': '3406', 'name': '淮北市' }, { 'code': '3407', 'name': '铜陵市' }, { 'code': '3408', 'name': '安庆市' }, { 'code': '3410', 'name': '黄山市' }, { 'code': '3411', 'name': '滁州市' }, { 'code': '3412', 'name': '阜阳市' }, { 'code': '3413', 'name': '宿州市' }, { 'code': '3415', 'name': '六安市' }, { 'code': '3416', 'name': '亳州市' }, { 'code': '3417', 'name': '池州市' }, { 'code': '3418', 'name': '宣城市' }] }, { 'code': '35', 'name': '福建省', 'children': [{ 'code': '3501', 'name': '福州市' }, { 'code': '3502', 'name': '厦门市' }, { 'code': '3503', 'name': '莆田市' }, { 'code': '3504', 'name': '三明市' }, { 'code': '3505', 'name': '泉州市' }, { 'code': '3506', 'name': '漳州市' }, { 'code': '3507', 'name': '南平市' }, { 'code': '3508', 'name': '龙岩市' }, { 'code': '3509', 'name': '宁德市' }] }, { 'code': '36', 'name': '江西省', 'children': [{ 'code': '3601', 'name': '南昌市' }, { 'code': '3602', 'name': '景德镇市' }, { 'code': '3603', 'name': '萍乡市' }, { 'code': '3604', 'name': '九江市' }, { 'code': '3605', 'name': '新余市' }, { 'code': '3606', 'name': '鹰潭市' }, { 'code': '3607', 'name': '赣州市' }, { 'code': '3608', 'name': '吉安市' }, { 'code': '3609', 'name': '宜春市' }, { 'code': '3610', 'name': '抚州市' }, { 'code': '3611', 'name': '上饶市' }] }, { 'code': '37', 'name': '山东省', 'children': [{ 'code': '3701', 'name': '济南市' }, { 'code': '3702', 'name': '青岛市' }, { 'code': '3703', 'name': '淄博市' }, { 'code': '3704', 'name': '枣庄市' }, { 'code': '3705', 'name': '东营市' }, { 'code': '3706', 'name': '烟台市' }, { 'code': '3707', 'name': '潍坊市' }, { 'code': '3708', 'name': '济宁市' }, { 'code': '3709', 'name': '泰安市' }, { 'code': '3710', 'name': '威海市' }, { 'code': '3711', 'name': '日照市' }, { 'code': '3712', 'name': '莱芜市' }, { 'code': '3713', 'name': '临沂市' }, { 'code': '3714', 'name': '德州市' }, { 'code': '3715', 'name': '聊城市' }, { 'code': '3716', 'name': '滨州市' }, { 'code': '3717', 'name': '菏泽市' }] }, { 'code': '41', 'name': '河南省', 'children': [{ 'code': '4101', 'name': '郑州市' }, { 'code': '4102', 'name': '开封市' }, { 'code': '4103', 'name': '洛阳市' }, { 'code': '4104', 'name': '平顶山市' }, { 'code': '4105', 'name': '安阳市' }, { 'code': '4106', 'name': '鹤壁市' }, { 'code': '4107', 'name': '新乡市' }, { 'code': '4108', 'name': '焦作市' }, { 'code': '4109', 'name': '濮阳市' }, { 'code': '4110', 'name': '许昌市' }, { 'code': '4111', 'name': '漯河市' }, { 'code': '4112', 'name': '三门峡市' }, { 'code': '4113', 'name': '南阳市' }, { 'code': '4114', 'name': '商丘市' }, { 'code': '4115', 'name': '信阳市' }, { 'code': '4116', 'name': '周口市' }, { 'code': '4117', 'name': '驻马店市' }, { 'code': '4190', 'name': '省直辖县级行政区划' }] }, { 'code': '42', 'name': '湖北省', 'children': [{ 'code': '4201', 'name': '武汉市' }, { 'code': '4202', 'name': '黄石市' }, { 'code': '4203', 'name': '十堰市' }, { 'code': '4205', 'name': '宜昌市' }, { 'code': '4206', 'name': '襄阳市' }, { 'code': '4207', 'name': '鄂州市' }, { 'code': '4208', 'name': '荆门市' }, { 'code': '4209', 'name': '孝感市' }, { 'code': '4210', 'name': '荆州市' }, { 'code': '4211', 'name': '黄冈市' }, { 'code': '4212', 'name': '咸宁市' }, { 'code': '4213', 'name': '随州市' }, { 'code': '4228', 'name': '恩施土家族苗族自治州' }, { 'code': '4290', 'name': '省直辖县级行政区划' }] }, { 'code': '43', 'name': '湖南省', 'children': [{ 'code': '4301', 'name': '长沙市' }, { 'code': '4302', 'name': '株洲市' }, { 'code': '4303', 'name': '湘潭市' }, { 'code': '4304', 'name': '衡阳市' }, { 'code': '4305', 'name': '邵阳市' }, { 'code': '4306', 'name': '岳阳市' }, { 'code': '4307', 'name': '常德市' }, { 'code': '4308', 'name': '张家界市' }, { 'code': '4309', 'name': '益阳市' }, { 'code': '4310', 'name': '郴州市' }, { 'code': '4311', 'name': '永州市' }, { 'code': '4312', 'name': '怀化市' }, { 'code': '4313', 'name': '娄底市' }, { 'code': '4331', 'name': '湘西土家族苗族自治州' }] }, { 'code': '44', 'name': '广东省', 'children': [{ 'code': '4401', 'name': '广州市' }, { 'code': '4402', 'name': '韶关市' }, { 'code': '4403', 'name': '深圳市' }, { 'code': '4404', 'name': '珠海市' }, { 'code': '4405', 'name': '汕头市' }, { 'code': '4406', 'name': '佛山市' }, { 'code': '4407', 'name': '江门市' }, { 'code': '4408', 'name': '湛江市' }, { 'code': '4409', 'name': '茂名市' }, { 'code': '4412', 'name': '肇庆市' }, { 'code': '4413', 'name': '惠州市' }, { 'code': '4414', 'name': '梅州市' }, { 'code': '4415', 'name': '汕尾市' }, { 'code': '4416', 'name': '河源市' }, { 'code': '4417', 'name': '阳江市' }, { 'code': '4418', 'name': '清远市' }, { 'code': '4419', 'name': '东莞市' }, { 'code': '4420', 'name': '中山市' }, { 'code': '4451', 'name': '潮州市' }, { 'code': '4452', 'name': '揭阳市' }, { 'code': '4453', 'name': '云浮市' }] }, { 'code': '45', 'name': '广西壮族自治区', 'children': [{ 'code': '4501', 'name': '南宁市' }, { 'code': '4502', 'name': '柳州市' }, { 'code': '4503', 'name': '桂林市' }, { 'code': '4504', 'name': '梧州市' }, { 'code': '4505', 'name': '北海市' }, { 'code': '4506', 'name': '防城港市' }, { 'code': '4507', 'name': '钦州市' }, { 'code': '4508', 'name': '贵港市' }, { 'code': '4509', 'name': '玉林市' }, { 'code': '4510', 'name': '百色市' }, { 'code': '4511', 'name': '贺州市' }, { 'code': '4512', 'name': '河池市' }, { 'code': '4513', 'name': '来宾市' }, { 'code': '4514', 'name': '崇左市' }] }, { 'code': '46', 'name': '海南省', 'children': [{ 'code': '4601', 'name': '海口市' }, { 'code': '4602', 'name': '三亚市' }, { 'code': '4603', 'name': '三沙市' }, { 'code': '4604', 'name': '儋州市' }, { 'code': '4690', 'name': '省直辖县级行政区划' }] }, { 'code': '50', 'name': '重庆市', 'children': [{ 'code': '5001', 'name': '重庆市辖区' }, { 'code': '5002', 'name': '县' }] }, { 'code': '51', 'name': '四川省', 'children': [{ 'code': '5101', 'name': '成都市' }, { 'code': '5103', 'name': '自贡市' }, { 'code': '5104', 'name': '攀枝花市' }, { 'code': '5105', 'name': '泸州市' }, { 'code': '5106', 'name': '德阳市' }, { 'code': '5107', 'name': '绵阳市' }, { 'code': '5108', 'name': '广元市' }, { 'code': '5109', 'name': '遂宁市' }, { 'code': '5110', 'name': '内江市' }, { 'code': '5111', 'name': '乐山市' }, { 'code': '5113', 'name': '南充市' }, { 'code': '5114', 'name': '眉山市' }, { 'code': '5115', 'name': '宜宾市' }, { 'code': '5116', 'name': '广安市' }, { 'code': '5117', 'name': '达州市' }, { 'code': '5118', 'name': '雅安市' }, { 'code': '5119', 'name': '巴中市' }, { 'code': '5120', 'name': '资阳市' }, { 'code': '5132', 'name': '阿坝藏族羌族自治州' }, { 'code': '5133', 'name': '甘孜藏族自治州' }, { 'code': '5134', 'name': '凉山彝族自治州' }] }, { 'code': '52', 'name': '贵州省', 'children': [{ 'code': '5201', 'name': '贵阳市' }, { 'code': '5202', 'name': '六盘水市' }, { 'code': '5203', 'name': '遵义市' }, { 'code': '5204', 'name': '安顺市' }, { 'code': '5205', 'name': '毕节市' }, { 'code': '5206', 'name': '铜仁市' }, { 'code': '5223', 'name': '黔西南布依族苗族自治州' }, { 'code': '5226', 'name': '黔东南苗族侗族自治州' }, { 'code': '5227', 'name': '黔南布依族苗族自治州' }] }, { 'code': '53', 'name': '云南省', 'children': [{ 'code': '5301', 'name': '昆明市' }, { 'code': '5303', 'name': '曲靖市' }, { 'code': '5304', 'name': '玉溪市' }, { 'code': '5305', 'name': '保山市' }, { 'code': '5306', 'name': '昭通市' }, { 'code': '5307', 'name': '丽江市' }, { 'code': '5308', 'name': '普洱市' }, { 'code': '5309', 'name': '临沧市' }, { 'code': '5323', 'name': '楚雄彝族自治州' }, { 'code': '5325', 'name': '红河哈尼族彝族自治州' }, { 'code': '5326', 'name': '文山壮族苗族自治州' }, { 'code': '5328', 'name': '西双版纳傣族自治州' }, { 'code': '5329', 'name': '大理白族自治州' }, { 'code': '5331', 'name': '德宏傣族景颇族自治州' }, { 'code': '5333', 'name': '怒江傈僳族自治州' }, { 'code': '5334', 'name': '迪庆藏族自治州' }] }, { 'code': '54', 'name': '西藏自治区', 'children': [{ 'code': '5401', 'name': '拉萨市' }, { 'code': '5402', 'name': '日喀则市' }, { 'code': '5403', 'name': '昌都市' }, { 'code': '5404', 'name': '林芝市' }, { 'code': '5405', 'name': '山南市' }, { 'code': '5424', 'name': '那曲地区' }, { 'code': '5425', 'name': '阿里地区' }] }, { 'code': '61', 'name': '陕西省', 'children': [{ 'code': '6101', 'name': '西安市' }, { 'code': '6102', 'name': '铜川市' }, { 'code': '6103', 'name': '宝鸡市' }, { 'code': '6104', 'name': '咸阳市' }, { 'code': '6105', 'name': '渭南市' }, { 'code': '6106', 'name': '延安市' }, { 'code': '6107', 'name': '汉中市' }, { 'code': '6108', 'name': '榆林市' }, { 'code': '6109', 'name': '安康市' }, { 'code': '6110', 'name': '商洛市' }] }, { 'code': '62', 'name': '甘肃省', 'children': [{ 'code': '6201', 'name': '兰州市' }, { 'code': '6202', 'name': '嘉峪关市' }, { 'code': '6203', 'name': '金昌市' }, { 'code': '6204', 'name': '白银市' }, { 'code': '6205', 'name': '天水市' }, { 'code': '6206', 'name': '武威市' }, { 'code': '6207', 'name': '张掖市' }, { 'code': '6208', 'name': '平凉市' }, { 'code': '6209', 'name': '酒泉市' }, { 'code': '6210', 'name': '庆阳市' }, { 'code': '6211', 'name': '定西市' }, { 'code': '6212', 'name': '陇南市' }, { 'code': '6229', 'name': '临夏回族自治州' }, { 'code': '6230', 'name': '甘南藏族自治州' }] }, { 'code': '63', 'name': '青海省', 'children': [{ 'code': '6301', 'name': '西宁市' }, { 'code': '6302', 'name': '海东市' }, { 'code': '6322', 'name': '海北藏族自治州' }, { 'code': '6323', 'name': '黄南藏族自治州' }, { 'code': '6325', 'name': '海南藏族自治州' }, { 'code': '6326', 'name': '果洛藏族自治州' }, { 'code': '6327', 'name': '玉树藏族自治州' }, { 'code': '6328', 'name': '海西蒙古族藏族自治州' }] }, { 'code': '64', 'name': '宁夏回族自治区', 'children': [{ 'code': '6401', 'name': '银川市' }, { 'code': '6402', 'name': '石嘴山市' }, { 'code': '6403', 'name': '吴忠市' }, { 'code': '6404', 'name': '固原市' }, { 'code': '6405', 'name': '中卫市' }] }, { 'code': '65', 'name': '新疆维吾尔自治区', 'children': [{ 'code': '6501', 'name': '乌鲁木齐市' }, { 'code': '6502', 'name': '克拉玛依市' }, { 'code': '6504', 'name': '吐鲁番市' }, { 'code': '6505', 'name': '哈密市' }, { 'code': '6523', 'name': '昌吉回族自治州' }, { 'code': '6527', 'name': '博尔塔拉蒙古自治州' }, { 'code': '6528', 'name': '巴音郭楞蒙古自治州' }, { 'code': '6529', 'name': '阿克苏地区' }, { 'code': '6530', 'name': '克孜勒苏柯尔克孜自治州' }, { 'code': '6531', 'name': '喀什地区' }, { 'code': '6532', 'name': '和田地区' }, { 'code': '6540', 'name': '伊犁哈萨克自治州' }, { 'code': '6542', 'name': '塔城地区' }, { 'code': '6543', 'name': '阿勒泰地区' }, { 'code': '6590', 'name': '自治区直辖县级行政区划' }] }, { 'name': '台湾', 'code': '710000', 'children': [{ 'name': '台北市', 'code': '710100' }, { 'name': '高雄市', 'code': '710200' }, { 'name': '基隆市', 'code': '710300' }, { 'name': '台中市', 'code': '710400' }, { 'name': '台南市', 'code': '710500' }, { 'name': '新竹市', 'code': '710600' }, { 'name': '嘉义市', 'code': '710700' }, { 'name': '新北市', 'code': '710800' }, { 'name': '宜兰县', 'code': '712200' }, { 'name': '桃园县', 'code': '712300' }, { 'name': '新竹县', 'code': '712400' }, { 'name': '苗栗县', 'code': '712500' }, { 'name': '彰化县', 'code': '712700' }, { 'name': '南投县', 'code': '712800' }, { 'name': '云林县', 'code': '712900' }, { 'name': '嘉义县', 'code': '713000' }, { 'name': '屏东县', 'code': '713300' }, { 'name': '台东县', 'code': '713400' }, { 'name': '花莲县', 'code': '713500' }, { 'name': '澎湖县', 'code': '713600' }] }, { 'name': '香港特别行政区', 'code': '810000', 'children': [{ 'name': '香港岛', 'code': '810100' }, { 'name': '九龙', 'code': '810200' }, { 'name': '新界', 'code': '810300' }] }, { 'name': '澳门特别行政区', 'code': '820000', 'children': [{ 'name': '澳门半岛', 'code': '820100' }, { 'name': '氹仔岛', 'code': '820200' }, { 'name': '路环岛', 'code': '820300' }] }]
142 | return data
143 | }
144 |
--------------------------------------------------------------------------------