├── .babelrc ├── .editorconfig ├── .gitignore ├── .postcssrc.js ├── README.md ├── build ├── build.js ├── check-versions.js ├── logo.png ├── utils.js ├── vue-loader.conf.js ├── webpack.base.conf.js ├── webpack.dev.conf.js └── webpack.prod.conf.js ├── config ├── dev.env.js ├── index.js └── prod.env.js ├── dist ├── index.html └── static │ ├── admin │ ├── css │ │ ├── base.css │ │ ├── changelists.css │ │ ├── dashboard.css │ │ ├── fonts.css │ │ ├── forms.css │ │ ├── login.css │ │ ├── rtl.css │ │ └── widgets.css │ ├── fonts │ │ ├── LICENSE.txt │ │ ├── README.txt │ │ ├── Roboto-Bold-webfont.woff │ │ ├── Roboto-Light-webfont.woff │ │ └── Roboto-Regular-webfont.woff │ ├── img │ │ ├── LICENSE │ │ ├── README.txt │ │ ├── calendar-icons.svg │ │ ├── gis │ │ │ ├── move_vertex_off.svg │ │ │ └── move_vertex_on.svg │ │ ├── icon-addlink.svg │ │ ├── icon-alert.svg │ │ ├── icon-calendar.svg │ │ ├── icon-changelink.svg │ │ ├── icon-clock.svg │ │ ├── icon-deletelink.svg │ │ ├── icon-no.svg │ │ ├── icon-unknown-alt.svg │ │ ├── icon-unknown.svg │ │ ├── icon-yes.svg │ │ ├── inline-delete.svg │ │ ├── search.svg │ │ ├── selector-icons.svg │ │ ├── sorting-icons.svg │ │ ├── tooltag-add.svg │ │ └── tooltag-arrowright.svg │ └── js │ │ ├── SelectBox.js │ │ ├── SelectFilter2.js │ │ ├── actions.js │ │ ├── actions.min.js │ │ ├── admin │ │ ├── DateTimeShortcuts.js │ │ └── RelatedObjectLookups.js │ │ ├── calendar.js │ │ ├── cancel.js │ │ ├── change_form.js │ │ ├── collapse.js │ │ ├── collapse.min.js │ │ ├── core.js │ │ ├── inlines.js │ │ ├── inlines.min.js │ │ ├── jquery.init.js │ │ ├── popup_response.js │ │ ├── prepopulate.js │ │ ├── prepopulate.min.js │ │ ├── prepopulate_init.js │ │ ├── timeparse.js │ │ ├── urlify.js │ │ └── vendor │ │ ├── jquery │ │ ├── LICENSE-JQUERY.txt │ │ ├── jquery.js │ │ └── jquery.min.js │ │ └── xregexp │ │ ├── LICENSE-XREGEXP.txt │ │ ├── xregexp.js │ │ └── xregexp.min.js │ ├── css │ ├── app.e4121f5aeed7fd820d95f8255be52c23.css │ └── app.e4121f5aeed7fd820d95f8255be52c23.css.map │ ├── fonts │ ├── element-icons.535877f.woff │ ├── element-icons.732389d.ttf │ ├── fontawesome-webfont.674f50d.eot │ ├── fontawesome-webfont.af7ae50.woff2 │ ├── fontawesome-webfont.b06871f.ttf │ └── fontawesome-webfont.fee66e7.woff │ ├── img │ └── fontawesome-webfont.912ec66.svg │ ├── js │ ├── 0.efcf66cf2445601b6ad0.js │ ├── 0.efcf66cf2445601b6ad0.js.map │ ├── 1.2db9e0599011725d6bf0.js │ ├── 1.2db9e0599011725d6bf0.js.map │ ├── 10.407388e9f210b45d1773.js │ ├── 10.407388e9f210b45d1773.js.map │ ├── 11.5922e719e8b9319a4e2c.js │ ├── 11.5922e719e8b9319a4e2c.js.map │ ├── 12.45213864306021bb7bc8.js │ ├── 12.45213864306021bb7bc8.js.map │ ├── 13.158092e90ec01844c399.js │ ├── 13.158092e90ec01844c399.js.map │ ├── 14.bf640dda12084e5c88e4.js │ ├── 14.bf640dda12084e5c88e4.js.map │ ├── 15.b3d65c82ebaa949ec6c8.js │ ├── 15.b3d65c82ebaa949ec6c8.js.map │ ├── 16.f163e8109127cb189efb.js │ ├── 16.f163e8109127cb189efb.js.map │ ├── 17.d1a4c6c0730c30bd704c.js │ ├── 17.d1a4c6c0730c30bd704c.js.map │ ├── 18.9e5fed01b573e1c763de.js │ ├── 18.9e5fed01b573e1c763de.js.map │ ├── 19.41aa94d2b67125f13170.js │ ├── 19.41aa94d2b67125f13170.js.map │ ├── 2.d6f81c3b460e3920a599.js │ ├── 2.d6f81c3b460e3920a599.js.map │ ├── 20.65ab3f66920db2f63f27.js │ ├── 20.65ab3f66920db2f63f27.js.map │ ├── 21.b21155281a0ccb3d0269.js │ ├── 21.b21155281a0ccb3d0269.js.map │ ├── 22.4942918169a3e131f4dd.js │ ├── 22.4942918169a3e131f4dd.js.map │ ├── 23.f62c041a210451f272a7.js │ ├── 23.f62c041a210451f272a7.js.map │ ├── 24.d34ff2db70da91232c13.js │ ├── 24.d34ff2db70da91232c13.js.map │ ├── 25.8a5c83b0c11c426bfade.js │ ├── 25.8a5c83b0c11c426bfade.js.map │ ├── 26.6de0981dc513c5da4547.js │ ├── 26.6de0981dc513c5da4547.js.map │ ├── 27.2ac96b710145be684bd0.js │ ├── 27.2ac96b710145be684bd0.js.map │ ├── 28.c0591bc9a51f70533afb.js │ ├── 28.c0591bc9a51f70533afb.js.map │ ├── 29.e8687c7b1b2dbb298b31.js │ ├── 29.e8687c7b1b2dbb298b31.js.map │ ├── 3.11cb5c52477d4ef68429.js │ ├── 3.11cb5c52477d4ef68429.js.map │ ├── 30.e6af9a784c3590f53ef8.js │ ├── 30.e6af9a784c3590f53ef8.js.map │ ├── 31.aa0f5f0625b1d976c692.js │ ├── 31.aa0f5f0625b1d976c692.js.map │ ├── 32.26e4340c634f9c88f370.js │ ├── 32.26e4340c634f9c88f370.js.map │ ├── 33.75ec3191321ed9bd9479.js │ ├── 33.75ec3191321ed9bd9479.js.map │ ├── 34.245cae52d4cfaa106312.js │ ├── 34.245cae52d4cfaa106312.js.map │ ├── 35.eee041cce1bdedfd66fc.js │ ├── 35.eee041cce1bdedfd66fc.js.map │ ├── 36.6d0fa538e70a1f582013.js │ ├── 36.6d0fa538e70a1f582013.js.map │ ├── 37.788e8fa6ab19ba7f8cdd.js │ ├── 37.788e8fa6ab19ba7f8cdd.js.map │ ├── 38.02683971757af4db16da.js │ ├── 38.02683971757af4db16da.js.map │ ├── 39.5c6ba1157bd7425c3986.js │ ├── 39.5c6ba1157bd7425c3986.js.map │ ├── 4.ce9e38e7f2112f155b1f.js │ ├── 4.ce9e38e7f2112f155b1f.js.map │ ├── 40.3a6ea6dec373d2d235d2.js │ ├── 40.3a6ea6dec373d2d235d2.js.map │ ├── 41.a6084e625c1520b09cd3.js │ ├── 41.a6084e625c1520b09cd3.js.map │ ├── 42.aeb5dbbc384e7cf9b0ac.js │ ├── 42.aeb5dbbc384e7cf9b0ac.js.map │ ├── 5.c4c1b9f152954c17fb33.js │ ├── 5.c4c1b9f152954c17fb33.js.map │ ├── 6.d51738118a2a31c6d848.js │ ├── 6.d51738118a2a31c6d848.js.map │ ├── 7.810c755e8a5fdf630bae.js │ ├── 7.810c755e8a5fdf630bae.js.map │ ├── 8.76b53bcce266806372d2.js │ ├── 8.76b53bcce266806372d2.js.map │ ├── 9.d6738f4291fb740b9182.js │ ├── 9.d6738f4291fb740b9182.js.map │ ├── app.e6324777c22b81557aa6.js │ ├── app.e6324777c22b81557aa6.js.map │ ├── manifest.a975bce51d1d775fe3c3.js │ ├── manifest.a975bce51d1d775fe3c3.js.map │ ├── vendor.8bb10babaa0ffb2ca031.js │ └── vendor.8bb10babaa0ffb2ca031.js.map │ ├── rest_framework │ ├── css │ │ ├── bootstrap-tweaks.css │ │ ├── bootstrap.min.css │ │ ├── default.css │ │ └── prettify.css │ ├── docs │ │ ├── css │ │ │ ├── base.css │ │ │ ├── bootstrap-theme.min.css │ │ │ ├── bootstrap.min.css │ │ │ ├── font-awesome-4.0.3.css │ │ │ ├── highlight.css │ │ │ └── jquery.json-view.min.css │ │ ├── fonts │ │ │ ├── fontawesome-webfont.eot │ │ │ ├── fontawesome-webfont.svg │ │ │ ├── fontawesome-webfont.ttf │ │ │ ├── fontawesome-webfont.woff │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ ├── glyphicons-halflings-regular.svg │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ ├── glyphicons-halflings-regular.woff │ │ │ └── glyphicons-halflings-regular.woff2 │ │ ├── img │ │ │ ├── favicon.ico │ │ │ └── grid.png │ │ └── js │ │ │ ├── api.js │ │ │ ├── bootstrap.min.js │ │ │ ├── highlight.pack.js │ │ │ ├── jquery-1.10.2.min.js │ │ │ └── jquery.json-view.min.js │ ├── fonts │ │ ├── glyphicons-halflings-regular.eot │ │ ├── glyphicons-halflings-regular.svg │ │ ├── glyphicons-halflings-regular.ttf │ │ ├── glyphicons-halflings-regular.woff │ │ └── glyphicons-halflings-regular.woff2 │ ├── img │ │ ├── glyphicons-halflings-white.png │ │ ├── glyphicons-halflings.png │ │ └── grid.png │ └── js │ │ ├── ajax-form.js │ │ ├── bootstrap.min.js │ │ ├── coreapi-0.1.1.js │ │ ├── csrf.js │ │ ├── default.js │ │ ├── jquery-1.12.4.min.js │ │ └── prettify-min.js │ └── rest_framework_docs │ ├── css │ └── style.css │ ├── fonts │ ├── FontAwesome.otf │ ├── fontawesome-webfont.eot │ ├── fontawesome-webfont.svg │ ├── fontawesome-webfont.ttf │ ├── fontawesome-webfont.woff │ ├── fontawesome-webfont.woff2 │ ├── glyphicons-halflings-regular.eot │ ├── glyphicons-halflings-regular.svg │ ├── glyphicons-halflings-regular.ttf │ ├── glyphicons-halflings-regular.woff │ └── glyphicons-halflings-regular.woff2 │ ├── js │ └── dist.min.js │ └── less │ └── style.less ├── django-static ├── admin │ ├── css │ │ ├── base.css │ │ ├── changelists.css │ │ ├── dashboard.css │ │ ├── fonts.css │ │ ├── forms.css │ │ ├── login.css │ │ ├── rtl.css │ │ └── widgets.css │ ├── fonts │ │ ├── LICENSE.txt │ │ ├── README.txt │ │ ├── Roboto-Bold-webfont.woff │ │ ├── Roboto-Light-webfont.woff │ │ └── Roboto-Regular-webfont.woff │ ├── img │ │ ├── LICENSE │ │ ├── README.txt │ │ ├── calendar-icons.svg │ │ ├── gis │ │ │ ├── move_vertex_off.svg │ │ │ └── move_vertex_on.svg │ │ ├── icon-addlink.svg │ │ ├── icon-alert.svg │ │ ├── icon-calendar.svg │ │ ├── icon-changelink.svg │ │ ├── icon-clock.svg │ │ ├── icon-deletelink.svg │ │ ├── icon-no.svg │ │ ├── icon-unknown-alt.svg │ │ ├── icon-unknown.svg │ │ ├── icon-yes.svg │ │ ├── inline-delete.svg │ │ ├── search.svg │ │ ├── selector-icons.svg │ │ ├── sorting-icons.svg │ │ ├── tooltag-add.svg │ │ └── tooltag-arrowright.svg │ └── js │ │ ├── SelectBox.js │ │ ├── SelectFilter2.js │ │ ├── actions.js │ │ ├── actions.min.js │ │ ├── admin │ │ ├── DateTimeShortcuts.js │ │ └── RelatedObjectLookups.js │ │ ├── calendar.js │ │ ├── cancel.js │ │ ├── change_form.js │ │ ├── collapse.js │ │ ├── collapse.min.js │ │ ├── core.js │ │ ├── inlines.js │ │ ├── inlines.min.js │ │ ├── jquery.init.js │ │ ├── popup_response.js │ │ ├── prepopulate.js │ │ ├── prepopulate.min.js │ │ ├── prepopulate_init.js │ │ ├── timeparse.js │ │ ├── urlify.js │ │ └── vendor │ │ ├── jquery │ │ ├── LICENSE-JQUERY.txt │ │ ├── jquery.js │ │ └── jquery.min.js │ │ └── xregexp │ │ ├── LICENSE-XREGEXP.txt │ │ ├── xregexp.js │ │ └── xregexp.min.js ├── rest_framework │ ├── css │ │ ├── bootstrap-tweaks.css │ │ ├── bootstrap.min.css │ │ ├── default.css │ │ └── prettify.css │ ├── docs │ │ ├── css │ │ │ ├── base.css │ │ │ ├── bootstrap-theme.min.css │ │ │ ├── bootstrap.min.css │ │ │ ├── font-awesome-4.0.3.css │ │ │ ├── highlight.css │ │ │ └── jquery.json-view.min.css │ │ ├── fonts │ │ │ ├── fontawesome-webfont.eot │ │ │ ├── fontawesome-webfont.svg │ │ │ ├── fontawesome-webfont.ttf │ │ │ ├── fontawesome-webfont.woff │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ ├── glyphicons-halflings-regular.svg │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ ├── glyphicons-halflings-regular.woff │ │ │ └── glyphicons-halflings-regular.woff2 │ │ ├── img │ │ │ ├── favicon.ico │ │ │ └── grid.png │ │ └── js │ │ │ ├── api.js │ │ │ ├── bootstrap.min.js │ │ │ ├── highlight.pack.js │ │ │ ├── jquery-1.10.2.min.js │ │ │ └── jquery.json-view.min.js │ ├── fonts │ │ ├── glyphicons-halflings-regular.eot │ │ ├── glyphicons-halflings-regular.svg │ │ ├── glyphicons-halflings-regular.ttf │ │ ├── glyphicons-halflings-regular.woff │ │ └── glyphicons-halflings-regular.woff2 │ ├── img │ │ ├── glyphicons-halflings-white.png │ │ ├── glyphicons-halflings.png │ │ └── grid.png │ └── js │ │ ├── ajax-form.js │ │ ├── bootstrap.min.js │ │ ├── coreapi-0.1.1.js │ │ ├── csrf.js │ │ ├── default.js │ │ ├── jquery-1.12.4.min.js │ │ └── prettify-min.js └── rest_framework_docs │ ├── css │ └── style.css │ ├── fonts │ ├── FontAwesome.otf │ ├── fontawesome-webfont.eot │ ├── fontawesome-webfont.svg │ ├── fontawesome-webfont.ttf │ ├── fontawesome-webfont.woff │ ├── fontawesome-webfont.woff2 │ ├── glyphicons-halflings-regular.eot │ ├── glyphicons-halflings-regular.svg │ ├── glyphicons-halflings-regular.ttf │ ├── glyphicons-halflings-regular.woff │ └── glyphicons-halflings-regular.woff2 │ ├── js │ └── dist.min.js │ └── less │ └── style.less ├── images └── cmdb-0.png ├── index.html ├── k8s-templates ├── config_maps │ └── dev │ │ ├── app-cmdb-frontend-nginx-conf.yml │ │ └── nginx.conf ├── dev-frontend-cmdb.yaml └── prod-frontend-cmdb.yaml ├── package-lock.json ├── package.json ├── package_upload.py ├── src ├── App 2.vue ├── App.vue ├── Blank 2.vue ├── Blank.vue ├── api │ ├── index 2.js │ └── index.js ├── assets │ ├── logo 2.png │ ├── logo-new 2.png │ ├── logo-new.png │ └── logo.png ├── c-test │ ├── html-2 2.html │ ├── html-2.html │ ├── test-1 2.html │ ├── test-1.html │ ├── test-3 2.html │ ├── test-3.html │ ├── test-4 2.html │ ├── test-4.html │ ├── test-5 2.html │ ├── test-5.html │ ├── test-6 2.html │ ├── test-6.html │ ├── test-7 2.html │ └── test-7.html ├── components │ ├── CBox 2.vue │ ├── CBox.vue │ ├── CTooltipButton 2.vue │ ├── CTooltipButton.vue │ ├── CartPanel 2.vue │ ├── CartPanel.vue │ ├── DateFilter 2.vue │ ├── DateFilter.vue │ ├── DateRangeFilter 2.vue │ ├── DateRangeFilter.vue │ ├── DialogExport 2.vue │ ├── DialogExport.vue │ ├── Export 2.vue │ ├── Export.vue │ ├── HelloWorld 2.vue │ ├── HelloWorld.vue │ ├── InputList 2.vue │ ├── InputList.vue │ ├── Login 2.vue │ ├── Login.vue │ ├── NumberRangeFilter 2.vue │ ├── NumberRangeFilter.vue │ ├── OptionBar 2.vue │ ├── OptionBar.vue │ ├── Pagination 2.vue │ ├── Pagination.vue │ ├── Search 2.vue │ ├── Search.vue │ ├── app │ │ ├── user-mgmt │ │ │ ├── CreateUpdate 2.vue │ │ │ ├── CreateUpdate.vue │ │ │ ├── ResetPassword 2.vue │ │ │ └── ResetPassword.vue │ │ └── user │ │ │ ├── Create 2.vue │ │ │ └── Create.vue │ ├── c-select │ │ ├── navigation-mixin 2.js │ │ ├── navigation-mixin.js │ │ ├── option 2.vue │ │ ├── option-group 2.vue │ │ ├── option-group.vue │ │ ├── option.vue │ │ ├── scrollbar │ │ │ ├── index 2.js │ │ │ ├── index.js │ │ │ └── src │ │ │ │ ├── bar 2.js │ │ │ │ ├── bar.js │ │ │ │ ├── main 2.js │ │ │ │ ├── main.js │ │ │ │ ├── util 2.js │ │ │ │ └── util.js │ │ ├── select 2.vue │ │ ├── select-dropdown 2.vue │ │ ├── select-dropdown.vue │ │ └── select.vue │ └── dialogs │ │ ├── LoginDialog 2.vue │ │ └── LoginDialog.vue ├── config │ ├── dev 2.js │ ├── dev.js │ ├── index 2.js │ ├── index.js │ ├── pro 2.js │ └── pro.js ├── main 2.js ├── main.js ├── router │ ├── _import_development 2.js │ ├── _import_development.js │ ├── _import_production 2.js │ ├── _import_production.js │ ├── index 2.js │ ├── index.1 2.js │ ├── index.1.js │ ├── index.js │ ├── menu 2.js │ └── menu.js ├── store │ ├── cookie 2.js │ ├── cookie.js │ ├── index 2.js │ ├── index.js │ ├── mutation 2.js │ └── mutation.js ├── utils │ ├── calc 2.js │ ├── calc.js │ ├── color 2.js │ ├── color.js │ ├── components 2.js │ ├── components.js │ ├── conversion 2.js │ ├── conversion.js │ ├── cookie 2.js │ ├── cookie.js │ ├── data_process 2.js │ ├── data_process.js │ ├── date 2.js │ ├── date.js │ ├── filters 2.js │ ├── filters.js │ ├── index 2.js │ ├── index.js │ ├── maps 2.js │ ├── maps.js │ ├── mixins 2.js │ ├── mixins.js │ ├── new_mixins │ │ ├── action_dialog_mixin 2.js │ │ ├── action_dialog_mixin.js │ │ ├── chart_mixin 2.js │ │ ├── chart_mixin.js │ │ ├── create_update_dialog_mixin 2.js │ │ ├── create_update_dialog_mixin.js │ │ ├── detail_dialog_mixin 2.js │ │ ├── detail_dialog_mixin.js │ │ ├── dialog_mixin 2.js │ │ ├── dialog_mixin.js │ │ ├── drawer_mixin 2.js │ │ ├── drawer_mixin.js │ │ ├── index 2.js │ │ ├── index.js │ │ ├── list_mixin 2.js │ │ └── list_mixin.js │ ├── plugins 2.js │ ├── plugins.js │ ├── schema 2.js │ ├── schema.js │ ├── sso 2.js │ ├── sso.js │ ├── url 2.js │ ├── url.js │ ├── variables 2.js │ ├── variables.js │ ├── workorder 2.js │ └── workorder.js └── views │ ├── ModifyData 2.vue │ ├── ModifyData.vue │ ├── deleted-display │ ├── DisplayData 2.vue │ ├── DisplayData.vue │ └── components │ │ ├── DataItem 2.vue │ │ ├── DataItem.vue │ │ ├── DeletedDataDetail 2.vue │ │ └── DeletedDataDetail.vue │ ├── department │ ├── TableMgmt 2.vue │ ├── TableMgmt.vue │ └── components │ │ ├── ChangeTable 2.vue │ │ ├── ChangeTable.vue │ │ ├── DeleteTable 2.vue │ │ └── DeleteTable.vue │ ├── display-data │ ├── DisplayData 2.vue │ ├── DisplayData.vue │ └── components │ │ ├── AddData 2.vue │ │ ├── AddData.vue │ │ ├── ChangeData 2.vue │ │ ├── ChangeData.vue │ │ ├── DataDetail 2.vue │ │ ├── DataDetail.vue │ │ ├── DataItem 2.vue │ │ ├── DataItem.vue │ │ ├── Export.vue │ │ ├── HistoricalRecord 2.vue │ │ ├── HistoricalRecord.vue │ │ ├── Import.vue │ │ ├── ListIndices.vue │ │ ├── MenuItem.vue │ │ ├── ShowTable 2.vue │ │ └── ShowTable.vue │ ├── layout │ ├── Layout 2.vue │ ├── Layout.vue │ ├── components │ │ ├── ResetPwd.vue │ │ └── Token.vue │ └── comps │ │ ├── Aside 2.vue │ │ ├── Aside.vue │ │ ├── Header 2.vue │ │ ├── Header.backvue │ │ ├── Header.vue │ │ └── MenuItem 2.vue │ ├── login │ ├── Login 2.vue │ └── Login.vue │ ├── table-mgmt │ ├── TableMgmt 2.vue │ ├── TableMgmt.vue │ └── components │ │ ├── ChangeTable 2.vue │ │ ├── ChangeTable.vue │ │ ├── DeleteTable 2.vue │ │ ├── DeleteTable.vue │ │ ├── Upload 2.vue │ │ └── Upload.vue │ ├── test │ ├── Test1 2.vue │ ├── Test1.vue │ ├── Test2 2.vue │ ├── Test2.vue │ ├── Test3 2.vue │ ├── Test3.vue │ ├── Test4 2.vue │ ├── Test4.vue │ ├── Test5 2.vue │ ├── Test5.vue │ ├── Test6 2.vue │ ├── Test6.vue │ ├── components │ │ ├── Child1 2.vue │ │ ├── Child1.vue │ │ ├── Dialog1 2.vue │ │ ├── Dialog1.vue │ │ ├── Dialog2 2.vue │ │ └── Dialog2.vue │ ├── js │ │ └── test_1.js │ ├── scrollbar │ │ ├── index 2.js │ │ ├── index.js │ │ └── src │ │ │ ├── bar 2.js │ │ │ ├── bar.js │ │ │ ├── main 2.js │ │ │ ├── main.js │ │ │ ├── util 2.js │ │ │ └── util.js │ ├── select │ │ ├── index 2.js │ │ ├── index.js │ │ └── src │ │ │ ├── navigation-mixin 2.js │ │ │ ├── navigation-mixin.js │ │ │ ├── option 2.vue │ │ │ ├── option-group 2.vue │ │ │ ├── option-group.vue │ │ │ ├── option.vue │ │ │ ├── select 2.vue │ │ │ ├── select-dropdown 2.vue │ │ │ ├── select-dropdown.vue │ │ │ └── select.vue │ └── test_1.html │ ├── user-mgmt │ ├── UserMgmt 2.vue │ └── UserMgmt.vue │ └── user │ ├── User 2.vue │ ├── User.vue │ └── components │ ├── ChangePassword 2.vue │ ├── ChangePassword.vue │ ├── ResetPassword 2.vue │ └── ResetPassword.vue ├── static └── .gitkeep └── yarn.lock /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | ["env", { 4 | "modules": false, 5 | "targets": { 6 | "browsers": ["> 1%", "last 2 versions", "not ie <= 8"] 7 | } 8 | }], 9 | "stage-2" 10 | ], 11 | "plugins": ["transform-vue-jsx", "transform-runtime"] 12 | } 13 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | indent_style = space 6 | indent_size = 2 7 | end_of_line = lf 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules/ 3 | npm-debug.log* 4 | yarn-debug.log* 5 | yarn-error.log* 6 | 7 | # Editor directories and files 8 | .idea 9 | .vscode 10 | *.suo 11 | *.ntvs* 12 | *.njsproj 13 | *.sln 14 | -------------------------------------------------------------------------------- /.postcssrc.js: -------------------------------------------------------------------------------- 1 | // https://github.com/michael-ciniawsky/postcss-load-config 2 | 3 | module.exports = { 4 | "plugins": { 5 | "postcss-import": {}, 6 | "postcss-url": {}, 7 | // to edit target browsers: use "browserslist" field in package.json 8 | "autoprefixer": {} 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

2 | 3 |

4 | 5 | # cmdb 6 | 7 | > CMDB 资产管理系统 8 | 9 | [![License: GPL v3](https://img.shields.io/badge/License-GPL%20v3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0) 10 | ![pyversions](https://img.shields.io/badge/python%20-3.5%2B-blue.svg) 11 | ![vueversions](https://img.shields.io/badge/Vue.js-2.3.4-4fc08d.svg) 12 | ![es2015](https://img.shields.io/badge/ECMAScript-6-green.svg) 13 | ![element ui](https://img.shields.io/badge/element-2.1.0-20a0ff.svg) 14 | 15 | ## 知乎链接 16 | https://zhuanlan.zhihu.com/p/34191320 17 | 18 | ## 在线演示 19 | http://cmdb.mmtweb.xyz 20 | 用户名:admin 密码:cmdbcmdb (请不要修改) 21 | 22 | ## Build Setup 23 | 24 | ``` bash 25 | # install dependencies 26 | npm install 27 | 28 | # serve with hot reload at localhost:8080 29 | npm run dev 30 | 31 | # build for production with minification 32 | npm run build 33 | 34 | # build for production and view the bundle analyzer report 35 | npm run build --report 36 | ``` 37 | 38 | For a detailed explanation on how things work, check out the [guide](http://vuejs-templates.github.io/webpack/) and [docs for vue-loader](http://vuejs.github.io/vue-loader). 39 | -------------------------------------------------------------------------------- /build/build.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | require('./check-versions')() 3 | 4 | process.env.NODE_ENV = 'production' 5 | 6 | const ora = require('ora') 7 | const rm = require('rimraf') 8 | const path = require('path') 9 | const chalk = require('chalk') 10 | const webpack = require('webpack') 11 | const config = require('../config') 12 | const webpackConfig = require('./webpack.prod.conf') 13 | 14 | const spinner = ora('building for production...') 15 | spinner.start() 16 | 17 | rm(path.join(config.build.assetsRoot, config.build.assetsSubDirectory), err => { 18 | if (err) throw err 19 | webpack(webpackConfig, (err, stats) => { 20 | spinner.stop() 21 | if (err) throw err 22 | process.stdout.write(stats.toString({ 23 | colors: true, 24 | modules: false, 25 | children: false, // If you are using ts-loader, setting this to true will make TypeScript errors show up during build. 26 | chunks: false, 27 | chunkModules: false 28 | }) + '\n\n') 29 | 30 | if (stats.hasErrors()) { 31 | console.log(chalk.red(' Build failed with errors.\n')) 32 | process.exit(1) 33 | } 34 | 35 | console.log(chalk.cyan(' Build complete.\n')) 36 | console.log(chalk.yellow( 37 | ' Tip: built files are meant to be served over an HTTP server.\n' + 38 | ' Opening index.html over file:// won\'t work.\n' 39 | )) 40 | }) 41 | }) 42 | -------------------------------------------------------------------------------- /build/check-versions.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | const chalk = require('chalk') 3 | const semver = require('semver') 4 | const packageConfig = require('../package.json') 5 | const shell = require('shelljs') 6 | 7 | function exec (cmd) { 8 | return require('child_process').execSync(cmd).toString().trim() 9 | } 10 | 11 | const versionRequirements = [ 12 | { 13 | name: 'node', 14 | currentVersion: semver.clean(process.version), 15 | versionRequirement: packageConfig.engines.node 16 | } 17 | ] 18 | 19 | if (shell.which('npm')) { 20 | versionRequirements.push({ 21 | name: 'npm', 22 | currentVersion: exec('npm --version'), 23 | versionRequirement: packageConfig.engines.npm 24 | }) 25 | } 26 | 27 | module.exports = function () { 28 | const warnings = [] 29 | 30 | for (let i = 0; i < versionRequirements.length; i++) { 31 | const mod = versionRequirements[i] 32 | 33 | if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) { 34 | warnings.push(mod.name + ': ' + 35 | chalk.red(mod.currentVersion) + ' should be ' + 36 | chalk.green(mod.versionRequirement) 37 | ) 38 | } 39 | } 40 | 41 | if (warnings.length) { 42 | console.log('') 43 | console.log(chalk.yellow('To use this template, you must update following to modules:')) 44 | console.log() 45 | 46 | for (let i = 0; i < warnings.length; i++) { 47 | const warning = warnings[i] 48 | console.log(' ' + warning) 49 | } 50 | 51 | console.log() 52 | process.exit(1) 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /build/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-cmdb/cmdb-web/0316b3d408b8067965e16fd72761248e82b25739/build/logo.png -------------------------------------------------------------------------------- /build/vue-loader.conf.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | const utils = require('./utils') 3 | const config = require('../config') 4 | const isProduction = process.env.NODE_ENV === 'production' 5 | const sourceMapEnabled = isProduction 6 | ? config.build.productionSourceMap 7 | : config.dev.cssSourceMap 8 | 9 | module.exports = { 10 | loaders: utils.cssLoaders({ 11 | sourceMap: sourceMapEnabled, 12 | extract: isProduction 13 | }), 14 | cssSourceMap: sourceMapEnabled, 15 | cacheBusting: config.dev.cacheBusting, 16 | transformToRequire: { 17 | video: ['src', 'poster'], 18 | source: 'src', 19 | img: 'src', 20 | image: 'xlink:href' 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /config/dev.env.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | const merge = require('webpack-merge') 3 | const prodEnv = require('./prod.env') 4 | 5 | module.exports = merge(prodEnv, { 6 | NODE_ENV: '"development"' 7 | }) 8 | -------------------------------------------------------------------------------- /config/prod.env.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | module.exports = { 3 | NODE_ENV: '"production"' 4 | } 5 | -------------------------------------------------------------------------------- /dist/index.html: -------------------------------------------------------------------------------- 1 | CMDB
-------------------------------------------------------------------------------- /dist/static/admin/css/dashboard.css: -------------------------------------------------------------------------------- 1 | /* DASHBOARD */ 2 | 3 | .dashboard .module table th { 4 | width: 100%; 5 | } 6 | 7 | .dashboard .module table td { 8 | white-space: nowrap; 9 | } 10 | 11 | .dashboard .module table td a { 12 | display: block; 13 | padding-right: .6em; 14 | } 15 | 16 | /* RECENT ACTIONS MODULE */ 17 | 18 | .module ul.actionlist { 19 | margin-left: 0; 20 | } 21 | 22 | ul.actionlist li { 23 | list-style-type: none; 24 | overflow: hidden; 25 | text-overflow: ellipsis; 26 | -o-text-overflow: ellipsis; 27 | } 28 | -------------------------------------------------------------------------------- /dist/static/admin/css/fonts.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'Roboto'; 3 | src: url('../fonts/Roboto-Bold-webfont.woff'); 4 | font-weight: 700; 5 | font-style: normal; 6 | } 7 | 8 | @font-face { 9 | font-family: 'Roboto'; 10 | src: url('../fonts/Roboto-Regular-webfont.woff'); 11 | font-weight: 400; 12 | font-style: normal; 13 | } 14 | 15 | @font-face { 16 | font-family: 'Roboto'; 17 | src: url('../fonts/Roboto-Light-webfont.woff'); 18 | font-weight: 300; 19 | font-style: normal; 20 | } 21 | -------------------------------------------------------------------------------- /dist/static/admin/fonts/README.txt: -------------------------------------------------------------------------------- 1 | Roboto webfont source: https://www.google.com/fonts/specimen/Roboto 2 | Weights used in this project: Light (300), Regular (400), Bold (700) 3 | -------------------------------------------------------------------------------- /dist/static/admin/fonts/Roboto-Bold-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-cmdb/cmdb-web/0316b3d408b8067965e16fd72761248e82b25739/dist/static/admin/fonts/Roboto-Bold-webfont.woff -------------------------------------------------------------------------------- /dist/static/admin/fonts/Roboto-Light-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-cmdb/cmdb-web/0316b3d408b8067965e16fd72761248e82b25739/dist/static/admin/fonts/Roboto-Light-webfont.woff -------------------------------------------------------------------------------- /dist/static/admin/fonts/Roboto-Regular-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-cmdb/cmdb-web/0316b3d408b8067965e16fd72761248e82b25739/dist/static/admin/fonts/Roboto-Regular-webfont.woff -------------------------------------------------------------------------------- /dist/static/admin/img/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2014 Code Charm Ltd 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of 6 | this software and associated documentation files (the "Software"), to deal in 7 | the Software without restriction, including without limitation the rights to 8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 9 | the Software, and to permit persons to whom the Software is furnished to do so, 10 | 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, FITNESS 17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /dist/static/admin/img/README.txt: -------------------------------------------------------------------------------- 1 | All icons are taken from Font Awesome (http://fontawesome.io/) project. 2 | The Font Awesome font is licensed under the SIL OFL 1.1: 3 | - http://scripts.sil.org/OFL 4 | 5 | SVG icons source: https://github.com/encharm/Font-Awesome-SVG-PNG 6 | Font-Awesome-SVG-PNG is licensed under the MIT license (see file license 7 | in current folder). 8 | -------------------------------------------------------------------------------- /dist/static/admin/img/calendar-icons.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /dist/static/admin/img/gis/move_vertex_off.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /dist/static/admin/img/gis/move_vertex_on.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /dist/static/admin/img/icon-addlink.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /dist/static/admin/img/icon-alert.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /dist/static/admin/img/icon-calendar.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /dist/static/admin/img/icon-changelink.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /dist/static/admin/img/icon-clock.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /dist/static/admin/img/icon-deletelink.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /dist/static/admin/img/icon-no.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /dist/static/admin/img/icon-unknown-alt.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /dist/static/admin/img/icon-unknown.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /dist/static/admin/img/icon-yes.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /dist/static/admin/img/inline-delete.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /dist/static/admin/img/search.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /dist/static/admin/img/sorting-icons.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /dist/static/admin/img/tooltag-add.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /dist/static/admin/img/tooltag-arrowright.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /dist/static/admin/js/cancel.js: -------------------------------------------------------------------------------- 1 | (function($) { 2 | 'use strict'; 3 | $(function() { 4 | $('.cancel-link').click(function(e) { 5 | e.preventDefault(); 6 | window.history.back(); 7 | }); 8 | }); 9 | })(django.jQuery); 10 | -------------------------------------------------------------------------------- /dist/static/admin/js/change_form.js: -------------------------------------------------------------------------------- 1 | /*global showAddAnotherPopup, showRelatedObjectLookupPopup showRelatedObjectPopup updateRelatedObjectLinks*/ 2 | 3 | (function($) { 4 | 'use strict'; 5 | $(document).ready(function() { 6 | var modelName = $('#django-admin-form-add-constants').data('modelName'); 7 | $('body').on('click', '.add-another', function(e) { 8 | e.preventDefault(); 9 | var event = $.Event('django:add-another-related'); 10 | $(this).trigger(event); 11 | if (!event.isDefaultPrevented()) { 12 | showAddAnotherPopup(this); 13 | } 14 | }); 15 | 16 | if (modelName) { 17 | $('form#' + modelName + '_form :input:visible:enabled:first').focus(); 18 | } 19 | }); 20 | })(django.jQuery); 21 | -------------------------------------------------------------------------------- /dist/static/admin/js/collapse.js: -------------------------------------------------------------------------------- 1 | /*global gettext*/ 2 | (function($) { 3 | 'use strict'; 4 | $(document).ready(function() { 5 | // Add anchor tag for Show/Hide link 6 | $("fieldset.collapse").each(function(i, elem) { 7 | // Don't hide if fields in this fieldset have errors 8 | if ($(elem).find("div.errors").length === 0) { 9 | $(elem).addClass("collapsed").find("h2").first().append(' (' + gettext("Show") + 11 | ')'); 12 | } 13 | }); 14 | // Add toggle to anchor tag 15 | $("fieldset.collapse a.collapse-toggle").click(function(ev) { 16 | if ($(this).closest("fieldset").hasClass("collapsed")) { 17 | // Show 18 | $(this).text(gettext("Hide")).closest("fieldset").removeClass("collapsed").trigger("show.fieldset", [$(this).attr("id")]); 19 | } else { 20 | // Hide 21 | $(this).text(gettext("Show")).closest("fieldset").addClass("collapsed").trigger("hide.fieldset", [$(this).attr("id")]); 22 | } 23 | return false; 24 | }); 25 | }); 26 | })(django.jQuery); 27 | -------------------------------------------------------------------------------- /dist/static/admin/js/collapse.min.js: -------------------------------------------------------------------------------- 1 | (function(a){a(document).ready(function(){a("fieldset.collapse").each(function(b,c){0===a(c).find("div.errors").length&&a(c).addClass("collapsed").find("h2").first().append(' ('+gettext("Show")+")")});a("fieldset.collapse a.collapse-toggle").click(function(b){a(this).closest("fieldset").hasClass("collapsed")?a(this).text(gettext("Hide")).closest("fieldset").removeClass("collapsed").trigger("show.fieldset",[a(this).attr("id")]):a(this).text(gettext("Show")).closest("fieldset").addClass("collapsed").trigger("hide.fieldset", 2 | [a(this).attr("id")]);return!1})})})(django.jQuery); 3 | -------------------------------------------------------------------------------- /dist/static/admin/js/jquery.init.js: -------------------------------------------------------------------------------- 1 | /*global django:true, jQuery:false*/ 2 | /* Puts the included jQuery into our own namespace using noConflict and passing 3 | * it 'true'. This ensures that the included jQuery doesn't pollute the global 4 | * namespace (i.e. this preserves pre-existing values for both window.$ and 5 | * window.jQuery). 6 | */ 7 | var django = django || {}; 8 | django.jQuery = jQuery.noConflict(true); 9 | -------------------------------------------------------------------------------- /dist/static/admin/js/popup_response.js: -------------------------------------------------------------------------------- 1 | /*global opener */ 2 | (function() { 3 | 'use strict'; 4 | var initData = JSON.parse(document.getElementById('django-admin-popup-response-constants').dataset.popupResponse); 5 | switch(initData.action) { 6 | case 'change': 7 | opener.dismissChangeRelatedObjectPopup(window, initData.value, initData.obj, initData.new_value); 8 | break; 9 | case 'delete': 10 | opener.dismissDeleteRelatedObjectPopup(window, initData.value); 11 | break; 12 | default: 13 | opener.dismissAddRelatedObjectPopup(window, initData.value, initData.obj); 14 | break; 15 | } 16 | })(); 17 | -------------------------------------------------------------------------------- /dist/static/admin/js/prepopulate.min.js: -------------------------------------------------------------------------------- 1 | (function(c){c.fn.prepopulate=function(e,f,g){return this.each(function(){var a=c(this),b=function(){if(!a.data("_changed")){var b=[];c.each(e,function(a,d){d=c(d);0 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 13 | all 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 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /dist/static/fonts/element-icons.535877f.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-cmdb/cmdb-web/0316b3d408b8067965e16fd72761248e82b25739/dist/static/fonts/element-icons.535877f.woff -------------------------------------------------------------------------------- /dist/static/fonts/element-icons.732389d.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-cmdb/cmdb-web/0316b3d408b8067965e16fd72761248e82b25739/dist/static/fonts/element-icons.732389d.ttf -------------------------------------------------------------------------------- /dist/static/fonts/fontawesome-webfont.674f50d.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-cmdb/cmdb-web/0316b3d408b8067965e16fd72761248e82b25739/dist/static/fonts/fontawesome-webfont.674f50d.eot -------------------------------------------------------------------------------- /dist/static/fonts/fontawesome-webfont.af7ae50.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-cmdb/cmdb-web/0316b3d408b8067965e16fd72761248e82b25739/dist/static/fonts/fontawesome-webfont.af7ae50.woff2 -------------------------------------------------------------------------------- /dist/static/fonts/fontawesome-webfont.b06871f.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-cmdb/cmdb-web/0316b3d408b8067965e16fd72761248e82b25739/dist/static/fonts/fontawesome-webfont.b06871f.ttf -------------------------------------------------------------------------------- /dist/static/fonts/fontawesome-webfont.fee66e7.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-cmdb/cmdb-web/0316b3d408b8067965e16fd72761248e82b25739/dist/static/fonts/fontawesome-webfont.fee66e7.woff -------------------------------------------------------------------------------- /dist/static/js/11.5922e719e8b9319a4e2c.js: -------------------------------------------------------------------------------- 1 | webpackJsonp([11],{YoAx:function(e,t){},ggCq:function(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=a("Utg8"),n=a("KcRu"),s={name:"Index",components:{CHeader:i.default,CAside:n.default},mounted:function(){},methods:{process_team:function(){var e=this;localStorage.getItem("current_user_has_team")||this.$c_master.get("user/user/team-name").then(function(t){t.data.team_name?localStorage.setItem("current_user_has_team","1"):e.$notify({title:"警告",message:"您还不属于任何团队 请前往 工单申请->其它->加入团队 申请加入团队 否者将导致部分工单审批无法正常流转",type:"warning",duration:0})})}}},o={render:function(){var e=this.$createElement,t=this._self._c||e;return t("section",{staticStyle:{display:"flex","flex-flow":"column",height:"100%","min-width":"1300px",overflow:"auto"}},[t("header",{staticStyle:{height:"80px"}},[t("c-header")],1),this._v(" "),t("section",{staticStyle:{flex:"1",display:"flex","flex-flow":"row"}},[t("c-aside",{staticStyle:{height:"100%"}}),this._v(" "),t("main",{staticStyle:{height:"100%",flex:"1",overflow:"auto"}},[t("div",{staticStyle:{margin:"20px"}},[t("router-view")],1)])],1)])},staticRenderFns:[]};var r=a("VU/8")(s,o,!1,function(e){a("YoAx")},"data-v-80184ab2",null);t.default=r.exports}}); 2 | //# sourceMappingURL=11.5922e719e8b9319a4e2c.js.map -------------------------------------------------------------------------------- /dist/static/js/14.bf640dda12084e5c88e4.js: -------------------------------------------------------------------------------- 1 | webpackJsonp([14],{Aw5E:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i={render:function(){var e=this.$createElement,t=this._self._c||e;return t("div",[this._t("default"),this._v(" "),t("h1",[this._v("Child 1")])],2)},staticRenderFns:[]};var a=n("VU/8")({name:"child1"},i,!1,function(e){n("xMQx")},"data-v-6c12ea22",null);t.default=a.exports},xMQx:function(e,t){}}); 2 | //# sourceMappingURL=14.bf640dda12084e5c88e4.js.map -------------------------------------------------------------------------------- /dist/static/js/15.b3d65c82ebaa949ec6c8.js: -------------------------------------------------------------------------------- 1 | webpackJsonp([15],{"7p0N":function(e,o,n){"use strict";Object.defineProperty(o,"__esModule",{value:!0});var t=n("frb6");n("7+uW").default.component("Test6",t.default);var d={methods:{on_click:function(){console.log("on_click")}}},l={render:function(){var e=this,o=e.$createElement,n=e._self._c||o;return n("div",[n("el-dropdown",[n("span",{staticClass:"el-dropdown-link"},[e._v("\n 下拉菜单"),n("i",{staticClass:"el-icon-arrow-down el-icon--right"})]),e._v(" "),n("el-dropdown-menu",{attrs:{slot:"dropdown"},slot:"dropdown"},[n("el-dropdown-item",[e._v("黄金糕")]),e._v(" "),n("el-dropdown-item",[e._v("狮子头")]),e._v(" "),n("el-dropdown-item",{on:{click:e.on_click}},[e._v("螺蛳粉")]),e._v(" "),n("el-dropdown-item",{attrs:{disabled:""}},[e._v("双皮奶")]),e._v(" "),n("el-dropdown-item",{attrs:{divided:""}},[e._v("蚵仔煎")])],1)],1)],1)},staticRenderFns:[]};var r=n("VU/8")(d,l,!1,function(e){n("Zk8R")},"data-v-669565e9",null);o.default=r.exports},Zk8R:function(e,o){}}); 2 | //# sourceMappingURL=15.b3d65c82ebaa949ec6c8.js.map -------------------------------------------------------------------------------- /dist/static/js/17.d1a4c6c0730c30bd704c.js: -------------------------------------------------------------------------------- 1 | webpackJsonp([17],{Gh4l:function(e,t){},Ry5Y:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r={render:function(){var e=this.$createElement,t=this._self._c||e;return t("div",{staticStyle:{width:"460px",margin:"30vh auto auto"}},[t("router-view")],1)},staticRenderFns:[]};var a=n("VU/8")({name:"user"},r,!1,function(e){n("Gh4l")},"data-v-5bfae116",null);t.default=a.exports}}); 2 | //# sourceMappingURL=17.d1a4c6c0730c30bd704c.js.map -------------------------------------------------------------------------------- /dist/static/js/20.65ab3f66920db2f63f27.js: -------------------------------------------------------------------------------- 1 | webpackJsonp([20],{EHcN:function(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var s={data:function(){return console.log("this.props.data:",this.data),{is_visible:!0,ddd:[{name:"zhangsan"}]}},props:["data","source"],mounted:function(){console.log("mounted"),console.log("data:",this.data),console.log("table_data:",this.table_data)},methods:{on_close:function(){this.$el.parentNode.removeChild(this.$el),this.$destroy()}}},n={render:function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("el-dialog",{attrs:{width:"900px",title:e.data._index+" "+e.data._id+" 详细信息",visible:e.is_visible},on:{"update:visible":function(t){e.is_visible=t},close:e.on_close}},[a("div",[a("span",{staticClass:"label"},[e._v("创建者:")]),e._v(e._s(e.data._source["S-creator"])+"\n ")]),e._v(" "),a("div",[a("span",{staticClass:"label"},[e._v("创建时间:")]),e._v(e._s(e.data._source["S-creation-time"])+"\n ")]),e._v(" "),a("div",[a("span",{staticClass:"label"},[e._v("删除者:")]),e._v(e._s(e.data._source["S-delete-people"])+"\n ")]),e._v(" "),a("div",[a("span",{staticClass:"label"},[e._v("删除时间:")]),e._v(e._s(e.data._source["S-delete-time"])+"\n ")]),e._v(" "),e._l(e.data._source,function(t,s,n){return"S"!=s[0]?a("div",{key:n},[a("span",{staticClass:"label"},[e._v(e._s(s)+":")]),e._v(e._s(t)+"\n ")]):e._e()})],2)},staticRenderFns:[]};var i=a("VU/8")(s,n,!1,function(e){a("GdLW")},"data-v-13592fb9",null);t.default=i.exports},GdLW:function(e,t){}}); 2 | //# sourceMappingURL=20.65ab3f66920db2f63f27.js.map -------------------------------------------------------------------------------- /dist/static/js/23.f62c041a210451f272a7.js: -------------------------------------------------------------------------------- 1 | webpackJsonp([23],{YrTf:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i={render:function(){this.$createElement;this._self._c;return this._m(0)},staticRenderFns:[function(){var e=this.$createElement,t=this._self._c||e;return t("div",[t("p",[this._v("dialog2")])])}]};var r=n("VU/8")({name:"dialog2"},i,!1,function(e){n("pgyX")},"data-v-0fde6146",null);t.default=r.exports},pgyX:function(e,t){}}); 2 | //# sourceMappingURL=23.f62c041a210451f272a7.js.map -------------------------------------------------------------------------------- /dist/static/js/27.2ac96b710145be684bd0.js: -------------------------------------------------------------------------------- 1 | webpackJsonp([27],{uRvg:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var p={name:"ElSelectDropdown",componentName:"ElSelectDropdown",mixins:[n("lpOu").a],props:{placement:{default:"bottom-start"},boundariesPadding:{default:0},popperOptions:{default:function(){return{gpuAcceleration:!1}}},visibleArrow:{default:!0},appendToBody:{type:Boolean,default:!0}},data:function(){return{minWidth:""}},computed:{popperClass:function(){return this.$parent.popperClass}},watch:{"$parent.inputWidth":function(){this.minWidth=this.$parent.$el.getBoundingClientRect().width+"px"}},mounted:function(){var e=this;this.referenceElm=this.$parent.$refs.reference.$el,this.$parent.popperElm=this.popperElm=this.$el,this.$on("updatePopper",function(){e.$parent.visible&&e.updatePopper()}),this.$on("destroyPopper",this.destroyPopper)}},i={render:function(){var e=this.$createElement;return(this._self._c||e)("div",{staticClass:"el-select-dropdown el-popper",class:[{"is-multiple":this.$parent.multiple},this.popperClass],style:{minWidth:this.minWidth}},[this._t("default")],2)},staticRenderFns:[]},r=n("VU/8")(p,i,!1,null,null,null);t.default=r.exports}}); 2 | //# sourceMappingURL=27.2ac96b710145be684bd0.js.map -------------------------------------------------------------------------------- /dist/static/js/28.c0591bc9a51f70533afb.js: -------------------------------------------------------------------------------- 1 | webpackJsonp([28],{eNJv:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var s={mixins:[i("ufP2").a],name:"ElOptionGroup",componentName:"ElOptionGroup",props:{label:String,disabled:{type:Boolean,default:!1}},data:function(){return{visible:!0}},watch:{disabled:function(e){this.broadcast("ElOption","handleGroupDisabled",e)}},methods:{queryChange:function(){this.visible=this.$children&&Array.isArray(this.$children)&&this.$children.some(function(e){return!0===e.visible})}},created:function(){this.$on("queryChange",this.queryChange)},mounted:function(){this.disabled&&this.broadcast("ElOption","handleGroupDisabled",this.disabled)}},l={render:function(){var e=this.$createElement,t=this._self._c||e;return t("ul",{directives:[{name:"show",rawName:"v-show",value:this.visible,expression:"visible"}],staticClass:"el-select-group__wrap"},[t("li",{staticClass:"el-select-group__title"},[this._v(this._s(this.label))]),this._v(" "),t("li",[t("ul",{staticClass:"el-select-group"},[this._t("default")],2)])])},staticRenderFns:[]},n=i("VU/8")(s,l,!1,null,null,null);t.default=n.exports}}); 2 | //# sourceMappingURL=28.c0591bc9a51f70533afb.js.map -------------------------------------------------------------------------------- /dist/static/js/29.e8687c7b1b2dbb298b31.js: -------------------------------------------------------------------------------- 1 | webpackJsonp([29],{PXjp:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var s={mixins:[i("ufP2").a],name:"ElOptionGroup",componentName:"ElOptionGroup",props:{label:String,disabled:{type:Boolean,default:!1}},data:function(){return{visible:!0}},watch:{disabled:function(e){this.broadcast("ElOption","handleGroupDisabled",e)}},methods:{queryChange:function(){this.visible=this.$children&&Array.isArray(this.$children)&&this.$children.some(function(e){return!0===e.visible})}},created:function(){this.$on("queryChange",this.queryChange)},mounted:function(){this.disabled&&this.broadcast("ElOption","handleGroupDisabled",this.disabled)}},l={render:function(){var e=this.$createElement,t=this._self._c||e;return t("ul",{directives:[{name:"show",rawName:"v-show",value:this.visible,expression:"visible"}],staticClass:"el-select-group__wrap"},[t("li",{staticClass:"el-select-group__title"},[this._v(this._s(this.label))]),this._v(" "),t("li",[t("ul",{staticClass:"el-select-group"},[this._t("default")],2)])])},staticRenderFns:[]},n=i("VU/8")(s,l,!1,null,null,null);t.default=n.exports}}); 2 | //# sourceMappingURL=29.e8687c7b1b2dbb298b31.js.map -------------------------------------------------------------------------------- /dist/static/js/3.11cb5c52477d4ef68429.js: -------------------------------------------------------------------------------- 1 | webpackJsonp([3],{HdYL:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var a=n("7+uW"),i=(n("gyMJ"),{name:"data-item",props:["data"],methods:{on_show_detail:function(e){console.log("on_show_detail.data:",e);var t=new(a.default.component("DeletedDataDetail"))({propsData:{data:e,source:e._source}});t.$mount(),this.$el.appendChild(t.$el)}}}),l={render:function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("ul",{staticStyle:{"white-space":"nowrap",margin:"0px",padding:"0px"}},[n("li",{staticStyle:{display:"inline-block",border:"1px solid #E4E7ED",padding:"9px"}},[n("el-button",{staticStyle:{padding:"0px"},attrs:{icon:"el-icon-view"},on:{click:function(t){e.on_show_detail(e.data)}}})],1),e._v(" "),e._l(e.data._source,function(t,a,i){return"S"!=a[0]?n("li",{key:i,staticStyle:{display:"inline-block",border:"1px solid #E4E7ED",padding:"0 12px","font-size":"14px",height:"40px","line-height":"40px"},style:{color:null==t?"#C0C4CC":"#606266"}},[e._v("\n "+e._s(null==t?"null":t)+"\n ")]):e._e()})],2)},staticRenderFns:[]};var o=n("VU/8")(i,l,!1,function(e){n("dCqB")},"data-v-f01096d8",null);t.default=o.exports},dCqB:function(e,t){}}); 2 | //# sourceMappingURL=3.11cb5c52477d4ef68429.js.map -------------------------------------------------------------------------------- /dist/static/js/31.aa0f5f0625b1d976c692.js: -------------------------------------------------------------------------------- 1 | webpackJsonp([31],{"7PrN":function(e,t,o){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n={data:function(){return{dialogVisible:!0}},methods:{handleClose:function(e){this.$confirm("确认关闭?").then(function(t){e()}).catch(function(e){})},do_destory:function(){console.log("do_destory"),this.$el.parentNode.removeChild(this.$el),this.$destroy()}},destroyed:function(){console.log("destroyed()")}},i={render:function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("el-dialog",{attrs:{title:"提示",visible:e.dialogVisible,width:"30%","before-close":e.handleClose},on:{"update:visible":function(t){e.dialogVisible=t}}},[o("span",[e._v("这是一段信息")]),e._v(" "),o("span",{staticClass:"dialog-footer",attrs:{slot:"footer"},slot:"footer"},[o("el-button",{on:{click:function(t){e.do_destory()}}},[e._v("取 消")]),e._v(" "),o("el-button",{attrs:{type:"primary"},on:{click:function(t){e.dialogVisible=!1}}},[e._v("确 定")])],1)])},staticRenderFns:[]},l=o("VU/8")(n,i,!1,null,null,null);t.default=l.exports}}); 2 | //# sourceMappingURL=31.aa0f5f0625b1d976c692.js.map -------------------------------------------------------------------------------- /dist/static/js/33.75ec3191321ed9bd9479.js: -------------------------------------------------------------------------------- 1 | webpackJsonp([33],{ni3Y:function(e,a,t){"use strict";Object.defineProperty(a,"__esModule",{value:!0});var l={render:function(){var e=this,a=e.$createElement,t=e._self._c||a;return t("div",[t("el-table",{staticStyle:{width:"100%"},attrs:{data:e.tableData,fit:""}},[t("el-table-column",{attrs:{prop:"date",label:"日期"}}),e._v(" "),t("el-table-column",{attrs:{prop:"name",label:"姓名"}}),e._v(" "),t("el-table-column",{attrs:{prop:"address",label:"地址"}})],1),e._v(" "),e._l(["zhangsan","lisi"],function(a,l){return t("div",{key:l},[e._v("\n "+e._s(l)+e._s(a)+"\n ")])}),e._v(" "),t("el-form",[t("el-form-item",{attrs:{label:"ssss",required:e.fit}},[t("el-input",{model:{value:e.value,callback:function(a){e.value=a},expression:"value"}})],1)],1)],2)},staticRenderFns:[]},n=t("VU/8")({data:function(){return{fit:!0,value:"",tableData:[{date:"2016-05-02",name:"王小虎",address:"上海市普陀区金沙江路 1518 弄"},{date:"2016-05-04",name:"王小虎",address:"上海市普陀区金沙江路 1517 弄"},{date:"2016-05-01",name:"王小虎",address:"上海市普陀区金沙江路 1519 弄"},{date:"2016-05-03",name:"王小虎",address:"上海市普陀区金沙江路 1516 弄"}]}}},l,!1,null,null,null);a.default=n.exports}}); 2 | //# sourceMappingURL=33.75ec3191321ed9bd9479.js.map -------------------------------------------------------------------------------- /dist/static/js/35.eee041cce1bdedfd66fc.js: -------------------------------------------------------------------------------- 1 | webpackJsonp([35],{Dh2E:function(e,l,a){"use strict";Object.defineProperty(l,"__esModule",{value:!0});var t={render:function(){var e=this,l=e.$createElement,a=e._self._c||l;return a("div",[a("c-select",{attrs:{multiple:"",filterable:"","allow-create":"","default-first-option":"",placeholder:"请选择文章标签"},model:{value:e.value10,callback:function(l){e.value10=l},expression:"value10"}})],1)},staticRenderFns:[]},n=a("VU/8")({data:function(){return{options5:[{value:"HTML",label:"HTML"},{value:"CSS",label:"CSS"},{value:"JavaScript",label:"JavaScript"}],value10:[]}},components:{}},t,!1,null,null,null);l.default=n.exports}}); 2 | //# sourceMappingURL=35.eee041cce1bdedfd66fc.js.map -------------------------------------------------------------------------------- /dist/static/js/36.6d0fa538e70a1f582013.js: -------------------------------------------------------------------------------- 1 | webpackJsonp([36],{dcNB:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a={render:function(){var t=this,e=t.$createElement,i=t._self._c||e;return t.item.children?i("el-submenu",{attrs:{index:t.item.name}},[i("template",{slot:"title"},[i("i",{staticClass:"fa",class:t.item.meta.icon,staticStyle:{"margin-right":"5px"}}),t._v(" "),i("span",{staticStyle:{display:"inline-block"}},[t._v(t._s(t.item.meta.name))])]),t._v(" "),t._l(t.item.children,function(e,a){return i("el-menu-item",{key:a,attrs:{index:e.name}},[i("i",{staticClass:"fa",class:e.meta.icon,staticStyle:{"margin-right":"5px"}}),t._v(" "),i("span",{staticStyle:{display:"inline-block",width:"140px"},attrs:{slot:"title"},slot:"title"},[t._v(t._s(e.meta.name))])])})],2):i("el-menu-item",{attrs:{index:t.item.name}},[i("i",{staticClass:"fa",class:t.item.meta.icon,staticStyle:{"margin-right":"5px"}}),t._v(" "),i("span",{staticStyle:{display:"inline-block"},attrs:{slot:"title"},slot:"title"},[t._v(t._s(t.item.meta.name))])])},staticRenderFns:[]},s=i("VU/8")({props:["item"]},a,!1,null,null,null);e.default=s.exports}}); 2 | //# sourceMappingURL=36.6d0fa538e70a1f582013.js.map -------------------------------------------------------------------------------- /dist/static/js/4.ce9e38e7f2112f155b1f.js: -------------------------------------------------------------------------------- 1 | webpackJsonp([4],{Ionq:function(t,a,e){"use strict";Object.defineProperty(a,"__esModule",{value:!0});var s={data:function(){return console.log("this.props.data:",this.data),{is_visible:!0,ddd:[{name:"zhangsan"}]}},props:["data","source"],mounted:function(){console.log("mounted"),console.log("data:",this.data),console.log("table_data:",this.table_data)},methods:{on_close:function(){this.$el.parentNode.removeChild(this.$el),this.$destroy()}}},i={render:function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("el-dialog",{attrs:{width:"800px",title:t.data._index+" "+t.data._id+" 详细信息",visible:t.is_visible},on:{"update:visible":function(a){t.is_visible=a},close:t.on_close}},[e("div",[e("span",{staticClass:"label"},[t._v("创建者:")]),t._v(t._s(t.data._source["S-creator"])+"\n ")]),t._v(" "),e("div",[e("span",{staticClass:"label"},[t._v("创建时间:")]),t._v(t._s(t.data._source["S-creation-time"])+"\n ")]),t._v(" "),e("div",[e("span",{staticClass:"label"},[t._v("最后修改人:")]),t._v(t._s(t.data._source["S-last-modified"])+"\n ")]),t._v(" "),t._l(t.data._source,function(a,s,i){return"S"!=s[0]?e("div",{key:i},[e("span",{staticClass:"label"},[t._v(t._s(s)+":")]),t._v(t._s(a)+"\n ")]):t._e()})],2)},staticRenderFns:[]};var n=e("VU/8")(s,i,!1,function(t){e("iHo7")},"data-v-ea1cd0a2",null);a.default=n.exports},iHo7:function(t,a){}}); 2 | //# sourceMappingURL=4.ce9e38e7f2112f155b1f.js.map -------------------------------------------------------------------------------- /dist/static/js/6.d51738118a2a31c6d848.js: -------------------------------------------------------------------------------- 1 | webpackJsonp([6],{sMOm:function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var a={render:function(){var e=this,n=e.$createElement,t=e._self._c||n;return t("div",[t("el-input",{attrs:{placeholder:"请输入内容"},model:{value:e.input4,callback:function(n){e.input4=n},expression:"input4"}},[t("el-button",{attrs:{slot:"append",icon:"el-icon-search"},slot:"append"})],1)],1)},staticRenderFns:[]};var c=t("VU/8")({name:"Main"},a,!1,function(e){t("vGYZ")},"data-v-aa0f1f0c",null);n.default=c.exports},vGYZ:function(e,n){}}); 2 | //# sourceMappingURL=6.d51738118a2a31c6d848.js.map -------------------------------------------------------------------------------- /dist/static/js/9.d6738f4291fb740b9182.js: -------------------------------------------------------------------------------- 1 | webpackJsonp([9],{"39DD":function(e,t){},QScC:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i,l=n("bOdI"),s=n.n(l),o=n("IVjn"),a=(i={name:"Aside",data:function(){return{is_collapse:!0,api_url:window.location.protocol+"//"+window.location.host+"/api-docs"}},methods:function(){}},s()(i,"methods",{on_select:function(e,t){this.$router.push({name:e})}}),s()(i,"computed",{}),s()(i,"components",{CMenuItem:o.default}),i),c={render:function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticStyle:{height:"100%",display:"flex"}},[n("el-menu",{staticClass:"el-menu-vertical-demo",staticStyle:{height:"100%",display:"inline-block"},attrs:{"default-active":e.$route.name,collapse:e.is_collapse},on:{select:e.on_select}},e._l(e.$store.state.filtered_menu,function(e,t){return n("c-menu-item",{key:t,attrs:{item:e}})})),e._v(" "),n("div",{staticStyle:{height:"100%",display:"flex","align-items":"center"}},[n("i",{staticClass:"fa fa-outdent",class:{"fa-rotate-180":e.is_collapse},staticStyle:{color:"#909399",cursor:"pointer"},on:{click:function(t){e.is_collapse=!e.is_collapse}}})])],1)},staticRenderFns:[]};var r=n("VU/8")(a,c,!1,function(e){n("39DD")},null,null);t.default=r.exports}}); 2 | //# sourceMappingURL=9.d6738f4291fb740b9182.js.map -------------------------------------------------------------------------------- /dist/static/rest_framework/css/default.css: -------------------------------------------------------------------------------- 1 | 2 | /* The navbar is fixed at >= 980px wide, so add padding to the body to prevent 3 | content running up underneath it. */ 4 | 5 | h1 { 6 | font-weight: 300; 7 | } 8 | 9 | h2, h3 { 10 | font-weight: 300; 11 | } 12 | 13 | .resource-description, .response-info { 14 | margin-bottom: 2em; 15 | } 16 | 17 | .version:before { 18 | content: "v"; 19 | opacity: 0.6; 20 | padding-right: 0.25em; 21 | } 22 | 23 | .version { 24 | font-size: 70%; 25 | } 26 | 27 | .format-option { 28 | font-family: Menlo, Consolas, "Andale Mono", "Lucida Console", monospace; 29 | } 30 | 31 | .button-form { 32 | float: right; 33 | margin-right: 1em; 34 | } 35 | 36 | td.nested { 37 | padding: 0 !important; 38 | } 39 | 40 | td.nested > table { 41 | margin: 0; 42 | } 43 | 44 | form select, form input, form textarea { 45 | width: 90%; 46 | } 47 | 48 | form select[multiple] { 49 | height: 150px; 50 | } 51 | 52 | /* To allow tooltips to work on disabled elements */ 53 | .disabled-tooltip-shield { 54 | position: absolute; 55 | top: 0; 56 | right: 0; 57 | bottom: 0; 58 | left: 0; 59 | } 60 | 61 | .errorlist { 62 | margin-top: 0.5em; 63 | } 64 | 65 | pre { 66 | overflow: auto; 67 | word-wrap: normal; 68 | white-space: pre; 69 | font-size: 12px; 70 | } 71 | 72 | .page-header { 73 | border-bottom: none; 74 | padding-bottom: 0px; 75 | } 76 | 77 | #filtersModal form input[type=submit] { 78 | width: auto; 79 | } 80 | 81 | #filtersModal .modal-body h2 { 82 | margin-top: 0 83 | } 84 | -------------------------------------------------------------------------------- /dist/static/rest_framework/css/prettify.css: -------------------------------------------------------------------------------- 1 | .com { color: #93a1a1; } 2 | .lit { color: #195f91; } 3 | .pun, .opn, .clo { color: #93a1a1; } 4 | .fun { color: #dc322f; } 5 | .str, .atv { color: #D14; } 6 | .kwd, .prettyprint .tag { color: #1e347b; } 7 | .typ, .atn, .dec, .var { color: teal; } 8 | .pln { color: #48484c; } 9 | 10 | .prettyprint { 11 | padding: 8px; 12 | background-color: #f7f7f9; 13 | border: 1px solid #e1e1e8; 14 | } 15 | .prettyprint.linenums { 16 | -webkit-box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0; 17 | -moz-box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0; 18 | box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0; 19 | } 20 | 21 | /* Specify class=linenums on a pre to get line numbering */ 22 | ol.linenums { 23 | margin: 0 0 0 33px; /* IE indents via margin-left */ 24 | } 25 | ol.linenums li { 26 | padding-left: 12px; 27 | color: #bebec5; 28 | line-height: 20px; 29 | text-shadow: 0 1px 0 #fff; 30 | } -------------------------------------------------------------------------------- /dist/static/rest_framework/docs/css/jquery.json-view.min.css: -------------------------------------------------------------------------------- 1 | .json-view{position:relative} 2 | .json-view .collapser{width:20px;height:18px;display:block;position:absolute;left:-1.7em;top:-.2em;z-index:5;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAD1JREFUeNpiYGBgOADE%2F3Hgw0DM4IRHgSsDFOzFInmMAQnY49ONzZRjDFiADT7dMLALiE8y4AGW6LoBAgwAuIkf%2F%2FB7O9sAAAAASUVORK5CYII%3D);background-repeat:no-repeat;background-position:center center;opacity:.5;cursor:pointer} 3 | .json-view .collapsed{-ms-transform:rotate(-90deg);-moz-transform:rotate(-90deg);-khtml-transform:rotate(-90deg);-webkit-transform:rotate(-90deg);-o-transform:rotate(-90deg);transform:rotate(-90deg)} 4 | .json-view .bl{display:block;padding-left:20px;margin-left:-20px;position:relative} 5 | .json-view{font-family:monospace} 6 | .json-view ul{list-style-type:none;padding-left:2em;border-left:1px dotted;margin:.3em} 7 | .json-view ul li{position:relative} 8 | .json-view .comments,.json-view .dots{display:none;-moz-user-select:none;-ms-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;user-select:none} 9 | .json-view .comments{padding-left:.8em;font-style:italic;color:#888} 10 | .json-view .bool,.json-view .null,.json-view .num,.json-view .undef{font-weight:700;color:#1A01CC} 11 | .json-view .str{color:#800} -------------------------------------------------------------------------------- /dist/static/rest_framework/docs/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-cmdb/cmdb-web/0316b3d408b8067965e16fd72761248e82b25739/dist/static/rest_framework/docs/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /dist/static/rest_framework/docs/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-cmdb/cmdb-web/0316b3d408b8067965e16fd72761248e82b25739/dist/static/rest_framework/docs/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /dist/static/rest_framework/docs/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-cmdb/cmdb-web/0316b3d408b8067965e16fd72761248e82b25739/dist/static/rest_framework/docs/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /dist/static/rest_framework/docs/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-cmdb/cmdb-web/0316b3d408b8067965e16fd72761248e82b25739/dist/static/rest_framework/docs/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /dist/static/rest_framework/docs/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-cmdb/cmdb-web/0316b3d408b8067965e16fd72761248e82b25739/dist/static/rest_framework/docs/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /dist/static/rest_framework/docs/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-cmdb/cmdb-web/0316b3d408b8067965e16fd72761248e82b25739/dist/static/rest_framework/docs/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /dist/static/rest_framework/docs/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-cmdb/cmdb-web/0316b3d408b8067965e16fd72761248e82b25739/dist/static/rest_framework/docs/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /dist/static/rest_framework/docs/img/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-cmdb/cmdb-web/0316b3d408b8067965e16fd72761248e82b25739/dist/static/rest_framework/docs/img/favicon.ico -------------------------------------------------------------------------------- /dist/static/rest_framework/docs/img/grid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-cmdb/cmdb-web/0316b3d408b8067965e16fd72761248e82b25739/dist/static/rest_framework/docs/img/grid.png -------------------------------------------------------------------------------- /dist/static/rest_framework/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-cmdb/cmdb-web/0316b3d408b8067965e16fd72761248e82b25739/dist/static/rest_framework/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /dist/static/rest_framework/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-cmdb/cmdb-web/0316b3d408b8067965e16fd72761248e82b25739/dist/static/rest_framework/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /dist/static/rest_framework/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-cmdb/cmdb-web/0316b3d408b8067965e16fd72761248e82b25739/dist/static/rest_framework/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /dist/static/rest_framework/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-cmdb/cmdb-web/0316b3d408b8067965e16fd72761248e82b25739/dist/static/rest_framework/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /dist/static/rest_framework/img/glyphicons-halflings-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-cmdb/cmdb-web/0316b3d408b8067965e16fd72761248e82b25739/dist/static/rest_framework/img/glyphicons-halflings-white.png -------------------------------------------------------------------------------- /dist/static/rest_framework/img/glyphicons-halflings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-cmdb/cmdb-web/0316b3d408b8067965e16fd72761248e82b25739/dist/static/rest_framework/img/glyphicons-halflings.png -------------------------------------------------------------------------------- /dist/static/rest_framework/img/grid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-cmdb/cmdb-web/0316b3d408b8067965e16fd72761248e82b25739/dist/static/rest_framework/img/grid.png -------------------------------------------------------------------------------- /dist/static/rest_framework/js/default.js: -------------------------------------------------------------------------------- 1 | $(document).ready(function() { 2 | // JSON highlighting. 3 | prettyPrint(); 4 | 5 | // Bootstrap tooltips. 6 | $('.js-tooltip').tooltip({ 7 | delay: 1000, 8 | container: 'body' 9 | }); 10 | 11 | // Deal with rounded tab styling after tab clicks. 12 | $('a[data-toggle="tab"]:first').on('shown', function(e) { 13 | $(e.target).parents('.tabbable').addClass('first-tab-active'); 14 | }); 15 | 16 | $('a[data-toggle="tab"]:not(:first)').on('shown', function(e) { 17 | $(e.target).parents('.tabbable').removeClass('first-tab-active'); 18 | }); 19 | 20 | $('a[data-toggle="tab"]').click(function() { 21 | document.cookie = "tabstyle=" + this.name + "; path=/"; 22 | }); 23 | 24 | // Store tab preference in cookies & display appropriate tab on load. 25 | var selectedTab = null; 26 | var selectedTabName = getCookie('tabstyle'); 27 | 28 | if (selectedTabName) { 29 | selectedTabName = selectedTabName.replace(/[^a-z-]/g, ''); 30 | } 31 | 32 | if (selectedTabName) { 33 | selectedTab = $('.form-switcher a[name=' + selectedTabName + ']'); 34 | } 35 | 36 | if (selectedTab && selectedTab.length > 0) { 37 | // Display whichever tab is selected. 38 | selectedTab.tab('show'); 39 | } else { 40 | // If no tab selected, display rightmost tab. 41 | $('.form-switcher a:first').tab('show'); 42 | } 43 | 44 | $(window).load(function() { 45 | $('#errorModal').modal('show'); 46 | }); 47 | }); 48 | -------------------------------------------------------------------------------- /dist/static/rest_framework_docs/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-cmdb/cmdb-web/0316b3d408b8067965e16fd72761248e82b25739/dist/static/rest_framework_docs/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /dist/static/rest_framework_docs/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-cmdb/cmdb-web/0316b3d408b8067965e16fd72761248e82b25739/dist/static/rest_framework_docs/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /dist/static/rest_framework_docs/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-cmdb/cmdb-web/0316b3d408b8067965e16fd72761248e82b25739/dist/static/rest_framework_docs/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /dist/static/rest_framework_docs/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-cmdb/cmdb-web/0316b3d408b8067965e16fd72761248e82b25739/dist/static/rest_framework_docs/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /dist/static/rest_framework_docs/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-cmdb/cmdb-web/0316b3d408b8067965e16fd72761248e82b25739/dist/static/rest_framework_docs/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /dist/static/rest_framework_docs/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-cmdb/cmdb-web/0316b3d408b8067965e16fd72761248e82b25739/dist/static/rest_framework_docs/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /dist/static/rest_framework_docs/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-cmdb/cmdb-web/0316b3d408b8067965e16fd72761248e82b25739/dist/static/rest_framework_docs/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /dist/static/rest_framework_docs/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-cmdb/cmdb-web/0316b3d408b8067965e16fd72761248e82b25739/dist/static/rest_framework_docs/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /dist/static/rest_framework_docs/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-cmdb/cmdb-web/0316b3d408b8067965e16fd72761248e82b25739/dist/static/rest_framework_docs/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /django-static/admin/css/dashboard.css: -------------------------------------------------------------------------------- 1 | /* DASHBOARD */ 2 | 3 | .dashboard .module table th { 4 | width: 100%; 5 | } 6 | 7 | .dashboard .module table td { 8 | white-space: nowrap; 9 | } 10 | 11 | .dashboard .module table td a { 12 | display: block; 13 | padding-right: .6em; 14 | } 15 | 16 | /* RECENT ACTIONS MODULE */ 17 | 18 | .module ul.actionlist { 19 | margin-left: 0; 20 | } 21 | 22 | ul.actionlist li { 23 | list-style-type: none; 24 | overflow: hidden; 25 | text-overflow: ellipsis; 26 | -o-text-overflow: ellipsis; 27 | } 28 | -------------------------------------------------------------------------------- /django-static/admin/css/fonts.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'Roboto'; 3 | src: url('../fonts/Roboto-Bold-webfont.woff'); 4 | font-weight: 700; 5 | font-style: normal; 6 | } 7 | 8 | @font-face { 9 | font-family: 'Roboto'; 10 | src: url('../fonts/Roboto-Regular-webfont.woff'); 11 | font-weight: 400; 12 | font-style: normal; 13 | } 14 | 15 | @font-face { 16 | font-family: 'Roboto'; 17 | src: url('../fonts/Roboto-Light-webfont.woff'); 18 | font-weight: 300; 19 | font-style: normal; 20 | } 21 | -------------------------------------------------------------------------------- /django-static/admin/fonts/README.txt: -------------------------------------------------------------------------------- 1 | Roboto webfont source: https://www.google.com/fonts/specimen/Roboto 2 | Weights used in this project: Light (300), Regular (400), Bold (700) 3 | -------------------------------------------------------------------------------- /django-static/admin/fonts/Roboto-Bold-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-cmdb/cmdb-web/0316b3d408b8067965e16fd72761248e82b25739/django-static/admin/fonts/Roboto-Bold-webfont.woff -------------------------------------------------------------------------------- /django-static/admin/fonts/Roboto-Light-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-cmdb/cmdb-web/0316b3d408b8067965e16fd72761248e82b25739/django-static/admin/fonts/Roboto-Light-webfont.woff -------------------------------------------------------------------------------- /django-static/admin/fonts/Roboto-Regular-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-cmdb/cmdb-web/0316b3d408b8067965e16fd72761248e82b25739/django-static/admin/fonts/Roboto-Regular-webfont.woff -------------------------------------------------------------------------------- /django-static/admin/img/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2014 Code Charm Ltd 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of 6 | this software and associated documentation files (the "Software"), to deal in 7 | the Software without restriction, including without limitation the rights to 8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 9 | the Software, and to permit persons to whom the Software is furnished to do so, 10 | 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, FITNESS 17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /django-static/admin/img/README.txt: -------------------------------------------------------------------------------- 1 | All icons are taken from Font Awesome (http://fontawesome.io/) project. 2 | The Font Awesome font is licensed under the SIL OFL 1.1: 3 | - http://scripts.sil.org/OFL 4 | 5 | SVG icons source: https://github.com/encharm/Font-Awesome-SVG-PNG 6 | Font-Awesome-SVG-PNG is licensed under the MIT license (see file license 7 | in current folder). 8 | -------------------------------------------------------------------------------- /django-static/admin/img/calendar-icons.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /django-static/admin/img/gis/move_vertex_off.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /django-static/admin/img/gis/move_vertex_on.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /django-static/admin/img/icon-addlink.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /django-static/admin/img/icon-alert.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /django-static/admin/img/icon-calendar.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /django-static/admin/img/icon-changelink.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /django-static/admin/img/icon-clock.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /django-static/admin/img/icon-deletelink.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /django-static/admin/img/icon-no.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /django-static/admin/img/icon-unknown-alt.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /django-static/admin/img/icon-unknown.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /django-static/admin/img/icon-yes.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /django-static/admin/img/inline-delete.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /django-static/admin/img/search.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /django-static/admin/img/sorting-icons.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /django-static/admin/img/tooltag-add.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /django-static/admin/img/tooltag-arrowright.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /django-static/admin/js/cancel.js: -------------------------------------------------------------------------------- 1 | (function($) { 2 | 'use strict'; 3 | $(function() { 4 | $('.cancel-link').click(function(e) { 5 | e.preventDefault(); 6 | window.history.back(); 7 | }); 8 | }); 9 | })(django.jQuery); 10 | -------------------------------------------------------------------------------- /django-static/admin/js/change_form.js: -------------------------------------------------------------------------------- 1 | /*global showAddAnotherPopup, showRelatedObjectLookupPopup showRelatedObjectPopup updateRelatedObjectLinks*/ 2 | 3 | (function($) { 4 | 'use strict'; 5 | $(document).ready(function() { 6 | var modelName = $('#django-admin-form-add-constants').data('modelName'); 7 | $('body').on('click', '.add-another', function(e) { 8 | e.preventDefault(); 9 | var event = $.Event('django:add-another-related'); 10 | $(this).trigger(event); 11 | if (!event.isDefaultPrevented()) { 12 | showAddAnotherPopup(this); 13 | } 14 | }); 15 | 16 | if (modelName) { 17 | $('form#' + modelName + '_form :input:visible:enabled:first').focus(); 18 | } 19 | }); 20 | })(django.jQuery); 21 | -------------------------------------------------------------------------------- /django-static/admin/js/collapse.js: -------------------------------------------------------------------------------- 1 | /*global gettext*/ 2 | (function($) { 3 | 'use strict'; 4 | $(document).ready(function() { 5 | // Add anchor tag for Show/Hide link 6 | $("fieldset.collapse").each(function(i, elem) { 7 | // Don't hide if fields in this fieldset have errors 8 | if ($(elem).find("div.errors").length === 0) { 9 | $(elem).addClass("collapsed").find("h2").first().append(' (' + gettext("Show") + 11 | ')'); 12 | } 13 | }); 14 | // Add toggle to anchor tag 15 | $("fieldset.collapse a.collapse-toggle").click(function(ev) { 16 | if ($(this).closest("fieldset").hasClass("collapsed")) { 17 | // Show 18 | $(this).text(gettext("Hide")).closest("fieldset").removeClass("collapsed").trigger("show.fieldset", [$(this).attr("id")]); 19 | } else { 20 | // Hide 21 | $(this).text(gettext("Show")).closest("fieldset").addClass("collapsed").trigger("hide.fieldset", [$(this).attr("id")]); 22 | } 23 | return false; 24 | }); 25 | }); 26 | })(django.jQuery); 27 | -------------------------------------------------------------------------------- /django-static/admin/js/collapse.min.js: -------------------------------------------------------------------------------- 1 | (function(a){a(document).ready(function(){a("fieldset.collapse").each(function(b,c){0===a(c).find("div.errors").length&&a(c).addClass("collapsed").find("h2").first().append(' ('+gettext("Show")+")")});a("fieldset.collapse a.collapse-toggle").click(function(b){a(this).closest("fieldset").hasClass("collapsed")?a(this).text(gettext("Hide")).closest("fieldset").removeClass("collapsed").trigger("show.fieldset",[a(this).attr("id")]):a(this).text(gettext("Show")).closest("fieldset").addClass("collapsed").trigger("hide.fieldset", 2 | [a(this).attr("id")]);return!1})})})(django.jQuery); 3 | -------------------------------------------------------------------------------- /django-static/admin/js/jquery.init.js: -------------------------------------------------------------------------------- 1 | /*global django:true, jQuery:false*/ 2 | /* Puts the included jQuery into our own namespace using noConflict and passing 3 | * it 'true'. This ensures that the included jQuery doesn't pollute the global 4 | * namespace (i.e. this preserves pre-existing values for both window.$ and 5 | * window.jQuery). 6 | */ 7 | var django = django || {}; 8 | django.jQuery = jQuery.noConflict(true); 9 | -------------------------------------------------------------------------------- /django-static/admin/js/popup_response.js: -------------------------------------------------------------------------------- 1 | /*global opener */ 2 | (function() { 3 | 'use strict'; 4 | var initData = JSON.parse(document.getElementById('django-admin-popup-response-constants').dataset.popupResponse); 5 | switch(initData.action) { 6 | case 'change': 7 | opener.dismissChangeRelatedObjectPopup(window, initData.value, initData.obj, initData.new_value); 8 | break; 9 | case 'delete': 10 | opener.dismissDeleteRelatedObjectPopup(window, initData.value); 11 | break; 12 | default: 13 | opener.dismissAddRelatedObjectPopup(window, initData.value, initData.obj); 14 | break; 15 | } 16 | })(); 17 | -------------------------------------------------------------------------------- /django-static/admin/js/prepopulate.min.js: -------------------------------------------------------------------------------- 1 | (function(c){c.fn.prepopulate=function(e,f,g){return this.each(function(){var a=c(this),b=function(){if(!a.data("_changed")){var b=[];c.each(e,function(a,d){d=c(d);0 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 13 | all 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 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /django-static/rest_framework/css/prettify.css: -------------------------------------------------------------------------------- 1 | .com { color: #93a1a1; } 2 | .lit { color: #195f91; } 3 | .pun, .opn, .clo { color: #93a1a1; } 4 | .fun { color: #dc322f; } 5 | .str, .atv { color: #D14; } 6 | .kwd, .prettyprint .tag { color: #1e347b; } 7 | .typ, .atn, .dec, .var { color: teal; } 8 | .pln { color: #48484c; } 9 | 10 | .prettyprint { 11 | padding: 8px; 12 | background-color: #f7f7f9; 13 | border: 1px solid #e1e1e8; 14 | } 15 | .prettyprint.linenums { 16 | -webkit-box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0; 17 | -moz-box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0; 18 | box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0; 19 | } 20 | 21 | /* Specify class=linenums on a pre to get line numbering */ 22 | ol.linenums { 23 | margin: 0 0 0 33px; /* IE indents via margin-left */ 24 | } 25 | ol.linenums li { 26 | padding-left: 12px; 27 | color: #bebec5; 28 | line-height: 20px; 29 | text-shadow: 0 1px 0 #fff; 30 | } -------------------------------------------------------------------------------- /django-static/rest_framework/docs/css/jquery.json-view.min.css: -------------------------------------------------------------------------------- 1 | .json-view{position:relative} 2 | .json-view .collapser{width:20px;height:18px;display:block;position:absolute;left:-1.7em;top:-.2em;z-index:5;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAD1JREFUeNpiYGBgOADE%2F3Hgw0DM4IRHgSsDFOzFInmMAQnY49ONzZRjDFiADT7dMLALiE8y4AGW6LoBAgwAuIkf%2F%2FB7O9sAAAAASUVORK5CYII%3D);background-repeat:no-repeat;background-position:center center;opacity:.5;cursor:pointer} 3 | .json-view .collapsed{-ms-transform:rotate(-90deg);-moz-transform:rotate(-90deg);-khtml-transform:rotate(-90deg);-webkit-transform:rotate(-90deg);-o-transform:rotate(-90deg);transform:rotate(-90deg)} 4 | .json-view .bl{display:block;padding-left:20px;margin-left:-20px;position:relative} 5 | .json-view{font-family:monospace} 6 | .json-view ul{list-style-type:none;padding-left:2em;border-left:1px dotted;margin:.3em} 7 | .json-view ul li{position:relative} 8 | .json-view .comments,.json-view .dots{display:none;-moz-user-select:none;-ms-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;user-select:none} 9 | .json-view .comments{padding-left:.8em;font-style:italic;color:#888} 10 | .json-view .bool,.json-view .null,.json-view .num,.json-view .undef{font-weight:700;color:#1A01CC} 11 | .json-view .str{color:#800} -------------------------------------------------------------------------------- /django-static/rest_framework/docs/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-cmdb/cmdb-web/0316b3d408b8067965e16fd72761248e82b25739/django-static/rest_framework/docs/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /django-static/rest_framework/docs/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-cmdb/cmdb-web/0316b3d408b8067965e16fd72761248e82b25739/django-static/rest_framework/docs/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /django-static/rest_framework/docs/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-cmdb/cmdb-web/0316b3d408b8067965e16fd72761248e82b25739/django-static/rest_framework/docs/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /django-static/rest_framework/docs/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-cmdb/cmdb-web/0316b3d408b8067965e16fd72761248e82b25739/django-static/rest_framework/docs/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /django-static/rest_framework/docs/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-cmdb/cmdb-web/0316b3d408b8067965e16fd72761248e82b25739/django-static/rest_framework/docs/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /django-static/rest_framework/docs/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-cmdb/cmdb-web/0316b3d408b8067965e16fd72761248e82b25739/django-static/rest_framework/docs/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /django-static/rest_framework/docs/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-cmdb/cmdb-web/0316b3d408b8067965e16fd72761248e82b25739/django-static/rest_framework/docs/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /django-static/rest_framework/docs/img/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-cmdb/cmdb-web/0316b3d408b8067965e16fd72761248e82b25739/django-static/rest_framework/docs/img/favicon.ico -------------------------------------------------------------------------------- /django-static/rest_framework/docs/img/grid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-cmdb/cmdb-web/0316b3d408b8067965e16fd72761248e82b25739/django-static/rest_framework/docs/img/grid.png -------------------------------------------------------------------------------- /django-static/rest_framework/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-cmdb/cmdb-web/0316b3d408b8067965e16fd72761248e82b25739/django-static/rest_framework/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /django-static/rest_framework/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-cmdb/cmdb-web/0316b3d408b8067965e16fd72761248e82b25739/django-static/rest_framework/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /django-static/rest_framework/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-cmdb/cmdb-web/0316b3d408b8067965e16fd72761248e82b25739/django-static/rest_framework/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /django-static/rest_framework/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-cmdb/cmdb-web/0316b3d408b8067965e16fd72761248e82b25739/django-static/rest_framework/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /django-static/rest_framework/img/glyphicons-halflings-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-cmdb/cmdb-web/0316b3d408b8067965e16fd72761248e82b25739/django-static/rest_framework/img/glyphicons-halflings-white.png -------------------------------------------------------------------------------- /django-static/rest_framework/img/glyphicons-halflings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-cmdb/cmdb-web/0316b3d408b8067965e16fd72761248e82b25739/django-static/rest_framework/img/glyphicons-halflings.png -------------------------------------------------------------------------------- /django-static/rest_framework/img/grid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-cmdb/cmdb-web/0316b3d408b8067965e16fd72761248e82b25739/django-static/rest_framework/img/grid.png -------------------------------------------------------------------------------- /django-static/rest_framework/js/default.js: -------------------------------------------------------------------------------- 1 | $(document).ready(function() { 2 | // JSON highlighting. 3 | prettyPrint(); 4 | 5 | // Bootstrap tooltips. 6 | $('.js-tooltip').tooltip({ 7 | delay: 1000, 8 | container: 'body' 9 | }); 10 | 11 | // Deal with rounded tab styling after tab clicks. 12 | $('a[data-toggle="tab"]:first').on('shown', function(e) { 13 | $(e.target).parents('.tabbable').addClass('first-tab-active'); 14 | }); 15 | 16 | $('a[data-toggle="tab"]:not(:first)').on('shown', function(e) { 17 | $(e.target).parents('.tabbable').removeClass('first-tab-active'); 18 | }); 19 | 20 | $('a[data-toggle="tab"]').click(function() { 21 | document.cookie = "tabstyle=" + this.name + "; path=/"; 22 | }); 23 | 24 | // Store tab preference in cookies & display appropriate tab on load. 25 | var selectedTab = null; 26 | var selectedTabName = getCookie('tabstyle'); 27 | 28 | if (selectedTabName) { 29 | selectedTabName = selectedTabName.replace(/[^a-z-]/g, ''); 30 | } 31 | 32 | if (selectedTabName) { 33 | selectedTab = $('.form-switcher a[name=' + selectedTabName + ']'); 34 | } 35 | 36 | if (selectedTab && selectedTab.length > 0) { 37 | // Display whichever tab is selected. 38 | selectedTab.tab('show'); 39 | } else { 40 | // If no tab selected, display rightmost tab. 41 | $('.form-switcher a:first').tab('show'); 42 | } 43 | 44 | $(window).load(function() { 45 | $('#errorModal').modal('show'); 46 | }); 47 | }); 48 | -------------------------------------------------------------------------------- /django-static/rest_framework_docs/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-cmdb/cmdb-web/0316b3d408b8067965e16fd72761248e82b25739/django-static/rest_framework_docs/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /django-static/rest_framework_docs/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-cmdb/cmdb-web/0316b3d408b8067965e16fd72761248e82b25739/django-static/rest_framework_docs/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /django-static/rest_framework_docs/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-cmdb/cmdb-web/0316b3d408b8067965e16fd72761248e82b25739/django-static/rest_framework_docs/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /django-static/rest_framework_docs/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-cmdb/cmdb-web/0316b3d408b8067965e16fd72761248e82b25739/django-static/rest_framework_docs/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /django-static/rest_framework_docs/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-cmdb/cmdb-web/0316b3d408b8067965e16fd72761248e82b25739/django-static/rest_framework_docs/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /django-static/rest_framework_docs/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-cmdb/cmdb-web/0316b3d408b8067965e16fd72761248e82b25739/django-static/rest_framework_docs/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /django-static/rest_framework_docs/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-cmdb/cmdb-web/0316b3d408b8067965e16fd72761248e82b25739/django-static/rest_framework_docs/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /django-static/rest_framework_docs/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-cmdb/cmdb-web/0316b3d408b8067965e16fd72761248e82b25739/django-static/rest_framework_docs/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /django-static/rest_framework_docs/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-cmdb/cmdb-web/0316b3d408b8067965e16fd72761248e82b25739/django-static/rest_framework_docs/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /images/cmdb-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-cmdb/cmdb-web/0316b3d408b8067965e16fd72761248e82b25739/images/cmdb-0.png -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | CMDB 7 | 8 | 9 |
10 | 11 | 12 | -------------------------------------------------------------------------------- /k8s-templates/config_maps/dev/nginx.conf: -------------------------------------------------------------------------------- 1 | # For more information on configuration, see: 2 | # * Official English Documentation: http://nginx.org/en/docs/ 3 | # * Official Russian Documentation: http://nginx.org/ru/docs/ 4 | 5 | user nginx; 6 | worker_processes auto; 7 | error_log /var/log/nginx/error.log; 8 | pid /run/nginx.pid; 9 | daemon off; 10 | 11 | # Load dynamic modules. See /usr/share/doc/nginx/README.dynamic. 12 | include /usr/share/nginx/modules/*.conf; 13 | 14 | events { 15 | worker_connections 1024; 16 | } 17 | 18 | http { 19 | log_format main '$remote_addr - $remote_user [$time_local] "$request" ' 20 | '$status $body_bytes_sent "$http_referer" ' 21 | '"$http_user_agent" "$http_x_forwarded_for"'; 22 | 23 | access_log /var/log/nginx/access.log main; 24 | 25 | sendfile on; 26 | tcp_nopush on; 27 | tcp_nodelay on; 28 | keepalive_timeout 65; 29 | types_hash_max_size 2048; 30 | 31 | include /etc/nginx/mime.types; 32 | default_type application/octet-stream; 33 | 34 | server { 35 | listen 80 default_server; 36 | client_max_body_size 20m; 37 | 38 | location /api { 39 | include /etc/nginx/uwsgi_params; 40 | uwsgi_pass dev-cmdb:8091; 41 | } 42 | 43 | location / { 44 | index index.html; 45 | root /opt/dist; 46 | } 47 | 48 | location /admin { 49 | include /etc/nginx/uwsgi_params; 50 | uwsgi_pass dev-cmdb:8091; 51 | } 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /package_upload.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | #coding: utf-8 3 | 4 | import subprocess 5 | import datetime 6 | 7 | def run_cmd(cmd): 8 | code = subprocess.call(cmd, shell=True) 9 | if code > 1: 10 | raise Exception("'{}' 执行失败,返回code:{}".format(cmd, code)) 11 | 12 | def get_current_branch(): 13 | p = subprocess.Popen("git branch -a", shell=True, stdout=subprocess.PIPE, 14 | stderr=subprocess.PIPE) 15 | out, err = p.communicate() 16 | rows = out.decode().split("\n") 17 | for row in rows: 18 | if row[0] == "*": 19 | return row.split("* ")[1] 20 | 21 | 22 | if __name__ == '__main__': 23 | dt = datetime.datetime.now() 24 | msg = dt.strftime("%Y%m%d%H%M") 25 | current_branch = get_current_branch() 26 | 27 | run_cmd("npm run build") 28 | run_cmd("cp -r django-static/* dist/static") 29 | run_cmd("git add *") 30 | run_cmd("git commit -m {}".format(msg)) 31 | run_cmd("git push origin {}".format(current_branch)) 32 | -------------------------------------------------------------------------------- /src/App 2.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 14 | 15 | 28 | -------------------------------------------------------------------------------- /src/App.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 14 | 15 | 28 | -------------------------------------------------------------------------------- /src/Blank 2.vue: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /src/Blank.vue: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /src/assets/logo 2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-cmdb/cmdb-web/0316b3d408b8067965e16fd72761248e82b25739/src/assets/logo 2.png -------------------------------------------------------------------------------- /src/assets/logo-new 2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-cmdb/cmdb-web/0316b3d408b8067965e16fd72761248e82b25739/src/assets/logo-new 2.png -------------------------------------------------------------------------------- /src/assets/logo-new.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-cmdb/cmdb-web/0316b3d408b8067965e16fd72761248e82b25739/src/assets/logo-new.png -------------------------------------------------------------------------------- /src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-cmdb/cmdb-web/0316b3d408b8067965e16fd72761248e82b25739/src/assets/logo.png -------------------------------------------------------------------------------- /src/c-test/html-2 2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | test-2 6 | 7 | 8 | 15 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /src/c-test/html-2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | test-2 6 | 7 | 8 | 15 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /src/c-test/test-1 2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | test-1 6 | 39 | 40 | 41 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /src/c-test/test-1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | test-1 6 | 39 | 40 | 41 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /src/c-test/test-4 2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Test 4 6 | 41 | 42 | 43 |
44 |
三列布局1
45 |
one
46 |
three
47 |
two
48 |
49 | 50 | 51 | -------------------------------------------------------------------------------- /src/c-test/test-4.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Test 4 6 | 41 | 42 | 43 |
44 |
三列布局1
45 |
one
46 |
three
47 |
two
48 |
49 | 50 | 51 | -------------------------------------------------------------------------------- /src/c-test/test-5 2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | test-5 6 | 7 | 8 |
9 |
123
10 |
11 |
njgnjfngj
12 |
13 | 14 | 15 | -------------------------------------------------------------------------------- /src/c-test/test-5.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | test-5 6 | 7 | 8 |
9 |
123
10 |
11 |
njgnjfngj
12 |
13 | 14 | 15 | -------------------------------------------------------------------------------- /src/c-test/test-6 2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Test 6 6 | 7 | 8 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /src/c-test/test-6.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Test 6 6 | 7 | 8 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /src/c-test/test-7 2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | test-7 6 | 7 | 8 |

sss

9 | 10 | 11 | -------------------------------------------------------------------------------- /src/c-test/test-7.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | test-7 6 | 7 | 8 |

sss

9 | 10 | 11 | -------------------------------------------------------------------------------- /src/components/CBox 2.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 10 | 11 | 14 | -------------------------------------------------------------------------------- /src/components/CBox.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 10 | 11 | 14 | -------------------------------------------------------------------------------- /src/components/CTooltipButton 2.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 39 | 40 | 42 | -------------------------------------------------------------------------------- /src/components/CTooltipButton.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 39 | 40 | 42 | -------------------------------------------------------------------------------- /src/components/CartPanel 2.vue: -------------------------------------------------------------------------------- 1 | 14 | 15 | 43 | 44 | 46 | -------------------------------------------------------------------------------- /src/components/CartPanel.vue: -------------------------------------------------------------------------------- 1 | 14 | 15 | 43 | 44 | 46 | -------------------------------------------------------------------------------- /src/components/DateFilter 2.vue: -------------------------------------------------------------------------------- 1 | 14 | 15 | 44 | 45 | 48 | -------------------------------------------------------------------------------- /src/components/DateFilter.vue: -------------------------------------------------------------------------------- 1 | 14 | 15 | 44 | 45 | 48 | -------------------------------------------------------------------------------- /src/components/Login 2.vue: -------------------------------------------------------------------------------- 1 | 14 | 15 | 33 | 34 | 37 | -------------------------------------------------------------------------------- /src/components/Login.vue: -------------------------------------------------------------------------------- 1 | 14 | 15 | 33 | 34 | 37 | -------------------------------------------------------------------------------- /src/components/NumberRangeFilter 2.vue: -------------------------------------------------------------------------------- 1 | 26 | 27 | 53 | 54 | 57 | -------------------------------------------------------------------------------- /src/components/NumberRangeFilter.vue: -------------------------------------------------------------------------------- 1 | 26 | 27 | 53 | 54 | 57 | -------------------------------------------------------------------------------- /src/components/OptionBar 2.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 15 | 16 | 24 | -------------------------------------------------------------------------------- /src/components/OptionBar.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 15 | 16 | 24 | -------------------------------------------------------------------------------- /src/components/Pagination 2.vue: -------------------------------------------------------------------------------- 1 | 12 | 13 | 50 | 51 | 54 | -------------------------------------------------------------------------------- /src/components/Pagination.vue: -------------------------------------------------------------------------------- 1 | 12 | 13 | 50 | 51 | 54 | -------------------------------------------------------------------------------- /src/components/Search 2.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 35 | 36 | 39 | -------------------------------------------------------------------------------- /src/components/Search.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 35 | 36 | 39 | -------------------------------------------------------------------------------- /src/components/app/user-mgmt/ResetPassword 2.vue: -------------------------------------------------------------------------------- 1 | 13 | 14 | -------------------------------------------------------------------------------- /src/components/app/user-mgmt/ResetPassword.vue: -------------------------------------------------------------------------------- 1 | 13 | 14 | -------------------------------------------------------------------------------- /src/components/app/user/Create 2.vue: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-cmdb/cmdb-web/0316b3d408b8067965e16fd72761248e82b25739/src/components/app/user/Create 2.vue -------------------------------------------------------------------------------- /src/components/app/user/Create.vue: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-cmdb/cmdb-web/0316b3d408b8067965e16fd72761248e82b25739/src/components/app/user/Create.vue -------------------------------------------------------------------------------- /src/components/c-select/option-group 2.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | 61 | -------------------------------------------------------------------------------- /src/components/c-select/option-group.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | 61 | -------------------------------------------------------------------------------- /src/components/c-select/scrollbar/index 2.js: -------------------------------------------------------------------------------- 1 | import Scrollbar from './src/main'; 2 | 3 | /* istanbul ignore next */ 4 | Scrollbar.install = function(Vue) { 5 | Vue.component(Scrollbar.name, Scrollbar); 6 | }; 7 | 8 | export default Scrollbar; 9 | -------------------------------------------------------------------------------- /src/components/c-select/scrollbar/index.js: -------------------------------------------------------------------------------- 1 | import Scrollbar from './src/main'; 2 | 3 | /* istanbul ignore next */ 4 | Scrollbar.install = function(Vue) { 5 | Vue.component(Scrollbar.name, Scrollbar); 6 | }; 7 | 8 | export default Scrollbar; 9 | -------------------------------------------------------------------------------- /src/components/c-select/scrollbar/src/util 2.js: -------------------------------------------------------------------------------- 1 | export const BAR_MAP = { 2 | vertical: { 3 | offset: 'offsetHeight', 4 | scroll: 'scrollTop', 5 | scrollSize: 'scrollHeight', 6 | size: 'height', 7 | key: 'vertical', 8 | axis: 'Y', 9 | client: 'clientY', 10 | direction: 'top' 11 | }, 12 | horizontal: { 13 | offset: 'offsetWidth', 14 | scroll: 'scrollLeft', 15 | scrollSize: 'scrollWidth', 16 | size: 'width', 17 | key: 'horizontal', 18 | axis: 'X', 19 | client: 'clientX', 20 | direction: 'left' 21 | } 22 | }; 23 | 24 | export function renderThumbStyle({ move, size, bar }) { 25 | const style = {}; 26 | const translate = `translate${bar.axis}(${ move }%)`; 27 | 28 | style[bar.size] = size; 29 | style.transform = translate; 30 | style.msTransform = translate; 31 | style.webkitTransform = translate; 32 | 33 | return style; 34 | }; 35 | -------------------------------------------------------------------------------- /src/components/c-select/scrollbar/src/util.js: -------------------------------------------------------------------------------- 1 | export const BAR_MAP = { 2 | vertical: { 3 | offset: 'offsetHeight', 4 | scroll: 'scrollTop', 5 | scrollSize: 'scrollHeight', 6 | size: 'height', 7 | key: 'vertical', 8 | axis: 'Y', 9 | client: 'clientY', 10 | direction: 'top' 11 | }, 12 | horizontal: { 13 | offset: 'offsetWidth', 14 | scroll: 'scrollLeft', 15 | scrollSize: 'scrollWidth', 16 | size: 'width', 17 | key: 'horizontal', 18 | axis: 'X', 19 | client: 'clientX', 20 | direction: 'left' 21 | } 22 | }; 23 | 24 | export function renderThumbStyle({ move, size, bar }) { 25 | const style = {}; 26 | const translate = `translate${bar.axis}(${ move }%)`; 27 | 28 | style[bar.size] = size; 29 | style.transform = translate; 30 | style.msTransform = translate; 31 | style.webkitTransform = translate; 32 | 33 | return style; 34 | }; 35 | -------------------------------------------------------------------------------- /src/config/dev 2.js: -------------------------------------------------------------------------------- 1 | 2 | 3 | export default { 4 | base_url: "http://localhost:8000/api/v1/", 5 | } 6 | -------------------------------------------------------------------------------- /src/config/dev.js: -------------------------------------------------------------------------------- 1 | 2 | 3 | export default { 4 | base_url: "http://localhost:8000/api/v1/", 5 | } 6 | -------------------------------------------------------------------------------- /src/config/index 2.js: -------------------------------------------------------------------------------- 1 | 2 | 3 | import dev from "./dev" 4 | import pro from "./pro" 5 | 6 | console.log("process.env.NODE_ENV: ", process.env.NODE_ENV) 7 | 8 | const export_config = Object.assign({}, dev,process.env.NODE_ENV === "production" ? pro : {}) 9 | 10 | export default export_config 11 | -------------------------------------------------------------------------------- /src/config/index.js: -------------------------------------------------------------------------------- 1 | 2 | 3 | import dev from "./dev" 4 | import pro from "./pro" 5 | 6 | console.log("process.env.NODE_ENV: ", process.env.NODE_ENV) 7 | 8 | const export_config = Object.assign({}, dev,process.env.NODE_ENV === "production" ? pro : {}) 9 | 10 | export default export_config 11 | -------------------------------------------------------------------------------- /src/config/pro 2.js: -------------------------------------------------------------------------------- 1 | 2 | export default { 3 | base_url: window.location.protocol+"//"+window.location.host+"/api/v1/" 4 | } 5 | -------------------------------------------------------------------------------- /src/config/pro.js: -------------------------------------------------------------------------------- 1 | 2 | export default { 3 | base_url: window.location.protocol+"//"+window.location.host+"/api/v1/" 4 | } 5 | -------------------------------------------------------------------------------- /src/router/_import_development 2.js: -------------------------------------------------------------------------------- 1 | module.exports = file => require('@/views/' + file + '.vue').default // vue-loader at least v13.0.0+ 2 | -------------------------------------------------------------------------------- /src/router/_import_development.js: -------------------------------------------------------------------------------- 1 | module.exports = file => require('@/views/' + file + '.vue').default // vue-loader at least v13.0.0+ 2 | -------------------------------------------------------------------------------- /src/router/_import_production 2.js: -------------------------------------------------------------------------------- 1 | module.exports = file => () => import('@/views/' + file + '.vue') 2 | -------------------------------------------------------------------------------- /src/router/_import_production.js: -------------------------------------------------------------------------------- 1 | module.exports = file => () => import('@/views/' + file + '.vue') 2 | -------------------------------------------------------------------------------- /src/router/menu 2.js: -------------------------------------------------------------------------------- 1 | 2 | const _import = require('./_import_' + process.env.NODE_ENV) 3 | 4 | export const menu = [ 5 | { 6 | path: "data", 7 | name: "data", 8 | component: _import("display-data/DisplayData"), 9 | meta: { 10 | name: " 主 页", 11 | icon: "fa-home", 12 | permissions: [] 13 | } 14 | }, 15 | { 16 | path: "deleted", 17 | name: "deleted", 18 | component: _import("deleted-display/DisplayData"), 19 | meta: { 20 | name: " 已删除", 21 | icon: "fa-recycle", 22 | permissions: [] 23 | } 24 | }, 25 | { 26 | path: "table-mgmt", 27 | name: "table-mgmt", 28 | component: _import("table-mgmt/TableMgmt"), 29 | meta: { 30 | name: " 表管理", 31 | icon: "fa-table", 32 | permissions: ["admin"] 33 | } 34 | }, 35 | { 36 | path: "user-mgmt", 37 | name: "user-mgmt", 38 | component: _import("user-mgmt/UserMgmt"), 39 | meta: { 40 | name: " 用户管理", 41 | icon: "fa-users", 42 | permissions: ["admin"] 43 | } 44 | } 45 | ] -------------------------------------------------------------------------------- /src/router/menu.js: -------------------------------------------------------------------------------- 1 | 2 | const _import = require('./_import_' + process.env.NODE_ENV) 3 | 4 | export const menu = [ 5 | { 6 | path: "data", 7 | name: "data", 8 | component: _import("display-data/DisplayData"), 9 | meta: { 10 | name: " 主 页", 11 | icon: "fa-home", 12 | permissions: [] 13 | } 14 | }, 15 | { 16 | path: "deleted", 17 | name: "deleted", 18 | component: _import("deleted-display/DisplayData"), 19 | meta: { 20 | name: " 已删除", 21 | icon: "fa-recycle", 22 | permissions: [] 23 | } 24 | }, 25 | { 26 | path: "table-mgmt", 27 | name: "table-mgmt", 28 | component: _import("table-mgmt/TableMgmt"), 29 | meta: { 30 | name: " 表管理", 31 | icon: "fa-table", 32 | permissions: ["admin"] 33 | } 34 | }, 35 | { 36 | path: "user-mgmt", 37 | name: "user-mgmt", 38 | component: _import("user-mgmt/UserMgmt"), 39 | meta: { 40 | name: " 用户管理", 41 | icon: "fa-users", 42 | permissions: ["admin"] 43 | } 44 | } 45 | ] -------------------------------------------------------------------------------- /src/store/cookie 2.js: -------------------------------------------------------------------------------- 1 | 2 | 3 | var set_cookie = (name, value, valid_time=1) => { 4 | var date = new Date() 5 | date.setTime(date.getTime()+valid_time*24*3600*1000) 6 | document.cookie = name+"="+value+";expires="+date.toString() 7 | } 8 | 9 | var get_cookie = (name) => { 10 | var cookies = document.cookie.split("; ") 11 | for(let i of cookies){ 12 | var name_value = i.split("=") 13 | if(name==name_value[0]){ 14 | return name_value[1] 15 | } 16 | } 17 | } 18 | 19 | export default { 20 | set_cookie, 21 | get_cookie 22 | } 23 | -------------------------------------------------------------------------------- /src/store/cookie.js: -------------------------------------------------------------------------------- 1 | 2 | 3 | var set_cookie = (name, value, valid_time=1) => { 4 | var date = new Date() 5 | date.setTime(date.getTime()+valid_time*24*3600*1000) 6 | document.cookie = name+"="+value+";expires="+date.toString() 7 | } 8 | 9 | var get_cookie = (name) => { 10 | var cookies = document.cookie.split("; ") 11 | for(let i of cookies){ 12 | var name_value = i.split("=") 13 | if(name==name_value[0]){ 14 | return name_value[1] 15 | } 16 | } 17 | } 18 | 19 | export default { 20 | set_cookie, 21 | get_cookie 22 | } 23 | -------------------------------------------------------------------------------- /src/store/index 2.js: -------------------------------------------------------------------------------- 1 | import Vue from "vue" 2 | import Vuex from "vuex" 3 | import axios from "axios" 4 | 5 | import cookie from "./cookie" 6 | import * as mutation from "./mutation" 7 | 8 | Vue.use(Vuex) 9 | 10 | // var is_logged = false 11 | // if(cookie.get_cookie("token")){ 12 | // console.log("token:"+cookie.get_cookie("token")) 13 | // is_logged = true 14 | // console.log("is_logged:", is_logged) 15 | // } 16 | 17 | const store = new Vuex.Store({ 18 | state: { 19 | count: 0, 20 | token: localStorage.getItem("token")?localStorage.getItem("token"): null, 21 | username: cookie.get_cookie("username"), 22 | loading_num: 0, 23 | user_info: {}, 24 | cancel_token: axios.CancelToken.source(), 25 | page_size: 0, 26 | next: "root", 27 | next_path: "/", 28 | filtered_menu: [], 29 | user_permissions: [] 30 | }, 31 | mutations: mutation 32 | }) 33 | 34 | export default store 35 | -------------------------------------------------------------------------------- /src/store/index.js: -------------------------------------------------------------------------------- 1 | import Vue from "vue" 2 | import Vuex from "vuex" 3 | import axios from "axios" 4 | 5 | import cookie from "./cookie" 6 | import * as mutation from "./mutation" 7 | 8 | Vue.use(Vuex) 9 | 10 | // var is_logged = false 11 | // if(cookie.get_cookie("token")){ 12 | // console.log("token:"+cookie.get_cookie("token")) 13 | // is_logged = true 14 | // console.log("is_logged:", is_logged) 15 | // } 16 | 17 | const store = new Vuex.Store({ 18 | state: { 19 | count: 0, 20 | token: localStorage.getItem("token")?localStorage.getItem("token"): null, 21 | username: cookie.get_cookie("username"), 22 | loading_num: 0, 23 | user_info: {}, 24 | cancel_token: axios.CancelToken.source(), 25 | page_size: 0, 26 | next: "root", 27 | next_path: "/", 28 | filtered_menu: [], 29 | user_permissions: [] 30 | }, 31 | mutations: mutation 32 | }) 33 | 34 | export default store 35 | -------------------------------------------------------------------------------- /src/store/mutation 2.js: -------------------------------------------------------------------------------- 1 | import axios from "axios" 2 | import cookie from "./cookie" 3 | 4 | export function increment(state) { 5 | state.count++ 6 | } 7 | export function logout(state) { 8 | // state.is_logged = false 9 | // cookie.set_cookie("token", "") 10 | // cookie.set_cookie("username", "") 11 | // state.token = "" 12 | // state.username = "" 13 | state.user_info = {} 14 | state.token = null 15 | localStorage.removeItem("token") 16 | } 17 | 18 | export const login = (state, data) => { 19 | state.token = "JWT " + data.token 20 | } 21 | 22 | export function reset_canceltoken(state) { 23 | state.cancel_token.cancel("跳转取消") 24 | state.cancel_token = axios.CancelToken.source() 25 | } 26 | -------------------------------------------------------------------------------- /src/store/mutation.js: -------------------------------------------------------------------------------- 1 | import axios from "axios" 2 | import cookie from "./cookie" 3 | 4 | export function increment(state) { 5 | state.count++ 6 | } 7 | export function logout(state) { 8 | // state.is_logged = false 9 | // cookie.set_cookie("token", "") 10 | // cookie.set_cookie("username", "") 11 | // state.token = "" 12 | // state.username = "" 13 | state.user_info = {} 14 | state.token = null 15 | localStorage.removeItem("token") 16 | } 17 | 18 | export const login = (state, data) => { 19 | state.token = "JWT " + data.token 20 | } 21 | 22 | export function reset_canceltoken(state) { 23 | state.cancel_token.cancel("跳转取消") 24 | state.cancel_token = axios.CancelToken.source() 25 | } 26 | -------------------------------------------------------------------------------- /src/utils/calc 2.js: -------------------------------------------------------------------------------- 1 | 2 | const page_size = (line_height, other_height, mini=8) => { 3 | var page_size = Math.floor((window.innerHeight - other_height) / line_height) 4 | return page_size > mini ? page_size:mini 5 | } 6 | 7 | 8 | export default { 9 | page_size 10 | } 11 | -------------------------------------------------------------------------------- /src/utils/calc.js: -------------------------------------------------------------------------------- 1 | 2 | const page_size = (line_height, other_height, mini=8) => { 3 | var page_size = Math.floor((window.innerHeight - other_height) / line_height) 4 | return page_size > mini ? page_size:mini 5 | } 6 | 7 | 8 | export default { 9 | page_size 10 | } 11 | -------------------------------------------------------------------------------- /src/utils/color 2.js: -------------------------------------------------------------------------------- 1 | 2 | export const colors = [ 3 | '#19d4ae', '#5ab1ef', '#fa6e86', 4 | '#ffb980', '#0067a6', '#c4b4e4', 5 | '#d87a80', '#9cbbff', '#d9d0c7', 6 | '#87a997', '#d49ea2', '#5b4947', 7 | '#7ba3a8' 8 | ] 9 | 10 | export default {} -------------------------------------------------------------------------------- /src/utils/color.js: -------------------------------------------------------------------------------- 1 | 2 | export const colors = [ 3 | '#19d4ae', '#5ab1ef', '#fa6e86', 4 | '#ffb980', '#0067a6', '#c4b4e4', 5 | '#d87a80', '#9cbbff', '#d9d0c7', 6 | '#87a997', '#d49ea2', '#5b4947', 7 | '#7ba3a8' 8 | ] 9 | 10 | export default {} -------------------------------------------------------------------------------- /src/utils/components 2.js: -------------------------------------------------------------------------------- 1 | 2 | import Vue from "vue" 3 | 4 | 5 | 6 | import CInputList from "@/components/InputList" 7 | import CExport from "@/components/Export" 8 | import CSearch from "@/components/Search" 9 | import CPagination from "@/components/Pagination" 10 | import COptionBar from "@/components/OptionBar" 11 | import CDateRangeFilter from "@/components/DateRangeFilter" 12 | import CNumberRangeFilter from "@/components/NumberRangeFilter" 13 | import CDateFilter from "@/components/DateFilter" 14 | import CSelect from "@/components/c-select/select" 15 | 16 | const install = function (Vue, options) { 17 | Vue.component("CInputList", CInputList) 18 | Vue.component("CExport", CExport) 19 | Vue.component("CSearch", CSearch) 20 | Vue.component("COptionBar", COptionBar) 21 | Vue.component("CDateFilter", CDateFilter) 22 | Vue.component("CDateRangeFilter", CDateRangeFilter) 23 | Vue.component("CNumberRangeFilter", CNumberRangeFilter) 24 | Vue.component("CSelect", CSelect) 25 | } 26 | 27 | export default { 28 | install, 29 | } 30 | -------------------------------------------------------------------------------- /src/utils/components.js: -------------------------------------------------------------------------------- 1 | 2 | import Vue from "vue" 3 | 4 | 5 | 6 | import CInputList from "@/components/InputList" 7 | import CExport from "@/components/Export" 8 | import CSearch from "@/components/Search" 9 | import CPagination from "@/components/Pagination" 10 | import COptionBar from "@/components/OptionBar" 11 | import CDateRangeFilter from "@/components/DateRangeFilter" 12 | import CNumberRangeFilter from "@/components/NumberRangeFilter" 13 | import CDateFilter from "@/components/DateFilter" 14 | import CSelect from "@/components/c-select/select" 15 | 16 | const install = function (Vue, options) { 17 | Vue.component("CInputList", CInputList) 18 | Vue.component("CExport", CExport) 19 | Vue.component("CSearch", CSearch) 20 | Vue.component("COptionBar", COptionBar) 21 | Vue.component("CDateFilter", CDateFilter) 22 | Vue.component("CDateRangeFilter", CDateRangeFilter) 23 | Vue.component("CNumberRangeFilter", CNumberRangeFilter) 24 | Vue.component("CSelect", CSelect) 25 | } 26 | 27 | export default { 28 | install, 29 | } 30 | -------------------------------------------------------------------------------- /src/utils/conversion 2.js: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | const install = (Vue, options=null)=>{ 5 | Vue.c_flow_conversion = (flow)=>{ 6 | const UNITS = ["B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB"] 7 | function conversion(flow, unit){ 8 | var b = flow/1024 9 | if(b<0){ 10 | return flow.toFixed(2) + UNITS[unit] 11 | } 12 | conversion(b, unit+1) 13 | } 14 | return conversion(flow, 0) 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/utils/conversion.js: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | const install = (Vue, options=null)=>{ 5 | Vue.c_flow_conversion = (flow)=>{ 6 | const UNITS = ["B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB"] 7 | function conversion(flow, unit){ 8 | var b = flow/1024 9 | if(b<0){ 10 | return flow.toFixed(2) + UNITS[unit] 11 | } 12 | conversion(b, unit+1) 13 | } 14 | return conversion(flow, 0) 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/utils/cookie 2.js: -------------------------------------------------------------------------------- 1 | 2 | const set_cookie = (name, value, valid_time=1) => { 3 | var date = new Date() 4 | date.setTime(date.getTime()+valid_time*24*3600*1000) 5 | document.cookie = name+"="+value+";expires="+date.toString() 6 | } 7 | 8 | const get_cookie = (name) => { 9 | var cookies = document.cookie.split("; ") 10 | for(let i of cookies){ 11 | var name_value = i.split("=") 12 | if(name==name_value[0]){ 13 | return name_value[1] 14 | } 15 | } 16 | } 17 | 18 | export default { 19 | set_cookie, 20 | get_cookie 21 | } 22 | -------------------------------------------------------------------------------- /src/utils/cookie.js: -------------------------------------------------------------------------------- 1 | 2 | const set_cookie = (name, value, valid_time=1) => { 3 | var date = new Date() 4 | date.setTime(date.getTime()+valid_time*24*3600*1000) 5 | document.cookie = name+"="+value+";expires="+date.toString() 6 | } 7 | 8 | const get_cookie = (name) => { 9 | var cookies = document.cookie.split("; ") 10 | for(let i of cookies){ 11 | var name_value = i.split("=") 12 | if(name==name_value[0]){ 13 | return name_value[1] 14 | } 15 | } 16 | } 17 | 18 | export default { 19 | set_cookie, 20 | get_cookie 21 | } 22 | -------------------------------------------------------------------------------- /src/utils/data_process 2.js: -------------------------------------------------------------------------------- 1 | 2 | export const add_status_fields = (item) => { 3 | item.__editing = false 4 | item.__loading = false 5 | item.__loading1 = false 6 | item.__loading2 = false 7 | item.__loading3 = false 8 | item.__loading4 = false 9 | item.__loading_delete = false 10 | return item 11 | } 12 | 13 | export const add_format_dt_fields = (item, fields=[]) => { 14 | fields.forEach(field => { 15 | item[`${field}_format`] = item[field] ? item[field].substr(0, 16) : item[field] 16 | }) 17 | return item 18 | } 19 | 20 | export const list_to_string = (data) => { 21 | for (let key in data){ 22 | if(data[key] instanceof Array){ 23 | data[key] = data[key].join("、") 24 | } 25 | } 26 | return data 27 | } -------------------------------------------------------------------------------- /src/utils/data_process.js: -------------------------------------------------------------------------------- 1 | 2 | export const add_status_fields = (item) => { 3 | item.__editing = false 4 | item.__loading = false 5 | item.__loading1 = false 6 | item.__loading2 = false 7 | item.__loading3 = false 8 | item.__loading4 = false 9 | item.__loading_delete = false 10 | return item 11 | } 12 | 13 | export const add_format_dt_fields = (item, fields=[]) => { 14 | fields.forEach(field => { 15 | item[`${field}_format`] = item[field] ? item[field].substr(0, 16) : item[field] 16 | }) 17 | return item 18 | } 19 | 20 | export const list_to_string = (data) => { 21 | for (let key in data){ 22 | if(data[key] instanceof Array){ 23 | data[key] = data[key].join("、") 24 | } 25 | } 26 | return data 27 | } -------------------------------------------------------------------------------- /src/utils/date 2.js: -------------------------------------------------------------------------------- 1 | 2 | const date_to_string = (date)=>{ 3 | return `${date.getFullYear()}-${date.getMonth()+1}-${date.getDate()} ${date.getHours()}:${date.getMinutes()}:${date.getSeconds()}` 4 | } 5 | 6 | const get_day_start = (day_ago)=>{ 7 | var datetime = new Date() 8 | datetime.setTime(datetime.getTime() - 3600 * 1000 * 24 * day_ago) 9 | return new Date(datetime.getFullYear(), datetime.getMonth(), datetime.getDate(), 0, 0, 0) 10 | } 11 | 12 | 13 | const get_day_end = (day_ago)=>{ 14 | var datetime = new Date() 15 | datetime.setTime(datetime.getTime() - 3600 * 1000 * 24 * day_ago) 16 | return new Date(datetime.getFullYear(), datetime.getMonth(), datetime.getDate(), 23, 59, 59) 17 | } 18 | 19 | 20 | export default { 21 | date_to_string, 22 | get_day_start, 23 | get_day_end 24 | } 25 | -------------------------------------------------------------------------------- /src/utils/date.js: -------------------------------------------------------------------------------- 1 | 2 | const date_to_string = (date)=>{ 3 | return `${date.getFullYear()}-${date.getMonth()+1}-${date.getDate()} ${date.getHours()}:${date.getMinutes()}:${date.getSeconds()}` 4 | } 5 | 6 | const get_day_start = (day_ago)=>{ 7 | var datetime = new Date() 8 | datetime.setTime(datetime.getTime() - 3600 * 1000 * 24 * day_ago) 9 | return new Date(datetime.getFullYear(), datetime.getMonth(), datetime.getDate(), 0, 0, 0) 10 | } 11 | 12 | 13 | const get_day_end = (day_ago)=>{ 14 | var datetime = new Date() 15 | datetime.setTime(datetime.getTime() - 3600 * 1000 * 24 * day_ago) 16 | return new Date(datetime.getFullYear(), datetime.getMonth(), datetime.getDate(), 23, 59, 59) 17 | } 18 | 19 | 20 | export default { 21 | date_to_string, 22 | get_day_start, 23 | get_day_end 24 | } 25 | -------------------------------------------------------------------------------- /src/utils/filters 2.js: -------------------------------------------------------------------------------- 1 | 2 | 3 | import Vue from "vue" 4 | 5 | Vue.filter("storage", (value) => { 6 | if (!value) { 7 | return value 8 | } 9 | const UNITS = ["B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB"] 10 | function conversion(value, unit) { 11 | var b = value / 1024 12 | if (b < 1) { 13 | return value.toFixed(2) + " " + UNITS[unit] 14 | } 15 | return conversion(b, unit + 1) 16 | } 17 | return conversion(value, 0) 18 | }) 19 | 20 | Vue.filter("c_datetime", (value) => { 21 | return value ? value.substr(0, 16) : value 22 | }) 23 | 24 | Vue.filter("c_timestamp", (value) => { 25 | if (!value) { 26 | return value 27 | } 28 | var date = new Date(value) 29 | return `${date.getFullYear()}-${date.getMonth() + 1}-${date.getDate()}T${date.getHours()}:${date.getMinutes()}` 30 | }) 31 | 32 | Vue.filter('c_array_to_string', function (value) { 33 | if (!value) { 34 | return "" 35 | } 36 | if (value instanceof Array) { 37 | return value.join("、") 38 | } 39 | return value 40 | }) -------------------------------------------------------------------------------- /src/utils/filters.js: -------------------------------------------------------------------------------- 1 | 2 | 3 | import Vue from "vue" 4 | 5 | Vue.filter("storage", (value) => { 6 | if (!value) { 7 | return value 8 | } 9 | const UNITS = ["B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB"] 10 | function conversion(value, unit) { 11 | var b = value / 1024 12 | if (b < 1) { 13 | return value.toFixed(2) + " " + UNITS[unit] 14 | } 15 | return conversion(b, unit + 1) 16 | } 17 | return conversion(value, 0) 18 | }) 19 | 20 | Vue.filter("c_datetime", (value) => { 21 | return value ? value.substr(0, 16) : value 22 | }) 23 | 24 | Vue.filter("c_timestamp", (value) => { 25 | if (!value) { 26 | return value 27 | } 28 | var date = new Date(value) 29 | return `${date.getFullYear()}-${date.getMonth() + 1}-${date.getDate()}T${date.getHours()}:${date.getMinutes()}` 30 | }) 31 | 32 | Vue.filter('c_array_to_string', function (value) { 33 | if (!value) { 34 | return "" 35 | } 36 | if (value instanceof Array) { 37 | return value.join("、") 38 | } 39 | return value 40 | }) -------------------------------------------------------------------------------- /src/utils/index 2.js: -------------------------------------------------------------------------------- 1 | 2 | export const TYPE_MAP = { 3 | 0: "字符串", 4 | 1: "整数", 5 | 2: "浮点数", 6 | 3: "日期时间", 7 | 4: "日期", 8 | 5: "布尔", 9 | 6: "IP地址", 10 | } 11 | -------------------------------------------------------------------------------- /src/utils/index.js: -------------------------------------------------------------------------------- 1 | 2 | export const TYPE_MAP = { 3 | 0: "字符串", 4 | 1: "整数", 5 | 2: "浮点数", 6 | 3: "日期时间", 7 | 4: "日期", 8 | 5: "布尔", 9 | 6: "IP地址", 10 | } 11 | -------------------------------------------------------------------------------- /src/utils/maps 2.js: -------------------------------------------------------------------------------- 1 | 2 | const convert_to_filter = (dict) => { 3 | var ret = [] 4 | for(let i in dict){ 5 | ret.push({value: i, text: dict[i].label, label: dict[i].label}) 6 | } 7 | return ret 8 | } 9 | 10 | export const STATUS = { 11 | 99: {label: "异常", color: "#909398"}, 12 | 1: {label: "审批中", color: "#F6BB89"}, 13 | 2: {label: "已撤销", color: "#2667A1"}, 14 | 3: {label: "被驳回", color: "#EA7788"}, 15 | 4: {label: "待接受", color: "#8EA898"}, 16 | 5: {label: "已接受", color: "#8EA898"}, 17 | 6: {label: "处理中", color: "#584A48"}, 18 | 7: {label: "处理失败", color: "#E67470"}, 19 | 8: {label: "已完成", color: "#6DB0EA"}, 20 | 0: {label: "已确认", color: "#61D0B0"}, 21 | } 22 | 23 | export const STATUS_FILTERS = convert_to_filter(STATUS) 24 | 25 | export default { 26 | STATUS, 27 | STATUS_FILTERS 28 | } -------------------------------------------------------------------------------- /src/utils/maps.js: -------------------------------------------------------------------------------- 1 | 2 | const convert_to_filter = (dict) => { 3 | var ret = [] 4 | for(let i in dict){ 5 | ret.push({value: i, text: dict[i].label, label: dict[i].label}) 6 | } 7 | return ret 8 | } 9 | 10 | export const STATUS = { 11 | 99: {label: "异常", color: "#909398"}, 12 | 1: {label: "审批中", color: "#F6BB89"}, 13 | 2: {label: "已撤销", color: "#2667A1"}, 14 | 3: {label: "被驳回", color: "#EA7788"}, 15 | 4: {label: "待接受", color: "#8EA898"}, 16 | 5: {label: "已接受", color: "#8EA898"}, 17 | 6: {label: "处理中", color: "#584A48"}, 18 | 7: {label: "处理失败", color: "#E67470"}, 19 | 8: {label: "已完成", color: "#6DB0EA"}, 20 | 0: {label: "已确认", color: "#61D0B0"}, 21 | } 22 | 23 | export const STATUS_FILTERS = convert_to_filter(STATUS) 24 | 25 | export default { 26 | STATUS, 27 | STATUS_FILTERS 28 | } -------------------------------------------------------------------------------- /src/utils/new_mixins/drawer_mixin 2.js: -------------------------------------------------------------------------------- 1 | 2 | export default { 3 | props: { 4 | }, 5 | data() { 6 | return { 7 | is_visible: true 8 | }; 9 | }, 10 | mounted() { 11 | }, 12 | methods: { 13 | on_close(confirm = false) { 14 | if (confirm) { 15 | this.is_visible = true; 16 | this.$confirm("确认关闭", "警告", { 17 | confirmButtonText: "确定", 18 | cancelButtonText: "取消", 19 | type: "warning" 20 | }) 21 | .then(() => { 22 | this._remote_child(); 23 | this.$destroy(); 24 | }) 25 | .catch(() => { }); 26 | } else { 27 | this._remote_child(); 28 | this.$destroy(); 29 | } 30 | }, 31 | _remote_child() { 32 | if (this.$el.parentNode) { 33 | this.$el.parentNode.removeChild(this.$el); 34 | } 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/utils/new_mixins/drawer_mixin.js: -------------------------------------------------------------------------------- 1 | 2 | export default { 3 | props: { 4 | }, 5 | data() { 6 | return { 7 | is_visible: true 8 | }; 9 | }, 10 | mounted() { 11 | }, 12 | methods: { 13 | on_close(confirm = false) { 14 | if (confirm) { 15 | this.is_visible = true; 16 | this.$confirm("确认关闭", "警告", { 17 | confirmButtonText: "确定", 18 | cancelButtonText: "取消", 19 | type: "warning" 20 | }) 21 | .then(() => { 22 | this._remote_child(); 23 | this.$destroy(); 24 | }) 25 | .catch(() => { }); 26 | } else { 27 | this._remote_child(); 28 | this.$destroy(); 29 | } 30 | }, 31 | _remote_child() { 32 | if (this.$el.parentNode) { 33 | this.$el.parentNode.removeChild(this.$el); 34 | } 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/utils/new_mixins/index 2.js: -------------------------------------------------------------------------------- 1 | import l_chart_mixin from "./chart_mixin" 2 | import l_create_update_dialog_mixin from "./create_update_dialog_mixin" 3 | import l_dialog_mixin from "./dialog_mixin" 4 | import l_list_mixin from "./list_mixin" 5 | import l_detail_dialog_mixin from "./detail_dialog_mixin" 6 | import l_action_dialog_mixin from "./action_dialog_mixin" 7 | 8 | export const chart_mixin = l_chart_mixin 9 | export const create_update_dialog_mixin = l_create_update_dialog_mixin 10 | export const dialog_mixin = l_dialog_mixin 11 | export const list_mixin = l_list_mixin 12 | export const detail_dialog_mixin = l_detail_dialog_mixin 13 | export const action_dialog_mixin = l_action_dialog_mixin 14 | 15 | export default { 16 | chart_mixin: l_chart_mixin, 17 | create_update_dialog_mixin: l_create_update_dialog_mixin, 18 | dialog_mixin: l_dialog_mixin, 19 | list_mixin: l_list_mixin, 20 | detail_dialog_mixin: l_detail_dialog_mixin, 21 | action_dialog_mixin: l_action_dialog_mixin 22 | } -------------------------------------------------------------------------------- /src/utils/new_mixins/index.js: -------------------------------------------------------------------------------- 1 | import l_chart_mixin from "./chart_mixin" 2 | import l_create_update_dialog_mixin from "./create_update_dialog_mixin" 3 | import l_dialog_mixin from "./dialog_mixin" 4 | import l_list_mixin from "./list_mixin" 5 | import l_detail_dialog_mixin from "./detail_dialog_mixin" 6 | import l_action_dialog_mixin from "./action_dialog_mixin" 7 | 8 | export const chart_mixin = l_chart_mixin 9 | export const create_update_dialog_mixin = l_create_update_dialog_mixin 10 | export const dialog_mixin = l_dialog_mixin 11 | export const list_mixin = l_list_mixin 12 | export const detail_dialog_mixin = l_detail_dialog_mixin 13 | export const action_dialog_mixin = l_action_dialog_mixin 14 | 15 | export default { 16 | chart_mixin: l_chart_mixin, 17 | create_update_dialog_mixin: l_create_update_dialog_mixin, 18 | dialog_mixin: l_dialog_mixin, 19 | list_mixin: l_list_mixin, 20 | detail_dialog_mixin: l_detail_dialog_mixin, 21 | action_dialog_mixin: l_action_dialog_mixin 22 | } -------------------------------------------------------------------------------- /src/utils/sso 2.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-cmdb/cmdb-web/0316b3d408b8067965e16fd72761248e82b25739/src/utils/sso 2.js -------------------------------------------------------------------------------- /src/utils/sso.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-cmdb/cmdb-web/0316b3d408b8067965e16fd72761248e82b25739/src/utils/sso.js -------------------------------------------------------------------------------- /src/utils/url 2.js: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | const get_para = (name) => { 5 | var l = window.location.href.split("?") 6 | if(l.length == 1){ 7 | return undefined 8 | } 9 | var ret = {} 10 | var l_2 = l[1].split("&") 11 | for (let k_v of l_2){ 12 | let l_3 = k_v.split("=") 13 | ret[l_3[0]] = l_3[1] 14 | } 15 | console.log("ret:", ret) 16 | return ret[name] 17 | } 18 | 19 | export default { 20 | get_para 21 | } 22 | -------------------------------------------------------------------------------- /src/utils/url.js: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | const get_para = (name) => { 5 | var l = window.location.href.split("?") 6 | if(l.length == 1){ 7 | return undefined 8 | } 9 | var ret = {} 10 | var l_2 = l[1].split("&") 11 | for (let k_v of l_2){ 12 | let l_3 = k_v.split("=") 13 | ret[l_3[0]] = l_3[1] 14 | } 15 | console.log("ret:", ret) 16 | return ret[name] 17 | } 18 | 19 | export default { 20 | get_para 21 | } 22 | -------------------------------------------------------------------------------- /src/utils/variables 2.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-cmdb/cmdb-web/0316b3d408b8067965e16fd72761248e82b25739/src/utils/variables 2.js -------------------------------------------------------------------------------- /src/utils/variables.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-cmdb/cmdb-web/0316b3d408b8067965e16fd72761248e82b25739/src/utils/variables.js -------------------------------------------------------------------------------- /src/utils/workorder 2.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-cmdb/cmdb-web/0316b3d408b8067965e16fd72761248e82b25739/src/utils/workorder 2.js -------------------------------------------------------------------------------- /src/utils/workorder.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-cmdb/cmdb-web/0316b3d408b8067965e16fd72761248e82b25739/src/utils/workorder.js -------------------------------------------------------------------------------- /src/views/ModifyData 2.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 14 | 15 | 18 | -------------------------------------------------------------------------------- /src/views/ModifyData.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 14 | 15 | 18 | -------------------------------------------------------------------------------- /src/views/deleted-display/components/DataItem 2.vue: -------------------------------------------------------------------------------- 1 | 12 | 13 | 34 | 35 | 38 | -------------------------------------------------------------------------------- /src/views/deleted-display/components/DataItem.vue: -------------------------------------------------------------------------------- 1 | 12 | 13 | 34 | 35 | 38 | -------------------------------------------------------------------------------- /src/views/display-data/components/DataDetail 2.vue: -------------------------------------------------------------------------------- 1 | 17 | 18 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /src/views/display-data/components/DataDetail.vue: -------------------------------------------------------------------------------- 1 | 17 | 18 | 41 | 42 | 43 | 53 | -------------------------------------------------------------------------------- /src/views/display-data/components/MenuItem.vue: -------------------------------------------------------------------------------- 1 | 17 | 18 | 19 | 24 | 25 | -------------------------------------------------------------------------------- /src/views/layout/Layout 2.vue: -------------------------------------------------------------------------------- 1 | 16 | 17 | 51 | 52 | 54 | -------------------------------------------------------------------------------- /src/views/layout/components/Token.vue: -------------------------------------------------------------------------------- 1 | 14 | 15 | 20 | 21 | 24 | -------------------------------------------------------------------------------- /src/views/layout/comps/Aside 2.vue: -------------------------------------------------------------------------------- 1 | 14 | 15 | 40 | 41 | 47 | -------------------------------------------------------------------------------- /src/views/layout/comps/MenuItem 2.vue: -------------------------------------------------------------------------------- 1 | 17 | 18 | 19 | 24 | 25 | -------------------------------------------------------------------------------- /src/views/test/Test1 2.vue: -------------------------------------------------------------------------------- 1 | 33 | 34 | -------------------------------------------------------------------------------- /src/views/test/Test1.vue: -------------------------------------------------------------------------------- 1 | 33 | 34 | -------------------------------------------------------------------------------- /src/views/test/Test2 2.vue: -------------------------------------------------------------------------------- 1 | 25 | 26 | 42 | -------------------------------------------------------------------------------- /src/views/test/Test2.vue: -------------------------------------------------------------------------------- 1 | 22 | 23 | 48 | -------------------------------------------------------------------------------- /src/views/test/Test4 2.vue: -------------------------------------------------------------------------------- 1 | 21 | 22 | 54 | -------------------------------------------------------------------------------- /src/views/test/Test4.vue: -------------------------------------------------------------------------------- 1 | 21 | 22 | 54 | -------------------------------------------------------------------------------- /src/views/test/Test5 2.vue: -------------------------------------------------------------------------------- 1 | 17 | 18 | 32 | 33 | 36 | -------------------------------------------------------------------------------- /src/views/test/Test5.vue: -------------------------------------------------------------------------------- 1 | 17 | 18 | 32 | 33 | 36 | -------------------------------------------------------------------------------- /src/views/test/components/Child1 2.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 15 | 16 | 19 | -------------------------------------------------------------------------------- /src/views/test/components/Child1.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 15 | 16 | 19 | -------------------------------------------------------------------------------- /src/views/test/components/Dialog1 2.vue: -------------------------------------------------------------------------------- 1 | 14 | 15 | 43 | -------------------------------------------------------------------------------- /src/views/test/components/Dialog1.vue: -------------------------------------------------------------------------------- 1 | 14 | 15 | 43 | -------------------------------------------------------------------------------- /src/views/test/components/Dialog2 2.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 12 | 13 | 16 | -------------------------------------------------------------------------------- /src/views/test/components/Dialog2.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 12 | 13 | 16 | -------------------------------------------------------------------------------- /src/views/test/js/test_1.js: -------------------------------------------------------------------------------- 1 | 2 | function print() { 3 | console.log("aaa") 4 | } 5 | -------------------------------------------------------------------------------- /src/views/test/scrollbar/index 2.js: -------------------------------------------------------------------------------- 1 | import Scrollbar from './src/main'; 2 | 3 | /* istanbul ignore next */ 4 | Scrollbar.install = function(Vue) { 5 | Vue.component(Scrollbar.name, Scrollbar); 6 | }; 7 | 8 | export default Scrollbar; 9 | -------------------------------------------------------------------------------- /src/views/test/scrollbar/index.js: -------------------------------------------------------------------------------- 1 | import Scrollbar from './src/main'; 2 | 3 | /* istanbul ignore next */ 4 | Scrollbar.install = function(Vue) { 5 | Vue.component(Scrollbar.name, Scrollbar); 6 | }; 7 | 8 | export default Scrollbar; 9 | -------------------------------------------------------------------------------- /src/views/test/scrollbar/src/util 2.js: -------------------------------------------------------------------------------- 1 | export const BAR_MAP = { 2 | vertical: { 3 | offset: 'offsetHeight', 4 | scroll: 'scrollTop', 5 | scrollSize: 'scrollHeight', 6 | size: 'height', 7 | key: 'vertical', 8 | axis: 'Y', 9 | client: 'clientY', 10 | direction: 'top' 11 | }, 12 | horizontal: { 13 | offset: 'offsetWidth', 14 | scroll: 'scrollLeft', 15 | scrollSize: 'scrollWidth', 16 | size: 'width', 17 | key: 'horizontal', 18 | axis: 'X', 19 | client: 'clientX', 20 | direction: 'left' 21 | } 22 | }; 23 | 24 | export function renderThumbStyle({ move, size, bar }) { 25 | const style = {}; 26 | const translate = `translate${bar.axis}(${ move }%)`; 27 | 28 | style[bar.size] = size; 29 | style.transform = translate; 30 | style.msTransform = translate; 31 | style.webkitTransform = translate; 32 | 33 | return style; 34 | }; 35 | -------------------------------------------------------------------------------- /src/views/test/scrollbar/src/util.js: -------------------------------------------------------------------------------- 1 | export const BAR_MAP = { 2 | vertical: { 3 | offset: 'offsetHeight', 4 | scroll: 'scrollTop', 5 | scrollSize: 'scrollHeight', 6 | size: 'height', 7 | key: 'vertical', 8 | axis: 'Y', 9 | client: 'clientY', 10 | direction: 'top' 11 | }, 12 | horizontal: { 13 | offset: 'offsetWidth', 14 | scroll: 'scrollLeft', 15 | scrollSize: 'scrollWidth', 16 | size: 'width', 17 | key: 'horizontal', 18 | axis: 'X', 19 | client: 'clientX', 20 | direction: 'left' 21 | } 22 | }; 23 | 24 | export function renderThumbStyle({ move, size, bar }) { 25 | const style = {}; 26 | const translate = `translate${bar.axis}(${ move }%)`; 27 | 28 | style[bar.size] = size; 29 | style.transform = translate; 30 | style.msTransform = translate; 31 | style.webkitTransform = translate; 32 | 33 | return style; 34 | }; 35 | -------------------------------------------------------------------------------- /src/views/test/select/index 2.js: -------------------------------------------------------------------------------- 1 | import Select from './src/select'; 2 | import TmmSelect from './src/tmm-select'; 3 | 4 | /* istanbul ignore next */ 5 | Select.install = function(Vue) { 6 | Vue.component(Select.name, Select); 7 | Vue.component(TmmSelect.name, TmmSelect); 8 | }; 9 | 10 | export default Select; 11 | -------------------------------------------------------------------------------- /src/views/test/select/index.js: -------------------------------------------------------------------------------- 1 | import Select from './src/select'; 2 | import TmmSelect from './src/tmm-select'; 3 | 4 | /* istanbul ignore next */ 5 | Select.install = function(Vue) { 6 | Vue.component(Select.name, Select); 7 | Vue.component(TmmSelect.name, TmmSelect); 8 | }; 9 | 10 | export default Select; 11 | -------------------------------------------------------------------------------- /src/views/test/select/src/option-group 2.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | 61 | -------------------------------------------------------------------------------- /src/views/test/select/src/option-group.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | 61 | -------------------------------------------------------------------------------- /src/views/test/test_1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Title 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /src/views/user/User 2.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 12 | 13 | 16 | -------------------------------------------------------------------------------- /src/views/user/User.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 12 | 13 | 16 | -------------------------------------------------------------------------------- /static/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-cmdb/cmdb-web/0316b3d408b8067965e16fd72761248e82b25739/static/.gitkeep --------------------------------------------------------------------------------