├── template ├── .babelrc ├── config │ ├── prod.env.js │ ├── dev.env.js │ └── index.js ├── src │ ├── api │ │ ├── index.js │ │ └── resource.js │ ├── assets │ │ ├── images │ │ │ └── bg.png │ │ ├── lib │ │ │ ├── easyui │ │ │ │ ├── images │ │ │ │ │ ├── blank.gif │ │ │ │ │ ├── line.png │ │ │ │ │ ├── icons │ │ │ │ │ │ ├── no.png │ │ │ │ │ │ ├── ok.png │ │ │ │ │ │ ├── on.png │ │ │ │ │ │ ├── back.png │ │ │ │ │ │ ├── cut.png │ │ │ │ │ │ ├── help.png │ │ │ │ │ │ ├── lock.png │ │ │ │ │ │ ├── man.png │ │ │ │ │ │ ├── more.png │ │ │ │ │ │ ├── redo.png │ │ │ │ │ │ ├── stop.png │ │ │ │ │ │ ├── sum.png │ │ │ │ │ │ ├── t01.jpg │ │ │ │ │ │ ├── t02.jpg │ │ │ │ │ │ ├── t04.jpg │ │ │ │ │ │ ├── t06.jpg │ │ │ │ │ │ ├── tip.png │ │ │ │ │ │ ├── undo.png │ │ │ │ │ │ ├── blank.gif │ │ │ │ │ │ ├── cancel.png │ │ │ │ │ │ ├── clear.png │ │ │ │ │ │ ├── export.png │ │ │ │ │ │ ├── filter.png │ │ │ │ │ │ ├── import.png │ │ │ │ │ │ ├── new-add.png │ │ │ │ │ │ ├── pencil.png │ │ │ │ │ │ ├── print.png │ │ │ │ │ │ ├── reload.png │ │ │ │ │ │ ├── reset.png │ │ │ │ │ │ ├── search.png │ │ │ │ │ │ ├── download.png │ │ │ │ │ │ ├── edit_add.png │ │ │ │ │ │ ├── filesave.png │ │ │ │ │ │ ├── mini_add.png │ │ │ │ │ │ ├── mini_edit.png │ │ │ │ │ │ ├── new-back.png │ │ │ │ │ │ ├── new-edit.png │ │ │ │ │ │ ├── new-file.png │ │ │ │ │ │ ├── new-spike.png │ │ │ │ │ │ ├── edit_remove.png │ │ │ │ │ │ ├── large_chart.png │ │ │ │ │ │ ├── large_shapes.png │ │ │ │ │ │ ├── mini_refresh.png │ │ │ │ │ │ ├── new-download.png │ │ │ │ │ │ ├── new-export.png │ │ │ │ │ │ ├── new-import.png │ │ │ │ │ │ ├── new-issued.png │ │ │ │ │ │ ├── new-overrule.png │ │ │ │ │ │ ├── new-recall.png │ │ │ │ │ │ ├── new-remove.png │ │ │ │ │ │ ├── new-revoke.png │ │ │ │ │ │ ├── large_clipart.png │ │ │ │ │ │ ├── large_picture.png │ │ │ │ │ │ ├── large_smartart.png │ │ │ │ │ │ ├── new_cancelpublish1.png │ │ │ │ │ │ └── new_cancelpublish2.png │ │ │ │ │ ├── loading.gif │ │ │ │ │ ├── header_bg.png │ │ │ │ │ ├── icon_arrow.png │ │ │ │ │ ├── tabs_icons.png │ │ │ │ │ ├── tree_icons.png │ │ │ │ │ ├── combo_arrow.png │ │ │ │ │ ├── datebox_arrow.png │ │ │ │ │ ├── layout_arrows.png │ │ │ │ │ ├── linkbutton_bg.png │ │ │ │ │ ├── menu_arrows.png │ │ │ │ │ ├── panel_tools.png │ │ │ │ │ ├── slider_handle.png │ │ │ │ │ ├── title_bg_13.png │ │ │ │ │ ├── calendar_arrows.png │ │ │ │ │ ├── datagrid_icons.png │ │ │ │ │ ├── grid-header-img.jpg │ │ │ │ │ ├── messager_icons.png │ │ │ │ │ ├── spinner_arrows.png │ │ │ │ │ ├── accordion_arrows.png │ │ │ │ │ ├── datagrid-title-bg.png │ │ │ │ │ ├── pagination_icons.png │ │ │ │ │ ├── searchbox_button.png │ │ │ │ │ ├── validatebox_warning.png │ │ │ │ │ ├── ui-bg_dots-small_75_d0e5f5_2x2.png │ │ │ │ │ └── ui-bg_dots-small_85_dfeffc_2x2.png │ │ │ │ ├── js │ │ │ │ │ ├── easyuizhCN.js │ │ │ │ │ ├── datagrid-transposedview.js │ │ │ │ │ └── datagrid-detailview.js │ │ │ │ └── css │ │ │ │ │ ├── easyui_table1.css │ │ │ │ │ ├── icon.css │ │ │ │ │ └── easyui_index.css │ │ │ └── layer_mobile │ │ │ │ ├── layer.js │ │ │ │ └── need │ │ │ │ └── layer.css │ │ └── css │ │ │ └── reset.css │ ├── components │ │ ├── Pie │ │ │ ├── sub │ │ │ │ ├── index.js │ │ │ │ └── base.js │ │ │ └── index.js │ │ ├── util │ │ │ ├── index.js │ │ │ ├── gridHelper.js │ │ │ ├── lineStyle.js │ │ │ ├── legendHelper.js │ │ │ ├── tooltipHelper.js │ │ │ └── axisHelper.js │ │ ├── commonConfig.js │ │ ├── propsUtil.js │ │ └── BaseChart.js │ ├── config.js │ ├── views │ │ └── pieView.vue │ ├── main.js │ ├── store │ │ └── index.js │ └── App.vue ├── index.html ├── README.md ├── server.js ├── package.json └── build │ ├── webpack.dev.config.js │ ├── utils.js │ ├── webpack.base.config.js │ └── webpack.prod.config.js ├── screen01.png ├── meta.json ├── LICENSE └── README.md /template/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets":["es2015",'stage-0'] 3 | } 4 | -------------------------------------------------------------------------------- /screen01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/screen01.png -------------------------------------------------------------------------------- /template/config/prod.env.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | NODE_ENV: '"production"' 3 | } 4 | -------------------------------------------------------------------------------- /template/src/api/index.js: -------------------------------------------------------------------------------- 1 | import {getCircleData} from "./resource" 2 | 3 | export default { 4 | getCircleData 5 | } -------------------------------------------------------------------------------- /template/src/assets/images/bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/images/bg.png -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/blank.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/blank.gif -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/line.png -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/icons/no.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/icons/no.png -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/icons/ok.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/icons/ok.png -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/icons/on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/icons/on.png -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/loading.gif -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/header_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/header_bg.png -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/icon_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/icon_arrow.png -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/icons/back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/icons/back.png -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/icons/cut.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/icons/cut.png -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/icons/help.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/icons/help.png -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/icons/lock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/icons/lock.png -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/icons/man.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/icons/man.png -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/icons/more.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/icons/more.png -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/icons/redo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/icons/redo.png -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/icons/stop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/icons/stop.png -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/icons/sum.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/icons/sum.png -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/icons/t01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/icons/t01.jpg -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/icons/t02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/icons/t02.jpg -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/icons/t04.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/icons/t04.jpg -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/icons/t06.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/icons/t06.jpg -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/icons/tip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/icons/tip.png -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/icons/undo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/icons/undo.png -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/tabs_icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/tabs_icons.png -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/tree_icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/tree_icons.png -------------------------------------------------------------------------------- /template/src/components/Pie/sub/index.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by yelingfeng on 2016/8/26. 3 | */ 4 | import base from "./base" 5 | export default { 6 | base 7 | } -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/combo_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/combo_arrow.png -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/datebox_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/datebox_arrow.png -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/icons/blank.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/icons/blank.gif -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/icons/cancel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/icons/cancel.png -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/icons/clear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/icons/clear.png -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/icons/export.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/icons/export.png -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/icons/filter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/icons/filter.png -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/icons/import.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/icons/import.png -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/icons/new-add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/icons/new-add.png -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/icons/pencil.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/icons/pencil.png -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/icons/print.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/icons/print.png -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/icons/reload.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/icons/reload.png -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/icons/reset.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/icons/reset.png -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/icons/search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/icons/search.png -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/layout_arrows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/layout_arrows.png -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/linkbutton_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/linkbutton_bg.png -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/menu_arrows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/menu_arrows.png -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/panel_tools.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/panel_tools.png -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/slider_handle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/slider_handle.png -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/title_bg_13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/title_bg_13.png -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/calendar_arrows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/calendar_arrows.png -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/datagrid_icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/datagrid_icons.png -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/grid-header-img.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/grid-header-img.jpg -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/icons/download.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/icons/download.png -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/icons/edit_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/icons/edit_add.png -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/icons/filesave.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/icons/filesave.png -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/icons/mini_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/icons/mini_add.png -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/icons/mini_edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/icons/mini_edit.png -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/icons/new-back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/icons/new-back.png -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/icons/new-edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/icons/new-edit.png -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/icons/new-file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/icons/new-file.png -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/icons/new-spike.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/icons/new-spike.png -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/messager_icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/messager_icons.png -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/spinner_arrows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/spinner_arrows.png -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/accordion_arrows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/accordion_arrows.png -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/datagrid-title-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/datagrid-title-bg.png -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/icons/edit_remove.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/icons/edit_remove.png -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/icons/large_chart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/icons/large_chart.png -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/icons/large_shapes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/icons/large_shapes.png -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/icons/mini_refresh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/icons/mini_refresh.png -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/icons/new-download.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/icons/new-download.png -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/icons/new-export.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/icons/new-export.png -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/icons/new-import.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/icons/new-import.png -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/icons/new-issued.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/icons/new-issued.png -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/icons/new-overrule.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/icons/new-overrule.png -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/icons/new-recall.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/icons/new-recall.png -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/icons/new-remove.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/icons/new-remove.png -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/icons/new-revoke.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/icons/new-revoke.png -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/pagination_icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/pagination_icons.png -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/searchbox_button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/searchbox_button.png -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/icons/large_clipart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/icons/large_clipart.png -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/icons/large_picture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/icons/large_picture.png -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/icons/large_smartart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/icons/large_smartart.png -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/validatebox_warning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/validatebox_warning.png -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/icons/new_cancelpublish1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/icons/new_cancelpublish1.png -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/icons/new_cancelpublish2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/icons/new_cancelpublish2.png -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/ui-bg_dots-small_75_d0e5f5_2x2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/ui-bg_dots-small_75_d0e5f5_2x2.png -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/images/ui-bg_dots-small_85_dfeffc_2x2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yelingfeng/vue-ylf-template/HEAD/template/src/assets/lib/easyui/images/ui-bg_dots-small_85_dfeffc_2x2.png -------------------------------------------------------------------------------- /template/src/config.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by yelingfeng on 2016/9/8. 3 | */ 4 | export const API_ROOT = (process.env.NODE_ENV === 'production') 5 | ?"http://localhost:8080/" 6 | :'http://localhost:8400/'; 7 | -------------------------------------------------------------------------------- /template/config/dev.env.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by yelingfeng on 2016/9/12. 3 | */ 4 | var merge = require('webpack-merge') 5 | var prodEnv = require('./prod.env') 6 | 7 | module.exports = merge(prodEnv, { 8 | NODE_ENV: '"development"' 9 | }) 10 | -------------------------------------------------------------------------------- /template/src/components/util/index.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by yelingfeng on 2016/8/16. 3 | */ 4 | export * from './axisHelper' 5 | export * from './gridHelper' 6 | export * from './tooltipHelper' 7 | export * from './lineStyle' 8 | export * from "./legendHelper" -------------------------------------------------------------------------------- /template/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | {{ name }} 7 | 8 | 9 |
10 | 11 | 12 | -------------------------------------------------------------------------------- /template/README.md: -------------------------------------------------------------------------------- 1 | # {{ name }} 2 | 3 | > {{ description }} 4 | 5 | # Build Setup 6 | 7 | ```nodejs 8 | 9 | # 1. install dependencies 10 | npm install 11 | 12 | # 2. serve api server (simple express) localhost:8400 13 | npm run api-server 14 | 15 | # 3. serve with hot reload at localhost:8100 16 | npm run dev 17 | 18 | # 4.build for production with minification 19 | npm run build 20 | 21 | `` -------------------------------------------------------------------------------- /template/src/components/util/gridHelper.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by yelingfeng on 2016/8/16. 3 | */ 4 | /** 5 | * grid 配置 6 | */ 7 | 8 | export function getGirdOption(props) { 9 | 10 | let grid = { 11 | top: '10%', 12 | left: 'auto', 13 | right: '10%', 14 | bottom: '20%', 15 | containLabel: true 16 | } 17 | if (props.grid) { 18 | grid = Object.assign(grid, props.grid) 19 | } 20 | return grid; 21 | } -------------------------------------------------------------------------------- /template/src/components/util/lineStyle.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by yelingfeng on 2016/8/24. 3 | */ 4 | import echarts from "echarts" 5 | 6 | /** 7 | * 线性渐变色处理 8 | * @returns {*} 9 | */ 10 | export function getLinearGradient() { 11 | return new echarts.graphic.LinearGradient( 12 | 0, 0, 1000, 500, 13 | [{offset: 0, color: 'rgba(0, 218, 253,0.5)'}, // 0% 处的颜色} 14 | {offset: 1, color: 'rgba(0, 245, 212,0.5)'} // 100% 处的颜色 15 | ] 16 | ) 17 | } -------------------------------------------------------------------------------- /template/src/api/resource.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by on 2016/4/1. 3 | */ 4 | import Vue from 'vue' 5 | import VueResource from 'vue-resource' 6 | import {API_ROOT} from '../config' 7 | 8 | Vue.use(VueResource); 9 | Vue.http.options.crossOrigin = true; 10 | 11 | const isProd = process.env.NODE_ENV === 'production' 12 | 13 | const pieUrl = API_ROOT + "getPieData"; 14 | 15 | // 饼图接口 16 | export const getCircleData = (options) => isProd ? Vue.http.post(pieUrl , options) : Vue.http.get(pieUrl); 17 | -------------------------------------------------------------------------------- /meta.json: -------------------------------------------------------------------------------- 1 | { 2 | "prompts": { 3 | "name": { 4 | "type": "string", 5 | "required": true, 6 | "message": "Project name" 7 | }, 8 | "description": { 9 | "type": "string", 10 | "required": false, 11 | "message": "Project description", 12 | "default": "this is vue2 template for ylf-style" 13 | }, 14 | "author": { 15 | "type": "string", 16 | "message": "Author" 17 | } 18 | } 19 | } -------------------------------------------------------------------------------- /template/config/index.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by yelingfeng on 2016/9/12. 3 | */ 4 | var path = require('path') 5 | const pkg = require('../package') 6 | const venderPlugin = Object.keys(pkg.dependencies) 7 | 8 | module.exports = { 9 | build: { 10 | env: require('./prod.env'), 11 | index: path.resolve(__dirname, '../dist/index.html'), 12 | assetsRoot: path.resolve(__dirname, '../dist'), 13 | assetsSubDirectory: 'static', 14 | assetsPublicPath: '/', 15 | venders :venderPlugin 16 | }, 17 | dev: { 18 | env: require('./dev.env'), 19 | port: 8100, 20 | apiPort : 8400, 21 | assetsSubDirectory: 'static', 22 | assetsPublicPath: '/', 23 | proxyTable: {}, 24 | venders :venderPlugin, 25 | cssSourceMap: false 26 | } 27 | } -------------------------------------------------------------------------------- /template/src/views/pieView.vue: -------------------------------------------------------------------------------- 1 | 4 | 39 | -------------------------------------------------------------------------------- /template/src/components/Pie/index.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by yelingfeng on 2016/8/11. 3 | */ 4 | import ChartClass from "../BaseChart" 5 | import subComps from './sub' 6 | 7 | // sub模块构建方法名 8 | const _settingMethod_ = "setting" 9 | 10 | const moduleName = { 11 | 'base': 1, 12 | } 13 | /** 14 | * 饼图封装类 15 | */ 16 | export default class Pie extends ChartClass { 17 | constructor(op) { 18 | super(op); 19 | this.registerModule('pie', moduleName) 20 | } 21 | 22 | create() { 23 | this.checkModule(); 24 | 25 | // 二级模块名 26 | const sub = this.option.sub 27 | const inner = this.option.inner || false; 28 | let props = this.option.props || {}; 29 | 30 | let config = [this.option.data]; 31 | if (sub == "base") { 32 | config[0] = this.singleChartSetting(this.noGroupData(), props) 33 | } 34 | config[1] = props; 35 | let option = subComps[sub][_settingMethod_](...config); 36 | 37 | this.build(option); 38 | } 39 | 40 | } -------------------------------------------------------------------------------- /template/src/main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import App from './App.vue' 3 | import store from "./store" 4 | import $ from "jquery" 5 | import "./assets/css/reset.css" 6 | import "./assets/lib/layer_mobile/need/layer.css" 7 | import "./assets/lib/layer_mobile/layer" 8 | import "bootstrap/dist/js/bootstrap.min" 9 | import "./assets/lib/easyui/css/easyui_view.css" 10 | import "./assets/lib/easyui/css/icon.css" 11 | import "foundation-datepicker/js/foundation-datepicker.min" 12 | import "foundation-datepicker/js/locales/foundation-datepicker.zh-CN" 13 | import "foundation-datepicker/css/foundation-datepicker.min.css" 14 | import "font-awesome/css/font-awesome.css" 15 | 16 | if(process.env.NODE_ENV !== 'production'){ 17 | console.log = (function(log){ 18 | return function(obj){ 19 | log.call(console,JSON.parse(JSON.stringify(obj))); 20 | } 21 | })(console.log); 22 | }else{ 23 | console.log = function(){ 24 | } 25 | } 26 | 27 | new Vue({ 28 | store, 29 | render: h => h(App) 30 | }).$mount("#app") 31 | -------------------------------------------------------------------------------- /template/src/components/Pie/sub/base.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by yelingfeng on 2016/8/24. 3 | */ 4 | /** 5 | * 核心setting方法 6 | * @param option 分组处理后对象 7 | * @param props 8 | */ 9 | function setting(option, props) { 10 | if (props.pieOption) { 11 | let pieOption = props.pieOption; 12 | option.series[0].roseType = 'radius'; 13 | option.series[0].radius = pieOption.radius 14 | option.series[0].avoidLabelOverlap = false 15 | option.series[0].label = { 16 | normal: { 17 | show: false, 18 | position: 'center' 19 | }, 20 | emphasis: { 21 | show: true, 22 | textStyle: { 23 | fontSize: '14', 24 | fontWeight: 'bold' 25 | } 26 | } 27 | } 28 | } 29 | option.tooltip = { 30 | trigger: 'item', 31 | formatter: "{b} :{d}%", 32 | textStyle : { 33 | fontSize :12, 34 | align : "left" 35 | } 36 | } 37 | 38 | return option; 39 | } 40 | 41 | export default { 42 | setting 43 | } -------------------------------------------------------------------------------- /template/src/components/util/legendHelper.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by yelingfeng on 2016/8/25. 3 | */ 4 | 5 | import {getLegendProps} from "../propsUtil" 6 | import * as config from "../commonConfig" 7 | 8 | /** 9 | * 位置属性常量 10 | * @type { 11 | * L_T: string, 12 | * C_T: string, 13 | * R_T: string, 14 | * C_B: string, 15 | * R_C: string, 16 | * B_C: string 17 | * } 18 | */ 19 | const LEGENDALIGN = { 20 | L_T: "1", 21 | C_T: "2", 22 | R_T: "3", 23 | C_B: "4", 24 | R_C: "5", 25 | B_C: "6", 26 | } 27 | 28 | /** 29 | * 图例设置 30 | * @param data 31 | * @param props 32 | */ 33 | export function getLegend(data, props) { 34 | let legend = { 35 | orient:'vertical' 36 | }; 37 | let lp = getLegendProps(props, ['showLegend', 'legendPositon']); 38 | legend.show = lp.showLegend ? lp.showLegend : false 39 | legend.textStyle = { 40 | color: config.legendColor, 41 | fontFamily: config.commonFontFamily 42 | } 43 | legend.x = 'top'; 44 | legend.y = 'left'; 45 | 46 | if (data && data.length) { 47 | legend.data = data; 48 | } 49 | 50 | return legend; 51 | } -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2016 renxiaofan 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /template/server.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by yelingfeng on 2016/9/9. 3 | */ 4 | var path = require('path'); 5 | var express = require('express'); 6 | 7 | var app = new express(); 8 | var port = process.env.PORT || 8400; 9 | 10 | app.get("/", function(req, res) { 11 | return res.send("

test ApiServer

") 12 | }) 13 | 14 | app.all('*', function(req, res, next) { 15 | res.header("Access-Control-Allow-Origin", "http://localhost:8100"); 16 | res.header("Access-Control-Allow-Headers", "X-Requested-With"); 17 | res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS"); 18 | res.header("Content-Type", "application/json;charset=utf-8"); 19 | next(); 20 | }); 21 | 22 | 23 | 24 | app.get("/getPieData",(req,res)=>{ 25 | res.send({ 26 | "result":[ 27 | {"name":"vue","value":"99"}, 28 | {"name":"react","value":"50"}, 29 | {"name":"angular2","value":"40"} 30 | ] 31 | }) 32 | }); 33 | 34 | 35 | 36 | app.listen(port, function(err) { 37 | if (err) { 38 | console.error(err) 39 | } else { 40 | console.info("==> Listening on port %s. Open up http://localhost:%s/ in your browser.", port, port) 41 | } 42 | }) 43 | -------------------------------------------------------------------------------- /template/src/components/commonConfig.js: -------------------------------------------------------------------------------- 1 | /** 2 | * 通用配置属性 3 | * Created by yelingfeng on 2016/8/15. 4 | */ 5 | 6 | /** 7 | * X轴横轴固定列 标识符 8 | */ 9 | export const xAxis = "XAXIS"; 10 | 11 | /** 12 | * 通用字体 13 | */ 14 | export const commonFontFamily = 'Microsoft YaHei'; 15 | 16 | /** 17 | *y轴分割线颜色 18 | */ 19 | export const yAxisSplitColor = 'rgba(0,228,255,0.1)'; 20 | 21 | /** 22 | * 图例颜色 23 | */ 24 | export const legendColor = "#00d8f1"; 25 | 26 | /** 27 | * 坐标轴label颜色码 28 | */ 29 | export const axisLabelColor = "#47c9f6"; 30 | 31 | /** 32 | * 33 | * @type {string} 34 | */ 35 | export const axisLineColor = "#1086c4"; 36 | 37 | /** 38 | * 通用颜色集合 39 | */ 40 | export const commonColorList =['#47c9f6' , '#287196', '#1e6a6f', '#1f7349', '#f4794f' , '#b54339', '#2c5ba3' , '#414079']; 41 | 42 | 43 | /** 44 | * 地图颜色 45 | */ 46 | export const mapRangeColorList = [ '#bb1e1e','#db4646' ,'#f4794f' ,'#f5b24e' ]; 47 | 48 | /** 49 | * 横向柱图颜色集合 50 | */ 51 | export const barColorList = ["#8000ff", "#6f00ff", "#4c00ff", "#0000ff", "#0040ff", "#0055ff", "#006aff", "#0080ff", 52 | "#0095ff", "#00aaff", "#50c0e9", "#00d5ff", "#00eaff", "#00ffff", "#00ffd5", "#00ffaa", "#00ff80", "#2eff51", "#51ff2e", 53 | "#74ff2e", "#96ff2e", "#b9ff2e", "#dcff2e", "#ffff2e", "#ffdc2e", "#ffb92e", "#ff962e", "#ff742e", "#ff512e", "#ff2e2e"] 54 | ; 55 | 56 | -------------------------------------------------------------------------------- /template/src/store/index.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by yelingfeng on 2016/8/12. 3 | */ 4 | import Vue from 'vue' 5 | import Vuex from 'vuex' 6 | import API from "../api" 7 | import createLogger from 'vuex/dist/logger' 8 | Vue.use(Vuex) 9 | const isProd = process.env.NODE_ENV === 'production' 10 | const plugins = isProd ? [] : [createLogger]; 11 | 12 | const store = new Vuex.Store({ 13 | plugins: plugins, 14 | state: { 15 | pieData:[], 16 | pieStyle:{}, 17 | }, 18 | actions: { 19 | INIT_RESOURCE:({commit , dispatch,state}) => { 20 | let param = { 21 | name : "yelingfeng", 22 | age : "18" 23 | } 24 | API.getCircleData(param).then((resp)=>{ 25 | commit('INIT_PIE',resp.data.result) 26 | },(resp)=>{ 27 | layer.open(resp) 28 | }) 29 | 30 | }, 31 | RESIZE_PIE:({commit,state},{size}) =>{ 32 | commit('RESIZE_PIE',{size}) 33 | } 34 | }, 35 | mutations: { 36 | INIT_PIE:(state , data) => { 37 | state.pieData = data ; 38 | }, 39 | RESIZE_PIE:(state , { size })=> { 40 | state.pieStyle = size ; 41 | } 42 | }, 43 | getters: { 44 | getPieData(state){ 45 | return state.pieData 46 | }, 47 | getPieSize(state){ 48 | return state.pieStyle 49 | } 50 | } 51 | }) 52 | 53 | export default store -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # vue-ylf-template 2 | 3 | 一套偏PC端的混合vue2.0模板 抽取vue-cli webpack完整版 去掉eslint, test 去其精华 取其糠糟 4 | 5 | ## 整合技术栈 6 | 7 | - [x] vue@2.0.0-rc.4 8 | - [x] vue-resource@1.0.0 9 | - [x] vuex@2.0.0-rc.4 10 | - [x] bootstrap 11 | - [x] jquery 12 | - [x] echarts 13 | - [x] layer 14 | - [x] lodash 15 | - [x] foundation-datepicker@1.5.3 16 | - [x] moment 17 | - [x] easyui 18 | 19 | 20 | ## How to use 21 | 22 | fisrt install vue-cli 23 | 24 | ```nodejs 25 | 26 | $ npm install vue-cli -g 27 | 28 | ``` 29 | 30 | init vue-ylf-template 31 | 32 | ```nodejs 33 | 34 | $ vue init yelingfeng/vue-ylf-template {projectName} 35 | $ cd {projectName} 36 | 37 | ``` 38 | install 39 | ```nodejs 40 | $ npm install 41 | 42 | ``` 43 | 44 | dev 45 | ```nodejs 46 | 47 | // 启动api-server 48 | $ npm run api-server 49 | 50 | // 启动开发模式 51 | $ npm run dev 52 | 53 | ``` 54 | 55 | build 56 | ```nodejs 57 | $ npm run build 58 | ``` 59 | 60 | ## 目录结构 61 | 62 | ````javascript 63 | 64 | ├─build 65 | ├─config 66 | └─src 67 | ├─api 68 | ├─assets 69 | │ ├─css 70 | │ ├─images 71 | │ └─lib 72 | │ ├─easyui 73 | │ │ ├─css 74 | │ │ ├─images 75 | │ │ │ └─icons 76 | │ │ └─js 77 | │ └─layer_mobile 78 | │ └─need 79 | ├─components 80 | │ ├─Pie 81 | │ │ └─sub 82 | │ └─util 83 | ├─store 84 | └─views 85 | 86 | ``` 87 | 88 | ## 启动这个画面说明你成功了 89 | 90 | ![](/screen01.png) 91 | -------------------------------------------------------------------------------- /template/src/App.vue: -------------------------------------------------------------------------------- 1 | 4 | 50 | 51 | 67 | -------------------------------------------------------------------------------- /template/src/assets/css/reset.css: -------------------------------------------------------------------------------- 1 | @charset "utf-8"; 2 | html,body,div,span,object,iframe,h1,h2,h3,h4,h5,h6,p,address,cite,code,del,em,img,strong,sub,sup,b,i,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,figcaption,figure,footer,header,hgroup,menu,nav,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;outline:0;font-size:100%;vertical-align:baseline} 3 | article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block} 4 | img,object,embed{max-width:100%} 5 | mark{background-color:#ff9;color:#000;font-style:normal;font-weight:400} 6 | del{text-decoration:line-through} 7 | caption,cite,em,i,th{font-style:normal;font-weight:400}b,strong{font-style:normal;font-weight:700} 8 | select,input,button,textarea{font-size:100%;font-style:normal;font-weight:400;vertical-align:middle;-webkit-border-radius:0;-webkit-appearance: none;} 9 | table{border-collapse:collapse;border-spacing:0}fieldset,img{border:0}legend{color:#000}sup{vertical-align:text-top}sub{vertical-align:text-bottom}iframe{display:block}li{list-style:none}textarea{resize:none} 10 | div,th,td{word-wrap:break-word;word-break:break-all} 11 | body,button,input,select,textarea{font:14px/1.5 Arial,Helvetica,sans-serif} 12 | body{-webkit-user-select:none;-webkit-tap-highlight-color:rgba(0,0,0,0);} 13 | a{text-decoration:none} 14 | :focus{outline:none} 15 | .al{text-align:left}.ac{text-align:center}.ar{text-align:right} 16 | .fl{float:left}.fr{float:right}.ti{text-indent:-9999px;overflow:hidden} 17 | .hide{display:none} -------------------------------------------------------------------------------- /template/src/components/util/tooltipHelper.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by yelingfeng on 2016/8/16. 3 | */ 4 | import _ from "lodash" 5 | 6 | import {getSpecialProps} from "../propsUtil" 7 | 8 | // tip 通用格式 9 | export function getTooltip(config, props) { 10 | 11 | let ylUnit = getSpecialProps(props, 'ylUnit'); 12 | let trigger = config && config.trigger || 'item'; 13 | 14 | let tipObj = { 15 | trigger: trigger, 16 | textStyle:{ 17 | fontSize : 12, 18 | align : "left" 19 | }, 20 | axisPointer: { 21 | type: "shadow", 22 | lineStyle: { 23 | color: "#fff" 24 | } 25 | }, 26 | formatter: function (params) { 27 | let content = ""; 28 | // 横轴类型 29 | if(trigger == "axis"){ 30 | content = params[0].name + '
'; 31 | let nv = _.chain(params).sortBy((o) => { return parseFloat(o.value,10); }).reverse().value(); 32 | nv.forEach((it) => { 33 | var name = it.seriesName; 34 | if (/\-/.test(it.seriesName))name = it.name; 35 | content += name + ":" + (it.data.value == undefined ? 0 : it.data.value) + ylUnit + '
'; 36 | }) 37 | }else{ 38 | content = params.data.info; 39 | if(content == undefined || content == ""){ 40 | content = params.name + "
" + params.value; 41 | } 42 | } 43 | return content 44 | } 45 | } 46 | return tipObj; 47 | } -------------------------------------------------------------------------------- /template/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "{{ name }}", 3 | "version": "0.0.2", 4 | "description": "{{ description }}", 5 | "author": "{{ author }}", 6 | "scripts": { 7 | "dev": "webpack-dev-server --inline --hot --port=8100 --config ./build/webpack.dev.config.js", 8 | "build": "rimraf static && cross-env NODE_ENV=production webpack --progress --hide-modules --config ./build/webpack.prod.config.js", 9 | "api-server": "node server.js" 10 | }, 11 | "dependencies": { 12 | "echarts": "^3.2.3", 13 | "jquery": "^2.2.4", 14 | "lodash": "^4.15.0", 15 | "moment": "^2.14.1", 16 | "vue": "^2.0.1", 17 | "vue-resource": "^1.0.3", 18 | "vuex": "^2.0.0" 19 | }, 20 | "devDependencies": { 21 | "babel-core": "^6.14.0", 22 | "babel-loader": "^6.2.5", 23 | "babel-polyfill": "^6.13.0", 24 | "babel-plugin-transform-runtime": "^6.12.0", 25 | "babel-preset-es2015": "^6.13.2", 26 | "babel-preset-stage-0": "^6.5.0", 27 | "babel-runtime": "^6.11.6", 28 | "bootstrap": "^3.3.7", 29 | "cross-env": "^1.0.6", 30 | "css-loader": "^0.23.1", 31 | "express": "^4.14.0", 32 | "extract-text-webpack-plugin": "^2.0.0-beta.3", 33 | "file-loader": "^0.8.4", 34 | "font-awesome": "^4.6.3", 35 | "foundation-datepicker": "^1.5.3", 36 | "html-webpack-plugin": "^2.22.0", 37 | "json-loader": "^0.5.4", 38 | "style-loader": "^0.13.1", 39 | "uglify-js": "^2.7.1", 40 | "url-loader": "^0.5.7", 41 | "vue-loader": "^9.5.0", 42 | "vue-style-loader": "^1.0.0", 43 | "webpack": "^2.1.0-beta.21", 44 | "webpack-dev-server": "^2.1.0-beta.0", 45 | "webpack-merge": "^0.8.3" 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /template/build/webpack.dev.config.js: -------------------------------------------------------------------------------- 1 | var config = require('../config/index') 2 | var path = require('path') 3 | var utils = require('./utils') 4 | var webpack = require('webpack') 5 | var merge = require('webpack-merge') 6 | var baseWebpackConfig = require('./webpack.base.config') 7 | var HtmlWebpackPlugin = require('html-webpack-plugin') 8 | var ExtractTextPlugin = require('extract-text-webpack-plugin') 9 | 10 | module.exports = merge(baseWebpackConfig, { 11 | module: { 12 | loaders: utils.styleLoaders({ sourceMap: config.dev.cssSourceMap }) 13 | }, 14 | devtool: '#eval-source-map', 15 | plugins: [ 16 | new webpack.DefinePlugin({ 17 | 'process.env': config.dev.env 18 | }), 19 | new webpack.optimize.CommonsChunkPlugin({ 20 | name: "vendor", 21 | minChunks: Infinity //Infinity 22 | }), 23 | new ExtractTextPlugin({ 24 | filename : '[hash:8].style.css', 25 | allChunks: true 26 | }), 27 | new HtmlWebpackPlugin({ 28 | title: "", 29 | template: path.join(__dirname,'../index.html'), //模板文件 30 | inject:'body', 31 | hash:false, //为静态资源生成hash值 32 | minify:{ //压缩HTML文件 33 | removeComments:false, //移除HTML中的注释 34 | collapseWhitespace:true, //删除空白符与换行符 35 | removeAttributeQuotes: true 36 | } 37 | }), 38 | new webpack.ProvidePlugin({ 39 | $: "jquery", 40 | jQuery: "jquery", 41 | "window.jQuery": "jquery", 42 | }), 43 | new webpack.HotModuleReplacementPlugin(), 44 | new webpack.NoErrorsPlugin(), 45 | new webpack.LoaderOptionsPlugin({ 46 | options:{ 47 | vue: { 48 | loaders: utils.cssLoaders() 49 | } 50 | } 51 | }) 52 | ] 53 | }) 54 | 55 | 56 | 57 | -------------------------------------------------------------------------------- /template/src/components/propsUtil.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by yelingfeng on 2016/8/24. 3 | */ 4 | 5 | import lang from "lodash/lang" 6 | 7 | /** 8 | * 检查op里是否有指定属性 没有返回一个默认键值 9 | * @param op 10 | * @param checkName 11 | * @returns {} 12 | */ 13 | function propsCheck(op, checkName) { 14 | let obj = Object.create(null); 15 | if (op == undefined) { 16 | obj[checkName] = {} 17 | op = obj; 18 | } 19 | if (!op[checkName]) { 20 | obj[checkName] = {} 21 | } else { 22 | obj = op; 23 | } 24 | return obj; 25 | } 26 | 27 | /** 28 | * 获取属性 29 | * @param op 属性对象 30 | * @param modal 模块名 31 | * @param key 属性名 32 | * @returns {*} 33 | */ 34 | function getProps(op, modal, key) { 35 | let mark = (prop, m, k) => { 36 | let opt = propsCheck(prop, m) 37 | let v = opt[m][k] !== undefined ? opt[m][k] : "" 38 | return v 39 | } 40 | 41 | if (lang.isArray(key)) { 42 | let obj = {} 43 | for (var k of key) { 44 | obj[k] = mark(op, modal, k) 45 | } 46 | return obj 47 | } else { 48 | let v = mark(op, modal, key) 49 | return v 50 | } 51 | } 52 | 53 | 54 | /** 55 | * 获取Special属性 56 | * @param op 57 | * @param key 属性名 58 | */ 59 | export function getSpecialProps(op, key) { 60 | let prop = getProps(op, 'specialProps', key) 61 | return prop 62 | } 63 | 64 | /** 65 | * 获取通用属性 66 | * @param op 67 | * @param key 属性名 68 | */ 69 | export function getCommonProps(op, key) { 70 | let prop = getProps(op, 'commonProps', key) 71 | return prop 72 | } 73 | 74 | /** 75 | * 获得图例属性 76 | * @param prop 77 | * @param {Array} keys 78 | */ 79 | export function getLegendProps(prop, keys) { 80 | let k = 'commonProps' 81 | return getProps(prop, k, keys); 82 | } 83 | 84 | /** 85 | * 获得地图属性 86 | * @param props 87 | * @param keys 88 | * @returns {*} 89 | */ 90 | export function getMapProps(props, keys) { 91 | let k = 'mapOption' 92 | return getProps(props, k, keys); 93 | } -------------------------------------------------------------------------------- /template/build/utils.js: -------------------------------------------------------------------------------- 1 | var path = require('path') 2 | var config = require('../config/index') 3 | var ExtractTextPlugin = require('extract-text-webpack-plugin') 4 | 5 | exports.assetsPath = function (_path) { 6 | var assetsSubDirectory = process.env.NODE_ENV === 'production' 7 | ? config.build.assetsSubDirectory 8 | : config.dev.assetsSubDirectory 9 | return path.posix.join(assetsSubDirectory, _path) 10 | } 11 | 12 | exports.cssLoaders = function (options) { 13 | options = options || {} 14 | // generate loader string to be used with extract text plugin 15 | function generateLoaders (loaders) { 16 | var sourceLoader = loaders.map(function (loader) { 17 | var extraParamChar 18 | if (/\?/.test(loader)) { 19 | loader = loader.replace(/\?/, '-loader?') 20 | extraParamChar = '&' 21 | } else { 22 | loader = loader + '-loader' 23 | extraParamChar = '?' 24 | } 25 | return loader + (options.sourceMap ? extraParamChar + 'sourceMap' : '') 26 | }).join('!') 27 | 28 | if (options.extract) { 29 | return ExtractTextPlugin.extract('vue-style-loader', sourceLoader) 30 | } else { 31 | return ['vue-style-loader', sourceLoader].join('!') 32 | } 33 | } 34 | 35 | // http://vuejs.github.io/vue-loader/configurations/extract-css.html 36 | return { 37 | css: generateLoaders(['css']), 38 | postcss: generateLoaders(['css']), 39 | less: generateLoaders(['css', 'less']), 40 | sass: generateLoaders(['css', 'sass?indentedSyntax']), 41 | scss: generateLoaders(['css', 'sass']), 42 | stylus: generateLoaders(['css', 'stylus']), 43 | styl: generateLoaders(['css', 'stylus']) 44 | } 45 | } 46 | 47 | // Generate loaders for standalone style files (outside of .vue) 48 | exports.styleLoaders = function (options) { 49 | var output = [] 50 | var loaders = exports.cssLoaders(options) 51 | for (var extension in loaders) { 52 | var loader = loaders[extension] 53 | output.push({ 54 | test: new RegExp('\\.' + extension + '$'), 55 | loader: loader 56 | }) 57 | } 58 | return output 59 | } 60 | -------------------------------------------------------------------------------- /template/build/webpack.base.config.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by yelingfeng on 2016/9/12. 3 | */ 4 | var path = require('path') 5 | var config = require('../config/index') 6 | var utils = require('./utils') 7 | var projectRoot = path.resolve(__dirname, '../') 8 | 9 | module.exports = { 10 | entry: { 11 | vendor: config.build.venders, 12 | app: './src/main' 13 | }, 14 | output: { 15 | path: config.build.assetsRoot, 16 | publicPath: process.env.NODE_ENV === 'production' ? config.build.assetsPublicPath : config.dev.assetsPublicPath, 17 | filename: '[hash:8].[name].js', 18 | }, 19 | resolve: { 20 | extensions: ['.js', '.vue', '.jsx'], 21 | alias: { 22 | src: path.resolve(__dirname, '../src'), 23 | assets: path.resolve(__dirname, '../src/assets'), 24 | components: path.resolve(__dirname, '../src/components'), 25 | views: path.resolve(__dirname, '../src/views'), 26 | } 27 | }, 28 | module: { 29 | loaders: [ 30 | { 31 | test: /\.vue$/, 32 | include: projectRoot, 33 | loader: 'vue' 34 | }, 35 | { 36 | test: /\.js|\.jsx$/, 37 | loader: 'babel', 38 | include: projectRoot, 39 | exclude: /node_modules/ 40 | }, 41 | { 42 | test: /\.json$/, 43 | loader: 'json' 44 | }, 45 | { 46 | test: /\.(png|jpe?g|gif|svg)(\?.*)?$/, 47 | loader: 'url', 48 | query: { 49 | limit: 10000, 50 | name: utils.assetsPath('images/[name].[hash:8].[ext]') 51 | } 52 | }, 53 | { 54 | test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/, 55 | loader: 'url', 56 | query: { 57 | limit: 10000, 58 | name: utils.assetsPath('fonts/[name].[hash:8].[ext]') 59 | } 60 | } 61 | ] 62 | }, 63 | devServer: { 64 | historyApiFallback: true, 65 | noInfo: true 66 | } 67 | } 68 | 69 | -------------------------------------------------------------------------------- /template/build/webpack.prod.config.js: -------------------------------------------------------------------------------- 1 | var path = require('path') 2 | var config = require('../config/index') 3 | var utils = require('./utils') 4 | var webpack = require('webpack') 5 | var merge = require('webpack-merge') 6 | var baseWebpackConfig = require('./webpack.base.config') 7 | var ExtractTextPlugin = require('extract-text-webpack-plugin') 8 | var HtmlWebpackPlugin = require('html-webpack-plugin') 9 | var env = config.build.env 10 | 11 | var webpackConfig = merge(baseWebpackConfig, { 12 | module: { 13 | loaders: [ 14 | { 15 | test: /\.css$/, 16 | loader: ExtractTextPlugin.extract({ 17 | fallbackLoader: 'style-loader', 18 | loader: 'css-loader?sourceMap' 19 | }) 20 | } 21 | ] 22 | }, 23 | devtool: config.build.productionSourceMap ? '#source-map' : false, 24 | output: { 25 | path: config.build.assetsRoot, 26 | filename: utils.assetsPath('js/[name].[hash].js'), 27 | chunkFilename: utils.assetsPath('js/[id].[hash].js') 28 | }, 29 | plugins: [ 30 | new webpack.DefinePlugin({ 31 | 'process.env': env 32 | }), 33 | new webpack.optimize.UglifyJsPlugin({ 34 | compress: { 35 | warnings: false 36 | }, 37 | output: { 38 | comments: false 39 | } 40 | }), 41 | // extract css into its own file 42 | new ExtractTextPlugin(utils.assetsPath('css/[name].[hash].css')), 43 | new HtmlWebpackPlugin({ 44 | filename:config.build.index, 45 | template: 'index.html', 46 | inject: true, 47 | minify: { 48 | removeComments: true, 49 | collapseWhitespace: true, 50 | removeAttributeQuotes: true 51 | }, 52 | chunksSortMode: 'dependency' 53 | }), 54 | // split vendor js into its own file 55 | new webpack.optimize.CommonsChunkPlugin({ 56 | name: 'vendor', 57 | minChunks: Infinity 58 | }), 59 | 60 | new webpack.ProvidePlugin({ 61 | $: "jquery", 62 | jQuery: "jquery", 63 | moment:"moment", 64 | "window.jQuery": "jquery" 65 | }) 66 | ] 67 | }) 68 | 69 | module.exports = webpackConfig 70 | -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/js/easyuizhCN.js: -------------------------------------------------------------------------------- 1 | define(['jquery'],function($){ 2 | if ($.fn.pagination){ 3 | $.fn.pagination.defaults.beforePageText = '第'; 4 | $.fn.pagination.defaults.afterPageText = '共{pages}页'; 5 | $.fn.pagination.defaults.displayMsg = '显示{from}到{to},共{total}记录'; 6 | } 7 | if ($.fn.datagrid){ 8 | $.fn.datagrid.defaults.loadMsg = '正在处理,请稍待。。。'; 9 | } 10 | if ($.fn.treegrid && $.fn.datagrid){ 11 | $.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg; 12 | } 13 | if ($.messager){ 14 | $.messager.defaults.ok = '确定'; 15 | $.messager.defaults.cancel = '取消'; 16 | } 17 | if ($.fn.validatebox){ 18 | $.fn.validatebox.defaults.missingMessage = '该输入项为必输项'; 19 | $.fn.validatebox.defaults.rules.email.message = '请输入有效的电子邮件地址'; 20 | $.fn.validatebox.defaults.rules.url.message = '请输入有效的URL地址'; 21 | $.fn.validatebox.defaults.rules.length.message = '输入内容长度必须介于{0}和{1}之间'; 22 | $.fn.validatebox.defaults.rules.remote.message = '请修正该字段'; 23 | } 24 | if ($.fn.numberbox){ 25 | $.fn.numberbox.defaults.missingMessage = '该输入项为必输项'; 26 | } 27 | if ($.fn.combobox){ 28 | $.fn.combobox.defaults.missingMessage = '该输入项为必输项'; 29 | } 30 | if ($.fn.combotree){ 31 | $.fn.combotree.defaults.missingMessage = '该输入项为必输项'; 32 | } 33 | if ($.fn.combogrid){ 34 | $.fn.combogrid.defaults.missingMessage = '该输入项为必输项'; 35 | } 36 | if ($.fn.calendar){ 37 | $.fn.calendar.defaults.weeks = ['日','一','二','三','四','五','六']; 38 | $.fn.calendar.defaults.months = ['一月','二月','三月','四月','五月','六月','七月','八月','九月','十月','十一月','十二月']; 39 | } 40 | if ($.fn.datebox){ 41 | $.fn.datebox.defaults.currentText = '今天'; 42 | $.fn.datebox.defaults.closeText = '关闭'; 43 | $.fn.datebox.defaults.okText = '确定'; 44 | $.fn.datebox.defaults.missingMessage = '该输入项为必输项'; 45 | $.fn.datebox.defaults.formatter = function(date){ 46 | var y = date.getFullYear(); 47 | var m = date.getMonth()+1; 48 | var d = date.getDate(); 49 | return y+'-'+(m<10?('0'+m):m)+'-'+(d<10?('0'+d):d); 50 | }; 51 | $.fn.datebox.defaults.parser = function(s){ 52 | if (!s) return new Date(); 53 | var ss = s.split('-'); 54 | var y = parseInt(ss[0],10); 55 | var m = parseInt(ss[1],10); 56 | var d = parseInt(ss[2],10); 57 | if (!isNaN(y) && !isNaN(m) && !isNaN(d)){ 58 | return new Date(y,m-1,d); 59 | } else { 60 | return new Date(); 61 | } 62 | }; 63 | } 64 | if ($.fn.datetimebox && $.fn.datebox){ 65 | $.extend($.fn.datetimebox.defaults,{ 66 | currentText: $.fn.datebox.defaults.currentText, 67 | closeText: $.fn.datebox.defaults.closeText, 68 | okText: $.fn.datebox.defaults.okText, 69 | missingMessage: $.fn.datebox.defaults.missingMessage 70 | }); 71 | } 72 | 73 | }); 74 | -------------------------------------------------------------------------------- /template/src/components/util/axisHelper.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by yelingfeng on 2016/8/16. 3 | */ 4 | 5 | import * as config from "../commonConfig" 6 | import {getSpecialProps,getCommonProps} from "../propsUtil" 7 | import _ from "lodash" 8 | 9 | /** 10 | * 获取label样式 11 | * @param op 12 | */ 13 | export function getAxisLabel(op, isRotate = false) { 14 | let obj = { 15 | textStyle: { 16 | color: config.axisLabelColor, 17 | fontFamily: config.commonFontFamily 18 | }, 19 | formatter: function (value) { 20 | if (_.isNumber(value)) { 21 | return Math.abs(value).toFixed(0) 22 | } 23 | return value 24 | } 25 | }; 26 | 27 | if (isRotate) { 28 | let rotate = getCommonProps(op, "rotate") 29 | let interval = getCommonProps(op, "interval") 30 | 31 | if (rotate != "") { 32 | obj.rotate = rotate 33 | } 34 | if (interval !== "") { 35 | obj.interval = interval 36 | } else { 37 | obj.interval = 'auto' 38 | } 39 | } 40 | 41 | 42 | return obj 43 | } 44 | 45 | 46 | export function getAxisLine() { 47 | return { 48 | lineStyle: { 49 | color: "rgba(255,255,255,0.5)", 50 | width: 1 51 | } 52 | } 53 | } 54 | 55 | export function getSplitLine() { 56 | return { 57 | lineStyle: { 58 | color: config.yAxisSplitColor, 59 | width: 2, 60 | type: 'solid' 61 | } 62 | } 63 | } 64 | 65 | 66 | export function getAxisName(props, name, unit) { 67 | return getSpecialProps(props, name) + getSpecialProps(props, unit); 68 | } 69 | 70 | 71 | /** 72 | * 计算最大最小值问题 73 | * @param data 74 | * @param type 1: 数据自适应 , 2: 固定值 75 | * @param param {max , min } 76 | */ 77 | export function axisMaxmin(data, type, param) { 78 | let maxmin = { 79 | max: 100, 80 | min: 0 81 | }; 82 | if (type == "1") { 83 | maxmin = getMaxMin(data); 84 | } 85 | else if (type == "2") { 86 | maxmin = { 87 | max: param.max, 88 | min: param.min 89 | } 90 | } 91 | return maxmin; 92 | } 93 | 94 | function getMaxMin(data) { 95 | let arr = []; 96 | let max; 97 | let min; 98 | if (data && data.length) { 99 | data.forEach((it) => { 100 | if (it.value) { 101 | arr.push(parseFloat(it.value, 10)); 102 | } 103 | }); 104 | } 105 | 106 | if (arr.length > 0) { 107 | max = _.max(arr); 108 | min = _.min(arr); 109 | } else { 110 | max = 100; 111 | min = 0; 112 | } 113 | if (arr.length == 1 && arr[0] <= 100) { 114 | max = 100; 115 | min = 0; 116 | } 117 | 118 | min = min - ( max - min) * 0.05; 119 | max = max + ( max - min) * 0.05; 120 | max = max == 0 ? 100 : max; 121 | min = min < 0 ? 0 : min; 122 | return { 123 | max, 124 | min 125 | } 126 | } 127 | -------------------------------------------------------------------------------- /template/src/assets/lib/layer_mobile/layer.js: -------------------------------------------------------------------------------- 1 | /*! layer mobile-v2.0 弹层组件移动版 License LGPL http://layer.layui.com/mobile By 贤心 */ 2 | ;!function(a){"use strict";var b=document,c="querySelectorAll",d="getElementsByClassName",e=function(a){return b[c](a)},f={type:0,shade:!0,shadeClose:!0,fixed:!0,anim:"scale"},g={extend:function(a){var b=JSON.parse(JSON.stringify(f));for(var c in a)b[c]=a[c];return b},timer:{},end:{}};g.touch=function(a,b){a.addEventListener("click",function(a){b.call(this,a)},!1)};var h=0,i=["layui-m-layer"],j=function(a){var b=this;b.config=g.extend(a),b.view()};j.prototype.view=function(){var a=this,c=a.config,f=b.createElement("div");a.id=f.id=i[0]+h,f.setAttribute("class",i[0]+" "+i[0]+(c.type||0)),f.setAttribute("index",h);var g=function(){var a="object"==typeof c.title;return c.title?'

'+(a?c.title[0]:c.title)+"

":""}(),j=function(){"string"==typeof c.btn&&(c.btn=[c.btn]);var a,b=(c.btn||[]).length;return 0!==b&&c.btn?(a=''+c.btn[0]+"",2===b&&(a=''+c.btn[1]+""+a),'
'+a+"
"):""}();if(c.fixed||(c.top=c.hasOwnProperty("top")?c.top:100,c.style=c.style||"",c.style+=" top:"+(b.body.scrollTop+c.top)+"px"),2===c.type&&(c.content='

'+(c.content||"")+"

"),c.skin&&(c.anim="up"),"msg"===c.skin&&(c.shade=!1),f.innerHTML=(c.shade?"
':"")+'
"+g+'
'+c.content+"
"+j+"
",!c.type||2===c.type){var k=b[d](i[0]+c.type),l=k.length;l>=1&&layer.close(k[0].getAttribute("index"))}document.body.appendChild(f);var m=a.elem=e("#"+a.id)[0];c.success&&c.success(m),a.index=h++,a.action(c,m)},j.prototype.action=function(a,b){var c=this;a.time&&(g.timer[c.index]=setTimeout(function(){layer.close(c.index)},1e3*a.time));var e=function(){var b=this.getAttribute("type");0==b?(a.no&&a.no(),layer.close(c.index)):a.yes?a.yes(c.index):layer.close(c.index)};if(a.btn)for(var f=b[d]("layui-m-layerbtn")[0].children,h=f.length,i=0;h>i;i++)g.touch(f[i],e);if(a.shade&&a.shadeClose){var j=b[d]("layui-m-layershade")[0];g.touch(j,function(){layer.close(c.index,a.end)})}a.end&&(g.end[c.index]=a.end)},a.layer={v:"2.0",index:h,open:function(a){var b=new j(a||{});return b.index},close:function(a){var c=e("#"+i[0]+a)[0];c&&(c.innerHTML="",b.body.removeChild(c),clearTimeout(g.timer[a]),delete g.timer[a],"function"==typeof g.end[a]&&g.end[a](),delete g.end[a])},closeAll:function(){for(var a=b[d](i[0]),c=0,e=a.length;e>c;c++)layer.close(0|a[0].getAttribute("index"))}},"function"==typeof define?define(function(){return layer}):function(){var a=document.scripts,c=a[a.length-1],d=c.src,e=d.substring(0,d.lastIndexOf("/")+1);c.getAttribute("merge")||document.head.appendChild(function(){var a=b.createElement("link");return a.href=e+"need/layer.css?2.0",a.type="text/css",a.rel="styleSheet",a.id="layermcss",a}())}()}(window); -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/css/easyui_table1.css: -------------------------------------------------------------------------------- 1 | /* 2 | **common table 3 | **data on 10/20/2015 4 | */ 5 | body{ 6 | /*background: none;*/ 7 | } 8 | .panel-header, .panel-body { 9 | border-color:#537DAD; 10 | } 11 | .panel-body { 12 | background-color: transparent;/* #ffffff*/ 13 | color: rgba(210,165,123,.9);/*#000000*/ 14 | } 15 | .datagrid-view { 16 | background-color: rgba(13,59,110,.4); 17 | } 18 | .panel-body-noheader{ 19 | border-top-width: 0px; 20 | } 21 | .datagrid-htable, .datagrid-btable, .datagrid-ftable { 22 | color:#fff; 23 | } 24 | .datagrid-view1 .datagrid-btable{ 25 | width: 100%; 26 | } 27 | .datagrid-view2 .datagrid-btable,.datagrid-view2 .datagrid-htable{ 28 | color:#e5e5e5; 29 | width:100%; 30 | } 31 | .datagrid-htable .datagrid-header-row, 32 | .datagrid-btable .datagrid-header-row, 33 | .datagrid-ftable .datagrid-header-row { 34 | color: rgba(153,196,27,.9); 35 | } 36 | .datagrid-header td{ 37 | border-top: 1px solid #4297d7; 38 | border-bottom: 1px solid #4297d7; 39 | padding: 3px 0; 40 | } 41 | .datagrid-body td { 42 | vertical-align: top; 43 | border-bottom: solid 1px #4573A0; 44 | padding:3px 0; 45 | } 46 | .datagrid-body .datagrid-cell{ 47 | line-height:20px; 48 | } 49 | .datagrid-footer td{ 50 | border-width: 0px; 51 | } 52 | 53 | .datagrid-header-row .datagrid-cell-check{ 54 | padding-top:5px; 55 | } 56 | .datagrid-header, .datagrid-td-rownumber { 57 | background-color: rgba(210,165,123,.4); 58 | background: -webkit-linear-gradient(top,#104988 0,#0d3c73 100%); 59 | background: -moz-linear-gradient(top,#104988 0,#0d3c73 100%); 60 | background: -o-linear-gradient(top,#104988 0,#0d3c73 100%); 61 | background: linear-gradient(to bottom,#104988 0,#0d3c73 100%); 62 | background-repeat: repeat-x; 63 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#104988,endColorstr=#0d3c73,GradientType=0); 64 | } 65 | .datagrid-td-rownumber { 66 | background:none; 67 | } 68 | .datagrid-header, .datagrid-toolbar, .datagrid-pager, .datagrid-footer-inner { 69 | border-color: none; 70 | } 71 | .datagrid-row-over{ 72 | background: #184e83; 73 | font-weight: normal; 74 | } 75 | .datagrid-row-over .datagrid-cell-rownumber{ 76 | /* color:#1d5987; */ 77 | } 78 | .datagrid-sort-desc .datagrid-sort-icon { 79 | /* padding: 0 20px 0 0; 80 | background: url('../images/datagrid_icons.png') no-repeat -16px center;*/ 81 | } 82 | .datagrid-sort-asc .datagrid-sort-icon { 83 | /* padding: 0 18px 0 0; 84 | background: url('../images/datagrid_icons.png') no-repeat 0px center;*/ 85 | } 86 | /*pagination*/ 87 | .datagrid-pager { 88 | background: none; 89 | color: rgba(255,255,255,1); 90 | } 91 | .datagrid .datagrid-pager{ 92 | background-color: rgba(13,59,110,.4); 93 | } 94 | .pagination-page-list, .pagination .pagination-num { 95 | border-color: #2D558A; 96 | background: rgba(12,59,111,.1); 97 | color: #fff; 98 | font-size: 12px; 99 | font-family: sans-serif; 100 | text-align: center; 101 | } 102 | .pagination-page-list option{ 103 | background: rgba(12,59,111,.9); 104 | } 105 | .pagination-page-list option:hover{ 106 | background: rgba(12,59,111,.9); 107 | } 108 | .l-btn-plain:hover { 109 | background: none; 110 | color: #000000; 111 | border: 1px solid #b7d2ff; 112 | -moz-border-radius: 5px 5px 5px 5px; 113 | -webkit-border-radius: 5px 5px 5px 5px; 114 | border-radius: 5px 5px 5px 5px; 115 | } 116 | .pagination-btn-separator { 117 | height: 18px; 118 | border-left: 1px solid #ccc; 119 | border-right: 0px solid #fff; 120 | } 121 | .panel-header{ 122 | background:none; 123 | border:none; 124 | border-bottom:1px solid #fff; 125 | } 126 | .panel-header .title_green{ 127 | color:#51d60a; 128 | 129 | } 130 | .datagrid-header-row:first-child .datagrid-cell-group{ 131 | font-size:16px; 132 | font-weight:bold; 133 | } 134 | -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/css/icon.css: -------------------------------------------------------------------------------- 1 | .icon-on{ 2 | background:url('../images/icons/on.png') no-repeat center center; 3 | } 4 | .icon-stop{ 5 | background:url('../images/icons/stop.png') no-repeat center center; 6 | } 7 | .icon-reset{ 8 | background:url('../images/icons/reset.png') no-repeat center center; 9 | } 10 | .icon-blank{ 11 | background:url('../images/icons/blank.gif') no-repeat center center; 12 | } 13 | .icon-add{ 14 | background:url('../images/icons/edit_add.png') no-repeat center center; 15 | } 16 | .icon-edit{ 17 | background:url('../images/icons/pencil.png') no-repeat center center; 18 | } 19 | .icon-clear{ 20 | background:url('../images/icons/clear.png') no-repeat center center; 21 | } 22 | .icon-remove{ 23 | background:url('../images/icons/edit_remove.png') no-repeat center center; 24 | } 25 | .icon-save{ 26 | background:url('../images/icons/filesave.png') no-repeat center center; 27 | } 28 | .icon-cut{ 29 | background:url('../images/icons/cut.png') no-repeat center center; 30 | } 31 | .icon-ok{ 32 | background:url('../images/icons/ok.png') no-repeat center center; 33 | } 34 | .icon-no{ 35 | background:url('../images/icons/no.png') no-repeat center center; 36 | } 37 | .icon-cancel{ 38 | background:url('../images/icons/cancel.png') no-repeat center center; 39 | } 40 | .icon-reload{ 41 | background:url('../images/icons/reload.png') no-repeat center center; 42 | } 43 | .icon-search{ 44 | background:url('../images/icons/search.png') no-repeat center center; 45 | } 46 | .icon-print{ 47 | background:url('../images/icons/print.png') no-repeat center center; 48 | } 49 | .icon-help{ 50 | background:url('../images/icons/help.png') no-repeat center center; 51 | } 52 | .icon-undo{ 53 | background:url('../images/icons/undo.png') no-repeat center center; 54 | } 55 | .icon-redo{ 56 | background:url('../images/icons/redo.png') no-repeat center center; 57 | } 58 | .icon-back{ 59 | background:url('../images/icons/back.png') no-repeat center center; 60 | } 61 | .icon-sum{ 62 | background:url('../images/icons/sum.png') no-repeat center center; 63 | } 64 | .icon-tip{ 65 | background:url('../images/icons/tip.png') no-repeat center center; 66 | } 67 | .icon-filter{ 68 | background:url('../images/icons/filter.png') no-repeat center center; 69 | } 70 | .icon-man{ 71 | background:url('../images/icons/man.png') no-repeat center center; 72 | } 73 | .icon-lock{ 74 | background:url('../images/icons/lock.png') no-repeat center center; 75 | } 76 | .icon-more{ 77 | background:url('../images/icons/more.png') no-repeat center center; 78 | } 79 | 80 | 81 | .icon-mini-add{ 82 | background:url('../images/icons/mini_add.png') no-repeat center center; 83 | } 84 | .icon-mini-edit{ 85 | background:url('../images/icons/mini_edit.png') no-repeat center center; 86 | } 87 | .icon-mini-refresh{ 88 | background:url('../images/icons/mini_refresh.png') no-repeat center center; 89 | } 90 | 91 | .icon-large-picture{ 92 | background:url('../images/icons/large_picture.png') no-repeat center center; 93 | } 94 | .icon-large-clipart{ 95 | background:url('../images/icons/large_clipart.png') no-repeat center center; 96 | } 97 | .icon-large-shapes{ 98 | background:url('../images/icons/large_shapes.png') no-repeat center center; 99 | } 100 | .icon-large-smartart{ 101 | background:url('../images/icons/large_smartart.png') no-repeat center center; 102 | } 103 | .icon-large-chart{ 104 | background:url('../images/icons/large_chart.png') no-repeat center center; 105 | } 106 | 107 | .icon-new-add{ 108 | background:url('../images/icons/new-add.png') no-repeat center center; 109 | } 110 | .icon-new-edit{ 111 | background:url('../images/icons/new-edit.png') no-repeat center center; 112 | } 113 | .icon-new-remove{ 114 | background:url('../images/icons/new-remove.png') no-repeat center center; 115 | } 116 | .icon-new-issued{ 117 | background:url('../images/icons/new-issued.png') no-repeat center center; 118 | } 119 | .icon-new-back{ 120 | background:url('../images/icons/new-back.png') no-repeat center center; 121 | } 122 | .icon-new-recall{ 123 | background:url('../images/icons/new-recall.png') no-repeat center center; 124 | } 125 | .icon-new-spike{ 126 | background:url('../images/icons/new-spike.png') no-repeat center center; 127 | } 128 | .icon-new-overrule{ 129 | background:url('../images/icons/new-overrule.png') no-repeat center center; 130 | } 131 | .icon-new-file{ 132 | background:url('../images/icons/new-file.png') no-repeat center center; 133 | } 134 | .icon-new-revoke{ 135 | background:url('../images/icons/new-revoke.png') no-repeat center center; 136 | } 137 | .icon-new-import{ 138 | background:url('../images/icons/new-import.png') no-repeat center center; 139 | } 140 | .icon-new-export{ 141 | background:url('../images/icons/new-export.png') no-repeat center center; 142 | } 143 | .icon-new-download{ 144 | background:url('../images/icons/new-download.png') no-repeat center center; 145 | } 146 | .icon-new-canclePublish{ 147 | background:url('../images/icons/new_cancelpublish1.png') no-repeat center center; 148 | } 149 | .icon-export{ 150 | background:url('../images/icons/export.png') no-repeat center center; 151 | } -------------------------------------------------------------------------------- /template/src/assets/lib/layer_mobile/need/layer.css: -------------------------------------------------------------------------------- 1 | .layui-m-layer { 2 | position: relative; 3 | z-index: 19891014 4 | } 5 | 6 | .layui-m-layer * { 7 | -webkit-box-sizing: content-box; 8 | -moz-box-sizing: content-box; 9 | box-sizing: content-box 10 | } 11 | 12 | .layui-m-layermain, 13 | .layui-m-layershade { 14 | position: fixed; 15 | left: 0; 16 | top: 0; 17 | width: 100%; 18 | height: 100% 19 | } 20 | 21 | .layui-m-layershade { 22 | background-color: rgba(0, 0, 0, 0); 23 | pointer-events: auto 24 | } 25 | 26 | .layui-m-layermain { 27 | display: table; 28 | font-family: Helvetica, arial, sans-serif; 29 | pointer-events: none 30 | } 31 | 32 | .layui-m-layermain .layui-m-layersection { 33 | display: table-cell; 34 | vertical-align: middle; 35 | text-align: center 36 | } 37 | 38 | .layui-m-layerchild { 39 | position: relative; 40 | display: inline-block; 41 | text-align: left; 42 | font-size: 14px; 43 | /*background: linear-gradient(to bottom,#114682,#104075,#104075);*/ 44 | background: rgba(0,0,0,0.3); 45 | background-repeat: repeat; 46 | /*box-shadow: #0d1c2e 1px 3px 3px 0px, #0d1c2e -1px 0px 3px 0px;*/ 47 | border-radius: 2px; 48 | pointer-events: auto; 49 | -webkit-overflow-scrolling: touch; 50 | -webkit-animation-fill-mode: both; 51 | animation-fill-mode: both; 52 | -webkit-animation-duration: .2s; 53 | animation-duration: .2s 54 | } 55 | 56 | @-webkit-keyframes layui-m-anim-scale { 57 | 0% { 58 | opacity: 0; 59 | -webkit-transform: scale(.5); 60 | transform: scale(.5) 61 | } 62 | 100% { 63 | opacity: 1; 64 | -webkit-transform: scale(1); 65 | transform: scale(1) 66 | } 67 | } 68 | 69 | @keyframes layui-m-anim-scale { 70 | 0% { 71 | opacity: 0; 72 | -webkit-transform: scale(.5); 73 | transform: scale(.5) 74 | } 75 | 100% { 76 | opacity: 1; 77 | -webkit-transform: scale(1); 78 | transform: scale(1) 79 | } 80 | } 81 | 82 | .layui-m-anim-scale { 83 | animation-name: layui-m-anim-scale; 84 | -webkit-animation-name: layui-m-anim-scale 85 | } 86 | 87 | @-webkit-keyframes layui-m-anim-up { 88 | 0% { 89 | opacity: 0; 90 | -webkit-transform: translateY(800px); 91 | transform: translateY(800px) 92 | } 93 | 100% { 94 | opacity: 1; 95 | -webkit-transform: translateY(0); 96 | transform: translateY(0) 97 | } 98 | } 99 | 100 | @keyframes layui-m-anim-up { 101 | 0% { 102 | opacity: 0; 103 | -webkit-transform: translateY(800px); 104 | transform: translateY(800px) 105 | } 106 | 100% { 107 | opacity: 1; 108 | -webkit-transform: translateY(0); 109 | transform: translateY(0) 110 | } 111 | } 112 | 113 | .layui-m-anim-up { 114 | -webkit-animation-name: layui-m-anim-up; 115 | animation-name: layui-m-anim-up 116 | } 117 | 118 | .layui-m-layer0 .layui-m-layerchild { 119 | width: 90%; 120 | max-width: 640px 121 | } 122 | 123 | .layui-m-layer1 .layui-m-layerchild { 124 | border: none; 125 | border-radius: 0 126 | } 127 | 128 | .layui-m-layer2 .layui-m-layerchild { 129 | width: auto; 130 | max-width: 260px; 131 | min-width: 40px; 132 | border: none; 133 | background: 0 0; 134 | box-shadow: none; 135 | color: #fff 136 | } 137 | 138 | .layui-m-layerchild h3 { 139 | padding: 0 10px; 140 | height: 60px; 141 | line-height: 60px; 142 | font-size: 16px; 143 | font-weight: 400; 144 | border-radius: 5px 5px 0 0; 145 | text-align: center 146 | } 147 | 148 | .layui-m-layerbtn span, .layui-m-layerchild h3 { 149 | text-overflow: ellipsis; 150 | overflow: hidden; 151 | white-space: nowrap 152 | } 153 | 154 | .layui-m-layercont { 155 | padding: 4px 2px; 156 | line-height: 22px; 157 | text-align: center 158 | } 159 | 160 | .layui-m-layer1 .layui-m-layercont { 161 | padding: 0; 162 | text-align: left 163 | } 164 | 165 | .layui-m-layer2 .layui-m-layercont { 166 | text-align: center; 167 | padding: 0; 168 | line-height: 0 169 | } 170 | 171 | .layui-m-layer2 .layui-m-layercont i { 172 | width: 25px; 173 | height: 25px; 174 | margin-left: 8px; 175 | display: inline-block; 176 | background-color: #fff; 177 | border-radius: 100%; 178 | -webkit-animation: layui-m-anim-loading 1.4s infinite ease-in-out; 179 | animation: layui-m-anim-loading 1.4s infinite ease-in-out; 180 | -webkit-animation-fill-mode: both; 181 | animation-fill-mode: both 182 | } 183 | 184 | .layui-m-layerbtn, .layui-m-layerbtn span { 185 | position: relative; 186 | text-align: center; 187 | border-radius: 0 0 5px 5px 188 | } 189 | 190 | .layui-m-layer2 .layui-m-layercont p { 191 | margin-top: 20px 192 | } 193 | 194 | @-webkit-keyframes layui-m-anim-loading { 195 | 0%, 100%, 80% { 196 | transform: scale(0); 197 | -webkit-transform: scale(0) 198 | } 199 | 40% { 200 | transform: scale(1); 201 | -webkit-transform: scale(1) 202 | } 203 | } 204 | 205 | @keyframes layui-m-anim-loading { 206 | 0%, 100%, 80% { 207 | transform: scale(0); 208 | -webkit-transform: scale(0) 209 | } 210 | 40% { 211 | transform: scale(1); 212 | -webkit-transform: scale(1) 213 | } 214 | } 215 | 216 | .layui-m-layer2 .layui-m-layercont i:first-child { 217 | margin-left: 0; 218 | -webkit-animation-delay: -.32s; 219 | animation-delay: -.32s 220 | } 221 | 222 | .layui-m-layer2 .layui-m-layercont i.layui-m-layerload { 223 | -webkit-animation-delay: -.16s; 224 | animation-delay: -.16s 225 | } 226 | 227 | .layui-m-layer2 .layui-m-layercont > div { 228 | line-height: 22px; 229 | padding-top: 7px; 230 | margin-bottom: 20px; 231 | font-size: 14px 232 | } 233 | 234 | .layui-m-layerbtn { 235 | display: box; 236 | display: -moz-box; 237 | display: -webkit-box; 238 | width: 100%; 239 | height: 50px; 240 | line-height: 50px; 241 | font-size: 0; 242 | border-top: 1px solid #D0D0D0; 243 | background-color: #F2F2F2 244 | } 245 | 246 | .layui-m-layerbtn span { 247 | display: block; 248 | -moz-box-flex: 1; 249 | box-flex: 1; 250 | -webkit-box-flex: 1; 251 | font-size: 14px; 252 | cursor: pointer 253 | } 254 | 255 | .layui-m-layerbtn span[yes] { 256 | color: #40AFFE 257 | } 258 | 259 | .layui-m-layerbtn span[no] { 260 | border-right: 1px solid #D0D0D0; 261 | border-radius: 0 0 0 5px 262 | } 263 | 264 | .layui-m-layerbtn span:active { 265 | background-color: #F6F6F6 266 | } 267 | 268 | .layui-m-layerend { 269 | position: absolute; 270 | right: 7px; 271 | top: 10px; 272 | width: 30px; 273 | height: 30px; 274 | border: 0; 275 | font-weight: 400; 276 | background: 0 0; 277 | cursor: pointer; 278 | -webkit-appearance: none; 279 | font-size: 30px 280 | } 281 | 282 | .layui-m-layerend::after, .layui-m-layerend::before { 283 | position: absolute; 284 | left: 5px; 285 | top: 15px; 286 | content: ''; 287 | width: 18px; 288 | height: 1px; 289 | background-color: #999; 290 | transform: rotate(45deg); 291 | -webkit-transform: rotate(45deg); 292 | border-radius: 3px 293 | } 294 | 295 | .layui-m-layerend::after { 296 | transform: rotate(-45deg); 297 | -webkit-transform: rotate(-45deg) 298 | } 299 | 300 | body .layui-m-layer .layui-m-layer-footer { 301 | position: fixed; 302 | width: 95%; 303 | max-width: 100%; 304 | margin: 0 auto; 305 | left: 0; 306 | right: 0; 307 | bottom: 10px; 308 | background: 0 0 309 | } 310 | 311 | .layui-m-layer-footer .layui-m-layercont { 312 | padding: 20px; 313 | border-radius: 5px 5px 0 0; 314 | background-color: rgba(255, 255, 255, .8) 315 | } 316 | 317 | .layui-m-layer-footer .layui-m-layerbtn { 318 | display: block; 319 | height: auto; 320 | background: 0 0; 321 | border-top: none 322 | } 323 | 324 | .layui-m-layer-footer .layui-m-layerbtn span { 325 | background-color: rgba(255, 255, 255, .8) 326 | } 327 | 328 | .layui-m-layer-footer .layui-m-layerbtn span[no] { 329 | color: #FD482C; 330 | border-top: 1px solid #c2c2c2; 331 | border-radius: 0 0 5px 5px 332 | } 333 | 334 | .layui-m-layer-footer .layui-m-layerbtn span[yes] { 335 | margin-top: 10px; 336 | border-radius: 5px 337 | } 338 | 339 | body .layui-m-layer .layui-m-layer-msg { 340 | width: auto; 341 | max-width: 90%; 342 | margin: 0 auto; 343 | bottom: -150px; 344 | background-color: rgba(0, 0, 0, .7); 345 | color: #fff 346 | } 347 | 348 | .layui-m-layer-msg .layui-m-layercont { 349 | padding: 10px 20px 350 | } -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/js/datagrid-transposedview.js: -------------------------------------------------------------------------------- 1 | var transposedview = $.extend({}, $.fn.datagrid.defaults.view, { 2 | render: function(target, container, frozen){ 3 | 4 | $('.datagrid-view1', $(target).parent()).css('display', 'none'); 5 | 6 | var state = $.data(target, 'datagrid'); 7 | var opts = state.options; 8 | if (frozen){ 9 | if (!(opts.rownumbers || (opts.frozenColumns && opts.frozenColumns.length))){ 10 | return; 11 | } 12 | } 13 | 14 | var rows = state.data.rows; 15 | var fields = $(target).datagrid('getColumnFields', frozen); 16 | var table = []; 17 | table.push(''); 18 | if (opts.rownumbers){ 19 | table.push(''); 20 | if (opts.showHeader) { 21 | table.push(''); 22 | } 23 | for(var i=0; i
'+rownumber+'
'); 45 | } 46 | table.push('
'); 47 | } 48 | for(var j=0; j'); 53 | if (opts.showHeader) { 54 | var attr = ''; 55 | if (col.rowspan) attr += 'rowspan="' + col.rowspan + '" '; 56 | if (col.colspan) attr += 'colspan="' + col.colspan + '" '; 57 | table.push(''); 66 | } 67 | for(var i=0; i'); 76 | table.push('
'); 96 | if (col.checkbox){ 97 | if (selected){ 98 | table.push(''); 99 | } else { 100 | table.push(''); 101 | } 102 | } else if (col.formatter){ 103 | table.push(col.formatter(row[field], row, i)); 104 | } else { 105 | table.push(row[field]); 106 | } 107 | table.push('
'); 108 | table.push(''); 109 | } 110 | table.push('
'); 111 | } 112 | } 113 | table.push('
'); 60 | } else if (col.field){ 61 | table.push(' field="' + col.field + '">
' + col.title + ' 
'); 62 | } else { 63 | table.push('>
' + col.title + '
'); 64 | } 65 | table.push('
'); 114 | 115 | $(container).html(table.join('')); 116 | 117 | var fieldCount = fields.length; 118 | for(var j=0; j 0){ 224 | selectedRows.pop(); 225 | } 226 | }, 227 | getSelected: function(target){ 228 | var opts = $.data(target[0], 'datagrid').options; 229 | var grid = $.data(target[0], 'datagrid').grid; 230 | var data = $.data(target[0], 'datagrid').data; 231 | if (opts.idField){ 232 | return $.data(target[0], 'datagrid').selectedRows; 233 | } 234 | var rows = []; 235 | $('.datagrid-view2 .datagrid-body tr.datagrid-row-selected', grid).each(function(){ 236 | var index = parseInt($(this).attr('datagrid-row-index')); 237 | if (data.rows[index]){ 238 | rows.push(data.rows[index]); 239 | } 240 | }); 241 | var addedIndex = []; 242 | $('.datagrid-view2 .datagrid-body div.datagrid-row-selected', grid).each(function(){ 243 | var index = parseInt($(this).attr('datagrid-row-index')); 244 | var found = false; 245 | for (var i = 0; i < addedIndex.length; i++) { 246 | if (addedIndex[i] == index) { 247 | found = true; 248 | break; 249 | } 250 | } 251 | if (data.rows[index] && !found){ 252 | rows.push(data.rows[index]); 253 | addedIndex.push(index); 254 | } 255 | }); 256 | return rows.length>0 ? rows[0] : null; 257 | } 258 | }); 259 | -------------------------------------------------------------------------------- /template/src/components/BaseChart.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by yelingfeng on 2016/8/11. 3 | */ 4 | import echarts from "echarts" 5 | import lodash from "lodash" 6 | import * as config from "./commonConfig" 7 | import { 8 | getTooltip, 9 | getAxisLabel, 10 | getAxisLine, 11 | getAxisName, 12 | axisMaxmin, 13 | getLegend, 14 | getSplitLine, 15 | getGirdOption, 16 | getLinearGradient 17 | } from "./util" 18 | 19 | 20 | const XAXIS = config.xAxis; 21 | const axisLabelColor = config.axisLabelColor; 22 | 23 | 24 | /** 25 | * 图表基类 26 | */ 27 | export default class ChartClass { 28 | constructor(op){ 29 | this.option = op 30 | this.init() 31 | } 32 | init(){ 33 | if (this.option.el == undefined) { 34 | throw new Error("el not found. 请配置dom") 35 | } 36 | this.EC = echarts.init(this.option.el) 37 | } 38 | build(option){ 39 | this.EC.setOption(option) 40 | } 41 | resize(){ 42 | this.EC.resize() 43 | } 44 | 45 | render(data) { 46 | this.option.data = data 47 | this.create() 48 | } 49 | 50 | /** 51 | * 注册模块名称 52 | * @param module 一级模块 53 | * @param subModule 二级模块 54 | */ 55 | registerModule(module, subModule) { 56 | this.__chartName__ = module 57 | this.subModuleName = subModule 58 | } 59 | 60 | /** 61 | * 检查模块 62 | */ 63 | checkModule() { 64 | const sub = this.option.sub; 65 | if (!this.subModuleName[sub]) { 66 | throw new Error("the sub module is undefined , " + 67 | "cur module has [" + Object.keys(this.subModuleName).join(",") + "] 无效的二级模块名称,请使用当前已经定义的模块 [" + Object.keys(this.subModuleName).join(",") + "]") 68 | } 69 | if (this.option.data == null) { 70 | throw new Error("data is null ,看看你的data 为啥是空的"); 71 | } 72 | } 73 | 74 | /** 75 | * 非分组集合遍历 76 | */ 77 | noGroupData() { 78 | let categories = [] 79 | let datas = [] 80 | if (this.option.data) { 81 | this.option.data.forEach((item) => { 82 | categories.push(item.name || "") 83 | datas.push({name: item.name, value: item.value || 0, info: item.info, dataObj: item}) 84 | }) 85 | } 86 | var seriesOjb = {} 87 | // 折线图统一处理 88 | if (this.__chartName__ == 'line') { 89 | seriesOjb = { 90 | type: this.__chartName__, 91 | stack: this.option.stack || false ? "总量" : null, 92 | smooth: true, 93 | symbol: 'emptyCircle', 94 | symbolSize: 3, 95 | } 96 | } 97 | // 饼图统一处理 98 | else if (this.__chartName__ == 'pie') { 99 | seriesOjb = { 100 | type: this.__chartName__, 101 | radius: ['60', '100'], 102 | center: ['40%', '50%'], 103 | roseType: 'angle', 104 | } 105 | } 106 | else if(this.__chartName__ =='bar'){ 107 | seriesOjb = { 108 | type: this.__chartName__, 109 | stack: this.option.stack || false ? "总量" : null, 110 | } 111 | } 112 | 113 | seriesOjb.data = datas 114 | 115 | return {category: categories, series: seriesOjb} 116 | } 117 | 118 | /** 119 | * 分组data 处理方法 120 | * @param data 121 | * @returns {category: Array, xAxis: Array, series: Array} 122 | */ 123 | groupData(){ 124 | let me = this; 125 | // 是否堆积 126 | const stack = this.option.stack || false; 127 | let data = this.option.data || []; 128 | let xAxis = []; 129 | let group = []; 130 | let series = []; 131 | let emptyData = {"category": [], "xAxis": [],"series":[]}; 132 | let chainsData = lodash.chain(data) ; 133 | if(data == null || (data.length== 1 && data[0].name == "" )){ 134 | return emptyData; 135 | } 136 | // 取分组 137 | group = chainsData.filter((it) => { 138 | return it.category != "" && it.category != null && it.category != XAXIS; 139 | }) 140 | .map((it) => { 141 | return it.category; 142 | }) 143 | .uniq() 144 | .value(); 145 | let legend = []; 146 | 147 | group.forEach((it)=>{ 148 | legend.push({name : it}) 149 | }) 150 | 151 | // 去横轴坐标名 152 | xAxis = chainsData.map((it) => { 153 | return it.name; 154 | }) 155 | .uniq() 156 | .value(); 157 | // 拼装series 158 | group.forEach((g) => { 159 | let seriesTemp = []; 160 | data.forEach((d) => { 161 | if(d.category == g){ 162 | seriesTemp.push({ 163 | name: d.name, 164 | value: d.value, 165 | dataObj: d , 166 | tooltip : { 167 | formatter: d.info 168 | } 169 | }) 170 | } 171 | }) 172 | let seriesOjb = { 173 | name : g, 174 | type: me.__chartName__, 175 | data: seriesTemp, 176 | stack: "总量" , 177 | areaStyle: { 178 | normal: { 179 | opacity:0.2 180 | } 181 | }, 182 | } 183 | 184 | if (me.__chartName__ == 'line') { 185 | seriesOjb.smooth = true 186 | seriesOjb.symbol = 'emptyCircle' 187 | seriesOjb.symbolSize = 4 188 | } 189 | 190 | series.push(seriesOjb) 191 | }) 192 | return {category: legend, xAxis: xAxis, series: series, data: data}; 193 | } 194 | 195 | 196 | /** 197 | * 单图表通用设置 用于单图 饼图 等 198 | * @param seriesObj 199 | * @param props 200 | */ 201 | singleChartSetting(seriesObj, props) { 202 | let legend = getLegend(seriesObj.category, props); 203 | let color = config.commonColorList; 204 | let option = { 205 | color: color, 206 | legend: legend, 207 | series: [seriesObj.series] 208 | } 209 | 210 | if (/line|bar/.test(this.__chartName__ )) { 211 | let maxMin = axisMaxmin(seriesObj.series.data, "1", {}) 212 | let tooltips = getTooltip({trigger: "axis"}, props) 213 | let splitLine = getSplitLine() 214 | let grid = getGirdOption(props); 215 | let xName = getAxisName(props, 'xName', 'xUnit') 216 | let yName = getAxisName(props, 'ylName', 'ylUnit') 217 | option.tooltip = tooltips; 218 | option.grid = grid 219 | option.xAxis = [{ 220 | name: xName, 221 | type: 'category', 222 | nameTextStyle: { 223 | color: axisLabelColor 224 | }, 225 | data: seriesObj.category, 226 | axisTick: { 227 | alignWithLabel: true 228 | }, 229 | axisLabel: getAxisLabel(props, true), 230 | splitLine: false, 231 | axisLine: false 232 | }]; 233 | option.yAxis = [ 234 | { 235 | //max : 80000, 236 | //min : maxMin.min, 237 | name: yName, 238 | nameTextStyle: { 239 | color: axisLabelColor 240 | }, 241 | type: 'value', 242 | axisLabel: getAxisLabel(props), 243 | splitLine: splitLine, 244 | axisLine: false, 245 | } 246 | ]; 247 | } 248 | return option 249 | } 250 | 251 | /** 252 | * 坐标系图表通用处理 253 | * 整合柱图和折线图 通用配置 包括属性 多分组 堆积等 254 | * 255 | * @param seriesObj groupData处理后的数据 256 | * @param props 属性对象 257 | * @returns {color: string[], tooltip: *, grid: *, xAxis: *[], yAxis: *[], series: *} 258 | */ 259 | axisChartSetting(seriesObj, props) { 260 | let tooltips = getTooltip({trigger: "axis"}, props) 261 | let splitLine = getSplitLine() 262 | let axisLabel = getAxisLabel(props) 263 | let legend = getLegend(seriesObj.category, props); 264 | let grid = getGirdOption(props); 265 | let xName = getAxisName(props, 'xName', 'xUnit') 266 | let yName = getAxisName(props, 'ylName', 'ylUnit') 267 | let maxMin = axisMaxmin(seriesObj.data, "1", {}) 268 | let option = { 269 | legend: legend, 270 | color: config.commonColorList, 271 | tooltip: tooltips, 272 | grid: grid, 273 | xAxis: [ 274 | { 275 | name: xName, 276 | type: 'category', 277 | nameTextStyle: { 278 | color: axisLabelColor 279 | }, 280 | data: seriesObj.xAxis, 281 | axisTick: { 282 | alignWithLabel: true 283 | }, 284 | axisLabel: getAxisLabel(props, true), 285 | splitLine: false, 286 | axisLine: false 287 | } 288 | ], 289 | yAxis: [ 290 | { 291 | //max : maxmin.max, 292 | //min : maxmin.min, 293 | name: yName, 294 | nameTextStyle: { 295 | color: axisLabelColor 296 | }, 297 | type: 'value', 298 | axisLabel: getAxisLabel(props), 299 | splitLine: splitLine, 300 | axisLine: false, 301 | } 302 | ], 303 | series: seriesObj.series 304 | } 305 | return option 306 | } 307 | } -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/js/datagrid-detailview.js: -------------------------------------------------------------------------------- 1 | var detailview = $.extend({}, $.fn.datagrid.defaults.view, { 2 | render: function(target, container, frozen){ 3 | var state = $.data(target, 'datagrid'); 4 | var opts = state.options; 5 | if (frozen){ 6 | if (!(opts.rownumbers || (opts.frozenColumns && opts.frozenColumns.length))){ 7 | return; 8 | } 9 | } 10 | 11 | var rows = state.data.rows; 12 | var fields = $(target).datagrid('getColumnFields', frozen); 13 | var table = []; 14 | table.push(''); 15 | for(var i=0; i'); 31 | table.push(this.renderRow.call(this, target, fields, frozen, i, rows[i])); 32 | table.push(''); 33 | 34 | table.push(''); 35 | if (frozen){ 36 | table.push(''); 50 | table.push(''); 51 | 52 | } 53 | table.push('
'); 37 | } else { 38 | table.push(''); 39 | } 40 | 41 | table.push('
'); 42 | if (frozen){ 43 | table.push(' '); 44 | } else { 45 | table.push(opts.detailFormatter.call(target, i, rows[i])); 46 | } 47 | table.push('
'); 48 | 49 | table.push('
'); 54 | 55 | $(container).html(table.join('')); 56 | }, 57 | 58 | renderRow: function(target, fields, frozen, rowIndex, rowData){ 59 | var opts = $.data(target, 'datagrid').options; 60 | 61 | var cc = []; 62 | if (frozen && opts.rownumbers){ 63 | var rownumber = rowIndex + 1; 64 | if (opts.pagination){ 65 | rownumber += (opts.pageNumber-1)*opts.pageSize; 66 | } 67 | cc.push('
'+rownumber+'
'); 68 | } 69 | for(var i=0; i'); 87 | 88 | if (col.checkbox){ 89 | style = ''; 90 | } else if (col.expander){ 91 | style = "text-align:center;height:16px;"; 92 | } else { 93 | style = styleValue; 94 | if (col.align){style += ';text-align:' + col.align + ';'} 95 | if (!opts.nowrap){ 96 | style += ';white-space:normal;height:auto;'; 97 | } else if (opts.autoRowHeight){ 98 | style += ';height:auto;'; 99 | } 100 | } 101 | 102 | cc.push('
'); 109 | 110 | if (col.checkbox){ 111 | cc.push(''); 112 | } else if (col.expander) { 113 | //cc.push('
'); 114 | cc.push(''); 115 | //cc.push('
'); 116 | } else if (col.formatter){ 117 | cc.push(col.formatter(value, rowData, rowIndex)); 118 | } else { 119 | cc.push(value); 120 | } 121 | 122 | cc.push('
'); 123 | cc.push(''); 124 | } 125 | } 126 | return cc.join(''); 127 | }, 128 | 129 | insertRow: function(target, index, row){ 130 | var opts = $.data(target, 'datagrid').options; 131 | var dc = $.data(target, 'datagrid').dc; 132 | var panel = $(target).datagrid('getPanel'); 133 | var view1 = dc.view1; 134 | var view2 = dc.view2; 135 | 136 | var isAppend = false; 137 | var rowLength = $(target).datagrid('getRows').length; 138 | if (rowLength == 0){ 139 | $(target).datagrid('loadData',{total:1,rows:[row]}); 140 | return; 141 | } 142 | 143 | if (index == undefined || index == null || index >= rowLength) { 144 | index = rowLength; 145 | isAppend = true; 146 | this.canUpdateDetail = false; 147 | } 148 | 149 | $.fn.datagrid.defaults.view.insertRow.call(this, target, index, row); 150 | 151 | _insert(true); 152 | _insert(false); 153 | 154 | this.canUpdateDetail = true; 155 | 156 | function _insert(frozen){ 157 | var v = frozen ? view1 : view2; 158 | var tr = v.find('tr[datagrid-row-index='+index+']'); 159 | 160 | if (isAppend){ 161 | var newDetail = tr.next().clone(); 162 | tr.insertAfter(tr.next()); 163 | } else { 164 | var newDetail = tr.next().next().clone(); 165 | } 166 | newDetail.insertAfter(tr); 167 | newDetail.hide(); 168 | if (!frozen){ 169 | newDetail.find('div.datagrid-row-detail').html(opts.detailFormatter.call(target, index, row)); 170 | } 171 | } 172 | }, 173 | 174 | deleteRow: function(target, index){ 175 | var opts = $.data(target, 'datagrid').options; 176 | var dc = $.data(target, 'datagrid').dc; 177 | var tr = opts.finder.getTr(target, index); 178 | tr.next().remove(); 179 | $.fn.datagrid.defaults.view.deleteRow.call(this, target, index); 180 | dc.body2.triggerHandler('scroll'); 181 | }, 182 | 183 | updateRow: function(target, rowIndex, row){ 184 | var dc = $.data(target, 'datagrid').dc; 185 | var opts = $.data(target, 'datagrid').options; 186 | var cls = $(target).datagrid('getExpander', rowIndex).attr('class'); 187 | $.fn.datagrid.defaults.view.updateRow.call(this, target, rowIndex, row); 188 | $(target).datagrid('getExpander', rowIndex).attr('class',cls); 189 | 190 | // update the detail content 191 | if (this.canUpdateDetail){ 192 | var row = $(target).datagrid('getRows')[rowIndex]; 193 | var detail = $(target).datagrid('getRowDetail', rowIndex); 194 | detail.html(opts.detailFormatter.call(target, rowIndex, row)); 195 | } 196 | }, 197 | 198 | bindEvents: function(target){ 199 | var state = $.data(target, 'datagrid'); 200 | 201 | if (state.ss.bindDetailEvents){return;} 202 | state.ss.bindDetailEvents = true; 203 | 204 | var dc = state.dc; 205 | var opts = state.options; 206 | var body = dc.body1.add(dc.body2); 207 | var clickHandler = ($.data(body[0],'events')||$._data(body[0],'events')).click[0].handler; 208 | body.unbind('click').bind('click', function(e){ 209 | var tt = $(e.target); 210 | var tr = tt.closest('tr.datagrid-row'); 211 | if (!tr.length){return} 212 | if (tt.hasClass('datagrid-row-expander')){ 213 | var rowIndex = parseInt(tr.attr('datagrid-row-index')); 214 | if (tt.hasClass('datagrid-row-expand')){ 215 | $(target).datagrid('expandRow', rowIndex); 216 | } else { 217 | $(target).datagrid('collapseRow', rowIndex); 218 | } 219 | $(target).datagrid('fixRowHeight'); 220 | 221 | } else { 222 | clickHandler(e); 223 | } 224 | e.stopPropagation(); 225 | }); 226 | }, 227 | 228 | onBeforeRender: function(target){ 229 | var state = $.data(target, 'datagrid'); 230 | var opts = state.options; 231 | var dc = state.dc; 232 | var t = $(target); 233 | var hasExpander = false; 234 | var fields = t.datagrid('getColumnFields',true).concat(t.datagrid('getColumnFields')); 235 | for(var i=0; i
'); 251 | if ($('tr',t).length == 0){ 252 | td.wrap('').parent().appendTo($('tbody',t)); 253 | } else if (opts.rownumbers){ 254 | td.insertAfter(t.find('td:has(div.datagrid-header-rownumber)')); 255 | } else { 256 | td.prependTo(t.find('tr:first')); 257 | } 258 | } 259 | 260 | // if (!state.bindDetailEvents){ 261 | // state.bindDetailEvents = true; 262 | // var that = this; 263 | // setTimeout(function(){ 264 | // that.bindEvents(target); 265 | // },0); 266 | // } 267 | }, 268 | 269 | onAfterRender: function(target){ 270 | var that = this; 271 | var state = $.data(target, 'datagrid'); 272 | var dc = state.dc; 273 | var opts = state.options; 274 | var panel = $(target).datagrid('getPanel'); 275 | 276 | $.fn.datagrid.defaults.view.onAfterRender.call(this, target); 277 | 278 | if (!state.onResizeColumn){ 279 | state.onResizeColumn = opts.onResizeColumn; 280 | } 281 | if (!state.onResize){ 282 | state.onResize = opts.onResize; 283 | } 284 | function resizeDetails(){ 285 | var ht = dc.header2.find('table'); 286 | var fr = ht.find('tr.datagrid-filter-row').hide(); 287 | var ww = ht.width()-1; 288 | var details = dc.body2.find('>table.datagrid-btable>tbody>tr>td>div.datagrid-row-detail:visible')._outerWidth(ww); 289 | // var details = dc.body2.find('div.datagrid-row-detail:visible')._outerWidth(ww); 290 | details.find('.easyui-fluid').trigger('_resize'); 291 | fr.show(); 292 | } 293 | 294 | opts.onResizeColumn = function(field, width){ 295 | if (!opts.fitColumns){ 296 | resizeDetails(); 297 | } 298 | var rowCount = $(target).datagrid('getRows').length; 299 | for(var i=0; itd>div.datagrid-row-detail'); 358 | }, 359 | expandRow: function(jq, index){ 360 | return jq.each(function(){ 361 | var opts = $(this).datagrid('options'); 362 | var dc = $.data(this, 'datagrid').dc; 363 | var expander = $(this).datagrid('getExpander', index); 364 | if (expander.hasClass('datagrid-row-expand')){ 365 | expander.removeClass('datagrid-row-expand').addClass('datagrid-row-collapse'); 366 | var tr1 = opts.finder.getTr(this, index, 'body', 1).next(); 367 | var tr2 = opts.finder.getTr(this, index, 'body', 2).next(); 368 | tr1.show(); 369 | tr2.show(); 370 | $(this).datagrid('fixDetailRowHeight', index); 371 | if (opts.onExpandRow){ 372 | var row = $(this).datagrid('getRows')[index]; 373 | opts.onExpandRow.call(this, index, row); 374 | } 375 | } 376 | }); 377 | }, 378 | collapseRow: function(jq, index){ 379 | return jq.each(function(){ 380 | var opts = $(this).datagrid('options'); 381 | var dc = $.data(this, 'datagrid').dc; 382 | var expander = $(this).datagrid('getExpander', index); 383 | if (expander.hasClass('datagrid-row-collapse')){ 384 | expander.removeClass('datagrid-row-collapse').addClass('datagrid-row-expand'); 385 | var tr1 = opts.finder.getTr(this, index, 'body', 1).next(); 386 | var tr2 = opts.finder.getTr(this, index, 'body', 2).next(); 387 | tr1.hide(); 388 | tr2.hide(); 389 | dc.body2.triggerHandler('scroll'); 390 | if (opts.onCollapseRow){ 391 | var row = $(this).datagrid('getRows')[index]; 392 | opts.onCollapseRow.call(this, index, row); 393 | } 394 | } 395 | }); 396 | } 397 | }); 398 | 399 | $.extend($.fn.datagrid.methods, { 400 | subgrid: function(jq, conf){ 401 | return jq.each(function(){ 402 | createGrid(this, conf); 403 | 404 | function createGrid(target, conf, prow){ 405 | var queryParams = $.extend({}, conf.options.queryParams||{}); 406 | queryParams[conf.options.foreignField] = prow ? prow[conf.options.foreignField] : undefined; 407 | 408 | $(target).datagrid($.extend({}, conf.options, { 409 | subgrid: conf.subgrid, 410 | view: (conf.subgrid ? detailview : undefined), 411 | queryParams: queryParams, 412 | detailFormatter: function(index, row){ 413 | return '
'; 414 | }, 415 | onExpandRow: function(index, row){ 416 | var opts = $(this).datagrid('options'); 417 | var rd = $(this).datagrid('getRowDetail', index); 418 | var dg = getSubGrid(rd); 419 | if (!dg.data('datagrid')){ 420 | createGrid(dg[0], opts.subgrid, row); 421 | } 422 | rd.find('.easyui-fluid').trigger('_resize'); 423 | setHeight(this, index); 424 | if (conf.options.onExpandRow){ 425 | conf.options.onExpandRow.call(this, index, row); 426 | } 427 | }, 428 | onCollapseRow: function(index, row){ 429 | setHeight(this, index); 430 | if (conf.options.onCollapseRow){ 431 | conf.options.onCollapseRow.call(this, index, row); 432 | } 433 | }, 434 | onResize: function(){ 435 | var dg = $(this).children('div.datagrid-view').children('table') 436 | setParentHeight(this); 437 | }, 438 | onResizeColumn: function(field, width){ 439 | setParentHeight(this); 440 | if (conf.options.onResizeColumn){ 441 | conf.options.onResizeColumn.call(this, field, width); 442 | } 443 | }, 444 | onLoadSuccess: function(data){ 445 | setParentHeight(this); 446 | if (conf.options.onLoadSuccess){ 447 | conf.options.onLoadSuccess.call(this, data); 448 | } 449 | } 450 | })); 451 | } 452 | function getSubGrid(rowDetail){ 453 | var div = $(rowDetail).children('div'); 454 | if (div.children('div.datagrid').length){ 455 | return div.find('>div.datagrid>div.panel-body>div.datagrid-view>table.datagrid-subgrid'); 456 | } else { 457 | return div.find('>table.datagrid-subgrid'); 458 | } 459 | } 460 | function setParentHeight(target){ 461 | var tr = $(target).closest('div.datagrid-row-detail').closest('tr').prev(); 462 | if (tr.length){ 463 | var index = parseInt(tr.attr('datagrid-row-index')); 464 | var dg = tr.closest('div.datagrid-view').children('table'); 465 | setHeight(dg[0], index); 466 | } 467 | } 468 | function setHeight(target, index){ 469 | $(target).datagrid('fixDetailRowHeight', index); 470 | $(target).datagrid('fixRowHeight', index); 471 | var tr = $(target).closest('div.datagrid-row-detail').closest('tr').prev(); 472 | if (tr.length){ 473 | var index = parseInt(tr.attr('datagrid-row-index')); 474 | var dg = tr.closest('div.datagrid-view').children('table'); 475 | setHeight(dg[0], index); 476 | } 477 | } 478 | }); 479 | }, 480 | getParentGrid: function(jq){ 481 | var detail = jq.closest('div.datagrid-row-detail'); 482 | if (detail.length){ 483 | return detail.closest('.datagrid-view').children('.datagrid-f'); 484 | } else { 485 | return null; 486 | } 487 | }, 488 | getParentRowIndex: function(jq){ 489 | var detail = jq.closest('div.datagrid-row-detail'); 490 | if (detail.length){ 491 | var tr = detail.closest('tr').prev(); 492 | return parseInt(tr.attr('datagrid-row-index')); 493 | } else { 494 | return -1; 495 | } 496 | } 497 | }); 498 | -------------------------------------------------------------------------------- /template/src/assets/lib/easyui/css/easyui_index.css: -------------------------------------------------------------------------------- 1 | .panel { 2 | overflow: hidden; 3 | text-align: left; 4 | } 5 | .panel-header, 6 | .panel-body { 7 | border-width: 1px; 8 | border-style: solid; 9 | } 10 | .panel-header { 11 | padding: 5px; 12 | position: relative; 13 | } 14 | .panel-title { 15 | background: url('../images/blank.gif') no-repeat; 16 | } 17 | .panel-header-noborder { 18 | border-width: 0 0 1px 0; 19 | } 20 | .panel-body { 21 | overflow: auto; 22 | border-top-width: 0px; 23 | } 24 | .panel-body-noheader { 25 | border-top-width: 1px; 26 | } 27 | .panel-body-noborder { 28 | border-width: 0px; 29 | } 30 | .panel-with-icon { 31 | padding-left: 18px; 32 | } 33 | .panel-icon, 34 | .panel-tool { 35 | position: absolute; 36 | top: 50%; 37 | margin-top: -8px; 38 | height: 16px; 39 | overflow: hidden; 40 | } 41 | .panel-icon { 42 | left: 5px; 43 | width: 16px; 44 | } 45 | .panel-tool { 46 | right: 5px; 47 | width: auto; 48 | } 49 | .panel-tool a { 50 | display: inline-block; 51 | width: 16px; 52 | height: 16px; 53 | opacity: 0.6; 54 | filter: alpha(opacity=60); 55 | margin: 0 0 0 2px; 56 | vertical-align: top; 57 | } 58 | .panel-tool a:hover { 59 | opacity: 1; 60 | filter: alpha(opacity=100); 61 | background-color: #eaf2ff; 62 | -moz-border-radius: 3px 3px 3px 3px; 63 | -webkit-border-radius: 3px 3px 3px 3px; 64 | border-radius: 3px 3px 3px 3px; 65 | } 66 | .panel-loading { 67 | padding: 11px 0px 10px 30px; 68 | } 69 | .panel-noscroll { 70 | overflow: hidden; 71 | } 72 | .panel-fit, 73 | .panel-fit body { 74 | height: 100%; 75 | margin: 0; 76 | padding: 0; 77 | border: 0; 78 | overflow: hidden; 79 | } 80 | .panel-loading { 81 | background: url('../images/loading.gif') no-repeat 10px 10px; 82 | } 83 | .panel-tool-close { 84 | background: url('../images/panel_tools.png') no-repeat -16px 0px; 85 | } 86 | .panel-tool-min { 87 | background: url('../images/panel_tools.png') no-repeat 0px 0px; 88 | } 89 | .panel-tool-max { 90 | background: url('../images/panel_tools.png') no-repeat 0px -16px; 91 | } 92 | .panel-tool-restore { 93 | background: url('../images/panel_tools.png') no-repeat -16px -16px; 94 | } 95 | .panel-tool-collapse { 96 | background: url('../images/panel_tools.png') no-repeat -32px 0; 97 | } 98 | .panel-tool-expand { 99 | background: url('../images/panel_tools.png') no-repeat -32px -16px; 100 | } 101 | .panel-header, 102 | .panel-body { 103 | border-color: #95B8E7; 104 | } 105 | .panel-header { 106 | background-color: #E0ECFF; 107 | background: -webkit-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); 108 | background: -moz-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); 109 | background: -o-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); 110 | background: linear-gradient(to bottom,#EFF5FF 0,#E0ECFF 100%); 111 | background-repeat: repeat-x; 112 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#E0ECFF,GradientType=0); 113 | } 114 | .panel-body { 115 | background-color: rgba(21, 19, 19, 0.78); 116 | color: #fff; 117 | font-size: 12px; 118 | } 119 | .panel-title { 120 | font-size: 12px; 121 | font-weight: bold; 122 | color: #0E2D5F; 123 | height: 16px; 124 | line-height: 16px; 125 | } 126 | .accordion { 127 | overflow: hidden; 128 | border-width: 1px; 129 | border-style: solid; 130 | } 131 | .accordion .accordion-header { 132 | border-width: 0 0 1px; 133 | cursor: pointer; 134 | } 135 | .accordion .accordion-body { 136 | border-width: 0 0 1px; 137 | } 138 | .accordion-noborder { 139 | border-width: 0; 140 | } 141 | .accordion-noborder .accordion-header { 142 | border-width: 0 0 1px; 143 | } 144 | .accordion-noborder .accordion-body { 145 | border-width: 0 0 1px; 146 | } 147 | .accordion-collapse { 148 | background: url('../images/accordion_arrows.png') no-repeat 0 0; 149 | } 150 | .accordion-expand { 151 | background: url('../images/accordion_arrows.png') no-repeat -16px 0; 152 | } 153 | .accordion { 154 | background: #ffffff; 155 | border-color: #95B8E7; 156 | } 157 | .accordion .accordion-header { 158 | background: #E0ECFF; 159 | filter: none; 160 | } 161 | .accordion .accordion-header-selected { 162 | background: #FBEC88; 163 | } 164 | .accordion .accordion-header-selected .panel-title { 165 | color: #000000; 166 | } 167 | .window { 168 | overflow: hidden; 169 | padding: 5px; 170 | border-width: 1px; 171 | border-style: solid; 172 | } 173 | .window .window-header { 174 | background: transparent; 175 | padding: 0px 0px 6px 0px; 176 | } 177 | .window .window-body { 178 | border-width: 1px; 179 | border-style: solid; 180 | border-top-width: 0px; 181 | } 182 | .window .window-body-noheader { 183 | border-top-width: 1px; 184 | } 185 | .window .window-header .panel-icon, 186 | .window .window-header .panel-tool { 187 | top: 50%; 188 | margin-top: -11px; 189 | } 190 | .window .window-header .panel-icon { 191 | left: 1px; 192 | } 193 | .window .window-header .panel-tool { 194 | right: 1px; 195 | } 196 | .window .window-header .panel-with-icon { 197 | padding-left: 18px; 198 | } 199 | .window-proxy { 200 | position: absolute; 201 | overflow: hidden; 202 | } 203 | .window-proxy-mask { 204 | position: absolute; 205 | filter: alpha(opacity=5); 206 | opacity: 0.05; 207 | } 208 | .window-mask { 209 | position: absolute; 210 | left: 0; 211 | top: 0; 212 | width: 100%; 213 | height: 100%; 214 | filter: alpha(opacity=40); 215 | opacity: 0.40; 216 | font-size: 1px; 217 | *zoom: 1; 218 | overflow: hidden; 219 | } 220 | .window, 221 | .window-shadow { 222 | position: absolute; 223 | -moz-border-radius: 5px 5px 5px 5px; 224 | -webkit-border-radius: 5px 5px 5px 5px; 225 | border-radius: 5px 5px 5px 5px; 226 | } 227 | .window-shadow { 228 | background: #ccc; 229 | -moz-box-shadow: 2px 2px 3px #cccccc; 230 | -webkit-box-shadow: 2px 2px 3px #cccccc; 231 | box-shadow: 2px 2px 3px #cccccc; 232 | filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); 233 | } 234 | .window, 235 | .window .window-body { 236 | border-color: #95B8E7; 237 | } 238 | .window { 239 | background-color: #E0ECFF; 240 | background: -webkit-linear-gradient(top,#EFF5FF 0,#E0ECFF 20%); 241 | background: -moz-linear-gradient(top,#EFF5FF 0,#E0ECFF 20%); 242 | background: -o-linear-gradient(top,#EFF5FF 0,#E0ECFF 20%); 243 | background: linear-gradient(to bottom,#EFF5FF 0,#E0ECFF 20%); 244 | background-repeat: repeat-x; 245 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#E0ECFF,GradientType=0); 246 | } 247 | .window-proxy { 248 | border: 1px dashed #95B8E7; 249 | } 250 | .window-proxy-mask, 251 | .window-mask { 252 | background: #ccc; 253 | } 254 | .dialog-content { 255 | overflow: auto; 256 | } 257 | .dialog-toolbar { 258 | padding: 2px 5px; 259 | } 260 | .dialog-tool-separator { 261 | float: left; 262 | height: 24px; 263 | border-left: 1px solid #ccc; 264 | border-right: 1px solid #fff; 265 | margin: 2px 1px; 266 | } 267 | .dialog-button { 268 | padding: 5px; 269 | text-align: right; 270 | } 271 | .dialog-button .l-btn { 272 | margin-left: 5px; 273 | } 274 | .dialog-toolbar, 275 | .dialog-button { 276 | background: #F4F4F4; 277 | } 278 | .dialog-toolbar { 279 | border-bottom: 1px solid #dddddd; 280 | } 281 | .dialog-button { 282 | border-top: 1px solid #dddddd; 283 | } 284 | .combo { 285 | display: inline-block; 286 | white-space: nowrap; 287 | margin: 0; 288 | padding: 0; 289 | border-width: 1px; 290 | border-style: solid; 291 | overflow: hidden; 292 | vertical-align: middle; 293 | } 294 | .combo .combo-text { 295 | font-size: 12px; 296 | border: 0px; 297 | line-height: 20px; 298 | height: 20px; 299 | margin: 0; 300 | padding: 0px 2px; 301 | *margin-top: -1px; 302 | *height: 18px; 303 | *line-height: 18px; 304 | _height: 18px; 305 | _line-height: 18px; 306 | vertical-align: baseline; 307 | } 308 | .combo-arrow { 309 | width: 18px; 310 | height: 20px; 311 | overflow: hidden; 312 | display: inline-block; 313 | vertical-align: top; 314 | cursor: pointer; 315 | opacity: 0.6; 316 | filter: alpha(opacity=60); 317 | } 318 | .combo-arrow-hover { 319 | opacity: 1.0; 320 | filter: alpha(opacity=100); 321 | } 322 | .combo-panel { 323 | overflow: auto; 324 | } 325 | .combo-arrow { 326 | background: url('../images/combo_arrow.png') no-repeat center center; 327 | } 328 | .combo, 329 | .combo-panel { 330 | background-color: #ffffff; 331 | } 332 | .combo { 333 | border-color: #95B8E7; 334 | background-color: #ffffff; 335 | } 336 | .combo-arrow { 337 | background-color: #E0ECFF; 338 | } 339 | .combo-arrow-hover { 340 | background-color: #eaf2ff; 341 | } 342 | .combobox-item, 343 | .combobox-group { 344 | font-size: 12px; 345 | padding: 3px; 346 | padding-right: 0px; 347 | } 348 | .combobox-gitem { 349 | padding-left: 10px; 350 | } 351 | .combobox-group { 352 | font-weight: bold; 353 | } 354 | .combobox-item-hover { 355 | background-color: #eaf2ff; 356 | color: #000000; 357 | } 358 | .combobox-item-selected { 359 | background-color: #FBEC88; 360 | color: #000000; 361 | } 362 | .layout { 363 | position: relative; 364 | overflow: hidden; 365 | margin: 0; 366 | padding: 0; 367 | z-index: 0; 368 | } 369 | .layout-panel { 370 | position: absolute; 371 | overflow: hidden; 372 | } 373 | .layout-panel-east, 374 | .layout-panel-west { 375 | z-index: 2; 376 | } 377 | .layout-panel-north, 378 | .layout-panel-south { 379 | z-index: 3; 380 | } 381 | .layout-expand { 382 | position: absolute; 383 | padding: 0px; 384 | font-size: 1px; 385 | cursor: pointer; 386 | z-index: 1; 387 | } 388 | .layout-expand .panel-header, 389 | .layout-expand .panel-body { 390 | background: transparent; 391 | filter: none; 392 | overflow: hidden; 393 | } 394 | .layout-expand .panel-header { 395 | border-bottom-width: 0px; 396 | } 397 | .layout-split-proxy-h, 398 | .layout-split-proxy-v { 399 | position: absolute; 400 | font-size: 1px; 401 | display: none; 402 | z-index: 5; 403 | } 404 | .layout-split-proxy-h { 405 | width: 5px; 406 | cursor: e-resize; 407 | } 408 | .layout-split-proxy-v { 409 | height: 5px; 410 | cursor: n-resize; 411 | } 412 | .layout-mask { 413 | position: absolute; 414 | background: #fafafa; 415 | filter: alpha(opacity=10); 416 | opacity: 0.10; 417 | z-index: 4; 418 | } 419 | .layout-button-up { 420 | background: url('../images/layout_arrows.png') no-repeat -16px -16px; 421 | } 422 | .layout-button-down { 423 | background: url('../images/layout_arrows.png') no-repeat -16px 0; 424 | } 425 | .layout-button-left { 426 | background: url('../images/layout_arrows.png') no-repeat 0 0; 427 | } 428 | .layout-button-right { 429 | background: url('../images/layout_arrows.png') no-repeat 0 -16px; 430 | } 431 | .layout-split-proxy-h, 432 | .layout-split-proxy-v { 433 | background-color: #aac5e7; 434 | } 435 | .layout-split-north { 436 | border-bottom: 5px solid #E6EEF8; 437 | } 438 | .layout-split-south { 439 | border-top: 5px solid #E6EEF8; 440 | } 441 | .layout-split-east { 442 | border-left: 5px solid #E6EEF8; 443 | } 444 | .layout-split-west { 445 | border-right: 5px solid #E6EEF8; 446 | } 447 | .layout-expand { 448 | background-color: #E0ECFF; 449 | } 450 | .layout-expand-over { 451 | background-color: #E0ECFF; 452 | } 453 | .tabs-container { 454 | overflow: hidden; 455 | } 456 | .tabs-header { 457 | border-width: 1px; 458 | border-style: solid; 459 | border-bottom-width: 0; 460 | position: relative; 461 | padding: 0; 462 | padding-top: 2px; 463 | overflow: hidden; 464 | } 465 | .tabs-header-plain { 466 | border: 0; 467 | background: transparent; 468 | } 469 | .tabs-scroller-left, 470 | .tabs-scroller-right { 471 | position: absolute; 472 | top: auto; 473 | bottom: 0; 474 | width: 18px; 475 | font-size: 1px; 476 | display: none; 477 | cursor: pointer; 478 | border-width: 1px; 479 | border-style: solid; 480 | } 481 | .tabs-scroller-left { 482 | left: 0; 483 | } 484 | .tabs-scroller-right { 485 | right: 0; 486 | } 487 | .tabs-tool { 488 | position: absolute; 489 | bottom: 0; 490 | padding: 1px; 491 | overflow: hidden; 492 | border-width: 1px; 493 | border-style: solid; 494 | } 495 | .tabs-header-plain .tabs-tool { 496 | padding: 0 1px; 497 | } 498 | .tabs-wrap { 499 | position: relative; 500 | left: 0; 501 | overflow: hidden; 502 | width: 100%; 503 | margin: 0; 504 | padding: 0; 505 | } 506 | .tabs-scrolling { 507 | margin-left: 18px; 508 | margin-right: 18px; 509 | } 510 | .tabs-disabled { 511 | opacity: 0.3; 512 | filter: alpha(opacity=30); 513 | } 514 | .tabs { 515 | list-style-type: none; 516 | height: 26px; 517 | margin: 0px; 518 | padding: 0px; 519 | padding-left: 4px; 520 | width: 5000px; 521 | border-style: solid; 522 | border-width: 0 0 1px 0; 523 | } 524 | .tabs li { 525 | float: left; 526 | display: inline-block; 527 | margin: 0 4px -1px 0; 528 | padding: 0; 529 | position: relative; 530 | border: 0; 531 | } 532 | .tabs li a.tabs-inner { 533 | display: inline-block; 534 | text-decoration: none; 535 | margin: 0; 536 | padding: 0 10px; 537 | height: 25px; 538 | line-height: 25px; 539 | text-align: center; 540 | white-space: nowrap; 541 | border-width: 1px; 542 | border-style: solid; 543 | -moz-border-radius: 5px 5px 0 0; 544 | -webkit-border-radius: 5px 5px 0 0; 545 | border-radius: 5px 5px 0 0; 546 | } 547 | .tabs li.tabs-selected a.tabs-inner { 548 | font-weight: bold; 549 | outline: none; 550 | } 551 | .tabs li.tabs-selected a:hover.tabs-inner { 552 | cursor: default; 553 | pointer: default; 554 | } 555 | .tabs li a.tabs-close, 556 | .tabs-p-tool { 557 | position: absolute; 558 | font-size: 1px; 559 | display: block; 560 | height: 12px; 561 | padding: 0; 562 | top: 50%; 563 | margin-top: -6px; 564 | overflow: hidden; 565 | } 566 | .tabs li a.tabs-close { 567 | width: 12px; 568 | right: 5px; 569 | opacity: 0.6; 570 | filter: alpha(opacity=60); 571 | } 572 | .tabs-p-tool { 573 | right: 16px; 574 | } 575 | .tabs-p-tool a { 576 | display: inline-block; 577 | font-size: 1px; 578 | width: 12px; 579 | height: 12px; 580 | margin: 0; 581 | opacity: 0.6; 582 | filter: alpha(opacity=60); 583 | } 584 | .tabs li a:hover.tabs-close, 585 | .tabs-p-tool a:hover { 586 | opacity: 1; 587 | filter: alpha(opacity=100); 588 | cursor: hand; 589 | cursor: pointer; 590 | } 591 | .tabs-with-icon { 592 | padding-left: 18px; 593 | } 594 | .tabs-icon { 595 | position: absolute; 596 | width: 16px; 597 | height: 16px; 598 | left: 10px; 599 | top: 50%; 600 | margin-top: -8px; 601 | } 602 | .tabs-title { 603 | font-size: 12px; 604 | } 605 | .tabs-closable { 606 | padding-right: 8px; 607 | } 608 | .tabs-panels { 609 | margin: 0px; 610 | padding: 0px; 611 | border-width: 1px; 612 | border-style: solid; 613 | border-top-width: 0; 614 | overflow: hidden; 615 | } 616 | .tabs-header-bottom { 617 | border-width: 0 1px 1px 1px; 618 | padding: 0 0 2px 0; 619 | } 620 | .tabs-header-bottom .tabs { 621 | border-width: 1px 0 0 0; 622 | } 623 | .tabs-header-bottom .tabs li { 624 | margin: -1px 4px 0 0; 625 | } 626 | .tabs-header-bottom .tabs li a.tabs-inner { 627 | -moz-border-radius: 0 0 5px 5px; 628 | -webkit-border-radius: 0 0 5px 5px; 629 | border-radius: 0 0 5px 5px; 630 | } 631 | .tabs-header-bottom .tabs-tool { 632 | top: 0; 633 | } 634 | .tabs-header-bottom .tabs-scroller-left, 635 | .tabs-header-bottom .tabs-scroller-right { 636 | top: 0; 637 | bottom: auto; 638 | } 639 | .tabs-panels-top { 640 | border-width: 1px 1px 0 1px; 641 | } 642 | .tabs-header-left { 643 | float: left; 644 | border-width: 1px 0 1px 1px; 645 | padding: 0; 646 | } 647 | .tabs-header-right { 648 | float: right; 649 | border-width: 1px 1px 1px 0; 650 | padding: 0; 651 | } 652 | .tabs-header-left .tabs-wrap, 653 | .tabs-header-right .tabs-wrap { 654 | height: 100%; 655 | } 656 | .tabs-header-left .tabs { 657 | height: 100%; 658 | padding: 4px 0 0 4px; 659 | border-width: 0 1px 0 0; 660 | } 661 | .tabs-header-right .tabs { 662 | height: 100%; 663 | padding: 4px 4px 0 0; 664 | border-width: 0 0 0 1px; 665 | } 666 | .tabs-header-left .tabs li, 667 | .tabs-header-right .tabs li { 668 | display: block; 669 | width: 100%; 670 | position: relative; 671 | } 672 | .tabs-header-left .tabs li { 673 | left: auto; 674 | right: 0; 675 | margin: 0 -1px 4px 0; 676 | float: right; 677 | } 678 | .tabs-header-right .tabs li { 679 | left: 0; 680 | right: auto; 681 | margin: 0 0 4px -1px; 682 | float: left; 683 | } 684 | .tabs-header-left .tabs li a.tabs-inner { 685 | display: block; 686 | text-align: left; 687 | -moz-border-radius: 5px 0 0 5px; 688 | -webkit-border-radius: 5px 0 0 5px; 689 | border-radius: 5px 0 0 5px; 690 | } 691 | .tabs-header-right .tabs li a.tabs-inner { 692 | display: block; 693 | text-align: left; 694 | -moz-border-radius: 0 5px 5px 0; 695 | -webkit-border-radius: 0 5px 5px 0; 696 | border-radius: 0 5px 5px 0; 697 | } 698 | .tabs-panels-right { 699 | float: right; 700 | border-width: 1px 1px 1px 0; 701 | } 702 | .tabs-panels-left { 703 | float: left; 704 | border-width: 1px 0 1px 1px; 705 | } 706 | .tabs-header-noborder, 707 | .tabs-panels-noborder { 708 | border: 0px; 709 | } 710 | .tabs-header-plain { 711 | border: 0px; 712 | background: transparent; 713 | } 714 | .tabs-scroller-left { 715 | background: #E0ECFF url('../images/tabs_icons.png') no-repeat 1px center; 716 | } 717 | .tabs-scroller-right { 718 | background: #E0ECFF url('../images/tabs_icons.png') no-repeat -15px center; 719 | } 720 | .tabs li a.tabs-close { 721 | background: url('../images/tabs_icons.png') no-repeat -34px center; 722 | } 723 | .tabs li a.tabs-inner:hover { 724 | background: #eaf2ff; 725 | color: #000000; 726 | filter: none; 727 | } 728 | .tabs li.tabs-selected a.tabs-inner { 729 | background-color: #ffffff; 730 | color: #0E2D5F; 731 | background: -webkit-linear-gradient(top,#EFF5FF 0,#ffffff 100%); 732 | background: -moz-linear-gradient(top,#EFF5FF 0,#ffffff 100%); 733 | background: -o-linear-gradient(top,#EFF5FF 0,#ffffff 100%); 734 | background: linear-gradient(to bottom,#EFF5FF 0,#ffffff 100%); 735 | background-repeat: repeat-x; 736 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#ffffff,GradientType=0); 737 | } 738 | .tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { 739 | background: -webkit-linear-gradient(top,#ffffff 0,#EFF5FF 100%); 740 | background: -moz-linear-gradient(top,#ffffff 0,#EFF5FF 100%); 741 | background: -o-linear-gradient(top,#ffffff 0,#EFF5FF 100%); 742 | background: linear-gradient(to bottom,#ffffff 0,#EFF5FF 100%); 743 | background-repeat: repeat-x; 744 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#EFF5FF,GradientType=0); 745 | } 746 | .tabs-header-left .tabs li.tabs-selected a.tabs-inner { 747 | background: -webkit-linear-gradient(left,#EFF5FF 0,#ffffff 100%); 748 | background: -moz-linear-gradient(left,#EFF5FF 0,#ffffff 100%); 749 | background: -o-linear-gradient(left,#EFF5FF 0,#ffffff 100%); 750 | background: linear-gradient(to right,#EFF5FF 0,#ffffff 100%); 751 | background-repeat: repeat-y; 752 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#ffffff,GradientType=1); 753 | } 754 | .tabs-header-right .tabs li.tabs-selected a.tabs-inner { 755 | background: -webkit-linear-gradient(left,#ffffff 0,#EFF5FF 100%); 756 | background: -moz-linear-gradient(left,#ffffff 0,#EFF5FF 100%); 757 | background: -o-linear-gradient(left,#ffffff 0,#EFF5FF 100%); 758 | background: linear-gradient(to right,#ffffff 0,#EFF5FF 100%); 759 | background-repeat: repeat-y; 760 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#EFF5FF,GradientType=1); 761 | } 762 | .tabs li a.tabs-inner { 763 | color: #0E2D5F; 764 | background-color: #E0ECFF; 765 | background: -webkit-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); 766 | background: -moz-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); 767 | background: -o-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); 768 | background: linear-gradient(to bottom,#EFF5FF 0,#E0ECFF 100%); 769 | background-repeat: repeat-x; 770 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#E0ECFF,GradientType=0); 771 | } 772 | .tabs-header, 773 | .tabs-tool { 774 | background-color: #E0ECFF; 775 | } 776 | .tabs-header-plain { 777 | background: transparent; 778 | } 779 | .tabs-header, 780 | .tabs-scroller-left, 781 | .tabs-scroller-right, 782 | .tabs-tool, 783 | .tabs, 784 | .tabs-panels, 785 | .tabs li a.tabs-inner, 786 | .tabs li.tabs-selected a.tabs-inner, 787 | .tabs-header-bottom .tabs li.tabs-selected a.tabs-inner, 788 | .tabs-header-left .tabs li.tabs-selected a.tabs-inner, 789 | .tabs-header-right .tabs li.tabs-selected a.tabs-inner { 790 | border-color: #95B8E7; 791 | } 792 | .tabs-p-tool a:hover, 793 | .tabs li a:hover.tabs-close, 794 | .tabs-scroller-over { 795 | background-color: #eaf2ff; 796 | } 797 | .tabs li.tabs-selected a.tabs-inner { 798 | border-bottom: 1px solid #ffffff; 799 | } 800 | .tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { 801 | border-top: 1px solid #ffffff; 802 | } 803 | .tabs-header-left .tabs li.tabs-selected a.tabs-inner { 804 | border-right: 1px solid #ffffff; 805 | } 806 | .tabs-header-right .tabs li.tabs-selected a.tabs-inner { 807 | border-left: 1px solid #ffffff; 808 | } 809 | a.l-btn { 810 | background-position: right 0; 811 | text-decoration: none; 812 | display: inline-block; 813 | zoom: 1; 814 | height: 24px; 815 | padding-right: 18px; 816 | cursor: pointer; 817 | outline: none; 818 | } 819 | a.l-btn-plain { 820 | padding-right: 5px; 821 | border: 0; 822 | padding: 1px 6px 1px 1px; 823 | } 824 | a.l-btn-disabled { 825 | color: #ccc; 826 | opacity: 0.5; 827 | filter: alpha(opacity=50); 828 | cursor: default; 829 | } 830 | a.l-btn span.l-btn-left { 831 | display: inline-block; 832 | background-position: 0 -48px; 833 | padding: 4px 0px 4px 18px; 834 | line-height: 16px; 835 | height: 16px; 836 | } 837 | a.l-btn-plain span.l-btn-left { 838 | padding-left: 5px; 839 | } 840 | a.l-btn span span.l-btn-text { 841 | display: inline-block; 842 | vertical-align: baseline; 843 | width: auto; 844 | height: 16px; 845 | line-height: 16px; 846 | font-size: 12px; 847 | padding: 0; 848 | margin: 0; 849 | } 850 | a.l-btn span span.l-btn-icon-left { 851 | padding: 0 0 0 20px; 852 | background-position: left center; 853 | } 854 | a.l-btn span span.l-btn-icon-right { 855 | padding: 0 20px 0 0; 856 | background-position: right center; 857 | } 858 | a.l-btn span span span.l-btn-empty { 859 | display: inline-block; 860 | margin: 0; 861 | padding: 0; 862 | width: 16px; 863 | } 864 | a:hover.l-btn { 865 | background-position: right -24px; 866 | outline: none; 867 | text-decoration: none; 868 | } 869 | a:hover.l-btn span.l-btn-left { 870 | background-position: 0 bottom; 871 | } 872 | a:hover.l-btn-plain { 873 | padding: 0 5px 0 0; 874 | } 875 | a:hover.l-btn-disabled { 876 | background-position: right 0; 877 | } 878 | a:hover.l-btn-disabled span.l-btn-left { 879 | background-position: 0 -48px; 880 | } 881 | a.l-btn .l-btn-focus { 882 | outline: #0000FF dotted thin; 883 | } 884 | a.l-btn { 885 | color: #fff; 886 | background-image: url('../images/linkbutton_bg.png'); 887 | background-repeat: no-repeat; 888 | -moz-border-radius: 5px 5px 5px 5px; 889 | -webkit-border-radius: 5px 5px 5px 5px; 890 | border-radius: 5px 5px 5px 5px; 891 | } 892 | a.l-btn span.l-btn-left { 893 | background-image: url('../images/linkbutton_bg.png'); 894 | background-repeat: no-repeat; 895 | } 896 | a.l-btn-plain, 897 | a.l-btn-plain span.l-btn-left { 898 | background: transparent; 899 | border: 0; 900 | filter: none; 901 | } 902 | a:hover.l-btn-plain { 903 | color: #fff; 904 | background: rgba(255,255,255,.0); 905 | border: 1px solid rgba(255,255,255,.0); 906 | -moz-border-radius: 5px 5px 5px 5px; 907 | -webkit-border-radius: 5px 5px 5px 5px; 908 | border-radius: 5px 5px 5px 5px; 909 | } 910 | a.l-btn-disabled, 911 | a:hover.l-btn-disabled { 912 | color: #444; 913 | filter: alpha(opacity=50); 914 | } 915 | a.l-btn-plain-disabled, 916 | a:hover.l-btn-plain-disabled { 917 | background: transparent; 918 | filter: alpha(opacity=50); 919 | } 920 | a.l-btn-selected, 921 | a:hover.l-btn-selected { 922 | background-position: right -24px; 923 | } 924 | a.l-btn-selected span.l-btn-left, 925 | a:hover.l-btn-selected span.l-btn-left { 926 | background-position: 0 bottom; 927 | } 928 | a.l-btn-plain-selected, 929 | a:hover.l-btn-plain-selected { 930 | background: #ddd; 931 | } 932 | .datagrid .panel-body { 933 | overflow: hidden; 934 | position: relative; 935 | } 936 | .datagrid-view { 937 | position: relative; 938 | overflow: hidden; 939 | } 940 | .datagrid-view1, 941 | .datagrid-view2 { 942 | position: absolute; 943 | overflow: hidden; 944 | top: 0; 945 | } 946 | .datagrid-view1 { 947 | left: 0; 948 | } 949 | .datagrid-view2 { 950 | right: 0; 951 | } 952 | .datagrid-mask { 953 | position: absolute; 954 | left: 0; 955 | top: 0; 956 | width: 100%; 957 | height: 100%; 958 | opacity: 0.3; 959 | filter: alpha(opacity=30); 960 | display: none; 961 | } 962 | .datagrid-mask-msg { 963 | position: absolute; 964 | top: 50%; 965 | margin-top: -20px; 966 | padding: 12px 5px 10px 30px; 967 | width: auto; 968 | height: 16px; 969 | border-width: 2px; 970 | border-style: solid; 971 | display: none; 972 | color:#333; 973 | } 974 | .datagrid-sort-icon { 975 | padding: 0; 976 | } 977 | .datagrid-toolbar { 978 | height: auto; 979 | padding: 1px 2px; 980 | /*border-width: 0 0 1px 0; 981 | border-style: solid;*/ 982 | } 983 | .datagrid-btn-separator { 984 | float: left; 985 | height: 24px; 986 | /*border-left: 1px solid #ccc; 987 | border-right: 1px solid #fff;*/ 988 | margin: 2px 1px; 989 | background: url(../images/line.png) center center; 990 | width: 2px; 991 | } 992 | .datagrid .datagrid-pager { 993 | margin: 0; 994 | border-width: 1px 0 0 0; 995 | border-style: solid; 996 | border-color: rgba(50,128,204,.9); 997 | } 998 | .datagrid .datagrid-pager-top { 999 | border-width: 0 0 1px 0; 1000 | } 1001 | .datagrid-header { 1002 | overflow: hidden; 1003 | cursor: default; 1004 | /*border-width: 0 0 1px 0; 1005 | border-style: solid;*/ 1006 | } 1007 | .datagrid-header-inner { 1008 | float: left; 1009 | width: 10000px; 1010 | } 1011 | .datagrid-header-row, 1012 | .datagrid-row { 1013 | height: 25px; 1014 | } 1015 | .datagrid-row td{ 1016 | border-top: 1px solid rgba(2, 10, 19, 0.1); 1017 | border-bottom: 1px solid rgba(71,154,255,.1); 1018 | box-shadow: inset 0px 1px 7px rgba(128,128,128,.0); 1019 | } 1020 | .datagrid-row-alt td{ 1021 | border-top: 0px solid rgba(2, 10, 19, 0.1); 1022 | border-bottom: 0px solid rgba(71,154,255,.1); 1023 | box-shadow: inset 0px 1px 7px rgba(128,128,128,.0); 1024 | } 1025 | .datagrid-header td, 1026 | .datagrid-body td, 1027 | .datagrid-footer td { 1028 | border-width: 0 1px 1px 0; 1029 | border-style: solid; 1030 | margin: 0; 1031 | padding: 0; 1032 | } 1033 | .datagrid-cell, 1034 | .datagrid-cell-group, 1035 | .datagrid-header-rownumber, 1036 | .datagrid-cell-rownumber { 1037 | margin: 0; 1038 | padding: 0 4px; 1039 | white-space: nowrap; 1040 | word-wrap: normal; 1041 | overflow: hidden; 1042 | height: 18px; 1043 | line-height: 18px; 1044 | font-size: 12px; 1045 | } 1046 | .datagrid-header .datagrid-cell { 1047 | height: auto; 1048 | } 1049 | .datagrid-header .datagrid-cell span { 1050 | font-size: 12px; 1051 | } 1052 | .datagrid-cell-group { 1053 | text-align: center; 1054 | } 1055 | .datagrid-header-rownumber, 1056 | .datagrid-cell-rownumber { 1057 | width: 25px; 1058 | text-align: center; 1059 | margin: 0; 1060 | padding: 0; 1061 | } 1062 | .datagrid-body { 1063 | margin: 0; 1064 | padding: 0; 1065 | overflow: auto; 1066 | zoom: 1; 1067 | scrollbar-arrow-color: rgba(39,62,78,.0); 1068 | scrollbar-face-color: rgba(49,73,90,.0); 1069 | scrollbar-3dlight-color: #ffcc66; 1070 | scrollbar-highlight-color: #fff; 1071 | scrollbar-shadow-color: rgba(49,73,90,.0); 1072 | scrollbar-darkshadow-color: #fff; 1073 | scrollbar-track-color: rgba(28,52,69,.3); 1074 | scrollbar-base-color: #000; 1075 | } 1076 | .datagrid-view1 .datagrid-body-inner { 1077 | padding-bottom: 20px; 1078 | } 1079 | .datagrid-view1 .datagrid-body { 1080 | overflow: hidden; 1081 | } 1082 | .datagrid-footer { 1083 | overflow: hidden; 1084 | } 1085 | .datagrid-footer-inner { 1086 | border-width: 1px 0 0 0; 1087 | border-style: solid; 1088 | width: 10000px; 1089 | float: left; 1090 | } 1091 | .datagrid-row-editing .datagrid-cell { 1092 | height: auto; 1093 | } 1094 | .datagrid-header-check, 1095 | .datagrid-cell-check { 1096 | padding: 0; 1097 | width: 27px; 1098 | height: 18px; 1099 | font-size: 1px; 1100 | text-align: center; 1101 | overflow: hidden; 1102 | } 1103 | .datagrid-header-check input, 1104 | .datagrid-cell-check input { 1105 | margin: 0; 1106 | padding: 0; 1107 | width: 15px; 1108 | height: 18px; 1109 | } 1110 | .datagrid-resize-proxy { 1111 | position: absolute; 1112 | width: 1px; 1113 | height: 10000px; 1114 | top: 0; 1115 | cursor: e-resize; 1116 | display: none; 1117 | } 1118 | .datagrid-body .datagrid-editable { 1119 | margin: 0; 1120 | padding: 0; 1121 | } 1122 | .datagrid-body .datagrid-editable table { 1123 | width: 100%; 1124 | height: 100%; 1125 | } 1126 | .datagrid-body .datagrid-editable td { 1127 | border: 0; 1128 | margin: 0; 1129 | padding: 0; 1130 | } 1131 | .datagrid-body .datagrid-editable .datagrid-editable-input { 1132 | margin: 0; 1133 | padding: 2px; 1134 | border-width: 1px; 1135 | border-style: solid; 1136 | } 1137 | .datagrid-sort-desc .datagrid-sort-icon { 1138 | padding: 0 13px 0 0; 1139 | background: url('../images/datagrid_icons.png') no-repeat -16px center; 1140 | } 1141 | .datagrid-sort-asc .datagrid-sort-icon { 1142 | padding: 0 13px 0 0; 1143 | background: url('../images/datagrid_icons.png') no-repeat 0px center; 1144 | } 1145 | .datagrid-row-collapse { 1146 | background: url('../images/datagrid_icons.png') no-repeat -48px center; 1147 | } 1148 | .datagrid-row-expand { 1149 | background: url('../images/datagrid_icons.png') no-repeat -32px center; 1150 | } 1151 | .datagrid-mask-msg { 1152 | background: #ffffff url('../images/loading.gif') no-repeat scroll 5px center; 1153 | } 1154 | .datagrid-header, 1155 | .datagrid-td-rownumber { 1156 | background-color: rgba(255,255,255,0); 1157 | /*background: -webkit-linear-gradient(top,#F9F9F9 0,#efefef 100%); 1158 | background: -moz-linear-gradient(top,#F9F9F9 0,#efefef 100%); 1159 | background: -o-linear-gradient(top,#F9F9F9 0,#efefef 100%); 1160 | background: linear-gradient(to bottom,#F9F9F9 0,#efefef 100%); 1161 | background-repeat: repeat-x; 1162 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F9F9F9,endColorstr=#efefef,GradientType=0);*/ 1163 | } 1164 | .datagrid-header{ 1165 | background-color: rgba(255,255,255,0); 1166 | background: url(../images/title_bg_13.png) repeat-x center center; 1167 | } 1168 | .datagrid-cell-rownumber { 1169 | color: #fff; 1170 | } 1171 | .datagrid-resize-proxy { 1172 | background: #aac5e7; 1173 | } 1174 | .datagrid-mask { 1175 | background: #ccc; 1176 | } 1177 | .datagrid-mask-msg { 1178 | border-color: #95B8E7; 1179 | } 1180 | .datagrid-toolbar, 1181 | .datagrid-pager { 1182 | background: rgba(255,255,255,0); 1183 | } 1184 | .datagrid-header, 1185 | .datagrid-toolbar, 1186 | .datagrid-pager, 1187 | .datagrid-footer-inner { 1188 | border-color: #dddddd; 1189 | } 1190 | .datagrid-header td, 1191 | .datagrid-body td, 1192 | .datagrid-footer td { 1193 | border-color: rgba(255,255,255,0); 1194 | } 1195 | .datagrid-htable, 1196 | .datagrid-btable, 1197 | .datagrid-ftable { 1198 | color: #fff; 1199 | } 1200 | .datagrid-row-alt { 1201 | background: rgba(191,219,252,.04); 1202 | } 1203 | .datagrid-row-over, 1204 | .datagrid-header td.datagrid-header-over { 1205 | background: rgba(119,219,252,.12); 1206 | color: #fff; 1207 | cursor: default; 1208 | } 1209 | .datagrid-row-selected { 1210 | background: rgba(119,219,252,.12); 1211 | color: #fff; 1212 | } 1213 | .datagrid-body .datagrid-editable .datagrid-editable-input { 1214 | border-color: #95B8E7; 1215 | } 1216 | .propertygrid .datagrid-view1 .datagrid-body td { 1217 | padding-bottom: 1px; 1218 | border-width: 0 1px 0 0; 1219 | } 1220 | .propertygrid .datagrid-group { 1221 | height: 21px; 1222 | overflow: hidden; 1223 | border-width: 0 0 1px 0; 1224 | border-style: solid; 1225 | } 1226 | .propertygrid .datagrid-group span { 1227 | font-weight: bold; 1228 | } 1229 | .propertygrid .datagrid-view1 .datagrid-body td { 1230 | border-color: #dddddd; 1231 | } 1232 | .propertygrid .datagrid-view1 .datagrid-group { 1233 | border-color: #E0ECFF; 1234 | } 1235 | .propertygrid .datagrid-view2 .datagrid-group { 1236 | border-color: #dddddd; 1237 | } 1238 | .propertygrid .datagrid-group, 1239 | .propertygrid .datagrid-view1 .datagrid-body, 1240 | .propertygrid .datagrid-view1 .datagrid-row-over, 1241 | .propertygrid .datagrid-view1 .datagrid-row-selected { 1242 | background: #E0ECFF; 1243 | } 1244 | .pagination { 1245 | zoom: 1; 1246 | } 1247 | .pagination table { 1248 | float: left; 1249 | height: 30px; 1250 | } 1251 | .pagination td { 1252 | border: 0; 1253 | } 1254 | .pagination-btn-separator { 1255 | float: left; 1256 | height: 24px; 1257 | /*border-left: 1px solid #ccc; 1258 | border-right: 1px solid #fff;*/ 1259 | margin: 3px 1px; 1260 | background: url(../images/line.png) center center; 1261 | width: 2px; 1262 | } 1263 | .pagination .pagination-num { 1264 | border-width: 1px; 1265 | border-style: solid; 1266 | margin: 0 2px; 1267 | padding: 2px; 1268 | width: 2em; 1269 | height: auto; 1270 | } 1271 | .pagination-page-list { 1272 | margin: 0px 6px; 1273 | padding: 1px 2px; 1274 | width: auto; 1275 | height: auto; 1276 | border-width: 1px; 1277 | border-style: solid; 1278 | background: rgba(255,255,255,.1); 1279 | color: #fff; 1280 | } 1281 | .pagination-info { 1282 | float: right; 1283 | margin: 0 6px 0 0; 1284 | padding: 0; 1285 | height: 30px; 1286 | line-height: 30px; 1287 | font-size: 12px; 1288 | } 1289 | .pagination span { 1290 | font-size: 12px; 1291 | } 1292 | .pagination-first { 1293 | background: url('../images/pagination_icons.png') no-repeat 0 0; 1294 | } 1295 | .pagination-prev { 1296 | background: url('../images/pagination_icons.png') no-repeat -16px 0; 1297 | } 1298 | .pagination-next { 1299 | background: url('../images/pagination_icons.png') no-repeat -32px 0; 1300 | } 1301 | .pagination-last { 1302 | background: url('../images/pagination_icons.png') no-repeat -48px 0; 1303 | } 1304 | .pagination-load { 1305 | background: url('../images/pagination_icons.png') no-repeat -64px 0; 1306 | } 1307 | .pagination-loading { 1308 | background: url('../images/loading.gif') no-repeat; 1309 | } 1310 | .pagination-page-list, 1311 | .pagination .pagination-num { 1312 | border-color: rgba(244,244,244,.5); 1313 | background: rgba(255,255,255,.1); 1314 | color: #fff; 1315 | text-align: center; 1316 | } 1317 | .pagination-page-list option{ 1318 | background: rgba(0,0,0,.3); 1319 | } 1320 | .calendar { 1321 | border-width: 1px; 1322 | border-style: solid; 1323 | padding: 1px; 1324 | overflow: hidden; 1325 | } 1326 | .calendar table { 1327 | border-collapse: separate; 1328 | font-size: 12px; 1329 | width: 100%; 1330 | height: 100%; 1331 | } 1332 | .datagrid-cell a{ 1333 | color:rgba(0,186,255,.9); 1334 | } 1335 | --------------------------------------------------------------------------------